diff options
-rw-r--r-- | bh20simplewebuploader/main.py | 35 | ||||
-rw-r--r-- | bh20simplewebuploader/templates/permalink.html | 30 |
2 files changed, 55 insertions, 10 deletions
diff --git a/bh20simplewebuploader/main.py b/bh20simplewebuploader/main.py index 37f4590..4ec3251 100644 --- a/bh20simplewebuploader/main.py +++ b/bh20simplewebuploader/main.py @@ -670,21 +670,24 @@ sparqlURL='http://sparql.genenetwork.org/sparql/' ## # Example http://host/resource/MT326090.1 +# Example http://host/resource/SRR11621868 @app.route('/resource/<id>') def resource(id): """Get a COVID19 resource using identifier""" - query=""" + query=f""" PREFIX pubseq: <http://biohackathon.org/bh20-seq-schema#MainSchema/> PREFIX sio: <http://semanticscience.org/resource/> -select distinct ?sample ?geoname ?date ?source ?geo ?sampletype -{ - ?sample sio:SIO_000115 "MT326090.1" . +select distinct ?sample ?geoname ?date ?source ?geo ?sampletype ?institute ?sequenceuri +{{ + ?sample sio:SIO_000115 "{id}" . + ?sequenceuri pubseq:sample ?sample . ?sample <http://purl.obolibrary.org/obo/GAZ_00000448> ?geo . ?geo rdfs:label ?geoname . ?sample <http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl#C25164> ?date . - OPTIONAL {?sample <http://edamontology.org/data_2091> ?source } - OPTIONAL {?sample <http://purl.obolibrary.org/obo/OBI_0001479> ?sampletype } -} + OPTIONAL {{ ?sample <http://edamontology.org/data_2091> ?source }} + OPTIONAL {{ ?sample <http://purl.obolibrary.org/obo/OBI_0001479> ?sampletype }} + OPTIONAL {{ ?sample <http://purl.obolibrary.org/obo/NCIT_C41206> ?institute }} +}} """ payload = {'query': query, 'format': 'json'} r = requests.get(sparqlURL, params=payload) @@ -694,12 +697,24 @@ select distinct ?sample ?geoname ?date ?source ?geo ?sampletype logging.info(sample) logging.info("^^^^^^^^^^^^^^^^^^^^^^^^^^^^") # return jsonify({'sequences': int(result[0]["num"]["value"])}) + sequenceuri=sample['sequenceuri']['value'] + collectionuri=sequenceuri.split('sequence.fasta')[0] + metauri=collectionuri+'metadata.yaml' locationuri=sample['geo']['value'] location=sample['geoname']['value'] date=sample['date']['value'] - source=sample['source']['value'] - sampletype=sample['sampletype']['value'] - return render_template('permalink.html',id=id,menu='',uri=f"http://covid19.genenetwork.org/resource/{id}",locationuri=locationuri,location=location,date=date,source=source,sampletype=sampletype) + if date == '1970-01-01': + date = '' + source='' + if 'source' in sample: + source=sample['source']['value'] + sampletype='' + if 'sampletype' in sample: + sampletype=sample['sampletype']['value'] + institute='' + if 'institute' in sample: + institute=sample['institute']['value'] + return render_template('permalink.html',id=id,menu='',uri=f"http://covid19.genenetwork.org/resource/{id}",sequenceuri=sequenceuri,locationuri=locationuri,location=location,date=date,source=source,sampletype=sampletype,institute=institute,collectionuri=collectionuri,metauri=metauri) ## Dynamic API functions starting here ## This is quick and dirty for now, just to get something out and demonstrate the queries diff --git a/bh20simplewebuploader/templates/permalink.html b/bh20simplewebuploader/templates/permalink.html index f75c21e..abf6b1e 100644 --- a/bh20simplewebuploader/templates/permalink.html +++ b/bh20simplewebuploader/templates/permalink.html @@ -59,6 +59,16 @@ <div class="blog-table-body"> <div class="blog-table-row"> <div class="blog-table-cell"> + Institute + </div> + <div class="blog-table-cell"> + {{ institute }} + </div> + </div> + </div> + <div class="blog-table-body"> + <div class="blog-table-row"> + <div class="blog-table-cell"> Sample type </div> <div class="blog-table-cell"> @@ -69,6 +79,26 @@ <div class="blog-table-body"> <div class="blog-table-row"> <div class="blog-table-cell"> + Sequence + </div> + <div class="blog-table-cell"> + <a href="{{ sequenceuri }}">{{sequenceuri}}</a> + </div> + </div> + </div> + <div class="blog-table-body"> + <div class="blog-table-row"> + <div class="blog-table-cell"> + Metadata + </div> + <div class="blog-table-cell"> + <a href="{{ metauri }}">{{metauri}}</a> + </div> + </div> + </div> + <div class="blog-table-body"> + <div class="blog-table-row"> + <div class="blog-table-cell"> Source </div> <div class="blog-table-cell"> |