From 6137d292d8d721490bf6ded2695cdc71755aff59 Mon Sep 17 00:00:00 2001
From: Justin Bedo <cu@cua0.org>
Date: Thu, 9 May 2019 14:23:53 +1000
Subject: strelka: rewrite to use multiple outputs

---
 tools/strelka-call.nix        | 10 ++++++++--
 tools/strelka-callSomatic.nix | 13 +++++++++++--
 tools/strelka.nix             | 32 --------------------------------
 3 files changed, 19 insertions(+), 36 deletions(-)

(limited to 'tools')

diff --git a/tools/strelka-call.nix b/tools/strelka-call.nix
index bc1e202..dc07291 100644
--- a/tools/strelka-call.nix
+++ b/tools/strelka-call.nix
@@ -20,9 +20,11 @@ in
 
 assert (length (unique refs) == 1);
 
-stage {
+let
+out = stage {
   name = "strelka-call";
   buildInputs = with pkgs; [ strelka ];
+  outputs = [ "out" "variants" ];
   buildCommand = ''
     ln -s ${ref} ref.fa
     ln -s ${bionix.samtools.faidx indexAttrs ref} ref.fa.fai
@@ -48,8 +50,12 @@ stage {
       sed -i '/^##fileDate/d' $g
       sed -i '/^##startTime/d' $g
     done
+    mv variants.vcf $variants
+    ln -s $variants variants.vcf
     mkdir $out
     cp -r * $out
   '';
   passthru.multicore = true;
-}
+};
+ft = {filetype = types.filetype.vcf {ref = ref;};};
+in out // { variants = out.variants // ft; }
diff --git a/tools/strelka-callSomatic.nix b/tools/strelka-callSomatic.nix
index cf4b414..cce6243 100644
--- a/tools/strelka-callSomatic.nix
+++ b/tools/strelka-callSomatic.nix
@@ -21,9 +21,12 @@ in
 
 assert (length (unique refs) == 1);
 
-stage {
+let
+
+out = stage {
   name = "strelka-callSomatic";
   buildInputs = with pkgs; [ strelka ];
+  outputs = [ "out" "indels" "snvs" ];
   buildCommand = ''
     ln -s ${ref} ref.fa
     ln -s ${bionix.samtools.faidx indexAttrs ref} ref.fa.fai
@@ -50,8 +53,14 @@ stage {
       sed -i '/^##fileDate/d' $g
       sed -i '/^##startTime/d' $g
     done
+    mv somatic.indels.vcf $indels
+    ln -s $indels somatic.indels.vcf
+    mv somatic.snvs.vcf $snvs
+    ln -s $snvs somatic.snvs.vcf
     mkdir $out
     cp -r * $out
   '';
   passthru.multicore = true;
-}
+};
+ft = {filetype = types.filetype.vcf {ref = ref;};};
+in out // { indels = out.indels // ft; snvs = out.snvs // ft;}
diff --git a/tools/strelka.nix b/tools/strelka.nix
index d3068b5..16f4a2b 100644
--- a/tools/strelka.nix
+++ b/tools/strelka.nix
@@ -12,36 +12,4 @@ with types;
   Type: call :: {...} -> [input] -> results
   */
   call = callBionixE ./strelka-call.nix;
-  /* Extract VCF file from results
-  Type: variants :: results -> vcf
-  */
-  variants =
-    # result of call
-    drv: stage {
-    name = "strelka-call-variants";
-    buildCommand = ''
-      ln -s ${drv}/variants/variants.vcf $out
-    '';
-    passthru.filetype = filetype.vcf {ref=ref;};
-  };
-  /* Extract indels from somatic results
-  Type: indels :: somatic results -> vcf
-  */
-  indels =
-    # result of callSomatic
-    drv: stage {
-    name = "strelka-callVariants-indels";
-    buildCommand = "ln -s ${drv}/variants/somatic.indels.vcf $out";
-    passthru.filetype = filetype.vcf {ref = ref;};
-  };
-  /* Extract SNVs from somatic results
-  Type: snvs :: somatic results -> vcf
-  */
-  snvs =
-    # result of callSomatic
-    drv: stage {
-    name = "strelka-callVariants-snvs";
-    buildCommand = "ln -s ${drv}/variants/somatic.snvs.vcf $out";
-    passthru.filetype = filetype.vcf {ref = ref;};
-  };
 }
-- 
cgit v1.2.3