aboutsummaryrefslogtreecommitdiff
path: root/gn
diff options
context:
space:
mode:
Diffstat (limited to 'gn')
-rw-r--r--gn/data/hits.scm22
-rw-r--r--gn/runner/gemma.scm19
2 files changed, 30 insertions, 11 deletions
diff --git a/gn/data/hits.scm b/gn/data/hits.scm
index f7ce49e..85c4912 100644
--- a/gn/data/hits.scm
+++ b/gn/data/hits.scm
@@ -5,6 +5,7 @@
#:use-module (ice-9 iconv)
#:use-module (ice-9 receive)
#:use-module (ice-9 string-fun)
+ #:use-module (srfi srfi-9)
;; #:use-module (gn db sparql)
#:use-module (dbi dbi)
#:use-module (gn db mysql)
@@ -17,11 +18,26 @@
get-precompute-hit
set-precompute-hit-status!
update-precompute!
+ hit-data-id
+ hit-probeset-id
+ hit-probesetfreeze-id
))
-(define (get-precompute-hits db prev-id num)
- (dbi-query db (string-append "select Locus, DataId, ProbeSetId, ProbeSetFreezeId from ProbeSetXRef where DataId>" (int-to-string prev-id) " AND Locus_old is NULL ORDER BY DataId LIMIT " (format #f "~d" num)))
- (get-rows db '()))
+
+(define-record-type <hit>
+ (make-hit data-id probeset-id probesetfreeze-id)
+ hit?
+ (data-id hit-data-id)
+ (probeset-id hit-probeset-id)
+ (probesetfreeze-id hit-probesetfreeze-id)
+ )
+
+(define (get-precompute-hits db first-id num)
+ (dbi-query db (string-append "select Locus, DataId, ProbeSetId, ProbeSetFreezeId from ProbeSetXRef where DataId>" (int-to-string first-id) " AND Locus_old is NULL ORDER BY DataId LIMIT " (int-to-string num)))
+ (map (lambda (r)
+ (make-hit (assoc-ref r "DataId") (assoc-ref r "ProbeSetId") (assoc-ref r "ProbeSetFreezeId")))
+ (get-rows db '())
+ ))
(define (get-precompute-hit db prev-id)
(car (get-precompute-hits db prev-id 1)))
diff --git a/gn/runner/gemma.scm b/gn/runner/gemma.scm
index 69991dd..9a5c0fc 100644
--- a/gn/runner/gemma.scm
+++ b/gn/runner/gemma.scm
@@ -39,24 +39,27 @@
))
)
-(define (invoke-gemma-wrapper-loco name trait-name pheno-fn)
+(define (invoke-gemma-wrapper-loco name trait-name trait-fn pheno-fn geno-fn)
"Create a tmpdir and invoke gemma-wrapper using parallel LOCO. Note that at this point we use a number of defaults for BXD"
(let* [(population "BXD")
(sys-tmpdir (getenv "TMPDIR"))
(tmpdir (mkdtemp (string-append sys-tmpdir "/run-gemma-XXXXXX")))
(k-json-fn (string-append tmpdir "/K.json"))
- (gwa-json-fn (string-append tmpdir "/GWA.json"))]
+ (gwa-json-fn (string-append tmpdir "/GWA.json"))
+ (trait-json-fn (string-append tmpdir "/" trait-fn))]
+ (copy-file trait-fn trait-json-fn)
;; --- First we compute K - control output goes to K.json
- (let [(err (system (string-append "/gemma-wrapper/bin/gemma-wrapper --verbose --population \"" population "\" --name \"" name "\" --trait \"" trait-name "\" --verbose --loco --json --parallel -- -gk -g BXD.8_geno.txt.gz -p " pheno-fn " -a BXD.8_snps.txt > " k-json-fn )))]
+ (let [(err (system (string-append "/gemma-wrapper/bin/gemma-wrapper --verbose --population \"" population "\" --name \"" name "\" --trait \"" trait-name "\" --verbose --loco --json --parallel -- -gk -g " geno-fn " -p " pheno-fn " -a BXD.8_snps.txt > " k-json-fn )))]
(if (not (= err 0))
(exit err)))
- (let [(err (system (string-append "/gemma-wrapper/bin/gemma-wrapper --population \"" population "\" --name \"" name "\" --id \"" trait-name "\" --trait \"" trait-name "\" --verbose --loco --json --input " k-json-fn " -- -g BXD.8_geno.txt.gz -p " pheno-fn " -a BXD.8_snps.txt -lmm 9 -maf 0.1 > " gwa-json-fn)))]
+ (let [(err (system (string-append "/gemma-wrapper/bin/gemma-wrapper --meta \"" trait-json-fn "\" --population \"" population "\" --name \"" name "\" --id \"" trait-name "\" --trait \"" trait-name "\" --verbose --loco --json --lmdb --input " k-json-fn " -- -g " geno-fn " -p " pheno-fn " -a BXD.8_snps.txt -lmm 9 -maf 0.1 > " gwa-json-fn)))]
(if (not (= err 0))
(exit err)))
- ;; (delete-file pheno-fn)
- ;; (delete-file gwa-json-fn)
- ;; (delete-file k-json-fn)
- ;; (rmdir tmpdir)
+ (delete-file pheno-fn)
+ (delete-file gwa-json-fn)
+ (delete-file k-json-fn)
+ (delete-file trait-json-fn)
+ (rmdir tmpdir)
)
)