aboutsummaryrefslogtreecommitdiff
path: root/examples/probeset-data.scm
diff options
context:
space:
mode:
Diffstat (limited to 'examples/probeset-data.scm')
-rwxr-xr-xexamples/probeset-data.scm98
1 files changed, 98 insertions, 0 deletions
diff --git a/examples/probeset-data.scm b/examples/probeset-data.scm
new file mode 100755
index 0000000..d46bcda
--- /dev/null
+++ b/examples/probeset-data.scm
@@ -0,0 +1,98 @@
+#! /usr/bin/env guile
+!#
+
+(use-modules (srfi srfi-1)
+ (srfi srfi-26)
+ (ice-9 match)
+ (ice-9 regex)
+ (dump strings)
+ (dump sql)
+ (dump triples)
+ (dump special-forms))
+
+
+
+(define %connection-settings
+ (call-with-input-file (list-ref (command-line) 1)
+ read))
+
+
+
+(define-transformer probeset-data
+ (tables (ProbeSetXRef
+ (left-join ProbeSet "ON ProbeSetXRef.ProbeSetId = ProbeSet.Id")
+ (left-join ProbeSetFreeze "ON ProbeSetXRef.ProbeSetFreezeId = ProbeSetFreeze.Id"))
+ "WHERE ProbeSetFreeze.public > 0 AND ProbeSetFreeze.confidentiality < 1")
+ (schema-triples
+ (gnc:probesetStatistics a skos:Concept)
+ (gnc:probesetStatistics
+ skos:description
+ "This is a set of controlled terms that are used to describe a given probeset's statistics")
+ (gnt:mean rdfs:domain gnc:probeset)
+ (gnt:locus rdfs:domain gnc:probeset)
+ (gnt:LRS rdfs:domain gnc:probeset)
+ (gnt:stdErr rdfs:domain gnc:probeset)
+ (gnt:stdErr rdfs:range xsd:double)
+ (gnt:pValue rdfs:domain gnc:probeset)
+ (gnt:pValue rdfs:range xsd:double)
+ (gnt:h2 rdfs:domain gnc:probeset)
+ (gnt:h2 rdfs:range xsd:double))
+ (triples
+ (string->identifier
+ ""
+ (regexp-substitute/global
+ #f "[^A-Za-z0-9:]"
+ (field
+ ("CONCAT(ProbeSetFreeze.Name, '_', IF(NULLIF(TRIM(ProbeSet.Name), ProbeSet.Id) IS NULL, '', TRIM(ProbeSet.Name)))"
+ probesetData))
+ 'pre "_" 'post)
+ #:separator ""
+ #:proc string-capitalize-first)
+ (set rdf:type 'gnc:probesetStatistics)
+ (set gnt:hasProbeSet (let ((id (field ("IF(NULLIF(TRIM(ProbeSet.Name), '') IS NULL, '', TRIM(ProbeSet.Name))"
+ ProbeSetIdName)))
+ (probeset-id (field ProbeSet Id)))
+ (string->identifier
+ "probeset"
+ (if (string-null? id)
+ (number->string probeset-id)
+ (regexp-substitute/global
+ #f "[^A-Za-z0-9:]"
+ id
+ 'pre "_" 'post)))))
+ (set gnt:mean (annotate-field (field ("IFNULL(ProbeSetXRef.mean, '')" mean))
+ '^^xsd:double))
+ (set gnt:locus (field ProbeSetXRef Locus))
+ (set gnt:LRS (annotate-field
+ (field ("IFNULL(ProbeSetXRef.LRS, '')" lrs))
+ '^^xsd:double))
+ (set gnt:additive
+ (annotate-field (field ("IFNULL(ProbeSetXRef.additive, '')" additive))
+ '^^xsd:double))
+ (set gnt:stdErr (annotate-field (field ("IFNULL(ProbeSetXRef.se, '')" stdErr))
+ '^^xsd:double))
+ (set gnt:pValue (annotate-field (field ("IFNULL(ProbeSetXRef.pValue, '')" pValue))
+ '^^xsd:double))
+ (set gnt:h2 (annotate-field (field ("IFNULL(ProbeSetXRef.h2, '')" h2))
+ '^^xsd:double))))
+
+
+
+(with-documentation
+ (name "Probeset Summary Statistics")
+ (connection %connection-settings)
+ (table-metadata? #f)
+ (prefixes
+ '(("gn:" "<http://genenetwork.org/id/>")
+ ("gnc:" "<http://genenetwork.org/category/>")
+ ("gnt:" "<http://genenetwork.org/id/>")
+ ("skos:" "<http://www.w3.org/2004/02/skos/core#>")
+ ("owl:" "<http://www.w3.org/2002/07/owl#>")
+ ("rdf:" "<http://www.w3.org/1999/02/22-rdf-syntax-ns#>")
+ ("rdfs:" "<http://www.w3.org/2000/01/rdf-schema#>")
+ ("xsd:" "<http://www.w3.org/2001/XMLSchema#>")))
+ (inputs
+ (list probeset-data))
+ (outputs
+ '(#:documentation "./docs/probeset-summary-stats.md"
+ #:rdf "./verified-data/probeset-summary-stats.ttl")))