about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPjotr Prins2024-07-07 14:11:30 +0200
committerPjotr Prins2024-07-07 14:11:30 +0200
commit65ee7ce5c99aeb802152027c43c9285aec3ab9ad (patch)
tree9760f7a2cfe33d2f3d0474fd3127340d0871c7ce
parent3fcc0a58f6a4ad3f86e0e8c96b58ad8bc179b3cf (diff)
downloadgn-guile-65ee7ce5c99aeb802152027c43c9285aec3ab9ad.tar.gz
precompute: adding metadata
-rw-r--r--gn/data/hits.scm6
-rwxr-xr-xscripts/precompute/list-traits-to-compute.scm34
2 files changed, 24 insertions, 16 deletions
diff --git a/gn/data/hits.scm b/gn/data/hits.scm
index 88dee11..a7ba45a 100644
--- a/gn/data/hits.scm
+++ b/gn/data/hits.scm
@@ -20,20 +20,22 @@
             update-precompute!
             hit-data-id
             hit-probeset-id
+            hit-probesetfreeze-id
             ))
 
 
 (define-record-type <hit>
-  (make-hit data-id probeset-id)
+  (make-hit data-id probeset-id probesetfreeze-id)
   hit?
   (data-id hit-data-id)
   (probeset-id hit-probeset-id)
+  (probesetfreeze-id hit-probesetfreeze-id)
   )
 
 (define (get-precompute-hits db first-id num)
   (dbi-query db (string-append "select Locus, DataId, ProbeSetId, ProbeSetFreezeId from ProbeSetXRef where DataId>" (int-to-string first-id) " AND Locus_old is NULL ORDER BY DataId LIMIT " (format #f "~d" num)))
   (map (lambda (r)
-         (make-hit (assoc-ref r "DataId") (assoc-ref r "ProbeSetId")))
+         (make-hit (assoc-ref r "DataId") (assoc-ref r "ProbeSetId") (assoc-ref r "ProbeSetFreezeId")))
          (get-rows db '())
   ))
 
diff --git a/scripts/precompute/list-traits-to-compute.scm b/scripts/precompute/list-traits-to-compute.scm
index 199f457..9a548b7 100755
--- a/scripts/precompute/list-traits-to-compute.scm
+++ b/scripts/precompute/list-traits-to-compute.scm
@@ -108,17 +108,20 @@ The following is produced by gemma-wrapper as metadata
 !#
 
 
-(define (write-json-ld id dataset-id recs)
+(define (write-json-ld id name trait trait-name probeset-id recs)
   ;; see also https://www.w3.org/2018/jsonld-cg-reports/json-ld/
   (display id)
   (display ":")
-  (display dataset-id)
+  (display name)
+  (display ":")
+  (display trait-name)
   (newline)
   (let* [(traits (map (lambda (r)
                         (match r
                           [(strain-id . value) (cons (bxd-name strain-id) value)]
                           ))
                       (reverse recs)))
+         (uri (format #f "https://genenetwork.org/show_trait?trait_id=~a&dataset=~a" trait-name name))
          (sha256 (sha-256->string (sha-256 (string->utf8 (scm->json-string traits)))))
          (json-data `(("@context" . "https://genenetwork.org/resource")
                       (type . traits)
@@ -128,8 +131,11 @@ The following is produced by gemma-wrapper as metadata
                                (time . ,(date->string (time-utc->date (current-time))))))
                       (data .
                             ((,id .
-                                  ((dataset . ,dataset-id)
-                                   (traits . ,traits)))))))]
+                                  ((probeset-id . ,probeset-id)
+                                   (name . ,name)
+                                   (trait-name . ,trait-name)
+                                   (traits . ,traits)
+                                   (uri . ,uri)))))))]
     (call-with-output-file (string-append (number->string id) ".json")
       (lambda (port)
         (put-string port (scm->json-string json-data))))
@@ -172,19 +178,19 @@ The following is produced by gemma-wrapper as metadata
                        id-traits)
              ;; --- create the json output as a file
              (for-each (lambda (r h)
-                         ;; (let* [;; (probeset-id (assoc-ref hit "ProbeSetId"))
-                                ;; (data-id (assoc-ref hit "DataId"))
-                                ;; (data-id-str (int-to-string data-id))
-                                ;; (probesetfreeze-id (assoc-ref hit "ProbeSetFreezeId"))
-                                ;; (trait (get-trait db probeset-id))
-                                ;; (trait-name (assoc-ref trait "Name"))
-                                ;; (name (dataset-name db probesetfreeze-id))
-                               ;; ]
+                         (let* [
+                                (probeset-id (hit-probeset-id h))
+                                ;; (data-id-str (int-to-string id))
+                                (probesetfreeze-id (hit-probesetfreeze-id h))
+                                (name (dataset-name db probesetfreeze-id))
+                                (trait (get-trait db probeset-id))
+                                (trait-name (assoc-ref trait "Name"))
+                                ]
                            (match r
                              ((id . recs) (if (has-bxd? recs)
-                                              (write-json-ld id (hit-probeset-id h) recs)
+                                              (write-json-ld id name trait trait-name probeset-id recs)
                                               ))
-                             )) nrecs hits)
+                             ))) nrecs hits)
              (if (> rest 0)
                  (run-list-traits-to-compute db rest (first (reverse data-ids)))) ;; start precompute
            )))