aboutsummaryrefslogtreecommitdiff
path: root/bh20simplewebuploader
diff options
context:
space:
mode:
authorlltommy2020-11-11 09:56:12 +0100
committerlltommy2020-11-11 09:56:12 +0100
commitd6aa323b6fc7a82e45cc1df51fc72c2d547146eb (patch)
tree6e8b77bde4dc34fab3fa8804906f3cb821f61dae /bh20simplewebuploader
parentc5fe5de7e4c77bfb48b1ae2f662c2d9cc120c06e (diff)
parentc872248e43c1c66e5fed8ef341f7b4ac21d63e6f (diff)
downloadbh20-seq-resource-d6aa323b6fc7a82e45cc1df51fc72c2d547146eb.tar.gz
bh20-seq-resource-d6aa323b6fc7a82e45cc1df51fc72c2d547146eb.tar.lz
bh20-seq-resource-d6aa323b6fc7a82e45cc1df51fc72c2d547146eb.zip
Merge branch 'master' of https://github.com/arvados/bh20-seq-resource
Diffstat (limited to 'bh20simplewebuploader')
-rw-r--r--bh20simplewebuploader/main.py53
-rw-r--r--bh20simplewebuploader/static/main.css27
-rw-r--r--bh20simplewebuploader/static/main.js6
-rw-r--r--bh20simplewebuploader/templates/blog.html5
-rw-r--r--bh20simplewebuploader/templates/home.html29
-rw-r--r--bh20simplewebuploader/templates/menu.html2
-rw-r--r--bh20simplewebuploader/templates/resource.html4
7 files changed, 110 insertions, 16 deletions
diff --git a/bh20simplewebuploader/main.py b/bh20simplewebuploader/main.py
index 73503b4..1d7154c 100644
--- a/bh20simplewebuploader/main.py
+++ b/bh20simplewebuploader/main.py
@@ -7,6 +7,7 @@ import logging
import os
import sys
import re
+import redis
import string
import ruamel.yaml as yaml
import pkg_resources
@@ -252,8 +253,19 @@ def send_home():
"""
Send the front page.
"""
-
- return render_template('home.html', menu='HOME', load_map=True)
+ redis_client = redis.Redis(host=os.environ.get('HOST', 'localhost'),
+ port=os.environ.get('PORT', 6379),
+ db=os.environ.get('REDIS_DB', 0))
+ tweets = []
+ for tweet_id in redis_client.zrevrange('bh20-tweet-score:',
+ 0, -1):
+ tweets.append(
+ {k.decode("utf-8"): v.decode("utf-8") for k, v in
+ redis_client.hgetall(tweet_id).items()}
+ )
+ return render_template('home.html', menu='HOME',
+ tweets=tweets,
+ load_map=True)
@app.route('/upload')
@@ -675,13 +687,32 @@ sparqlURL='http://sparql.genenetwork.org/sparql/'
@app.route('/resource/<id>')
def resource(id):
"""Get a COVID19 resource using identifier"""
+
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 ?institute ?sequenceuri
+where {{
{{
?sample sio:SIO_000115 "{id}" .
?sequenceuri pubseq:sample ?sample .
+}}
+union
+{{
+ <http://collections.lugli.arvadosapi.com/c={id}/sequence.fasta> pubseq:sample ?sample .
+ ?sequenceuri pubseq:sample ?sample .
+}}
+union
+{{
+ <http://covid19.genenetwork.org/resource/{id}> pubseq:sample ?sample .
+ ?sequenceuri pubseq:sample ?sample .
+}}
+union
+{{
+ ?sequenceuri <http://biohackathon.org/bh20-seq-schema/collection_pdh> "{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 .
@@ -699,8 +730,9 @@ select distinct ?sample ?geoname ?date ?source ?geo ?sampletype ?institute ?sequ
logging.info("^^^^^^^^^^^^^^^^^^^^^^^^^^^^")
# return jsonify({'sequences': int(result[0]["num"]["value"])})
sequenceuri=sample['sequenceuri']['value']
- collectionuri=sequenceuri.split('sequence.fasta')[0]
- metauri=collectionuri+'metadata.yaml'
+ m = re.match(r"http://collections.lugli.arvadosapi.com/c=([^/]*)/sequence.fasta|http://covid19.genenetwork.org/resource/(.*)", sequenceuri)
+ fastauri = "http://collections.lugli.arvadosapi.com/c=%s/sequence.fasta" % m.group(1)
+ metauri = "http://collections.lugli.arvadosapi.com/c=%s/metadata.yaml" % m.group(1)
locationuri=sample['geo']['value']
location=sample['geoname']['value']
date=sample['date']['value']
@@ -715,7 +747,18 @@ select distinct ?sample ?geoname ?date ?source ?geo ?sampletype ?institute ?sequ
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)
+ return render_template('permalink.html',
+ id=id,
+ menu='',
+ uri=f"http://covid19.genenetwork.org/resource/{id}",
+ sequenceuri=fastauri,
+ locationuri=locationuri,
+ location=location,
+ date=date,
+ source=source,
+ sampletype=sampletype,
+ institute=institute,
+ metauri=metauri)
# http://covid19.genenetwork.org/location?label=http://www.wikidata.org/entity/Q114
# http://localhost:5067/location?label=http://www.wikidata.org/entity/Q114
diff --git a/bh20simplewebuploader/static/main.css b/bh20simplewebuploader/static/main.css
index bc4f705..76a1755 100644
--- a/bh20simplewebuploader/static/main.css
+++ b/bh20simplewebuploader/static/main.css
@@ -506,3 +506,30 @@ div.status {
font-size: 16px;
box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2), 0 6px 20px 0 rgba(0,0,0,0.19);
}
+
+.flex-container {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: space-evenly;
+}
+
+#twitter-feed {
+ background-color: #f5f8fa;
+ max-height: 440px;
+ max-width: 500px;
+ overflow-y: auto;
+ padding: 20px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+
+#twitter-feed ul {
+ list-style-type: none;
+}
+
+#twitter-feed ul li {
+ border-bottom: 2px solid white;
+ padding-bottom: 20px;
+}
diff --git a/bh20simplewebuploader/static/main.js b/bh20simplewebuploader/static/main.js
index 89bc603..6cc0d9f 100644
--- a/bh20simplewebuploader/static/main.js
+++ b/bh20simplewebuploader/static/main.js
@@ -68,6 +68,12 @@ function fetchHTMLTable(apiEndPoint) {
htmlString="<table>"
for (var i=0; i<data.length;i++) {
let url = data[i]["key"];
+ continents = ["Q538", "Q48", "Q49", "Q18", "Q15", "Q27611" ];
+ node = url.split("/").pop();
+ console.log(continents.includes(node));
+ if (url.includes("wikidata") && !continents.includes(node)) {
+ url = "http://covid19.genenetwork.org/location?label="+url ;
+ }
let label = data[i]["label"];
htmlString=htmlString+"<tr><td><a href=\""+url+"\">"+label+"</a></td><td>"+data[i]["count"]+"<td></tr>"
}
diff --git a/bh20simplewebuploader/templates/blog.html b/bh20simplewebuploader/templates/blog.html
index 88ce4c3..fa08f5b 100644
--- a/bh20simplewebuploader/templates/blog.html
+++ b/bh20simplewebuploader/templates/blog.html
@@ -9,12 +9,11 @@
{{ embed|safe }}
<hr>
- <h1>Other blog entries</h1>
+ <h1>Other documents</h1>
{% else %}
- {% include 'blurb.html' %}
- <h2>BLOG Entries:</h2>
+ <h2>Documents:</h2>
{% endif %}
<section class="blog-entries">
diff --git a/bh20simplewebuploader/templates/home.html b/bh20simplewebuploader/templates/home.html
index 77d2fb6..be948f6 100644
--- a/bh20simplewebuploader/templates/home.html
+++ b/bh20simplewebuploader/templates/home.html
@@ -22,9 +22,27 @@
or <a href="/apidoc">REST API</a>. For more
information see the <a href="/about">FAQ!</a>.
</p>
- <section id="map_view" class="map">
- <div id="mapid"></div>
- </section>
+
+ <section class="flex-container">
+ <div id="map_view" class="map">
+ <div id="mapid"></div>
+ </div>
+ <div id="twitter-feed">
+ <ul>
+ {% for tweet in tweets|sort(reverse=true, attribute="timeposted")%}
+ <li>
+ <p class="tweet">
+ {{ tweet.tweet|urlize(40, target="_blank") }} <br/>
+ by {{ tweet.author }}
+ </p>
+ <small class="timeposted">
+ {{ tweet.timeposted }}
+ </small>
+ </li>
+ {% endfor %}
+ </ul>
+ </div>
+ </section>
<a href="https://projectredcap.org/"><img class="img-right" src="static/image/REDCap.png" /></a>
<p>
@@ -73,10 +91,11 @@
URI's</a>
for <a href="https://en.wikipedia.org/wiki/Wikipedia:Disambiguation">disambiguation</a>
and machine readable metadata. For examples of
- use, see the <a href="/blog">BLOG</a>.
+ use, see the <a href="/blog">docs</a>.
</p>
</div>
- </section>
+ </section>
+
{% include 'footer.html' %}
diff --git a/bh20simplewebuploader/templates/menu.html b/bh20simplewebuploader/templates/menu.html
index 5d5fdc8..8e6ef52 100644
--- a/bh20simplewebuploader/templates/menu.html
+++ b/bh20simplewebuploader/templates/menu.html
@@ -6,7 +6,7 @@
<a href="/status" class="{{ 'active' if menu=='STATUS' }}">STATUS</a>
<a href="/demo" class="{{ 'active' if menu=='DEMO' }}">DEMO</a>
<a href="/export" class="{{ 'active' if menu=='EXPORT' }}">EXPORT</a>
- <a href="/blog" class="{{ 'active' if menu=='BLOG' }}">BLOG</a>
+ <a href="/blog" class="{{ 'active' if menu=='BLOG' }}">DOCS</a>
<a href="/about" class="{{ 'active' if menu=='ABOUT' }}">ABOUT</a>
<a href="/contact" class="{{ 'active' if menu=='CONTACT' }}">CONTACT</a>
<a href="javascript:void(0);" class="icon" onclick="myFunction()">
diff --git a/bh20simplewebuploader/templates/resource.html b/bh20simplewebuploader/templates/resource.html
index fc52f13..4c50fb9 100644
--- a/bh20simplewebuploader/templates/resource.html
+++ b/bh20simplewebuploader/templates/resource.html
@@ -10,8 +10,8 @@
<p><a href="https://workbench.lugli.arvadosapi.com/projects/lugli-j7d0g-5ct8p1i1wrgyjvp#Data_collections">All sequences project</a></p>
<p><a href="https://workbench.lugli.arvadosapi.com/collections/lugli-4zz18-z513nlpqm03hpca/relabeledSeqs.sorted_by_quality_and_len.fasta">All sequences (FASTA) relabled and deduplicated</a></p>
<p><a href="https://workbench.lugli.arvadosapi.com/collections/lugli-4zz18-z513nlpqm03hpca/mergedmetadata.ttl">Metadata (RDF) for all sequences</a></p>
- <p><a href="https://workbench.lugli.arvadosapi.com/collections/lugli-4zz18-z513nlpqm03hpca/relabeledSeqs.sorted_by_quality_and_len.g6.gfa">All sequences in Graphical Fragment Assembly (GFA)</a> - <a href="https://github.com/GFA-spec/GFA-spec">More about GFA</a></p>
- <p><a href="https://workbench.lugli.arvadosapi.com/collections/lugli-4zz18-z513nlpqm03hpca/relabeledSeqs.sorted_by_quality_and_len.g6.unchop.sorted.odgi">All sequences in Optimized Dynamic Genome/Graph Implementation (ODGI)</a> - <a href="https://github.com/vgteam/odgi">More about ODGI</a></p>
+ <!-- <p><a href="https://workbench.lugli.arvadosapi.com/collections/lugli-4zz18-z513nlpqm03hpca/relabeledSeqs.sorted_by_quality_and_len.g6.gfa">All sequences in Graphical Fragment Assembly (GFA)</a> - <a href="https://github.com/GFA-spec/GFA-spec">More about GFA</a></p> -->
+ <!-- <p><a href="https://workbench.lugli.arvadosapi.com/collections/lugli-4zz18-z513nlpqm03hpca/relabeledSeqs.sorted_by_quality_and_len.g6.unchop.sorted.odgi">All sequences in Optimized Dynamic Genome/Graph Implementation (ODGI)</a> - <a href="https://github.com/vgteam/odgi">More about ODGI</a></p> -->
<!-- <p><a href="https://workbench.lugli.arvadosapi.com/collections/lugli-4zz18-z513nlpqm03hpca/relabeledSeqs_dedup_relabeledSeqs_dedup.ttl.xz">All sequences in RDF using spodgi</a> - <a href="https://github.com/pangenome/spodgi">More about spodgi</a></p> -->