aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorJustin Bedo <cu@cua0.org>2019-01-10 12:20:51 +1100
committerJustin Bedo <cu@cua0.org>2019-01-10 12:20:51 +1100
commit9a70a25d6b7771df7ca53fcc34d61f582296e384 (patch)
tree5de101f321f25fe48f4b3cbfd24103c5d84b8104 /tools
parent5cb6f6001ea3aefd52ebaf42c1714343d51a8822 (diff)
facets: init
Diffstat (limited to 'tools')
-rw-r--r--tools/facets-app.nix42
-rw-r--r--tools/facets-call.nix24
-rw-r--r--tools/facets.nix8
3 files changed, 74 insertions, 0 deletions
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;
+}