aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPjotr Prins2025-07-30 14:31:42 +0200
committerPjotr Prins2025-07-30 14:31:53 +0200
commit9ad0793eb477611c700f4a5b02f60ac793bfae96 (patch)
tree092da30b49411962836cc7291c7b4ce513ed34ff
parent1590be15f85e30d7db879c19d2d3b4bed201556a (diff)
downloadgn-guile-9ad0793eb477611c700f4a5b02f60ac793bfae96.tar.gz
Create endpoint for mappable BXD values as dataset/bxd-publish/mapping/values
-rw-r--r--gn/data/dataset.scm20
-rw-r--r--web/webserver.scm12
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)))