diff options
author | Justin Bedo <cu@cua0.org> | 2020-02-09 17:57:54 +1100 |
---|---|---|
committer | Justin Bedo <cu@cua0.org> | 2020-02-09 17:57:54 +1100 |
commit | b8caa245cb6bb4616318173b81e9207aee414859 (patch) | |
tree | bb003911613d8a64b736a1d73c472b0e1aa27043 /tools | |
parent | 4084db9f31aa2b2b6701e0f7261f4dfcd86eaa74 (diff) |
lastal: init
Diffstat (limited to 'tools')
-rw-r--r-- | tools/last-align.nix | 39 | ||||
-rw-r--r-- | tools/last-index.nix | 21 | ||||
-rw-r--r-- | tools/last.nix | 8 |
3 files changed, 68 insertions, 0 deletions
diff --git a/tools/last-align.nix b/tools/last-align.nix new file mode 100644 index 0000000..b2c8460 --- /dev/null +++ b/tools/last-align.nix @@ -0,0 +1,39 @@ +{ bionix +, ref +, flags ? null +, indexAttrs ? {} +}: + +{ input1 +, input2 ? null +}: + +with bionix; +with lib; +with types; + +let + fa = f: matchFiletype "last-ref" { fa = _: f; } f; + fq = f: matchFiletype "last-input" { fq = _: f; } f; + fqfa = f: matchFiletype "last-input" { fq = _: f; fa = _: f; } f; + Q = f: matchFiletype "last-input" { fq = _: 1; fa = _: 0; } f; + parallel = f: matchFiletype "last-input" { fq = _: "parallel-fastq"; fa = _: "parallel-fasta"; } f; + +in stage { + name = "last-align"; + buildInputs = with pkgs; [ last ]; + buildCommand = '' + ${if (input2 != null) then "fastq-interleave ${fq input1} ${fq input2}" else "cat ${fa input1}"} | \ + ${parallel input1} -j $NIX_BUILD_CORES \ + lastal -Q${toString (Q input1)} \ + ${optionalString (input2 != null) "-i1"} \ + ${optionalString (flags != null) flags} \ + ${bionix.lastal.index indexAttrs ref}/index \ + > tmp + '' + (if input2 == null then '' + cp tmp $out + '' else '' + last-pair-probs tmp > $out + ''); + passthru.multicore = true; +} diff --git a/tools/last-index.nix b/tools/last-index.nix new file mode 100644 index 0000000..af74f65 --- /dev/null +++ b/tools/last-index.nix @@ -0,0 +1,21 @@ +{ bionix +, flags ? null +}: + +ref: + +with bionix; +with lib; +with types; + +assert (matchFiletype "last-index" { fa = _: true; } ref); + +stage { + name = "last-index"; + buildInputs = with pkgs; [ last ]; + buildCommand = '' + ln -s ${ref} ref.fa + mkdir $out + lastdb ${optionalString (flags != null) flags} $out/index ref.fa + ''; +} diff --git a/tools/last.nix b/tools/last.nix new file mode 100644 index 0000000..4e40a65 --- /dev/null +++ b/tools/last.nix @@ -0,0 +1,8 @@ +{ bionix }: + +with bionix; + +rec { + align = callBionixE ./last-align.nix; + index = callBionixE ./last-index.nix; +} |