aboutsummaryrefslogtreecommitdiff
path: root/gn/data/hits.scm
blob: 94b47495f91320766d677817a1e9521e50d04a4a (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
(define-module (gn data hits)
  #:use-module (json)
  #: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 (gn db sparql)
  #:use-module (dbi dbi)
  #:use-module (gn db mysql)
  #:use-module (gn data group)
  #:use-module (gn util convert)
  #:use-module (web gn-uri)

  #:export (
            get-precompute-hit
            set-precompute-hit-status!
            update-precompute!
            ))

(define (get-precompute-hit db prev-id)
  (dbi-query db (string-append "select Locus, DataId, ProbeSetId, ProbeSetFreezeId from ProbeSetXRef where DataId>" (int-to-string prev-id) " AND Locus_old is NULL ORDER BY DataId LIMIT 1"))
  (get-row db))

(define (set-precompute-hit-status! db data-id-str status-str)
  "Set status of precompute record - typically from NULL to 'GEMMA-START' or 'NON-BXD'.
On completion it is set to 'GEMMA-DONE'.
This is a temporary measure to get precompute going.
Note we are counting on automated MariaDB transactions to not compete."
  (dbi-query db (string-append "UPDATE ProbeSetXRef SET Locus_old=\"" status-str "\" WHERE DataId=" data-id-str))
  (ensure db)
  )

;; MariaDB [db_webqtl]> UPDATE ProbeSetXRef SET Locus_old=Locus,LRS_old=LRS,Locus="new",LRS=9.9,pValue=1.0,additive=1.0 WHERE ProbeSetFreezeId=1 AND DataId=2 AND Locus_old="GEMMA-START" ;

(define (update-precompute! db data-id-str status-str locus lrs pvalue, additive)
  "Once precompute is run we can update the table moving old values and plugging in the new.
"
  (dbi-query db (string-append "UPDATE ProbeSetXRef SET Locus_old=Locus,LRS_old=LRS,Locus=\"" locus "\",LRS=" lrs ",pValue=" pvalue ",additive=" additive " WHERE DataId=" data-id-str " AND Locus_old is \"GEMMA-START\""))
  (ensure db)
  )