From: Diane Trout Date: Wed, 25 Jan 2012 19:52:53 +0000 (-0800) Subject: Start writing a report for "so, what experiments have we submitted"? X-Git-Tag: v0.5.5~68 X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=htsworkflow.git;a=commitdiff_plain;h=4d241f27d8862842973bc1d9f60504dba266c212 Start writing a report for "so, what experiments have we submitted"? --- diff --git a/encode_submission/submission_report.py b/encode_submission/submission_report.py new file mode 100644 index 0000000..b5b8c6e --- /dev/null +++ b/encode_submission/submission_report.py @@ -0,0 +1,105 @@ +import RDF +import jinja2 + +from htsworkflow.util.rdfhelp import \ + dafTermOntology, \ + dublinCoreNS, \ + get_model, \ + get_serializer, \ + sparql_query, \ + submissionOntology, \ + libraryOntology, \ + load_into_model, \ + rdfNS, \ + rdfsNS, \ + xsdNS +TYPE_N = rdfNS['type'] +CREATION_DATE = libraryOntology['date'] + +from encode_find import DBDIR + +def main(): + model = get_model('encode', DBDIR) + what_have_we_done(model) + +SUBMISSION_QUERY = """ +PREFIX xsd: +PREFIX rdfs: +PREFIX ucscSubmission: +PREFIX libraryOntology: +PREFIX daf: +PREFIX ddf: + +SELECT distinct ?library_urn ?library_name ?assembly ?submission ?submission_status ?date +WHERE { + ?submission ucscSubmission:library_urn ?library_urn ; + ucscSubmission:has_status ?status ; + libraryOntology:date ?date . + ?status daf:assembly ?assembly ; + ucscSubmission:status ?submission_status . + OPTIONAL { ?library_urn libraryOntology:name ?library_name . } + FILTER(!regex(?submission_status, "revoked", "i")) + FILTER(regex(?assembly, "mm9", "i")) + #FILTER(!BOUND(?library_name)) +} +ORDER BY ?library_urn ?submission +""" + +SUBMISSION_TEMPLATE = """ + + + + + + + + + + + + + +{% for record in submissions %} + + + + + + + +{% endfor %} + +
Library IDSubmission IDLast UpdatedStatusLibrary Name
{{ record.library_urn | trim_rdf}}{{record.submission|trim_rdf}}{{ record.date|timestamp_to_date }}{{ record.submission_status }}{{ record.library_name }}
+ + +""" + +def what_have_we_done(model): + compiled_query = RDF.SPARQLQuery(SUBMISSION_QUERY) + submissions = compiled_query.execute(model) + environment = jinja2.Environment() + environment.filters['trim_rdf'] = trim_rdf + environment.filters['timestamp_to_date'] = timestamp_to_date + template = environment.from_string(SUBMISSION_TEMPLATE) + print template.render(submissions = submissions) + +def trim_rdf(value): + if value is None: + return + value = str(value) + if value[-1] == '/': + value = value[:-1] + split_value = value.split('/') + if len(split_value) == 0: + return value + return split_value[-1] + +def timestamp_to_date(value): + datestamp, timestamp = str(value).split('T') + return datestamp + +if __name__ == "__main__": + main()