From b5500b7afa7ba99d8bded1e7f6df5200779355bd Mon Sep 17 00:00:00 2001 From: Anze Vavpetic Date: Mon, 19 Nov 2012 15:22:40 +0100 Subject: [PATCH] fixed package structures for the following packages: nlp, decision support, subgroup discovery, bioinformatics. --- mothra/settings.py | 5 + .../{interaction.py => interaction_views.py} | 0 workflows/bioinformatics/settings.py | 11 +++ ...isualization.py => visualization_views.py} | 0 .../{interaction.py => interaction_views.py} | 0 workflows/decision_support/settings.py | 11 +++ .../templates/interactions/kepner_tregoe.html | 0 .../templates/visualizations/ds_charts.html | 0 .../visualizations/sensitivity_analysis.html | 0 ...isualization.py => visualization_views.py} | 0 workflows/interaction_views.py | 2 - workflows/library.py | 44 --------- workflows/nlp/interaction_views.py | 0 workflows/nlp/library.py | 40 ++++++++ workflows/{ => nlp}/nlp.py | 0 workflows/nlp/settings.py | 11 +++ workflows/nlp/static/icons/treeview/nlp.png | Bin 0 -> 1004 bytes workflows/nlp/static/icons/widget/nlp.png | Bin 0 -> 1004 bytes .../visualizations/def_sentences.html | 0 .../templates/visualizations/terms.html | 0 workflows/nlp/visualization_views.py | 31 ++++++ .../{interaction.py => interaction_views.py} | 0 workflows/subgroup_discovery/library.py | 6 +- workflows/subgroup_discovery/settings.py | 11 +++ .../static/icons/treeview/bar.png | Bin 0 -> 6878 bytes .../static/icons/treeview/builder.png | Bin 0 -> 6533 bytes .../static/icons/treeview/eval.png | Bin 0 -> 6550 bytes .../static/icons/treeview/roc.png | Bin 0 -> 6754 bytes .../static/icons/widget/bar.png | Bin 0 -> 6878 bytes .../static/icons/widget/builder.png | Bin 0 -> 6533 bytes .../static/icons/widget/eval.png | Bin 0 -> 6550 bytes .../static/icons/widget/roc.png | Bin 0 -> 6754 bytes .../interactions/build_subgroups.html | 0 .../interactions/select_subgroups.html | 0 .../interactions/table_from_sets.html | 0 .../subgroup_bar_visualization.html | 0 .../subgroup_roc_visualization.html | 0 ...isualization.py => visualization_views.py} | 0 .../interactions/insilico_search.html | 89 ------------------ workflows/visualization_views.py | 34 ------- 40 files changed, 123 insertions(+), 172 deletions(-) rename workflows/bioinformatics/{interaction.py => interaction_views.py} (100%) create mode 100644 workflows/bioinformatics/settings.py rename workflows/bioinformatics/{visualization.py => visualization_views.py} (100%) rename workflows/decision_support/{interaction.py => interaction_views.py} (100%) create mode 100644 workflows/decision_support/settings.py rename workflows/{ => decision_support}/templates/interactions/kepner_tregoe.html (100%) rename workflows/{ => decision_support}/templates/visualizations/ds_charts.html (100%) rename workflows/{ => decision_support}/templates/visualizations/sensitivity_analysis.html (100%) rename workflows/decision_support/{visualization.py => visualization_views.py} (100%) create mode 100644 workflows/nlp/interaction_views.py create mode 100644 workflows/nlp/library.py rename workflows/{ => nlp}/nlp.py (100%) create mode 100644 workflows/nlp/settings.py create mode 100755 workflows/nlp/static/icons/treeview/nlp.png create mode 100755 workflows/nlp/static/icons/widget/nlp.png rename workflows/{ => nlp}/templates/visualizations/def_sentences.html (100%) rename workflows/{ => nlp}/templates/visualizations/terms.html (100%) create mode 100644 workflows/nlp/visualization_views.py rename workflows/subgroup_discovery/{interaction.py => interaction_views.py} (100%) create mode 100644 workflows/subgroup_discovery/settings.py create mode 100755 workflows/subgroup_discovery/static/icons/treeview/bar.png create mode 100755 workflows/subgroup_discovery/static/icons/treeview/builder.png create mode 100755 workflows/subgroup_discovery/static/icons/treeview/eval.png create mode 100755 workflows/subgroup_discovery/static/icons/treeview/roc.png create mode 100755 workflows/subgroup_discovery/static/icons/widget/bar.png create mode 100755 workflows/subgroup_discovery/static/icons/widget/builder.png create mode 100755 workflows/subgroup_discovery/static/icons/widget/eval.png create mode 100755 workflows/subgroup_discovery/static/icons/widget/roc.png rename workflows/{templates => subgroup_discovery/templates/subgroup_discovery}/interactions/build_subgroups.html (100%) rename workflows/{templates => subgroup_discovery/templates/subgroup_discovery}/interactions/select_subgroups.html (100%) rename workflows/{templates => subgroup_discovery/templates/subgroup_discovery}/interactions/table_from_sets.html (100%) rename workflows/{templates => subgroup_discovery/templates/subgroup_discovery}/visualizations/subgroup_bar_visualization.html (100%) rename workflows/{templates => subgroup_discovery/templates/subgroup_discovery}/visualizations/subgroup_roc_visualization.html (100%) rename workflows/subgroup_discovery/{visualization.py => visualization_views.py} (100%) delete mode 100755 workflows/templates/interactions/insilico_search.html diff --git a/mothra/settings.py b/mothra/settings.py index 98a7a19..979f5a4 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 0000000..76d5c08 --- /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 0000000..1569bf1 --- /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 9c17253..0527a1e 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 274674f..b9cb9e9 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 0000000..e69de29 diff --git a/workflows/nlp/library.py b/workflows/nlp/library.py new file mode 100644 index 0000000..a0efae2 --- /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 0000000..9ce66c4 --- /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 GIT binary patch literal 1004 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iye; z3KcXJ_CX>@2HM@dakWG-a~0009+ zNklJ%}827{-6k-d;d1;n3&|iKs-KQILR$s9lhY+K82s!qY-D2u6?@B^m^c z76E03D5yw8L9o!qLL1S-4-irC#18^97Ku%qi4nnKFMGH5SU7VId*{WdRoJK6{qO&M z_IaQ8V+JOeV1fzGWh6zl?&p7kw5-oMCMhbE6xBB1L!g%QG4Na#1&d?kPuQLVhLWaj zpOEw(um{)-7#P`pK99psI)5-L=?!2O7}}negzXhc-`Rd8kHa4UdcX)c1w_C>+jpg9 ztu{LV+rLXXDQTDOP|`2JqV1n-UvK+n;FzT0Sh6b(_rcT4&{DXRIT zsCsIY_a(g!+-e(OE|0?>S|M2!w9b4ByqHD7Yn`k=0Ita6@XD_EHl{gy#P%*pcV%w5<33Uy~?l1PsSS-UMt1j`ll;t(AS?GvGnnhtjfM$fDpY{I3PjOw>id z?zF5=H`6l*JPaHGj`cRM^i4^h0tb?!n$6>I!xD7&$QX}o4s=fWx*Q z%j0m^UyrQmi$PLU`z5_EX&!j#&jdFXlSKh(S!0_u3?z-RD5$&QdmEAF zaah>SZ68R>`UcyJO;eu>?fImr7Vpr&0wYP6OWH4Kdv`l#Q7`~*w|!Jn-8iuWIMnQc@xt9{MccwE=!uJwPF7}^4M@1FG-{+CySGjUHa!2}bW aQ}_c$uFWB9H~aDc0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iye; z3KcXJ_CX>@2HM@dakWG-a~0009+ zNklJ%}827{-6k-d;d1;n3&|iKs-KQILR$s9lhY+K82s!qY-D2u6?@B^m^c z76E03D5yw8L9o!qLL1S-4-irC#18^97Ku%qi4nnKFMGH5SU7VId*{WdRoJK6{qO&M z_IaQ8V+JOeV1fzGWh6zl?&p7kw5-oMCMhbE6xBB1L!g%QG4Na#1&d?kPuQLVhLWaj zpOEw(um{)-7#P`pK99psI)5-L=?!2O7}}negzXhc-`Rd8kHa4UdcX)c1w_C>+jpg9 ztu{LV+rLXXDQTDOP|`2JqV1n-UvK+n;FzT0Sh6b(_rcT4&{DXRIT zsCsIY_a(g!+-e(OE|0?>S|M2!w9b4ByqHD7Yn`k=0Ita6@XD_EHl{gy#P%*pcV%w5<33Uy~?l1PsSS-UMt1j`ll;t(AS?GvGnnhtjfM$fDpY{I3PjOw>id z?zF5=H`6l*JPaHGj`cRM^i4^h0tb?!n$6>I!xD7&$QX}o4s=fWx*Q z%j0m^UyrQmi$PLU`z5_EX&!j#&jdFXlSKh(S!0_u3?z-RD5$&QdmEAF zaah>SZ68R>`UcyJO;eu>?fImr7Vpr&0wYP6OWH4Kdv`l#Q7`~*w|!Jn-8iuWIMnQc@xt9{MccwE=!uJwPF7}^4M@1FG-{+CySGjUHa!2}bW aQ}_c$uFWB9H~aDc0000>','') + }) + 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 950f441..7f3b680 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 0000000..bf3bb95 --- /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 GIT binary patch literal 6878 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 Y0E~bJE5{IozW@LL07*qoM6N<$g5j4pA^-pY literal 0 HcmV?d00001 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 GIT binary patch literal 6533 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 Eg4~7MSO5S3 literal 0 HcmV?d00001 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 GIT binary patch literal 6878 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 Y0E~bJE5{IozW@LL07*qoM6N<$g5j4pA^-pY literal 0 HcmV?d00001 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 GIT binary patch literal 6533 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 Eg4~7MSO5S3 literal 0 HcmV?d00001 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 c09b1a1..0000000 --- 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 9f19d7d..acd9123 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}) - -- GitLab