diff options
author | Pjotr Prins | 2025-07-30 14:31:42 +0200 |
---|---|---|
committer | Pjotr Prins | 2025-07-30 14:31:53 +0200 |
commit | 9ad0793eb477611c700f4a5b02f60ac793bfae96 (patch) | |
tree | 092da30b49411962836cc7291c7b4ce513ed34ff | |
parent | 1590be15f85e30d7db879c19d2d3b4bed201556a (diff) | |
download | gn-guile-9ad0793eb477611c700f4a5b02f60ac793bfae96.tar.gz |
Create endpoint for mappable BXD values as dataset/bxd-publish/mapping/values
-rw-r--r-- | gn/data/dataset.scm | 20 | ||||
-rw-r--r-- | web/webserver.scm | 12 |
2 files changed, 32 insertions, 0 deletions
diff --git a/gn/data/dataset.scm b/gn/data/dataset.scm index 5f6bb0f..6b2292a 100644 --- a/gn/data/dataset.scm +++ b/gn/data/dataset.scm @@ -4,6 +4,7 @@ #:use-module (ice-9 iconv) #:use-module (ice-9 receive) #:use-module (ice-9 string-fun) + #:use-module (srfi srfi-1) #:use-module (dbi dbi) #:use-module (gn db mysql) #:use-module (gn data group) @@ -13,6 +14,7 @@ #:export ( dataset-name get-bxd-publish-list + get-bxd-publish-values-list )) (define (get-dataset db probesetfreeze-id) @@ -30,3 +32,21 @@ (let [(query "SELECT Id,PhenotypeId,DataId FROM PublishXRef WHERE InbredSetId=1")] (dbi-query db query) (get-rows db '()))))) + +(define* (get-bxd-publish-values-list dataid #:key used-for-mapping?) + (call-with-db + (lambda (db) + (let [(query (string-append "SELECT Strain.Name, PublishData.value FROM Strain, PublishData WHERE PublishData.Id=" dataid " and Strain.Id=StrainID;"))] + (dbi-query db query) + (if used-for-mapping? + (remove null? (pk (get-rows-apply db + (lambda (r) + (if (string-contains (assoc-ref r "Name") "BXD") + `(("Name" . ,(assoc-ref r "Name")) ("value" . ,(assoc-ref r "value"))) + '() ) ;; return empty on no match + ) '()))) + (get-rows db '()) + ))))) + + +;; (define ids (db-get-rows-apply db (lambda (r) `(,(assoc-ref r \"StrainId\") . ,(assoc-ref r \"Name\"))) '())) diff --git a/web/webserver.scm b/web/webserver.scm index 5de4ac4..90e1441 100644 --- a/web/webserver.scm +++ b/web/webserver.scm @@ -61,6 +61,12 @@ 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) + (list->vector (get-bxd-publish-values-list dataid))) + +(define (get-bxd-publish-mapping-values dataid) + (list->vector (get-bxd-publish-values-list dataid #:used-for-mapping? #t))) + (define (get-gene-aliases genename) "Return a vector of aliases for genename." (list->vector (memo-sparql-wd-gene-aliases (memo-sparql-wd-geneids genename)))) @@ -242,6 +248,12 @@ 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" "values" dataid) + (render-json (get-bxd-publish-values dataid))) + (('GET "dataset" "bxd-publish" "values" dataid) + (render-json (get-bxd-publish-values dataid))) + (('GET "dataset" "bxd-publish" "mapping" "values" dataid) + (render-json (get-bxd-publish-mapping-values dataid))) (('GET "doc" "species.html") (render-doc "doc" "species.html" (get-species-meta))) |