From e07d1f25af46a90f7c3833cb27306ed8faecc228 Mon Sep 17 00:00:00 2001 From: vpodpecan Date: Wed, 10 Dec 2014 20:31:49 +0100 Subject: [PATCH] updated Biomine search for plants --- workflows/segmine/db/package_data.json | 50 +++++++++++++++++-- workflows/segmine/interaction_views.py | 20 +++++++- workflows/segmine/library.py | 13 ++++- .../segmine_selectBMdatabase.html | 41 +++++++++++++++ workflows/segmine/visualization_views.py | 4 +- 5 files changed, 120 insertions(+), 8 deletions(-) create mode 100644 workflows/segmine/templates/interactions/segmine_selectBMdatabase.html diff --git a/workflows/segmine/db/package_data.json b/workflows/segmine/db/package_data.json index eb8bc86..4477ba7 100644 --- a/workflows/segmine/db/package_data.json +++ b/workflows/segmine/db/package_data.json @@ -565,7 +565,7 @@ "parameter_type": "text", "variable": "maxnodes", "parameter": true, - "order": 1, + "order": 2, "description": "Search parameter maxnodes" } }, @@ -578,12 +578,12 @@ "short_name": "dbs", "uid": "cbdafcda-e0a8-4e8d-9684-f65023ec5b5b", "default": "", - "required": false, + "required": true, "multi": false, - "parameter_type": "text", + "parameter_type": null, "variable": "dbname", - "parameter": true, - "order": 1, + "parameter": false, + "order": 3, "description": "Name of the database to use" } }, @@ -3004,6 +3004,46 @@ "description": "Rules as rows, their terms as columns." } }, + { + "pk": 435, + "model": "workflows.abstractwidget", + "fields": { + "category": 44, + "treeview_image": "", + "windows_queue": false, + "name": "Select Biomine database", + "is_streaming": false, + "uid": "91b39cdf-e6b2-4b4f-b5c9-38ecf2ba01bf", + "interaction_view": "segmine_selectBMdatabase", + "image": "", + "package": "segmine", + "static_image": "", + "post_interact_action": "segmine_selectBMdatabase_finished", + "user": null, + "visualization_view": "", + "streaming_visualization_view": "", + "action": "segmine_selectBMdatabase", + "wsdl_method": "", + "wsdl": "", + "interactive": true, + "has_progress_bar": false, + "order": 1, + "description": "Calls the API of the new Biomine service to get the list of available databases." + } + }, + { + "pk": 472, + "model": "workflows.abstractoutput", + "fields": { + "widget": 435, + "name": "Database name", + "short_name": "db", + "variable": "database", + "uid": "658dc964-06d2-4db9-8a82-f8d3947137ff", + "order": 1, + "description": "Name of the selected database" + } + }, { "pk": 424, "model": "workflows.abstractwidget", diff --git a/workflows/segmine/interaction_views.py b/workflows/segmine/interaction_views.py index fe46182..5566788 100644 --- a/workflows/segmine/interaction_views.py +++ b/workflows/segmine/interaction_views.py @@ -58,4 +58,22 @@ def segmine_hclustering(request, input_dict, output_dict, widget): djson = hclustering2json(hcluster) return render(request, 'interactions/segmine_hierarchical_clustering.html', {'widget': widget, 'dendrogram_json': djson, - 'nexamples': len(hcluster)}) \ No newline at end of file + 'nexamples': len(hcluster)}) +# end + + +def segmine_selectBMdatabase(request, input_dict, output_dict, widget): + from urllib2 import urlopen + from json import loads + + listdb_url = 'http://biomine.ijs.si/list_databases' + try: + result = loads(urlopen(listdb_url).read()) + dbs = [str(x) for x in result['databases']] + except: + raise IOError('Error while calling Biomine API.') + + return render(request, 'interactions/segmine_selectBMdatabase.html', {'widget': widget, + 'databases': dbs}) +# end + diff --git a/workflows/segmine/library.py b/workflows/segmine/library.py index 21d029e..2cbfb35 100644 --- a/workflows/segmine/library.py +++ b/workflows/segmine/library.py @@ -902,4 +902,15 @@ def segmine_biomine_search_plants(input_dict): if 'error' in result: raise Exception(result['error']) - return {'bmgraph': result['graph']} \ No newline at end of file + return {'bmgraph': result['graph']} +# end + + +def segmine_selectBMdatabase(input_dict): + return {'database': None} + + +def segmine_selectBMdatabase_finished(postdata, input_dict, output_dict): + dbid = str(postdata['selected_database'][0]) + return {'database': dbid} +# end diff --git a/workflows/segmine/templates/interactions/segmine_selectBMdatabase.html b/workflows/segmine/templates/interactions/segmine_selectBMdatabase.html new file mode 100644 index 0000000..30406dc --- /dev/null +++ b/workflows/segmine/templates/interactions/segmine_selectBMdatabase.html @@ -0,0 +1,41 @@ +
+ +
+ + + + {% for dbid in databases %} + {% if forloop.counter0 == 0 %} + + {% endif %} + {% empty %} + + {% endfor %} + +
+
+ + + + + + + + diff --git a/workflows/segmine/visualization_views.py b/workflows/segmine/visualization_views.py index 03c0f35..a7f0e2c 100644 --- a/workflows/segmine/visualization_views.py +++ b/workflows/segmine/visualization_views.py @@ -7,6 +7,7 @@ from django.shortcuts import render import os import json + def segmine_biomine_visualizer(request, input_dict, output_dict, widget): from mothra.settings import MEDIA_ROOT from workflows.helpers import ensure_dir @@ -19,8 +20,9 @@ def segmine_biomine_visualizer(request, input_dict, output_dict, widget): return render(request, 'visualizations/segmine_biomine_visualizer.html', {'widget':widget, 'filename' : filename}) + def segmine_rank_plotter(request, input_dict, output_dict, widget): scores = input_dict['ranks'] scores = zip(*scores)[1] return render(request, 'visualizations/segmine_rank_plotter.html', - {'widget':widget, 'gene_ranks' : json.dumps(scores)}) \ No newline at end of file + {'widget': widget, 'gene_ranks': json.dumps(scores)}) -- GitLab