From 9b651ebd3559a0a9f7abc0939df6a3ab7205518e Mon Sep 17 00:00:00 2001
From: AndiMajore <andi.majore@googlemail.com>
Date: Fri, 29 Jul 2022 09:39:23 +0200
Subject: [PATCH] analysis on analysis working properly

---
 drugstone/views.py | 41 +++++++++++++++++++++++++++--------------
 1 file changed, 27 insertions(+), 14 deletions(-)

diff --git a/drugstone/views.py b/drugstone/views.py
index 8cb488a..b5e8183 100755
--- a/drugstone/views.py
+++ b/drugstone/views.py
@@ -370,7 +370,7 @@ def result_view(request) -> Response:
 
     edges = parameters['input_network']['edges']
     edge_endpoint_ids = set()
-    # TODO check for custom edges when working again
+    # TODO check for custom edges when working again with ensemble gene ids
     for edge in edges:
         edge_endpoint_ids.add(edge['from'])
         edge_endpoint_ids.add(edge['to'])
@@ -378,30 +378,43 @@ def result_view(request) -> Response:
     nodes_mapped, id_key = query_proteins_by_identifier(edge_endpoint_ids, identifier)
 
     # change data structure to dict in order to be quicker when merging
-    nodes_mapped_dict = {node[id_key]: node for node in nodes_mapped}
-    for edge in edges:
-        # change edge endpoints if they were matched with a protein in the database
-        edge['from'] = nodes_mapped_dict[edge['from']][node_name_attribute] if edge['from'] in nodes_mapped_dict else \
-            edge['from']
-        edge['to'] = nodes_mapped_dict[edge['to']][node_name_attribute] if edge['to'] in nodes_mapped_dict else edge[
-            'to']
-    if 'autofill_edges' in parameters['config'] and parameters['config']['autofill_edges']:
-        proteins = {node_name[1:] for nodes in map(lambda n: n[node_name_attribute],
-                                                   filter(lambda n: node_name_attribute in n,
-                                                          parameters['input_network']['nodes'])) for node_name in nodes}
+    print(nodes_mapped)
+    # nodes_mapped_dict = {node[id_key][0]: node for node in nodes_mapped}
+    # nodes_mapped_dict_reverse = {}
+    # for id, node in nodes_mapped_dict.items():
+    #     for drugstone_id in node[node_name_attribute]:
+    #         nodes_mapped_dict_reverse[node[drugstone_id]] = id
+
+    print(nodes)
+    # for edge in edges:
+    #     # change edge endpoints if they were matched with a protein in the database
+    #     edge['from'] = nodes_mapped_dict[edge['from']][node_name_attribute] if edge['from'] in nodes_mapped_dict else \
+    #         edge['from']
+    #     edge['to'] = nodes_mapped_dict[edge['to']][node_name_attribute] if edge['to'] in nodes_mapped_dict else edge[
+    #         'to']
+
+
 
+    if 'autofill_edges' in parameters['config'] and parameters['config']['autofill_edges']:
+        proteins = {node_name[1:] for nodes in map(lambda n: 'drugstoneType' in n and n[node_name_attribute],
+                                                   filter(lambda n: n.drugstoneType == 'protein' ,filter(lambda n: 'drugstoneType' in n and node_name_attribute in n ,parameters['input_network']['nodes']))) for node_name in nodes}
         dataset = DEFAULTS['ppi'] if 'interaction_protein_protein' not in parameters['config'] else \
             parameters['config'][
                 'interaction_protein_protein']
         dataset_object = models.PPIDataset.objects.filter(name__iexact=dataset).last()
         interaction_objects = models.ProteinProteinInteraction.objects.filter(
             Q(ppi_dataset=dataset_object) & Q(from_protein__in=proteins) & Q(to_protein__in=proteins))
-        auto_edges = list(
-            map(lambda n: {"from": f'p{n.from_protein_id}', "to": f'p{n.to_protein_id}'}, interaction_objects))
+        auto_edges = list(map(lambda n: {"from": f'p{n.from_protein_id}', "to": f'p{n.to_protein_id}'},
+                              interaction_objects))
         edges.extend(auto_edges)
+        # TODO check what to do with edges with from and to id lists
+
+
+
     result['network']['edges'].extend(edges)
     uniq_edges = dict()
     for edge in result['network']['edges']:
+        print(edge)
         hash = edge['from'] + edge['to']
         uniq_edges[hash] = edge
     result['network']['edges'] = list(uniq_edges.values())
-- 
GitLab