From a961801e7f87b27ed625c547e32f93469d15757e Mon Sep 17 00:00:00 2001
From: AndiMajore <andi.majore@googlemail.com>
Date: Wed, 15 Feb 2023 20:09:40 +0100
Subject: [PATCH] added route for default params

Former-commit-id: ed8da6ed11ab50b3328a8bca5a675700fd60033a [formerly 4aaf780e4b2eed07faa6131f7ba5c0692632fd43]
Former-commit-id: e58fea766a10a7dbb95a74d21f245387b5e99887
---
 drugstone/urls.py  |  3 ++-
 drugstone/views.py | 22 ++++++++++++++++++++--
 2 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/drugstone/urls.py b/drugstone/urls.py
index 680f18b..f3afb67 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 45ff924..418ae06 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.
-- 
GitLab