#! /usr/bin/env guile !# (use-modules (srfi srfi-1) (srfi srfi-26) (ice-9 getopt-long) (ice-9 match) (ice-9 regex) (transform strings) (transform sql) (transform triples) (transform special-forms) (web uri)) (define-transformer probesetxref->metadata (tables (ProbeSetXRef (inner-join ProbeSetFreeze "ON ProbeSetXRef.ProbeSetFreezeId = ProbeSetFreeze.Id") (inner-join ProbeSet "ON ProbeSet.Id = ProbeSetXRef.ProbeSetId")) "WHERE ProbeSetFreeze.public > 0 AND ProbeSetFreeze.confidentiality < 1") (triples (string->identifier "probeset_data" (uri-encode (format #f "~a_~a" (field ProbeSetFreeze Name ProbeSetFreezeName) (field ProbeSet Name ProbeSetName))) #:separator "_") (set rdf:type 'gnc:molecular_trait_metadata) (set dcat:distribution (string->symbol (sanitize-rdf-string (format #f "gnd:~a.json" (field ("CONCAT(ProbeSetFreeze.Name, '_', ProbeSet.Name)" PublishFreeze))))) ) (set gnt:has_probeset (string->identifier "probeset" (field ProbeSet Name ProbeSetName))) (set dcat:isPartOf (string->identifier "dataset" (field ProbeSetFreeze Name ProbeSetFreezeName) #:separator "_")) (set gnt:mean (annotate-field (field ("IFNULL(ProbeSetXRef.mean, '')" mean)) '^^xsd:double)) (set gnt:SE (annotate-field (field ("IFNULL(ProbeSetXRef.se, '')" se)) '^^xsd:double)) (set gnt:locus (sanitize-rdf-string (field ProbeSetXRef Locus))) (set gnt:lod_score (annotate-field (field ("IFNULL((ProbeSetXRef.LRS/4.604), '')" lrs)) '^^xsd:double)) (set gnt:pvalue (annotate-field (field ("IFNULL((ProbeSetXRef.pValue), '')" pValue)) '^^xsd:double)) (set gnt:additive (annotate-field (field ("IFNULL((ProbeSetXRef.additive), '')" additive)) '^^xsd:double)) (set gnt:h2 (annotate-field (field ("IFNULL((ProbeSetXRef.h2), '')" h2)) '^^xsd:double)))) (let* ((option-spec '((settings (single-char #\s) (value #t)) (output (single-char #\o) (value #t)) (documentation (single-char #\d) (value #t)))) (options (getopt-long (command-line) option-spec)) (settings (option-ref options 'settings #f)) (output (option-ref options 'output #f)) (documentation (option-ref options 'documentation #f)) (%connection-settings (call-with-input-file settings read))) (call-with-target-database %connection-settings (lambda (db) (with-documentation (name "ProbeSet Experiments Metadata") (connection %connection-settings) (table-metadata? #f) (total-rows (assoc-ref (sql-find db "SELECT count(*) AS count from ProbeSetXRef") "count")) (rows-per-chunk 1000000) (prefixes '(("dcat:" "") ("gn:" "") ("gnc:" "") ("gnt:" "") ("gnd:" "") ("rdf:" "") ("kegg:" "") ("pubchem:" "") ("omim:" "") ("rdfs:" "") ("uniprot:" "") ("chebi:" "") ("dcat:" "") ("dct:" "") ("owl:" "") ("homologene:" "") ("xsd:" "") ("qb:" "") ("sdmx-measure:" "") ("skos:" ""))) (inputs (list probesetxref->metadata)) (outputs `(#:documentation ,documentation #:rdf ,output))))))