diff --git a/mothra/settings.py b/mothra/settings.py index 98a7a1990abe05b37b124426f260ab3bf0be860e..979f5a4d9fe0a905c5f330b83266b8fa1d03ae2a 100755 --- a/mothra/settings.py +++ b/mothra/settings.py @@ -171,6 +171,10 @@ if USE_CONCURRENCY: 'south', 'workflows', 'workflows.latino', + 'workflows.decision_support', + 'workflows.bioinformatics', + 'workflows.subgroup_discovery', + 'workflows.nlp', 'website', 'signuplogin', 'django_extensions', @@ -190,6 +194,7 @@ else: 'south', 'workflows', 'workflows.latino', + 'workflows.decision_support', 'website', 'signuplogin', 'django_extensions', diff --git a/workflows/bioinformatics/interaction.py b/workflows/bioinformatics/interaction_views.py similarity index 100% rename from workflows/bioinformatics/interaction.py rename to workflows/bioinformatics/interaction_views.py diff --git a/workflows/bioinformatics/settings.py b/workflows/bioinformatics/settings.py new file mode 100644 index 0000000000000000000000000000000000000000..76d5c087e84694b74c662cd15e8ca30b9e3899c5 --- /dev/null +++ b/workflows/bioinformatics/settings.py @@ -0,0 +1,11 @@ +import os + +package_name = 'bioinformatics' + +package_root = os.path.dirname(__file__) +package_statics = os.path.join(os.path.dirname(__file__), 'static', package_name) +package_bin = os.path.join(package_root, 'bin') + +auto_update_db = True +create_backups = True + diff --git a/workflows/bioinformatics/visualization.py b/workflows/bioinformatics/visualization_views.py similarity index 100% rename from workflows/bioinformatics/visualization.py rename to workflows/bioinformatics/visualization_views.py diff --git a/workflows/decision_support/interaction.py b/workflows/decision_support/interaction_views.py similarity index 100% rename from workflows/decision_support/interaction.py rename to workflows/decision_support/interaction_views.py diff --git a/workflows/decision_support/settings.py b/workflows/decision_support/settings.py new file mode 100644 index 0000000000000000000000000000000000000000..1569bf1d64f1d6217dd2b31e607b8c2cfd6dc126 --- /dev/null +++ b/workflows/decision_support/settings.py @@ -0,0 +1,11 @@ +import os + +package_name = 'decision_support' + +package_root = os.path.dirname(__file__) +package_statics = os.path.join(os.path.dirname(__file__), 'static', package_name) +package_bin = os.path.join(package_root, 'bin') + +auto_update_db = True +create_backups = True + diff --git a/workflows/templates/interactions/kepner_tregoe.html b/workflows/decision_support/templates/interactions/kepner_tregoe.html similarity index 100% rename from workflows/templates/interactions/kepner_tregoe.html rename to workflows/decision_support/templates/interactions/kepner_tregoe.html diff --git a/workflows/templates/visualizations/ds_charts.html b/workflows/decision_support/templates/visualizations/ds_charts.html similarity index 100% rename from workflows/templates/visualizations/ds_charts.html rename to workflows/decision_support/templates/visualizations/ds_charts.html diff --git a/workflows/templates/visualizations/sensitivity_analysis.html b/workflows/decision_support/templates/visualizations/sensitivity_analysis.html similarity index 100% rename from workflows/templates/visualizations/sensitivity_analysis.html rename to workflows/decision_support/templates/visualizations/sensitivity_analysis.html diff --git a/workflows/decision_support/visualization.py b/workflows/decision_support/visualization_views.py similarity index 100% rename from workflows/decision_support/visualization.py rename to workflows/decision_support/visualization_views.py diff --git a/workflows/interaction_views.py b/workflows/interaction_views.py index 9c172531376a269c74c55317d7471f2b4b608939..0527a1ed017d22a282c36f6815ca6c02e717fbbe 100755 --- a/workflows/interaction_views.py +++ b/workflows/interaction_views.py @@ -1,7 +1,5 @@ import sys from django.shortcuts import render -from decision_support.interaction import * -from subgroup_discovery.interaction import * from workflows import packageLibImporter def setattr_local(name, value, package): diff --git a/workflows/library.py b/workflows/library.py index 274674f16a3fc9344d869b041511774ec5296439..b9cb9e949179dd4708897aa342c20072821d70eb 100755 --- a/workflows/library.py +++ b/workflows/library.py @@ -1,10 +1,7 @@ from workflows.security import safeOpen -import nlp import cPickle import json import sys -from decision_support.library import * -from subgroup_discovery.library import * from workflows import packageLibImporter def setattr_local(name, value, package): @@ -807,47 +804,6 @@ def odt_to_arff(input_dict): f = toARFFstring(input_dict['odt']) output_dict['arff'] = f.getvalue() return output_dict - -# NLP tools - -def merge_sentences(input_dict): - """ - Merges the input sentences in XML according to the specified method. - """ - method = input_dict['method'] - merged_sen, id_to_sent = set(), {} - ids_list = [] - for sentsXML in input_dict['sentences']: - sents = nlp.parse_def_sentences(sentsXML) - ids = set(map(lambda x: x['id'], sents)) - ids_list.append(ids) - # Save the map from id to sentence - for sent in sents: - id_to_sent[sent['id']] = sent - if len(merged_sen) == 0: - merged_sen = ids - if method == 'union': - merged_sen = merged_sen | ids - elif method == 'intersection': - merged_sen = merged_sen & ids - elif method == 'intersection_two': - for ids_alt in ids_list: - merged_sen = merged_sen | (ids_alt & ids) - return {'merged_sentences' : nlp.sentences_to_xml([id_to_sent[sid] for sid in merged_sen])} - -def load_corpus(input_dict): - ''' - Parses an input file and encodes it in base 64. - ''' - import os.path - import base64 - f = safeOpen(input_dict['file']) - fname = os.path.basename(input_dict['file']) - data = base64.b64encode(f.read()) - from services.webservice import WebService - ws = WebService('http://bodysnatcher.ijs.si:8092/totale?wsdl', 600) - response = ws.client.parseFile(fileName=fname, inFile=data) - return {'corpus' : response['parsedFile']} def string_to_file(input_dict): return {} diff --git a/workflows/nlp/interaction_views.py b/workflows/nlp/interaction_views.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/workflows/nlp/library.py b/workflows/nlp/library.py new file mode 100644 index 0000000000000000000000000000000000000000..a0efae28acc663ae780f870e642debe0a973268e --- /dev/null +++ b/workflows/nlp/library.py @@ -0,0 +1,40 @@ +import nlp +import os.path +import base64 +from services.webservice import WebService + +def merge_sentences(input_dict): + """ + Merges the input sentences in XML according to the specified method. + """ + method = input_dict['method'] + merged_sen, id_to_sent = set(), {} + ids_list = [] + for sentsXML in input_dict['sentences']: + sents = nlp.parse_def_sentences(sentsXML) + ids = set(map(lambda x: x['id'], sents)) + ids_list.append(ids) + # Save the map from id to sentence + for sent in sents: + id_to_sent[sent['id']] = sent + if len(merged_sen) == 0: + merged_sen = ids + if method == 'union': + merged_sen = merged_sen | ids + elif method == 'intersection': + merged_sen = merged_sen & ids + elif method == 'intersection_two': + for ids_alt in ids_list: + merged_sen = merged_sen | (ids_alt & ids) + return {'merged_sentences' : nlp.sentences_to_xml([id_to_sent[sid] for sid in merged_sen])} + +def load_corpus(input_dict): + ''' + Parses an input file and encodes it in base 64. + ''' + f = safeOpen(input_dict['file']) + fname = os.path.basename(input_dict['file']) + data = base64.b64encode(f.read()) + ws = WebService('http://bodysnatcher.ijs.si:8092/totale?wsdl', 600) + response = ws.client.parseFile(fileName=fname, inFile=data) + return {'corpus' : response['parsedFile']} diff --git a/workflows/nlp.py b/workflows/nlp/nlp.py similarity index 100% rename from workflows/nlp.py rename to workflows/nlp/nlp.py diff --git a/workflows/nlp/settings.py b/workflows/nlp/settings.py new file mode 100644 index 0000000000000000000000000000000000000000..9ce66c4d26a5f625f934456064136a64f2f686c3 --- /dev/null +++ b/workflows/nlp/settings.py @@ -0,0 +1,11 @@ +import os + +package_name = 'nlp' + +package_root = os.path.dirname(__file__) +package_statics = os.path.join(os.path.dirname(__file__), 'static', package_name) +package_bin = os.path.join(package_root, 'bin') + +auto_update_db = True +create_backups = True + diff --git a/workflows/nlp/static/icons/treeview/nlp.png b/workflows/nlp/static/icons/treeview/nlp.png new file mode 100755 index 0000000000000000000000000000000000000000..2ce25f8a4398753a535f6f95c551ace2eec646b4 Binary files /dev/null and b/workflows/nlp/static/icons/treeview/nlp.png differ diff --git a/workflows/nlp/static/icons/widget/nlp.png b/workflows/nlp/static/icons/widget/nlp.png new file mode 100755 index 0000000000000000000000000000000000000000..2ce25f8a4398753a535f6f95c551ace2eec646b4 Binary files /dev/null and b/workflows/nlp/static/icons/widget/nlp.png differ diff --git a/workflows/templates/visualizations/def_sentences.html b/workflows/nlp/templates/visualizations/def_sentences.html similarity index 100% rename from workflows/templates/visualizations/def_sentences.html rename to workflows/nlp/templates/visualizations/def_sentences.html diff --git a/workflows/templates/visualizations/terms.html b/workflows/nlp/templates/visualizations/terms.html similarity index 100% rename from workflows/templates/visualizations/terms.html rename to workflows/nlp/templates/visualizations/terms.html diff --git a/workflows/nlp/visualization_views.py b/workflows/nlp/visualization_views.py new file mode 100644 index 0000000000000000000000000000000000000000..e2dfe9a9fa58c1758ee1610d2a4f0b62571ac5e2 --- /dev/null +++ b/workflows/nlp/visualization_views.py @@ -0,0 +1,31 @@ +import nlp + +def definition_sentences_viewer(request, input_dict, output_dict, widget): + """ + Parses the input XML and displays the definition sentences given as input. + + @author: Anze Vavpetic, 2012 + """ + sentences = nlp.parse_def_sentences(input_dict['candidates']) + return render(request, 'visualizations/def_sentences.html',{'widget' : widget, 'sentences' : sentences}) + + +def term_candidate_viewer(request, input_dict, output_dict, widget): + """ + Parses the input and displays the term candidates. + + @author: Anze Vavpetic, 2012 + """ + terms = [] + for line in input_dict['candidates'].split('\n'): + try: + score, cand, lemma = line.split('\t') + except: + continue + terms.append({'score' : score, + 'cand' : cand.replace('[', '').replace(']',''), + #'lemma' : lemma.replace('<<', '').replace('>>','') + }) + terms = sorted(terms, key = lambda x: x['score'], reverse=True) + return render(request, 'visualizations/terms.html', {'widget' : widget, 'terms' : terms}) + diff --git a/workflows/subgroup_discovery/interaction.py b/workflows/subgroup_discovery/interaction_views.py similarity index 100% rename from workflows/subgroup_discovery/interaction.py rename to workflows/subgroup_discovery/interaction_views.py diff --git a/workflows/subgroup_discovery/library.py b/workflows/subgroup_discovery/library.py index 950f441bdc1182dd23fab2150d5b00a181e6af2a..7f3b680bcd0ce51e4b2c707bc0dcbc19d7c19970 100644 --- a/workflows/subgroup_discovery/library.py +++ b/workflows/subgroup_discovery/library.py @@ -3,14 +3,14 @@ Subgroup discovery library functions. @author: Anze Vavpetic ''' +import json +import logging try: - import json from SubgroupDiscovery.SD_learner_classifier import SD_learner from SubgroupDiscovery.SDRule import SDRules import Orange except: - pass - + print logging.warning('Could not import subgroup discovery orange package.') class SubgroupDiscovery: # Available algorithms and their parameters diff --git a/workflows/subgroup_discovery/settings.py b/workflows/subgroup_discovery/settings.py new file mode 100644 index 0000000000000000000000000000000000000000..bf3bb9503f6dea8969ef8608bb244942d5271782 --- /dev/null +++ b/workflows/subgroup_discovery/settings.py @@ -0,0 +1,11 @@ +import os + +package_name = 'subgroup_discovery' + +package_root = os.path.dirname(__file__) +package_statics = os.path.join(os.path.dirname(__file__), 'static', package_name) +package_bin = os.path.join(package_root, 'bin') + +auto_update_db = True +create_backups = True + diff --git a/workflows/subgroup_discovery/static/icons/treeview/bar.png b/workflows/subgroup_discovery/static/icons/treeview/bar.png new file mode 100755 index 0000000000000000000000000000000000000000..cd1081227af410241cb6f28ff1923d50f62be0e4 Binary files /dev/null and b/workflows/subgroup_discovery/static/icons/treeview/bar.png differ diff --git a/workflows/subgroup_discovery/static/icons/treeview/builder.png b/workflows/subgroup_discovery/static/icons/treeview/builder.png new file mode 100755 index 0000000000000000000000000000000000000000..91ba7841980b6330287e7c47ecd0df18739823bb Binary files /dev/null and b/workflows/subgroup_discovery/static/icons/treeview/builder.png differ diff --git a/workflows/subgroup_discovery/static/icons/treeview/eval.png b/workflows/subgroup_discovery/static/icons/treeview/eval.png new file mode 100755 index 0000000000000000000000000000000000000000..879a79de723ed87405e07b6f12453c8840491de0 Binary files /dev/null and b/workflows/subgroup_discovery/static/icons/treeview/eval.png differ diff --git a/workflows/subgroup_discovery/static/icons/treeview/roc.png b/workflows/subgroup_discovery/static/icons/treeview/roc.png new file mode 100755 index 0000000000000000000000000000000000000000..01be957b029be3e2b9093174063e354aec047eb3 Binary files /dev/null and b/workflows/subgroup_discovery/static/icons/treeview/roc.png differ diff --git a/workflows/subgroup_discovery/static/icons/widget/bar.png b/workflows/subgroup_discovery/static/icons/widget/bar.png new file mode 100755 index 0000000000000000000000000000000000000000..cd1081227af410241cb6f28ff1923d50f62be0e4 Binary files /dev/null and b/workflows/subgroup_discovery/static/icons/widget/bar.png differ diff --git a/workflows/subgroup_discovery/static/icons/widget/builder.png b/workflows/subgroup_discovery/static/icons/widget/builder.png new file mode 100755 index 0000000000000000000000000000000000000000..91ba7841980b6330287e7c47ecd0df18739823bb Binary files /dev/null and b/workflows/subgroup_discovery/static/icons/widget/builder.png differ diff --git a/workflows/subgroup_discovery/static/icons/widget/eval.png b/workflows/subgroup_discovery/static/icons/widget/eval.png new file mode 100755 index 0000000000000000000000000000000000000000..879a79de723ed87405e07b6f12453c8840491de0 Binary files /dev/null and b/workflows/subgroup_discovery/static/icons/widget/eval.png differ diff --git a/workflows/subgroup_discovery/static/icons/widget/roc.png b/workflows/subgroup_discovery/static/icons/widget/roc.png new file mode 100755 index 0000000000000000000000000000000000000000..01be957b029be3e2b9093174063e354aec047eb3 Binary files /dev/null and b/workflows/subgroup_discovery/static/icons/widget/roc.png differ diff --git a/workflows/templates/interactions/build_subgroups.html b/workflows/subgroup_discovery/templates/subgroup_discovery/interactions/build_subgroups.html similarity index 100% rename from workflows/templates/interactions/build_subgroups.html rename to workflows/subgroup_discovery/templates/subgroup_discovery/interactions/build_subgroups.html diff --git a/workflows/templates/interactions/select_subgroups.html b/workflows/subgroup_discovery/templates/subgroup_discovery/interactions/select_subgroups.html similarity index 100% rename from workflows/templates/interactions/select_subgroups.html rename to workflows/subgroup_discovery/templates/subgroup_discovery/interactions/select_subgroups.html diff --git a/workflows/templates/interactions/table_from_sets.html b/workflows/subgroup_discovery/templates/subgroup_discovery/interactions/table_from_sets.html similarity index 100% rename from workflows/templates/interactions/table_from_sets.html rename to workflows/subgroup_discovery/templates/subgroup_discovery/interactions/table_from_sets.html diff --git a/workflows/templates/visualizations/subgroup_bar_visualization.html b/workflows/subgroup_discovery/templates/subgroup_discovery/visualizations/subgroup_bar_visualization.html similarity index 100% rename from workflows/templates/visualizations/subgroup_bar_visualization.html rename to workflows/subgroup_discovery/templates/subgroup_discovery/visualizations/subgroup_bar_visualization.html diff --git a/workflows/templates/visualizations/subgroup_roc_visualization.html b/workflows/subgroup_discovery/templates/subgroup_discovery/visualizations/subgroup_roc_visualization.html similarity index 100% rename from workflows/templates/visualizations/subgroup_roc_visualization.html rename to workflows/subgroup_discovery/templates/subgroup_discovery/visualizations/subgroup_roc_visualization.html diff --git a/workflows/subgroup_discovery/visualization.py b/workflows/subgroup_discovery/visualization_views.py similarity index 100% rename from workflows/subgroup_discovery/visualization.py rename to workflows/subgroup_discovery/visualization_views.py diff --git a/workflows/templates/interactions/insilico_search.html b/workflows/templates/interactions/insilico_search.html deleted file mode 100755 index c09b1a1cf4638e5c546c87b4aab8e31d2482866f..0000000000000000000000000000000000000000 --- a/workflows/templates/interactions/insilico_search.html +++ /dev/null @@ -1,89 +0,0 @@ -
-
- Use the sliders to adjust the weights.

