diff --git a/drugstone/urls.py b/drugstone/urls.py index 680f18bf922ca024b4b952e7ba883faef65f1c33..f3afb678504fb5f84487113c5c98145d3ba3a687 100755 --- a/drugstone/urls.py +++ b/drugstone/urls.py @@ -19,7 +19,7 @@ from django.urls import path from drugstone.views import map_nodes, tasks_view, result_view, \ graph_export, TissueView, TissueExpressionView, query_tissue_proteins, TaskView, \ adjacent_drugs, adjacent_disorders, fetch_edges, create_network, load_network, get_license, get_datasets, \ - get_max_tissue_expression, convert_compact_ids + get_max_tissue_expression, convert_compact_ids, get_default_params # cache time is 6 hours urlpatterns = [ @@ -40,5 +40,6 @@ urlpatterns = [ path('admin/', admin.site.urls), path('create_network', create_network), path('load_network', load_network), + path('get_default_params', get_default_params), path('get_license', get_license) ] diff --git a/drugstone/views.py b/drugstone/views.py index 45ff92405eaa2e2388aed9e92dfccbfc2d47d34b..418ae06b0cd487d95fa15c5c39835e43c3719fb4 100755 --- a/drugstone/views.py +++ b/drugstone/views.py @@ -59,7 +59,7 @@ class TaskView(APIView): token_str = ''.join(random.choice(chars) for _ in range(32)) parameters = request.data['parameters'] licenced = parameters.get('licenced', False) - + algorithm = request.data['algorithm'] # find databases based on parameter strings parameters['ppi_dataset'] = PPIDatasetSerializer().to_representation( @@ -68,9 +68,14 @@ class TaskView(APIView): parameters['pdi_dataset'] = PDIDatasetSerializer().to_representation( get_pdi_ds(parameters.get('pdi_dataset', DEFAULTS['pdi']), licenced)) + # if algorithm in ['connect', 'connectSelected', 'quick', 'super']: + # parameters["num_trees"] = 5 + # parameters["tolerance"] = 5 + # parameters["hub_penalty"] = 0.5 + task = Task.objects.create(token=token_str, target=request.data['target'], - algorithm=request.data['algorithm'], + algorithm=algorithm, parameters=json.dumps(parameters)) start_task(task) task.save() @@ -100,6 +105,19 @@ def get_license(request) -> Response: return Response({'license': import_license()}) +@api_view(['GET']) +def get_default_params(request) -> Response: + algorithm = request.GET.get('algorithm') + connect = {'algorithm': 'multisteiner', 'numTrees': 5, 'tolerance': 5, 'hubPenalty': 0.5} + quick = {'algorithm': 'closeness', 'result_size': 50, 'hub_penalty': 0, 'include_non_approved_drugs': False, 'include_indirect_drugs': False} + resp = {} + if algorithm in ['quick', 'super', 'connect', 'connectSelected']: + resp['protein'] = connect + if algorithm in ['quick', 'super']: + resp['drug'] = quick + return Response(resp) + + @api_view(['POST']) def fetch_edges(request) -> Response: """Retrieves interactions between nodes given as a list of drugstone IDs.