about summary refs log tree commit diff
path: root/scripts/precompute
diff options
context:
space:
mode:
authorPjotr Prins2024-01-05 09:27:39 +0100
committerPjotr Prins2024-01-05 09:27:39 +0100
commit162b4c5cfb49766c66d274f9ddb414f6bd4d087e (patch)
treee8c2306d788ac7d59d99b8233262f1f78bb64c62 /scripts/precompute
parent6fa4d04cf954bc374a8532d285496760f2283f38 (diff)
downloadgn-guile-162b4c5cfb49766c66d274f9ddb414f6bd4d087e.tar.gz
Precompute will run gemma and update the DB status
Diffstat (limited to 'scripts/precompute')
-rwxr-xr-xscripts/precompute/precompute-hits.scm90
1 files changed, 46 insertions, 44 deletions
diff --git a/scripts/precompute/precompute-hits.scm b/scripts/precompute/precompute-hits.scm
index 0fabe8f..7385995 100755
--- a/scripts/precompute/precompute-hits.scm
+++ b/scripts/precompute/precompute-hits.scm
@@ -64,49 +64,51 @@ ssh -L 3306:127.0.0.1:3306 -f -N tux02.genenetwork.org
    )
 
      (define (run-precompute db prev-id)
-       (let* [(hit (get-precompute-hit db prev-id))
-              (data-id (assoc-ref hit "DataId"))
-              (data-id-str (int-to-string data-id))
-              (probesetfreeze-id (assoc-ref hit "ProbeSetFreezeId"))
-              (probeset-id (assoc-ref hit "ProbeSetId"))
-              (trait (get-trait db probeset-id))
-              (trait-name (assoc-ref trait "Name"))
-              (name (dataset-name db probesetfreeze-id))
-              ]
-         (display hit)
-         (display data-id)
-         (newline)
-         ;; ---- Get strains and phenotypes for this dataset
-         (dbi-query db (string-append "SELECT StrainId,value from ProbeSetData WHERE Id=" data-id-str))
-         (define id_traits (get-rows-apply db
-                                        (lambda (r) `(,(assoc-ref r "StrainId") . ,(assoc-ref r "value")))
-                                        '()))
-         ;; ---- Now we need to make sure that all strains belong to BXD
-         (define non-bxd (fold
-                          (lambda (strain lst)
-                            (let* [(id (car strain))
-                                   (name (assoc id bxd-strains))]
-                              (if name
-                                  lst
-                                  (append lst `(,name)))))
+       (let [(hit (get-precompute-hit db prev-id))]
+         (if hit
+             (let* [(data-id (assoc-ref hit "DataId"))
+                    (data-id-str (int-to-string data-id))
+                    (probesetfreeze-id (assoc-ref hit "ProbeSetFreezeId"))
+                    (probeset-id (assoc-ref hit "ProbeSetId"))
+                    (trait (get-trait db probeset-id))
+                    (trait-name (assoc-ref trait "Name"))
+                    (name (dataset-name db probesetfreeze-id))
+                    ]
+               (display hit)
+               (display data-id)
+               (newline)
+               ;; ---- Get strains and phenotypes for this dataset
+               (dbi-query db (string-append "SELECT StrainId,value from ProbeSetData WHERE Id=" data-id-str))
+               (define id_traits (get-rows-apply db
+                                                 (lambda (r) `(,(assoc-ref r "StrainId") . ,(assoc-ref r "value")))
+                                                 '()))
+               ;; ---- Now we need to make sure that all strains belong to BXD
+               (define non-bxd (fold
+                                (lambda (strain lst)
+                                  (let* [(id (car strain))
+                                         (name (assoc id bxd-strains))]
+                                    (if name
+                                        lst
+                                        (append lst `(,name)))))
 
-                          '()
-                          id_traits))
-         (define traits (map
-                         (lambda (t)
-                           (match t
-                             ((id . value) (cons (assoc-ref bxd-strains id) value)
-                             )))
-                         id_traits))
-         (display traits)
-         ;; (if (= 0 (length non-bxd))
-         (if (eq? non-bxd '())
-             (begin
-               (set-precompute-hit-status! db data-id-str "GEMMA-START")
-               (run-gemma "BXD" data-id name trait-name traits)))
-             ;; disable precompute if non-bxd, for now, so it won't try again
-             (set-precompute-hit-status! db data-id-str "NON-BXD")
-         ;;(run-precompute db data-id)
-         ))
-     (run-precompute db 0)
+                                '()
+                                id_traits))
+               (define traits (map
+                               (lambda (t)
+                                 (match t
+                                   ((id . value) (cons (assoc-ref bxd-strains id) value)
+                                    )))
+                               id_traits))
+               (display traits)
+               ;; (if (= 0 (length non-bxd))
+               (if (eq? non-bxd '())
+                   (begin
+                     (set-precompute-hit-status! db data-id-str "GEMMA-START")
+                     (run-gemma "BXD" data-id name trait-name traits)
+                     (set-precompute-hit-status! db data-id-str "GEMMA-DONE")))
+               ;; disable precompute if non-bxd, for now, so it won't try again
+               (set-precompute-hit-status! db data-id-str "NON-BXD")
+               (run-precompute db data-id) ;; next round
+               ))))
+         (run-precompute db 0) ;; start precompute
 )))