about summary refs log tree commit diff
path: root/scripts
diff options
context:
space:
mode:
authorPjotr Prins2023-11-18 12:33:22 +0100
committerPjotr Prins2023-11-18 12:33:22 +0100
commitb1db013cc01c94e27edf982be9b027a2b0bb9712 (patch)
tree9aa73c1c8bbff2f7659f229c08b395788c6f33ec /scripts
parent06f941636a99904671c89916e17f28de4b2cd07e (diff)
downloadgn-guile-b1db013cc01c94e27edf982be9b027a2b0bb9712.tar.gz
Get first BXD dataset for precompute
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/precompute/precompute-hits.scm35
1 files changed, 32 insertions, 3 deletions
diff --git a/scripts/precompute/precompute-hits.scm b/scripts/precompute/precompute-hits.scm
index a6617d9..28dabc9 100755
--- a/scripts/precompute/precompute-hits.scm
+++ b/scripts/precompute/precompute-hits.scm
@@ -7,14 +7,19 @@
 (use-modules (dbi dbi)
              (gn db mysql)
              (gn data strains)
+             (gn util convert)
              (rnrs base)
              (ice-9 match)
+             (srfi srfi-1)
              )
 
 ;; potentially you want to test connection with mysql client:
 ;;
 ;;    mysql -uwebqtlout -pwebqtlout -A -h 127.0.0.1 -P 3306 db_webqtl -e "show tables;"
 ;;
+;; for now update Locus_old with
+;;
+;;    update ProbeSetXRef set Locus_old=NULL;
 
 (call-with-db
  (lambda (db)
@@ -38,8 +43,32 @@
      ;  )
      ;(db-check2 db)
      ;(newline)
-     ;; get first dataset for precompute
-     (dbi-query db "select ProbeSetId, Locus, DataId from ProbeSetXRef where Locus_old is NULL LIMIT 1")
-     (display (get-row db))
+     ;; ---- get first available dataset for precompute:
+     (dbi-query db "select Locus, DataId, ProbeSetId from ProbeSetXRef where Locus_old is NULL LIMIT 1")
+     (define hit (get-row db))
+     (display hit)
+     (define data-id (assoc-ref hit "DataId"))
+     (display data-id)
      (newline)
+     ;; ---- Get strains and phenotypes for this dataset
+     (dbi-query db (string-append "SELECT StrainId,value from ProbeSetData WHERE Id=" (int-to-string data-id)))
+     (define 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)])
+                   (if (assoc id bxd-strains)
+                       lst
+                       (append lst `(,id)))))
+
+               '()
+               traits))
+     (if (= 0 (length non-bxd))
+         (begin
+           (display "WE HAVE OUR BXD DATASET for precompute!")
+           (display traits)
+           (newline)
+         ))
 )))