aboutsummaryrefslogtreecommitdiff
path: root/tools/samtools-view.nix
blob: 35a3fcbb4b8413213cdcf6ea894233c75e7fde82 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{ bionix
, nameSort ? false
, flags ? null
, outfmt ? null
}:

input:

with bionix;
with lib;
with types;

assert (matchFiletype "samtools-view" { bam = _: true; sam = _: true; cram = _: true; } input);

let
  outfmtR = if outfmt != null then (if builtins.typeOf outfmt == "string" then { "bam" = toBam; "cram" = toCram; "sam" = toSam; }."${outfmt}" else outfmt) input else input.filetype;
  fa = ref: matchFiletype "samtools-view-ref" { fa = _: ref; } ref;
  outfmtFlags = matchFiletype "samtools-view-outfmt" { bam = _: "-O BAM"; sam = _: "-O SAM"; cram = x: "-O CRAM -T ${fa x.ref}"; } {filetype = outfmtR;};
in stage {
  name = "samtools-view";
  buildInputs = with pkgs; [ samtools ];
  buildCommand = ''
    samtools view ${outfmtFlags} ${optionalString (flags != null) flags} ${input} > $out
  '';
  passthru.filetype = outfmtR;
}