diff options
author | Pjotr Prins | 2025-08-11 08:41:09 +0200 |
---|---|---|
committer | Pjotr Prins | 2025-08-11 08:41:09 +0200 |
commit | 1cac4505039ff4e03e9cca75fc3b1a1d80b2d90b (patch) | |
tree | de49406a5d337c26cde75ab389771daf250f8039 | |
parent | 79d51c371f5f72684bc6ca8e57701fbb147b6482 (diff) | |
download | gn-guile-1cac4505039ff4e03e9cca75fc3b1a1d80b2d90b.tar.gz |
API
-rw-r--r-- | gn/data/dataset.scm | 17 | ||||
-rw-r--r-- | web/webserver.scm | 16 |
2 files changed, 27 insertions, 6 deletions
diff --git a/gn/data/dataset.scm b/gn/data/dataset.scm index b552b21..afe75ba 100644 --- a/gn/data/dataset.scm +++ b/gn/data/dataset.scm @@ -18,6 +18,7 @@ get-bxd-publish-list get-bxd-publish-values-list get-bxd-publish-name-value-dict + get-bxd-publish-dataid-name-value-dict )) (define (get-dataset db probesetfreeze-id) @@ -29,6 +30,14 @@ (define (dataset-name db probesetfreeze-id) (assoc-ref (get-dataset db probesetfreeze-id) "Name")) +(define (get-dataid-from-publishxrefid id) + "Get the internal dataid from publishxref - which is the same as used in the GN2 web interface" + (call-with-db + (lambda (db) + (let [(query (string-append "SELECT Id,PhenotypeId,DataId FROM PublishXRef WHERE Id=" id " AND InbredSetId=1 LIMIT 1"))] + (dbi-query db query) + (pk (int-to-string (assoc-ref (get-row db) "DataId"))))))) + (define (get-bxd-publish-list) (call-with-db (lambda (db) @@ -36,7 +45,7 @@ (dbi-query db query) (get-rows db '()))))) -(define* (get-bxd-publish-values-list dataid #:key used-for-mapping?) +(define* (get-bxd-publish-values-list dataid #:optional used-for-mapping?) "Returns dict of name values , e.g. [{\"Name\":\"C57BL/6J\",\"value\":9.136},{\"Name\":\"DBA/2J\",\"value\":4.401},{\"Name\":\"BXD9\",\"value\":4.36}, ... used-for-mapping? skips the founders and maybe other unmappable inds. Note, currently unused." (call-with-db (lambda (db) @@ -52,7 +61,7 @@ (get-rows db '()) ))))) -(define* (get-bxd-publish-name-value-dict dataid #:key used-for-mapping?) +(define* (get-bxd-publish-dataid-name-value-dict dataid #:optional used-for-mapping?) "Returns dict of name values, e.g. (((\"C57BL/6J\" . 9.136) (\"DBA/2J\" . 4.401) (\"BXD9\" . 4.36) ... used-for-mapping? skips the founders and maybe other unmappable inds." (call-with-db (lambda (db) @@ -70,3 +79,7 @@ `(,(assoc-ref r "Name") . ,(assoc-ref r "value")) ) '()))) ))))) + +(define* (get-bxd-publish-name-value-dict id #:optional used-for-mapping?) + "Same as above function, but starting from data id" + (get-bxd-publish-dataid-name-value-dict (get-dataid-from-publishxrefid id) used-for-mapping?)) diff --git a/web/webserver.scm b/web/webserver.scm index 5b1e024..dae235a 100644 --- a/web/webserver.scm +++ b/web/webserver.scm @@ -68,8 +68,11 @@ otherwise search for set/group data" "Return a list of published datasets by their record ID. We add the dataset ID and phenotype ID for quick reference" (list->vector (get-bxd-publish-list))) -(define* (get-bxd-publish-values dataid #:key used-for-mapping?) - (get-bxd-publish-name-value-dict dataid #:used-for-mapping? used-for-mapping?)) +(define* (get-bxd-publish-dataid-values dataid #:optional used-for-mapping?) + (get-bxd-publish-dataid-name-value-dict dataid used-for-mapping?)) + +(define* (get-bxd-publish-values dataid #:optional used-for-mapping?) + (get-bxd-publish-name-value-dict dataid used-for-mapping?)) (define (get-gene-aliases genename) "Return a vector of aliases for genename." @@ -257,15 +260,20 @@ otherwise search for set/group data" (render-brand path)) ; branding route for /home/aging, /home/msk etc (('GET "dataset" "bxd-publish" "list") (render-json (get-bxd-publish))) + (('GET "dataset" "bxd-publish" "dataid" "values" page) + (match (get-extension page) + (".json" + (render-json (get-bxd-publish-dataid-values (basename page ".json")))) + (else (display "ERROR: unknown file extension")))) (('GET "dataset" "bxd-publish" "values" page) (match (get-extension page) (".json" (render-json (get-bxd-publish-values (basename page ".json")))) - (".tsv" (render-string "TEST1\nTEST2")) + ;; (".tsv" (render-string "TEST1\nTEST2")) ;; (".gemma" (render-string (string-join (gemma-pheno-txt "BXD" (get-bxd-publish-values (basename page ".gemma"))) ""))) (else (display "ERROR: unknown file extension")))) (('GET "dataset" "bxd-publish" "mapping" "values" (string-append dataid ".json")) - (render-json (get-bxd-publish-values dataid #:used-for-mapping? #t))) + (render-json (get-bxd-publish-values dataid #t))) (('GET "doc" "species.html") (render-doc "doc" "species.html" (get-species-meta))) |