diff options
author | Pjotr Prins | 2024-06-27 05:29:26 -0500 |
---|---|---|
committer | Pjotr Prins | 2024-06-27 05:29:26 -0500 |
commit | 9708991177a8450f8c17dad732f35a4b9c95c287 (patch) | |
tree | 97ef69d53150ecd2700f77277b134480390facd6 | |
parent | e4775ccc0c24351e1ee428cddb0f320022509137 (diff) | |
download | gn-guile-9708991177a8450f8c17dad732f35a4b9c95c287.tar.gz |
Simplified gemma runner
-rw-r--r-- | gn/runner/gemma.scm | 29 | ||||
-rwxr-xr-x | scripts/precompute/run-gemma.scm | 4 |
2 files changed, 28 insertions, 5 deletions
diff --git a/gn/runner/gemma.scm b/gn/runner/gemma.scm index 4c1c374..ec2a4d6 100644 --- a/gn/runner/gemma.scm +++ b/gn/runner/gemma.scm @@ -11,6 +11,7 @@ #:export ( write-pheno-file + invoke-gemma-wrapper-loco run-gemma )) @@ -27,8 +28,10 @@ (outvalue (if value value "NA"))] - (format #t "~s ~s" ind outvalue) - (newline) + (if value + (begin + (format #t "~s ~s" ind outvalue) + (newline))) (display outvalue port) (newline port)))) bxd-inds) @@ -36,6 +39,27 @@ )) ) +(define (invoke-gemma-wrapper-loco name trait-name pheno-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"))] + ;; --- First we compute K - control output goes to K.json + (let [(err (system (string-append "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 )))] + (if (not (= err 0)) + (exit err))) + (let [(err (system (string-append "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)))] + (if (not (= err 0)) + (exit err))) + ;; (delete-file pheno-fn) + ;; (delete-file gwa-json-fn) + ;; (delete-file k-json-fn) + ;; (rmdir tmpdir) + ) + ) + (define (run-gemma population data-id probeset-id probesetfreeze-id name trait-name traits) "Run gemma-wrapper to compute GRM and GWA. On failure the run will stop(!)" (define ids (string-append (int-to-string data-id) "," @@ -46,7 +70,6 @@ (display ids) (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")) diff --git a/scripts/precompute/run-gemma.scm b/scripts/precompute/run-gemma.scm index 36edf8b..48222b4 100755 --- a/scripts/precompute/run-gemma.scm +++ b/scripts/precompute/run-gemma.scm @@ -9,7 +9,7 @@ Run from base dir with and with some extra paths (for gemma) -. .guix-shell ruby --expose=/home/wrk/iwrk/opensource/code/genetics/gemma-wrapper/=/gemma-wrapper --expose=/home/wrk/iwrk/opensource/code/genetics/gemma/=/gemma -- env TMPDIR=tmp guile -L . -s ./scripts/precompute/run-gemma.scm +guix shell -C -F xz tar time parallel gemma coreutils-minimal guile guile-dbi guile-json ruby --expose=/home/wrk/iwrk/opensource/code/genetics/gemma-wrapper/=/gemma-wrapper --expose=/home/wrk/iwrk/opensource/code/genetics/gemma/=/gemma -- env TMPDIR=tmp guile -L . -e main -s ./scripts/precompute/run-gemma.scm test !# @@ -49,5 +49,5 @@ Usage: list-traits-to-compute [options...] ] (display dataset) (write-pheno-file "pheno.txt" traits) - ; (run-gemma "BXD" data-id probeset-id probesetfreeze-id name trait-name traits))) + (invoke-gemma-wrapper-loco dataset-name trait-name "pheno.txt") )))))) |