aboutsummaryrefslogtreecommitdiff
path: root/tools/bwa-mem2.nix
diff options
context:
space:
mode:
authorJustin Bedo <cu@cua0.org>2019-06-21 10:07:29 +1000
committerJustin Bedo <cu@cua0.org>2019-06-21 10:42:30 +1000
commit2ad72c4c3d33f685297ecdeb799a91afae2dccb5 (patch)
treeaa6ab7bb45a73b4cf76709eb277dccca2e4b69f1 /tools/bwa-mem2.nix
parent7231886ee52379de001ae830ed76a09be556ac57 (diff)
bwa-mem2: init
Diffstat (limited to 'tools/bwa-mem2.nix')
-rw-r--r--tools/bwa-mem2.nix40
1 files changed, 40 insertions, 0 deletions
diff --git a/tools/bwa-mem2.nix b/tools/bwa-mem2.nix
new file mode 100644
index 0000000..3de1944
--- /dev/null
+++ b/tools/bwa-mem2.nix
@@ -0,0 +1,40 @@
+{ bionix
+, ref
+, bamOutput ? true
+, flags ? null
+, indexAttrs ? {}
+}:
+
+{ input1
+, input2 ? null
+}:
+
+with bionix;
+with lib;
+with types;
+with compression;
+
+let
+ fa = f: matchFiletype "bwa-ref" { fa = _: f; } f;
+ fq = f: matchFiletype "bwa-input" { fq = _: f; gz = matchFiletype' "bwa-input" { fq = _: f; }; } f;
+
+in stage {
+ name = "bwa-mem2";
+ buildInputs = with pkgs; [ bionix.bwa.app2 bc ] ++ optional bamOutput samtools;
+ buildCommand = ''
+ ln -s ${fa ref} ref.fa
+ for f in ${bionix.bwa.index2 indexAttrs ref}/* ; do
+ ln -s $f
+ done
+ cores=$(echo $NIX_BUILD_CORES ${optionalString bamOutput "- 1"} | bc)
+ if [[ $cores -lt 1 ]] ; then
+ cores=1
+ fi
+ bwa-mem2 mem ${optionalString (flags != null) flags} -t $cores ref.fa ${fq input1} \
+ ${optionalString (input2 != null) (fq input2)} \
+ ${optionalString bamOutput "| samtools view -b"} \
+ > $out
+ '';
+ passthru.filetype = if bamOutput then filetype.bam {ref = ref; sorting = sort.name {};} else filetype.sam {ref = ref; sorting = sort.name {};};
+ passthru.multicore = true;
+}