aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorl-d-s <distefano.l@wehi.edu.au>2018-10-24 21:53:56 +1100
committerl-d-s <distefano.l@wehi.edu.au>2018-10-24 21:53:56 +1100
commit7daac8bb4bd0d705662c18b677a69d3785f4d8f8 (patch)
tree43ae4be3ec4418190c3fabff312cdce7c10868b3
parentfdcf948c93ee5a3a3f00e38f5d4fed7bc964a56b (diff)
parente25bd63e03ee4da6817fe437e5e4184eae685653 (diff)
Merge branch 'master' of https://github.com/PapenfussLab/bionix
-rw-r--r--test.nix45
-rw-r--r--tools/bwa-mem.nix3
-rw-r--r--tools/platypus-callVariants.nix2
3 files changed, 28 insertions, 22 deletions
diff --git a/test.nix b/test.nix
index 8126e63..9851310 100644
--- a/test.nix
+++ b/test.nix
@@ -1,28 +1,35 @@
-{pkgs ? import <nixpkgs> {}}:
+{pkgs ? import <nixpkgs> {}
+,bionix ? import <bionix> {}}:
with pkgs;
with lib;
+with bionix;
let
- ref = ./example/ref.fa;
- alignWithRG = rg: callPackage ./tools/bwa.nix { inherit ref; flags = "-R'@RG\\tID:${rg}\\tSM:${rg}'";};
- sort = callPackage ./tools/samtools-sort.nix { };
- callVariants = callPackage ./tools/platypus.nix { inherit ref; };
+ inherit (types) filetype tagFiletype;
- samples = [ {name = "mysample1"; files = {input1 = ./example/sample1-1.fq; input2 = ./example/sample1-2.fq;};}
- {name = "mysample2"; files = {input1 = ./example/sample2-1.fq; input2 = ./example/sample2-1.fq;};} ];
+ fetchLocal = path: stdenv.mkDerivation {
+ name = baseNameOf path;
+ buildCommand = "ln -s ${path} $out";
+ };
+ tagfq = path: tagFiletype (filetype.fq {}) (fetchLocal path);
+ tagfa = path: tagFiletype (filetype.fa {}) (fetchLocal path);
- alignments = map (i: sort (alignWithRG i.name i.files)) samples;
- variants = callVariants alignments;
+ ref = tagfa ./example/ref.fa;
+ alignWithRG = rg: bwa.align { inherit ref; flags = "-R'@RG\\tID:${rg}\\tSM:${rg}'";};
- testNaming = stdenv.mkDerivation {
- name = "test-naming";
- buildCommand = ''
- mkdir $out
- ln -s ${variants} $out/myfancyname
- mkdir $out/alignments
- ${concatStringsSep "\n" (zipListsWith (s: a: "ln -s ${a} $out/alignments/${s.name}.bam") samples alignments)}
- '';
- };
+ samples = [ {name = "mysample1"; files = {input1 = tagfq ./example/sample1-1.fq; input2 = tagfq ./example/sample1-2.fq;};}
+ {name = "mysample2"; files = {input1 = tagfq ./example/sample2-1.fq; input2 = tagfq ./example/sample2-1.fq;};} ];
+
+ alignments = map (i: samtools.sort {} (alignWithRG i.name i.files)) samples;
+ variants = platypus.call {} alignments;
-in testNaming
+in stdenv.mkDerivation {
+ name = "myproject";
+ buildCommand = ''
+ mkdir $out
+ ln -s ${variants} $out/platypus.vcf
+ mkdir $out/alignments
+ ${concatStringsSep "\n" (zipListsWith (s: a: "ln -s ${a} $out/alignments/${s.name}.bam") samples alignments)}
+ '';
+}
diff --git a/tools/bwa-mem.nix b/tools/bwa-mem.nix
index 0d0f7d8..3208e48 100644
--- a/tools/bwa-mem.nix
+++ b/tools/bwa-mem.nix
@@ -29,8 +29,7 @@ in stdenv.mkDerivation {
done
cores=$(echo $NIX_BUILD_CORES ${optionalString bamOutput "- 1"} | bc)
if [[ $cores -lt 1 ]] ; then
- >&2 echo "not enough build cores"
- exit 1
+ cores=1
fi
bwa mem ${optionalString (flags != null) flags} -t $cores ref.fa ${fq input1} \
${optionalString (input2 != null) (fq input2)} \
diff --git a/tools/platypus-callVariants.nix b/tools/platypus-callVariants.nix
index a3e3a65..a57aa83 100644
--- a/tools/platypus-callVariants.nix
+++ b/tools/platypus-callVariants.nix
@@ -14,7 +14,7 @@ with bionix.types;
let
filename = path: last (splitString "/" path);
- getref = f: matchFiletype "platypus-callVariants" { bam = r: r; } f;
+ getref = f: matchFiletype "platypus-callVariants" { bam = {ref, ...}: ref; } f;
refs = map getref inputs;
ref = head refs;
in