From e405e5af0c726f8bf9cd4475de079983fc8afa90 Mon Sep 17 00:00:00 2001 From: roryk Date: Thu, 30 Jan 2014 19:53:52 -0500 Subject: [PATCH] Add ability to run SEQC comparisons from the JAR file. --- src/bcbio/rnaseq/compare.clj | 4 +++- src/bcbio/rnaseq/core.clj | 13 ++++++++++++- src/bcbio/rnaseq/util.clj | 17 +++++++++++++---- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/bcbio/rnaseq/compare.clj b/src/bcbio/rnaseq/compare.clj index c07e1c9..852b179 100644 --- a/src/bcbio/rnaseq/compare.clj +++ b/src/bcbio/rnaseq/compare.clj @@ -1,4 +1,5 @@ (ns bcbio.rnaseq.compare + (:require [clojure.java.io :as io]) (:use [bcbio.rnaseq.util] [bcbio.rnaseq.config] [clostache.parser :only [render-resource]] @@ -15,7 +16,8 @@ "create a fold change plot comparing to the seqc qPCR data" (let [template-file "comparisons/qPCR_foldchange.template" out-file (swap-directory "fc-plot.pdf" (analysis-dir)) - qpcr-file (get-resource "seqc/qPCR/qpcr_HBRR_vs_UHRR.tidy") + qpcr-file (copy-resource + "seqc/qPCR/qpcr_HBRR_vs_UHRR.tidy" (analysis-dir)) template-config {:out-file (escape-quote out-file) :qpcr-file (escape-quote qpcr-file) :in-files (seq-to-rlist in-files)}] diff --git a/src/bcbio/rnaseq/core.clj b/src/bcbio/rnaseq/core.clj index 4c0ac25..b359a7e 100644 --- a/src/bcbio/rnaseq/core.clj +++ b/src/bcbio/rnaseq/core.clj @@ -58,6 +58,10 @@ (setup-config project-file) (compare-callers (run-callers key cores))) +(defn compare-seqc-run [project-file key cores] + (setup-config project-file) + (run-comparisons (keyword key) cores)) + (def compare-bcbio-run-options [["-h" "--help"] ["-n" "--cores CORES" "Number of cores" @@ -71,11 +75,18 @@ cores (get-in cli-options [:options :cores])] (compare-bcbio-run project-file (keyword key) cores))) +(defn compare-seqc-cl-entry [& args] + (let [cli-options (parse-opts args compare-bcbio-run-options) + [project-file key] (:arguments cli-options) + cores (get-in cli-options [:options :cores])] + (compare-seqc-run project-file (keyword key) cores))) + + (defn -main [cur-type & args] (apply sh ["Rscript" (get-resource "scripts/install_libraries.R")]) (apply (case (keyword cur-type) :compare-bcbio-run compare-bcbio-cl-entry :combine-counts combine-counts/cl-entry - :seqc-comparisons run-comparisons + :seqc-comparisons compare-seqc-cl-entry :compare-callers compare-callers) args)) diff --git a/src/bcbio/rnaseq/util.clj b/src/bcbio/rnaseq/util.clj index db6cab9..fe94d8e 100644 --- a/src/bcbio/rnaseq/util.clj +++ b/src/bcbio/rnaseq/util.clj @@ -2,6 +2,19 @@ (:require [clojure.java.io :as io] [me.raynes.fs :as fs])) +(defn get-resource [filename] + "return a path to an included resource" + (try + (.getFile (io/resource filename)) + (catch Exception e (println (format "Resource %s not found." filename))))) + +(defn copy-resource [resource dir] + "copy a resource from the .jar file to an external directory so + outside programs can use it" + (let [out-file (io/file dir (str (fs/base-name resource)))] + (spit out-file (slurp (io/resource resource))) + (str out-file))) + (defn swap-directory [file dir] "/path/to/file -> /dir/file" (str (io/file dir (fs/base-name file)))) @@ -9,10 +22,6 @@ (defn escape-quote [string] (str "\"" string "\"")) -(defn get-resource [filename] - (try - (.getFile (io/resource filename)) - (catch Exception e (println (format "Resource %s not found." filename))))) (defn base-filename [filename] (fs/split-ext (fs/base-name filename)))