diff options
author | Pjotr Prins | 2025-07-16 10:55:41 +0200 |
---|---|---|
committer | Pjotr Prins | 2025-07-16 10:55:41 +0200 |
commit | 7b80128e3e706bc44eb60d565634cac2eba8c7a1 (patch) | |
tree | 4928e5eb07e568024a9ff0d7905ee8b269b47b8e /gn/db/sparql.scm | |
parent | 32d4b0c0bb60723d4fcaa61d85d97ecba37ecb5b (diff) | |
download | gn-guile-7b80128e3e706bc44eb60d565634cac2eba8c7a1.tar.gz |
aliases: we now have a list of deduplicatied aliases
Diffstat (limited to 'gn/db/sparql.scm')
-rw-r--r-- | gn/db/sparql.scm | 42 |
1 files changed, 30 insertions, 12 deletions
diff --git a/gn/db/sparql.scm b/gn/db/sparql.scm index bc2bb29..c6c7cd8 100644 --- a/gn/db/sparql.scm +++ b/gn/db/sparql.scm @@ -8,18 +8,19 @@ the case. !# (define-module (gn db sparql) - #:use-module (json) - #:use-module (ice-9 match) + #:use-module (gn cache memoize) + #:use-module (gn db sources wikidata) #:use-module (ice-9 format) #:use-module (ice-9 iconv) + #:use-module (ice-9 match) #:use-module (ice-9 receive) #:use-module (ice-9 string-fun) + #:use-module (json) + #:use-module (srfi srfi-1) #:use-module (web client) + #:use-module (web gn-uri) #:use-module (web request) #:use-module (web uri) - #:use-module (gn cache memoize) - #:use-module (gn db sources wikidata) - #:use-module (web gn-uri) #:export (memo-sparql-species memo-sparql-species-meta @@ -165,6 +166,14 @@ SELECT DISTINCT ?taxon ?ncbi ?descr where { "))) +(define (flatten lst) + (cond ((null? lst) '()) + ((pair? lst) (append (flatten (car lst)) (flatten (cdr lst)))) + (else (list lst)))) + +(define (remove-quotes s) + (substring s 1 (- (string-length s) 1))) + (define memo-sparql-wd-species-info (memoize sparql-wd-species-info)) @@ -173,7 +182,8 @@ SELECT DISTINCT ?taxon ?ncbi ?descr where { (\"<http://www.wikidata.org/entity/Q14860079>\" \"<http://www.wikidata.org/entity/Q24420953>\")" (receive (type values) (tsv->scm (sparql-tsv (wd-sparql-endpoint-url) (wikidata-query-geneids gene-name))) - (map (lambda (item) (car item)) values) ;; flatten list)) + (map (lambda (item) (car item)) values) ;; flatten list + )) (define memo-sparql-wd-geneids (memoize sparql-wd-geneids)) @@ -182,12 +192,20 @@ SELECT DISTINCT ?taxon ?ncbi ?descr where { "Returns a flattened and dedpulicated list of geneids with (sparql-wd-gene-aliases '(\"Q14860079\" \"Q24420953\")) " - (map (lambda (geneid) - (receive (type values) - (tsv->scm (sparql-tsv (wd-sparql-endpoint-url) (wikidata-query-gene-aliases (pk geneid)))) - (map (lambda (item) (car item)) values) ;; flatten list)) - ) - ) geneids)) + (let* ([aliases + (map (lambda (geneid) + (receive (type values) + (tsv->scm (sparql-tsv (wd-sparql-endpoint-url) (wikidata-query-gene-aliases (pk geneid)))) + (map (lambda (item) (car item)) values) ;; flatten list)) + ) + ) geneids)] + [rm-quotes-aliases (map (lambda (s) (remove-quotes s)) (flatten aliases))] + ) + (delete-duplicates rm-quotes-aliases))) + +(define memo-sparql-wd-gene-aliases + (memoize sparql-wd-gene-aliases)) + #! gn:Mus_musculus rdf:type gnc:species . |