-
- - - - - - - - - - - {% for att in attributes %} - - - - - - - {% endfor %} - -
AttributeSmaller attribute values are betterWeightWeight (numeric)
- {{att}} - - - -
- -
- -
- -
-
- - - -
-
\ No newline at end of file diff --git a/workflows/visualization_views.py b/workflows/visualization_views.py index 9f19d7d9f40d982b0a17faf2a04259aa96f96f60..acd9123eab5135e71124cfe57198ba47c689fc03 100755 --- a/workflows/visualization_views.py +++ b/workflows/visualization_views.py @@ -1,9 +1,6 @@ import sys from django.shortcuts import render from django.http import Http404, HttpResponse -import nlp -from decision_support.visualization import * -from subgroup_discovery.visualization import * from workflows import packageLibImporter def setattr_local(name, value, package): @@ -194,34 +191,3 @@ def sdmsegs_viewer(request,input_dict,output_dict,widget): } output_dict = {'json_output':output} return render(request, 'visualizations/sdmsegs_viewer.html',{'widget':widget,'input_dict':input_dict,'output_dict':output_dict}) - - -def definition_sentences_viewer(request, input_dict, output_dict, widget): - """ - Parses the input XML and displays the definition sentences given as input. - - @author: Anze Vavpetic, 2012 - """ - sentences = nlp.parse_def_sentences(input_dict['candidates']) - return render(request, 'visualizations/def_sentences.html',{'widget' : widget, 'sentences' : sentences}) - - -def term_candidate_viewer(request, input_dict, output_dict, widget): - """ - Parses the input and displays the term candidates. - - @author: Anze Vavpeltic, 2012 - """ - terms = [] - for line in input_dict['candidates'].split('\n'): - try: - score, cand, lemma = line.split('\t') - except: - continue - terms.append({'score' : score, - 'cand' : cand.replace('[', '').replace(']',''), - #'lemma' : lemma.replace('<<', '').replace('>>','') - }) - terms = sorted(terms, key = lambda x: x['score'], reverse=True) - return render(request, 'visualizations/terms.html', {'widget' : widget, 'terms' : terms}) -