diff options
author | Justin Bedo <cu@cua0.org> | 2019-06-21 10:07:29 +1000 |
---|---|---|
committer | Justin Bedo <cu@cua0.org> | 2019-06-21 10:42:30 +1000 |
commit | 2ad72c4c3d33f685297ecdeb799a91afae2dccb5 (patch) | |
tree | aa6ab7bb45a73b4cf76709eb277dccca2e4b69f1 /tools/bwa-mem2.nix | |
parent | 7231886ee52379de001ae830ed76a09be556ac57 (diff) |
bwa-mem2: init
Diffstat (limited to 'tools/bwa-mem2.nix')
-rw-r--r-- | tools/bwa-mem2.nix | 40 |
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; +} |