diff options
Diffstat (limited to 'bh20simplewebuploader')
-rw-r--r-- | bh20simplewebuploader/main.py | 37 | ||||
-rw-r--r-- | bh20simplewebuploader/static/main.js | 6 | ||||
-rw-r--r-- | bh20simplewebuploader/templates/about.html | 13 | ||||
-rw-r--r-- | bh20simplewebuploader/templates/blog.html | 13 | ||||
-rw-r--r-- | bh20simplewebuploader/templates/demo.html | 6 | ||||
-rw-r--r-- | bh20simplewebuploader/templates/download.html | 13 | ||||
-rw-r--r-- | bh20simplewebuploader/templates/map.html | 13 |
7 files changed, 42 insertions, 59 deletions
diff --git a/bh20simplewebuploader/main.py b/bh20simplewebuploader/main.py index 9132453..8a6794e 100644 --- a/bh20simplewebuploader/main.py +++ b/bh20simplewebuploader/main.py @@ -47,6 +47,7 @@ def type_to_heading(type_name): Turn a type name like "sampleSchema" from the metadata schema into a human-readable heading. """ + print(type_name,file=sys.stderr) # Remove camel case decamel = re.sub('([A-Z])', r' \1', type_name) # Split @@ -227,8 +228,13 @@ def generate_form(schema, options): # At startup, we need to load the metadata schema from the uploader module, so we can make a form for it -METADATA_SCHEMA = yaml.safe_load(pkg_resources.resource_stream("bh20sequploader", "bh20seq-schema.yml")) -METADATA_OPTION_DEFINITIONS = yaml.safe_load(pkg_resources.resource_stream("bh20sequploader", "bh20seq-options.yml")) +if os.path.isfile("bh20sequploader/bh20seq-schema.yml"): + METADATA_SCHEMA = yaml.safe_load(open("bh20sequploader/bh20seq-schema.yml","r").read()) + METADATA_OPTION_DEFINITIONS = yaml.safe_load(open("bh20sequploader/bh20seq-options.yml","r").read()) +else: + METADATA_SCHEMA = yaml.safe_load(pkg_resources.resource_stream("bh20sequploader", "bh20seq-schema.yml")) + METADATA_OPTION_DEFINITIONS = yaml.safe_load(pkg_resources.resource_stream("bh20sequploader", "bh20seq-options.yml")) +# print(METADATA_SCHEMA,file=sys.stderr) FORM_ITEMS = generate_form(METADATA_SCHEMA, METADATA_OPTION_DEFINITIONS) @app.route('/') @@ -505,7 +511,7 @@ def status_page(): Processing status """ - api = arvados.api(host=ARVADOS_API, token=ANONYMOUS_TOKEN) + api = arvados.api(host=ARVADOS_API, token=ANONYMOUS_TOKEN, insecure=True) pending = arvados.util.list_all(api.collections().list, filters=[["owner_uuid", "=", UPLOADER_PROJECT]]) out = [] status = {} @@ -567,11 +573,34 @@ baseURL='http://sparql.genenetwork.org/sparql/' @app.route('/api/getCount', methods=['GET']) def getCount(): - api = arvados.api(host=ARVADOS_API, token=ANONYMOUS_TOKEN) + """ + Get sequence counts from Arvados record + """ + api = arvados.api(host=ARVADOS_API, token=ANONYMOUS_TOKEN, insecure=True) c = api.collections().list(filters=[["owner_uuid", "=", VALIDATED_PROJECT]], limit=1).execute() return jsonify({'sequences': c["items_available"]}) +@app.route('/api/getCountDB', methods=['GET']) +def getCountDB(): + """ + Get sequence counts from Virtuoso DB + """ + query=""" + PREFIX pubseq: <http://biohackathon.org/bh20-seq-schema#MainSchema/> + select (COUNT(distinct ?dataset) as ?num) + { + ?dataset pubseq:submitter ?id . + ?id ?p ?submitter + } + """ + payload = {'query': query, 'format': 'json'} + r = requests.get(baseURL, params=payload) + result = r.json()['results']['bindings'] + # [{'num': {'type': 'typed-literal', 'datatype': 'http://www.w3.org/2001/XMLSchema#integer', 'value': '1352'}}] + # print(result, file=sys.stderr) + return jsonify({'sequences': int(result[0]["num"]["value"])}) + @app.route('/api/getAllaccessions', methods=['GET']) def getAllaccessions(): query="""SELECT DISTINCT ?fasta ?value WHERE {?fasta ?x[ <http://edamontology.org/data_2091> ?value ]}""" diff --git a/bh20simplewebuploader/static/main.js b/bh20simplewebuploader/static/main.js index a9dfc10..4703047 100644 --- a/bh20simplewebuploader/static/main.js +++ b/bh20simplewebuploader/static/main.js @@ -89,6 +89,10 @@ let fetchCount = () => { fetchAPI("/api/getCount"); } +let fetchCountDB = () => { + fetchAPI("/api/getCountDB"); +} + let fetchSEQCountBySpecimen = () => { fetchAPIV2("/api/getSEQCountbySpecimenSource"); } @@ -191,7 +195,7 @@ function addField(e) { // Increment the number and use the keypath and number to set IDs and cross // references. // TODO: Heavily dependent on the form field HTML. Maybe we want custom - // elements for the labeled controlsd that know how to be list items? + // elements for the labeled controls that know how to be list items? fieldNumber++ newField.dataset.number = fieldNumber let newID = keypath + '[' + fieldNumber + ']' diff --git a/bh20simplewebuploader/templates/about.html b/bh20simplewebuploader/templates/about.html index 07b6951..4bd238e 100644 --- a/bh20simplewebuploader/templates/about.html +++ b/bh20simplewebuploader/templates/about.html @@ -11,19 +11,6 @@ <script type="text/javascript"> let scriptRoot = {{ request.script_root|tojson|safe }}; // examples - - document.addEventListener("DOMContentLoaded", function(){ - var count = fetch("/api/getCount") - .then((resp) => resp.json()) - .then(function (data) { - count = data["sequences"]; - console.log(count); - span = document.getElementById("Counter"); - txt = document.createTextNode(count); - span.appendChild(txt); - }); - }); - </script> </body> diff --git a/bh20simplewebuploader/templates/blog.html b/bh20simplewebuploader/templates/blog.html index 8f8ab66..dbc0b99 100644 --- a/bh20simplewebuploader/templates/blog.html +++ b/bh20simplewebuploader/templates/blog.html @@ -73,19 +73,6 @@ <script type="text/javascript"> let scriptRoot = {{ request.script_root|tojson|safe }}; // examples - - document.addEventListener("DOMContentLoaded", function(){ - var count = fetch("/api/getCount") - .then((resp) => resp.json()) - .then(function (data) { - count = data["sequences"]; - console.log(count); - span = document.getElementById("Counter"); - txt = document.createTextNode(count); - span.appendChild(txt); - }); - }); - </script> </body> diff --git a/bh20simplewebuploader/templates/demo.html b/bh20simplewebuploader/templates/demo.html index 76c19c4..44aded0 100644 --- a/bh20simplewebuploader/templates/demo.html +++ b/bh20simplewebuploader/templates/demo.html @@ -5,6 +5,7 @@ {% include 'banner.html' %} {% include 'menu.html' %} {% include 'search.html' %} + <p>The Virtuoso database contains <span id="CounterDB"></span> public sequences!</p> {% include 'demo-run.html' %} {% include 'footer.html' %} @@ -12,16 +13,17 @@ let scriptRoot = {{ request.script_root|tojson|safe }}; // examples document.addEventListener("DOMContentLoaded", function(){ - var count = fetch("/api/getCount") + var count = fetch("/api/getCountDB") .then((resp) => resp.json()) .then(function (data) { count = data["sequences"]; console.log(count); - span = document.getElementById("Counter"); + span = document.getElementById("CounterDB"); txt = document.createTextNode(count); span.appendChild(txt); }); }); + </script> </body> diff --git a/bh20simplewebuploader/templates/download.html b/bh20simplewebuploader/templates/download.html index 07b6951..4bd238e 100644 --- a/bh20simplewebuploader/templates/download.html +++ b/bh20simplewebuploader/templates/download.html @@ -11,19 +11,6 @@ <script type="text/javascript"> let scriptRoot = {{ request.script_root|tojson|safe }}; // examples - - document.addEventListener("DOMContentLoaded", function(){ - var count = fetch("/api/getCount") - .then((resp) => resp.json()) - .then(function (data) { - count = data["sequences"]; - console.log(count); - span = document.getElementById("Counter"); - txt = document.createTextNode(count); - span.appendChild(txt); - }); - }); - </script> </body> diff --git a/bh20simplewebuploader/templates/map.html b/bh20simplewebuploader/templates/map.html index 6d63c3c..595af0c 100644 --- a/bh20simplewebuploader/templates/map.html +++ b/bh20simplewebuploader/templates/map.html @@ -16,19 +16,6 @@ <script type="text/javascript"> let scriptRoot = {{ request.script_root|tojson|safe }}; // examples - - document.addEventListener("DOMContentLoaded", function(){ - var count = fetch("/api/getCount") - .then((resp) => resp.json()) - .then(function (data) { - count = data["sequences"]; - console.log(count); - span = document.getElementById("Counter"); - txt = document.createTextNode(count); - span.appendChild(txt); - }); - }); - </script> <!-- Make sure you put this AFTER Leaflet's CSS --> |