diff options
-rw-r--r-- | default.nix | 1 | ||||
-rw-r--r-- | test-tnpair.nix | 1 | ||||
-rw-r--r-- | tools/minimap2-align.nix | 37 | ||||
-rw-r--r-- | tools/minimap2.nix | 10 |
4 files changed, 49 insertions, 0 deletions
diff --git a/default.nix b/default.nix index 7b49279..824ea82 100644 --- a/default.nix +++ b/default.nix @@ -25,6 +25,7 @@ let kallisto = callBionix ./tools/kallisto.nix {}; mosdepth = callBionix ./tools/mosdepth.nix {}; mutect = callBionix ./tools/mutect.nix {}; + minimap2 = callBionix ./tools/minimap2.nix {}; platypus = callBionix ./tools/platypus.nix {}; ref = callBionix ./lib/references.nix {}; samtools = callBionix ./tools/samtools.nix {}; diff --git a/test-tnpair.nix b/test-tnpair.nix index c88b68a..4a3a59e 100644 --- a/test-tnpair.nix +++ b/test-tnpair.nix @@ -49,6 +49,7 @@ let (ln (strelka.snvs tnpairResult.variants) "strelka.snvs.vcf") (ln (strelka.variants tnpairResult.glvariants) "strelka.gl.vcf") (ln (bowtie.align {inherit ref;} tnpair.normal.files) "alignments/bowtie-normal.bam") + (ln (minimap2.align {inherit ref; preset = "sr"; } tnpair.normal.files) "alignments/minimap2-normal.bam") (ln (gridss.callVariants {} (with tnpairResult.alignments; [normal tumour])) "gridss") (ln (gridss.call (with tnpairResult.alignments; [normal tumour])) "gridss2") (ln (gridss.callAndAssemble (with tnpairResult.alignments; [normal tumour])) "gridss3") diff --git a/tools/minimap2-align.nix b/tools/minimap2-align.nix new file mode 100644 index 0000000..14c88a5 --- /dev/null +++ b/tools/minimap2-align.nix @@ -0,0 +1,37 @@ +{ bionix +, ref +, bamOutput ? true +, flags ? null +, preset +}: + +{ input1 +, input2 ? null +}: + +with bionix; +with lib; +with types; +with compression; + +let + fa = f: matchFiletype "minmap2-ref" { fa = _: f; } f; + fq = f: matchFiletype "minmap2-input" { fq = _: f; gz = matchFiletype' "minmap2-input" { fq = _: f; }; } f; + +in stage { + name = "minmap2-align"; + buildInputs = with pkgs; [ minimap2 bc ] ++ optional bamOutput samtools; + buildCommand = '' + ln -s ${fa ref} ref.fa + cores=$(echo $NIX_BUILD_CORES ${optionalString bamOutput "- 1"} | bc) + if [[ $cores -lt 1 ]] ; then + cores=1 + fi + minimap2 ${optionalString (flags != null) flags} -t $cores -ax ${preset} 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; +} diff --git a/tools/minimap2.nix b/tools/minimap2.nix new file mode 100644 index 0000000..e1d6af5 --- /dev/null +++ b/tools/minimap2.nix @@ -0,0 +1,10 @@ +{ bionix }: + +with bionix; + +rec { + /* Align read against a reference + * Type: align :: {ref :: fasta, bamOutput :: bool, preset :: string, ...} -> {input1, input2} -> bam/sam + */ + align = callBionixE ./minimap2-align.nix; +} |