blob: 2edb7b2322a624609dd4e27c32815ec18c21988a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
(define-module (gn runner gemma)
#:use-module (json)
#:use-module (gn data genotype)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
#:use-module (ice-9 iconv)
#:use-module (ice-9 receive)
#:use-module (ice-9 string-fun)
#:use-module (rnrs base)
#:export (
run-gemma
))
(define (run-gemma population data-id name trait-name traits)
(define bxd-inds (geno-inds-bxd "BXD.json"))
(assert (= 235 (length bxd-inds)))
(if name
(display (string-append "WE HAVE OUR BXD DATASET " name " and trait " trait-name " for precompute!\n")))
(display data-id)
(display traits)
(newline)
;; ---- write phenotype file
(let* [(sys-tmpdir (getenv "TMPDIR"))
(tmpdir (mkdtemp (string-append sys-tmpdir "/run-gemma-XXXXXX")))
(pheno-fn (string-append tmpdir "/pheno.txt"))
(k-json-fn (string-append tmpdir "/K.json"))
(gwa-json-fn (string-append tmpdir "/GWA.json"))]
(call-with-output-file pheno-fn
(lambda (port)
(for-each (lambda (ind)
(begin
(let* [(value (assoc-ref traits ind))
(outvalue (if value
value
"NA"))]
(display outvalue)
(newline)
(display outvalue port)
(newline port))))
bxd-inds)))
;; set up with ./.guix-shell -- guile -L . -s ./scripts/precompute/precompute-hits.scm
;; ---- to start GEMMA precompute inside container
;; env TMPDIR=. LD_LIBRARY_PATH=$GUIX_ENVIRONMENT/lib/ guile -L . -s ./scripts/precompute/precompute-hits.scm
;; --- First we compute K - control output goes to K.json
(let [(err (system (string-append "env GEMMA_COMMAND=gemma /gemma-wrapper/bin/gemma-wrapper --population \"" population "\" --name \"" name "\" --trait \"" trait-name "\" --verbose --loco --json --debug --parallel -- -gk -g BXD.8_geno.txt.gz -p " pheno-fn " -a BXD.8_snps.txt > " k-json-fn )))]
(if (not (= err 0))
(exit err)))
(let [(err (system (string-append "env GEMMA_COMMAND=gemma /gemma-wrapper/bin/gemma-wrapper --population \"" population "\" --name \"" name "\" --trait \"" trait-name "\" --verbose --loco --json --debug --parallel --input " k-json-fn " -- -g BXD.8_geno.txt.gz -p " pheno-fn " -a BXD.8_snps.txt -lmm 2 -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)
)
)
|