From dceac420dffa3aa74ef49a50d9be01e450e9d339 Mon Sep 17 00:00:00 2001 From: Pjotr Prins Date: Tue, 21 Jul 2020 11:05:00 +0100 Subject: Add sequencer JSON/XML output --- bh20simplewebuploader/api.py | 40 +++++++++++++++++++++++++- bh20simplewebuploader/templates/ebi-sample.xml | 4 +-- 2 files changed, 41 insertions(+), 3 deletions(-) (limited to 'bh20simplewebuploader') diff --git a/bh20simplewebuploader/api.py b/bh20simplewebuploader/api.py index 29fa2b8..ff82b72 100644 --- a/bh20simplewebuploader/api.py +++ b/bh20simplewebuploader/api.py @@ -7,13 +7,51 @@ import sys from flask import Flask, request, redirect, send_file, send_from_directory, render_template, jsonify from bh20simplewebuploader.main import app, baseURL +# Helper functions + +def fetch_sample_metadata(id): + query = """ + PREFIX pubseq: + PREFIX sio: + PREFIX edam: + PREFIX efo: + select distinct ?id ?seq ?info ?sequencer + { + ?sample sio:SIO_000115 "%s" . + ?sample sio:SIO_000115 ?id . + ?seq pubseq:technology ?tech . + ?seq pubseq:sample ?sample . + ?sample edam:data_2091 ?info . + ?tech efo:EFO_0002699 ?sequencer . + } limit 5 + """ % id + payload = {'query': query, 'format': 'json'} + r = requests.get(baseURL, params=payload) + return r.json()['results']['bindings'] + +# Main API routes + @app.route('/api/version') def version(): return jsonify({ 'service': 'PubSeq', 'version': 0.10 }) +@app.route('/api/sample/.json') +def sample(id): + # metadata = file.name(seq)+"/metadata.yaml" + meta = fetch_sample_metadata(id) + return jsonify([{ + 'id': x['id']['value'], + 'fasta': x['seq']['value'], + 'collection': os.path.dirname(x['seq']['value']), + 'info': x['info']['value'], + 'sequencer': x['sequencer']['value'], + } for x in meta]) + @app.route('/api/ebi/sample-.xml', methods=['GET']) def ebi_sample(id): - page = render_template('ebi-sample.xml',**locals()) + meta = fetch_sample_metadata(id)[0] + print("HERE",meta,file=sys.stderr) + page = render_template('ebi-sample.xml',sampleid=id,sequencer=meta['sequencer']['value']) return page @app.route('/api/search', methods=['GET']) diff --git a/bh20simplewebuploader/templates/ebi-sample.xml b/bh20simplewebuploader/templates/ebi-sample.xml index 441e29e..0b6b39e 100644 --- a/bh20simplewebuploader/templates/ebi-sample.xml +++ b/bh20simplewebuploader/templates/ebi-sample.xml @@ -1,6 +1,6 @@ - + COVID-19 PubSeq Sample 2697049 @@ -14,7 +14,7 @@ sequencing method - {{ sequence_method }} + {{ sequencer }} collection date -- cgit v1.2.3