diff options
-rw-r--r-- | tools/octopus-call.nix | 110 |
1 files changed, 52 insertions, 58 deletions
diff --git a/tools/octopus-call.nix b/tools/octopus-call.nix index 8a78f01..6851971 100644 --- a/tools/octopus-call.nix +++ b/tools/octopus-call.nix @@ -1,73 +1,67 @@ -{ bionix -, fast ? false -, very-fast ? false -, max-genotypes ? null -, targets ? null -, faidxAttrs ? { } -, indexAttrs ? { } -, flags ? "" +{ + bionix, + fast ? false, + very-fast ? false, + max-genotypes ? null, + targets ? null, + faidxAttrs ? {}, + indexAttrs ? {}, + flags ? "", }: - assert !fast || !very-fast; assert max-genotypes == null || max-genotypes > 0; - with bionix; with lib; with types; + inputs: let + getref = matchFiletype "octopus-call" { + bam = {ref, ...}: ref; + cram = {ref, ...}: ref; + }; + refs = map getref inputs; + ref = head refs; -inputs: - -let - getref = matchFiletype "octopus-call" { bam = { ref, ... }: ref; cram = { ref, ... }: ref; }; - refs = map getref inputs; - ref = head refs; - - - handleTarget = x: - let + handleTarget = x: let type = builtins.typeOf x; - handler = handlers."${type}" or (builtins.throw "octopus-callSomatic:unhandled target type:${type}"); + handler = handlers."${type}" or (builtins.throw "octopus-call:unhandled target type:${type}"); handlers = { string = "-T '${x}'"; - list = - let file = pkgs.writeText "regions.txt" (concatStringsSep "\n" x); - in "-t ${file}"; + list = let + file = pkgs.writeText "regions.txt" (concatStringsSep "\n" x); + in "-t ${file}"; path = "-t ${x}"; set = "-t ${x}"; }; in - handler; - - -in - -assert (length (unique refs) == 1); - -stage { - name = "octopus-call"; - buildInputs = with pkgs; [ octopus-caller ]; - outputs = [ "out" "evidence" ]; - buildCommand = '' - ln -s ${ref} ref.fa - ln -s ${samtools.faidx faidxAttrs ref} ref.fai - ${concatMapStringsSep "\n" (i: '' - ln -s ${i} $(basename ${i}).bam - ln -s ${samtools.index indexAttrs i} $(basename ${i}).bai - '') inputs} - ${optionalString (length inputs > 1) "mkdir $evidence"} - octopus -R ref.fa -I *.bam -o $out \ - --bamout $evidence \ - --threads=$NIX_BUILD_CORES \ - ${optionalString fast "--fast"} \ - ${optionalString very-fast "--very-fast"} \ - ${optionalString (max-genotypes != null) "--max-genotypes ${toString max-genotypes}"} \ - ${optionalString (targets != null) (handleTarget targets)} \ - ${flags} + handler; + in + assert (length (unique refs) == 1); + stage { + name = "octopus-call"; + buildInputs = with pkgs; [octopus-caller]; + outputs = ["out" "evidence"]; + buildCommand = '' + ln -s ${ref} ref.fa + ln -s ${samtools.faidx faidxAttrs ref} ref.fai + ${concatMapStringsSep "\n" (i: '' + ln -s ${i} $(basename ${i}).bam + ln -s ${samtools.index indexAttrs i} $(basename ${i}).bai + '') + inputs} + ${optionalString (length inputs > 1) "mkdir $evidence"} + octopus -R ref.fa -I *.bam -o $out \ + --bamout $evidence \ + --threads=$NIX_BUILD_CORES \ + ${optionalString fast "--fast"} \ + ${optionalString very-fast "--very-fast"} \ + ${optionalString (max-genotypes != null) "--max-genotypes ${toString max-genotypes}"} \ + ${optionalString (targets != null) (handleTarget targets)} \ + ${flags} - # Strip out octopus ARGV - sed -i '/^##octopus=/d' $out - ''; - passthru.filetype = filetype.vcf { inherit ref; }; - passthru.multicore = true; - stripStorePaths = false; -} + # Strip out octopus ARGV + sed -i '/^##octopus=/d' $out + ''; + passthru.filetype = filetype.vcf {inherit ref;}; + passthru.multicore = true; + stripStorePaths = false; + } |