aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPjotr Prins2024-01-04 16:47:24 +0100
committerPjotr Prins2024-01-04 16:47:24 +0100
commit6fa4d04cf954bc374a8532d285496760f2283f38 (patch)
tree4ae504037934d0f974e2192280d3a7c70c530d53
parent5600deccdd446cd8f1c287479051590236fb2959 (diff)
downloadgn-guile-6fa4d04cf954bc374a8532d285496760f2283f38.tar.gz
Use tmpdir and tmp files for transient data
-rw-r--r--gn/runner/gemma.scm39
1 files changed, 23 insertions, 16 deletions
diff --git a/gn/runner/gemma.scm b/gn/runner/gemma.scm
index bcb4c36..2edb7b2 100644
--- a/gn/runner/gemma.scm
+++ b/gn/runner/gemma.scm
@@ -21,32 +21,39 @@
(display traits)
(newline)
;; ---- write phenotype file
- (let* [(port (mkstemp "pheno.txt-XXXXXX"))
- (pheno-fn (port-filename 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)
- (close port)
+ (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" )))]
+ (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 -- -g BXD.8_geno.txt.gz -p " pheno-fn " -a BXD.8_snps.txt -lmm 2 -maf 0.1 > GWA.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 --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)
)
)