aboutsummaryrefslogtreecommitdiff
path: root/tools/snap-align.nix
diff options
context:
space:
mode:
authorJustin Bedo <cu@cua0.org>2019-04-17 19:06:00 +1000
committerJustin Bedo <cu@cua0.org>2019-04-17 19:06:00 +1000
commit0c09091762accf8716ef7853dded34e1c86497aa (patch)
tree55c7d1a10659ae31935c81bf8b46000c0af204a4 /tools/snap-align.nix
parent1996a2de345755b72027481e72ca3c2402bebf8d (diff)
snap: init
Diffstat (limited to 'tools/snap-align.nix')
-rw-r--r--tools/snap-align.nix37
1 files changed, 37 insertions, 0 deletions
diff --git a/tools/snap-align.nix b/tools/snap-align.nix
new file mode 100644
index 0000000..4647142
--- /dev/null
+++ b/tools/snap-align.nix
@@ -0,0 +1,37 @@
+{ bionix
+, ref
+, bamOutput ? true
+, flags ? null
+, indexAttrs ? {}
+}:
+
+{ input1
+, input2 ? null
+}:
+
+with bionix;
+with lib;
+with types;
+with compression;
+
+let
+ fa = f: matchFiletype "snap-ref" { fa = _: f; } f;
+ fq = f: matchFiletype "snap-input" { fq = _: f; gz = matchFiletype' "snap-input" { fq = _: f; }; } f;
+
+in stage {
+ name = "snap-align";
+ buildInputs = with pkgs; [ bionix.snap.app bc ] ++ optional bamOutput samtools;
+ buildCommand = ''
+ for f in /* ; do
+ ln -s $f
+ done
+ snap-aligner ${if input2 == null then "single" else "paired"} ${bionix.snap.index indexAttrs ref} ${fq input1} \
+ ${optionalString (input2 != null) (fq input2)} \
+ -o ${if bamOutput then "-bam" else "-sam" } - \
+ -t $NIX_BUILD_CORES \
+ ${optionalString (flags != null) flags} \
+ | samtools sort -n > $out
+ '';
+ passthru.filetype = if bamOutput then filetype.bam {ref = ref; sorting = sort.name {};} else filetype.sam {ref = ref; sorting = sort.name {};};
+ passthru.multicore = true;
+}