aboutsummaryrefslogtreecommitdiff
path: root/bh20simplewebuploader
diff options
context:
space:
mode:
Diffstat (limited to 'bh20simplewebuploader')
-rw-r--r--bh20simplewebuploader/main.py40
-rw-r--r--bh20simplewebuploader/static/main.js3
-rw-r--r--bh20simplewebuploader/templates/demo-run.html1
3 files changed, 44 insertions, 0 deletions
diff --git a/bh20simplewebuploader/main.py b/bh20simplewebuploader/main.py
index b67e1bf..840070d 100644
--- a/bh20simplewebuploader/main.py
+++ b/bh20simplewebuploader/main.py
@@ -587,6 +587,46 @@ def getSEQCountbyLocation():
'label': x['geoLocation_label']['value']} for x in result])
+@app.route('/api/getSEQCountbyContinent', methods=['GET'])
+def getSEQCountbyContinent():
+ query="""SELECT DISTINCT ?continent ?continent_label (count(?fasta) as ?fastaCount) WHERE {
+ ?fasta ?x[ <http://purl.obolibrary.org/obo/GAZ_00000448> ?location] .
+ ?location <http://www.wikidata.org/prop/direct/P30> ?continent .
+ OPTIONAL { ?continent rdfs:label ?key_tmp_label }
+ BIND(IF(BOUND(?key_tmp_label),?key_tmp_label, ?location) as ?continent_label)
+ }
+ GROUP BY ?continent ?continent_label
+ """
+ payload = {'query': query, 'format': 'json'}
+ r = requests.get(baseURL, params=payload)
+ result = r.json()['results']['bindings']
+ return jsonify([{'count': x['fastaCount']['value'],
+ 'key': x['continent']['value'],
+ 'label': x['continent_label']['value']} for x in result])
+
+
+
+@app.route('/api/getSEQCountbyCountryContinent', methods=['GET'])
+def getSEQCountbyCountryContinent():
+ query="""SELECT DISTINCT ?location ?location_label (count(?fasta) as ?fastaCount) WHERE {
+ ?fasta ?x[ <http://purl.obolibrary.org/obo/GAZ_00000448> ?location] .
+ ?location <http://www.wikidata.org/prop/direct/P30> <placeholder> .
+ OPTIONAL { ?location rdfs:label ?key_tmp_label }
+ BIND(IF(BOUND(?key_tmp_label),?key_tmp_label, ?location) as ?location_label)
+ }
+ GROUP BY ?location ?location_label
+ """
+ continent = request.args.get('continent')
+ query = query.replace("placeholder", continent)
+ payload = {'query': query, 'format': 'json'}
+ r = requests.get(baseURL, params=payload)
+ result = r.json()['results']['bindings']
+ return jsonify([{'count': x['fastaCount']['value'],
+ 'key': x['location']['value'],
+ 'label': x['location_label']['value']} for x in result])
+
+
+
@app.route('/api/getSEQCountbySpecimenSource', methods=['GET'])
def getSEQCountbySpecimenSource():
query="""SELECT ?specimen_source ?specimen_source_label (count(?fasta) as ?fastaCount) WHERE
diff --git a/bh20simplewebuploader/static/main.js b/bh20simplewebuploader/static/main.js
index d90b5af..1d2bcba 100644
--- a/bh20simplewebuploader/static/main.js
+++ b/bh20simplewebuploader/static/main.js
@@ -87,6 +87,9 @@ let fetchSEQByLocation = () => {
console.log("Missing - set parameter for request, retrieve data")
};
+let fetchSEQCountbyContinent = () => {
+ fetchAPIV2("/api/getSEQCountbyContinent");
+}
/*
diff --git a/bh20simplewebuploader/templates/demo-run.html b/bh20simplewebuploader/templates/demo-run.html
index 4479409..a80281c 100644
--- a/bh20simplewebuploader/templates/demo-run.html
+++ b/bh20simplewebuploader/templates/demo-run.html
@@ -6,6 +6,7 @@
<button class="button" onclick="fetchSEQCountByLocation()">Count by Location</button>
<button class="button" onclick="fetchSEQCountByTech()">Count by Sequencer</button>
<button class="button" onclick="fetchAllaccessions()">Show All accessions</button>
+ <button class="button" onclick="fetchSEQCountbyContinent()">Count by Continent</button>
<button class="button" onclick="fetchCountByGPS()">Map</button>
</div>