From 8a2778f8853ab687f83e07c4c322ab843b08f2af Mon Sep 17 00:00:00 2001 From: Justin Bedo Date: Wed, 22 Apr 2020 20:44:43 +1000 Subject: whisper: init 2.0 --- default.nix | 1 + test-tnpair.nix | 3 ++- tools/whisper-align.nix | 39 +++++++++++++++++++++++++++++++++++++++ tools/whisper-index.nix | 21 +++++++++++++++++++++ tools/whisper.nix | 9 +++++++++ 5 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 tools/whisper-align.nix create mode 100644 tools/whisper-index.nix create mode 100644 tools/whisper.nix diff --git a/default.nix b/default.nix index 98b2e5a..170a6d3 100644 --- a/default.nix +++ b/default.nix @@ -46,6 +46,7 @@ let delly = callBionix ./tools/delly.nix {}; lumpy = callBionix ./tools/lumpy.nix {}; lastal = callBionix ./tools/last.nix {}; + whisper = callBionix ./tools/whisper.nix {}; slurm = attrs: bionix.extend (self: super: with self; rec { slurmDefs = { ppn = 1; mem = 1; walltime = "24:00:00"; partition = null; slurmFlags = null; salloc = "/usr/bin/salloc"; srun = "/usr/bin/srun"; } // attrs; diff --git a/test-tnpair.nix b/test-tnpair.nix index 38e3333..cc493fc 100644 --- a/test-tnpair.nix +++ b/test-tnpair.nix @@ -54,6 +54,7 @@ let alignments = { "bowtie-normal.bam" = bowtie.align {inherit ref;} tnpair.normal.files; "last.maf" = lastal.align {inherit ref;} tnpair.normal.files; + "whisper.bam" = whisper.align {inherit ref;} tnpair.normal.files; "bwa-mem.bam" = bwa.mem {inherit ref;} tnpair.normal.files; "bwa-mem2.bam" = bwa.mem2 {inherit ref;} tnpair.normal.files; "minimap2-normal.bam" = minimap2.align {inherit ref; preset = "sr"; } tnpair.normal.files; @@ -92,4 +93,4 @@ let inherit alignments; }; -in testNaming +in alignments."bwa-mem.bam"#testNaming diff --git a/tools/whisper-align.nix b/tools/whisper-align.nix new file mode 100644 index 0000000..5620fe3 --- /dev/null +++ b/tools/whisper-align.nix @@ -0,0 +1,39 @@ +{ bionix +, ref +, bamOutput ? true +, flags ? null +, indexAttrs ? {} +}: + +{ input1 +, input2 ? null +}: + +with bionix; +with lib; +with types; +with compression; + +let + fa = f: matchFiletype "whisper-ref" { fa = _: f; } f; + fq = f: matchFiletype "whisper-input" { fq = _: f; gz = matchFiletype' "whisper-input" { fq = _: f; }; } f; + +in stage { + name = "whisper-mem"; + buildInputs = [ whisper.app ]; + buildCommand = '' + ln -s ${fa ref} ref.fa + for f in ${bionix.whisper.index indexAttrs ref}/* ; do + ln -s $f + done + whisper ${optionalString (flags != null) flags} -t $NIX_BUILD_CORES \ + ${optionalString bamOutput "-store-BAM"} \ + ${optionalString (input2 != null) "-rp"} \ + -stdout \ + index ${fq input1} \ + ${optionalString (input2 != null) (fq input2)} \ + > $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/whisper-index.nix b/tools/whisper-index.nix new file mode 100644 index 0000000..675af7d --- /dev/null +++ b/tools/whisper-index.nix @@ -0,0 +1,21 @@ +{ bionix +, flags ? null +}: + +ref: + +with bionix; +with lib; +with types; + +assert (matchFiletype "whisper-index" { fa = _: true; } ref); + +stage { + name = "whisper-index"; + buildInputs = [ whisper.app ]; + buildCommand = '' + ln -s ${ref} ref.fa + mkdir $out + whisper-index ${optionalString (flags != null) flags} index ref.fa $out $TMPDIR + ''; +} diff --git a/tools/whisper.nix b/tools/whisper.nix new file mode 100644 index 0000000..244a410 --- /dev/null +++ b/tools/whisper.nix @@ -0,0 +1,9 @@ +{ bionix }: + +with bionix; + +rec { + app = pkgs.callPackage ./whisper-app.nix {}; + index = callBionixE ./whisper-index.nix; + align = callBionixE ./whisper-align.nix; +} -- cgit v1.2.3