aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--default.nix3
-rw-r--r--test-tnpair.nix2
-rw-r--r--tools/facets-app.nix42
-rw-r--r--tools/facets-call.nix24
-rw-r--r--tools/facets.nix8
5 files changed, 78 insertions, 1 deletions
diff --git a/default.nix b/default.nix
index 3ed2b50..0c2f9ad 100644
--- a/default.nix
+++ b/default.nix
@@ -18,6 +18,7 @@ let
cnvkit = callBionix ./tools/cnvkit.nix {};
compression = callBionix ./tools/compression.nix {};
crumble = callBionix ./tools/crumble.nix {};
+ facets = callBionix ./tools/facets.nix {};
fastqc = callBionix ./tools/fastqc.nix {};
gridss = callBionix ./tools/gridss.nix {};
infercnv = callBionix ./tools/infercnv.nix {};
@@ -25,10 +26,10 @@ let
mosdepth = callBionix ./tools/mosdepth.nix {};
mutect = callBionix ./tools/mutect.nix {};
platypus = callBionix ./tools/platypus.nix {};
+ ref = callBionix ./lib/references.nix {};
samtools = callBionix ./tools/samtools.nix {};
snpeff = callBionix ./tools/snpeff.nix {};
strelka = callBionix ./tools/strelka.nix {};
- ref = callBionix ./lib/references.nix {};
qsub = attrs: bionix.extend (self: super: with self; rec {
qsubDefs = { ppn = 1; mem = 1; walltime = "24:00:00"; tmpDir = "/tmp"; sleepTime = 60; } // attrs;
diff --git a/test-tnpair.nix b/test-tnpair.nix
index 0851a74..c531a83 100644
--- a/test-tnpair.nix
+++ b/test-tnpair.nix
@@ -35,11 +35,13 @@ let
processPair = { tumour, normal }: rec {
alignments = mapAttrs (_: x: markdup (sort (fixmate (alignWithRG x.name x.files)))) { inherit normal tumour; };
variants = callVariants alignments;
+ platypusVars = platypus.call {} (builtins.attrValues alignments);
};
tnpairResult = processPair tnpair;
testNaming = linkDrv [
+ (ln (facets.callCNV {} {vcf = tnpairResult.platypusVars; bams = with tnpairResult.alignments; [ normal tumour ];}) "facets")
(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")
diff --git a/tools/facets-app.nix b/tools/facets-app.nix
new file mode 100644
index 0000000..8c4a7b2
--- /dev/null
+++ b/tools/facets-app.nix
@@ -0,0 +1,42 @@
+{buildRPackage
+,fetchFromGitHub
+,R
+,htslib
+,zlib}:
+
+let
+ pctGCdata = buildRPackage rec {
+ name = "pctGCdata-${version}";
+ version = "0.2.0";
+ requireX = false;
+ src = fetchFromGitHub {
+ owner = "mskcc";
+ repo = "pctGCdata";
+ rev = "v${version}";
+ sha256 = "1qq0fmm3zwz6rv0ka82850ww0qj50621gln9i0gfs8k3wyqil4l8";
+ };
+ buildInputs = [ R ];
+ };
+
+in buildRPackage rec{
+ name = "facets-${version}";
+ version = "0.5.6";
+ requireX = false;
+ src = fetchFromGitHub {
+ owner = "mskcc";
+ repo = "facets";
+ rev = "v${version}";
+ sha256 = "0yqr23446y2h8xgbgj0r6sl4i778111drgsi06a2cqy530xcmbxs";
+ };
+ buildInputs = [ R htslib zlib ];
+ propagatedBuildInputs = [ pctGCdata ];
+ postBuild = ''
+ cd inst/extcode
+ g++ --std=c++11 snp-pileup.cpp -lhts -o snp-pileup
+ cd ../../
+ '';
+ postInstall = ''
+ mkdir -p $out/bin
+ cp inst/extcode/snp-pileup $out/bin
+ '';
+}
diff --git a/tools/facets-call.nix b/tools/facets-call.nix
new file mode 100644
index 0000000..021cacc
--- /dev/null
+++ b/tools/facets-call.nix
@@ -0,0 +1,24 @@
+{bionix}:
+
+{vcf, bams}:
+
+with bionix;
+with types;
+with lib;
+
+assert (matchFiletype "facets-call-vcf" { vcf = _: true; } vcf);
+assert (all (matchFiletype "facets-call-bam" { bam = _: true; }) bams);
+assert (all (matchFileSorting "facets-call-bam" { coord = _: true; }) bams);
+
+stage {
+ name = "facets";
+ buildInputs = [ facets.app ];
+ buildCommand = ''
+ # Facets requires lexical sorting on the VCF files
+ grep '^#' ${vcf} > input.vcf
+ grep -v '^#' ${vcf} | LC_ALL=C sort -t $'\t' -k1,1 -k2,2n >> input.vcf || true
+
+ # Now actually run facets
+ snp-pileup input.vcf $out ${concatStringsSep " " bams}
+ '';
+}
diff --git a/tools/facets.nix b/tools/facets.nix
new file mode 100644
index 0000000..ed10ffa
--- /dev/null
+++ b/tools/facets.nix
@@ -0,0 +1,8 @@
+{bionix}:
+
+with bionix;
+
+{
+ app = lib.callPackageWith (pkgs // pkgs.rPackages) ./facets-app.nix {};
+ callCNV = callBionix ./facets-call.nix;
+}