aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--default.nix1
-rw-r--r--test-tnpair.nix1
-rw-r--r--tools/minimap2-align.nix37
-rw-r--r--tools/minimap2.nix10
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;
+}