From 0808fc803e3226d2f478229832bb827d7dfcbd0d Mon Sep 17 00:00:00 2001 From: Justin Bedo Date: Wed, 19 Dec 2018 09:55:29 +1100 Subject: link: introduce high-level linking functions --- default.nix | 14 ++++++++++++++ test-tnpair.nix | 36 +++++++++++++++--------------------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/default.nix b/default.nix index 84bb3c8..1e647dd 100644 --- a/default.nix +++ b/default.nix @@ -37,6 +37,20 @@ let def = f: defs: attrs: f (defs // attrs); pipe = let g = fs: with builtins; let h = head fs; t = tail fs; in if t != [] then x: (g t (h x)) else h; in g; + link = {src, dst}: '' + d=$(dirname ${dst}) + if [ ! -e $out/$d ] ; then + mkdir -p $out/$d + fi + ln -s ${src} $out/${dst} + ''; + mkLinks = nixpkgs.lib.concatMapStringsSep "\n" link; + linkDrv = x: nixpkgs.stdenvNoCC.mkDerivation { + name = "link"; + buildCommand = mkLinks x; + }; + ln = x: y: { src = x; dst = y; }; + # Fetching files of specific type fetchFastQ = attrs: with types; tagFiletype (filetype.fq {}) (fetchurl attrs); fetchFastA = attrs: with types; tagFiletype (filetype.fa {}) (fetchurl attrs); diff --git a/test-tnpair.nix b/test-tnpair.nix index b01d61e..b897366 100644 --- a/test-tnpair.nix +++ b/test-tnpair.nix @@ -49,26 +49,20 @@ let tnpairResult = processPair tnpair; - testNaming = stdenv.mkDerivation { - name = "test-naming"; - buildCommand = '' - mkdir $out - ln -s ${tnpairResult.variants} $out/strelka - mkdir $out/alignments - ln -s ${bowtie.align {inherit ref;} tnpair.normal.files} $out/alignments/bowtie-normal.bam - ln -s ${gridss.callVariants {} (with tnpairResult.alignments; [normal tumour])} $out/gridss - ln -s ${gridss.call (with tnpairResult.alignments; [normal tumour])} $out/gridss2 - ln -s ${samtools.merge {} [tnpairResult.alignments.tumour tnpairResult.alignments.normal]} $out/alignments/merged.bam - ln -s ${samtools.view { outfmt = types.toCram; } (tnpairResult.alignments.tumour)} $out/alignments/${tnpair.tumour.name}.cram - ln -s ${samtools.view { outfmt = types.toCram; } (tnpairResult.alignments.normal)} $out/alignments/${tnpair.normal.name}.cram - ln -s ${flagstat tnpairResult.alignments.tumour} $out/alignments/${tnpair.tumour.name}.flagstat - ln -s ${flagstat tnpairResult.alignments.normal} $out/alignments/${tnpair.normal.name}.flagstat - mkdir $out/fastqc - ln -s ${check tnpair.tumour.files.input1} $out/fastqc/${tnpair.tumour.name}.1 - ln -s ${check tnpair.tumour.files.input2} $out/fastqc/${tnpair.tumour.name}.2 - ln -s ${check tnpair.normal.files.input1} $out/fastqc/${tnpair.normal.name}.1 - ln -s ${check tnpair.normal.files.input2} $out/fastqc/${tnpair.normal.name}.2 - ''; - }; + testNaming = linkDrv [ + (ln tnpairResult.variants "strelka") + (ln (bowtie.align {inherit ref;} tnpair.normal.files) "alignments/bowtie-normal.bam") + (ln (gridss.callVariants {} (with tnpairResult.alignments; [normal tumour])) "gridss") + (ln (gridss.call (with tnpairResult.alignments; [normal tumour])) "gridss2") + (ln (samtools.merge {} [tnpairResult.alignments.tumour tnpairResult.alignments.normal]) "alignments/merged.bam") + (ln (samtools.view { outfmt = types.toCram; } (tnpairResult.alignments.tumour)) "alignments/${tnpair.tumour.name}.cram") + (ln (samtools.view { outfmt = types.toCram; } (tnpairResult.alignments.normal)) "alignments/${tnpair.normal.name}.cram") + (ln (flagstat tnpairResult.alignments.tumour) "alignments/${tnpair.tumour.name}.flagstat") + (ln (flagstat tnpairResult.alignments.normal) "alignments/${tnpair.normal.name}.flagstat") + (ln (check tnpair.tumour.files.input1) "fastqc/${tnpair.tumour.name}.1") + (ln (check tnpair.tumour.files.input2) "fastqc/${tnpair.tumour.name}.2") + (ln (check tnpair.normal.files.input1) "fastqc/${tnpair.normal.name}.1") + (ln (check tnpair.normal.files.input2) "fastqc/${tnpair.normal.name}.2") + ]; in testNaming -- cgit v1.2.3