Skip to content
Snippets Groups Projects
Commit ac2bd8b1 authored by AndiMajore's avatar AndiMajore
Browse files

fixed network export

parent 009a4fc7
No related branches found
No related tags found
No related merge requests found
Pipeline #12039 failed
...@@ -20,7 +20,8 @@ from drugstone import models ...@@ -20,7 +20,8 @@ from drugstone import models
from drugstone import serializers from drugstone import serializers
from drugstone.models import Protein, Task, ProteinDrugInteraction, \ from drugstone.models import Protein, Task, ProteinDrugInteraction, \
Drug, Tissue, ExpressionLevel, Network, ProteinDisorderAssociation, DrugDisorderIndication, Disorder, DrDiDataset, PDIDataset, PDisDataset, PPIDataset Drug, Tissue, ExpressionLevel, Network, ProteinDisorderAssociation, DrugDisorderIndication, Disorder, DrDiDataset, \
PDIDataset, PDisDataset, PPIDataset
from drugstone.serializers import ProteinSerializer, TaskSerializer, \ from drugstone.serializers import ProteinSerializer, TaskSerializer, \
ProteinDrugInteractionSerializer, DrugSerializer, TaskStatusSerializer, TissueSerializer, NetworkSerializer, \ ProteinDrugInteractionSerializer, DrugSerializer, TaskStatusSerializer, TissueSerializer, NetworkSerializer, \
ProteinDisorderAssociationSerializer, DisorderSerializer, DrugDisorderIndicationSerializer ProteinDisorderAssociationSerializer, DisorderSerializer, DrugDisorderIndicationSerializer
...@@ -408,12 +409,15 @@ def result_view(request) -> Response: ...@@ -408,12 +409,15 @@ def result_view(request) -> Response:
edge['to'] = nodes_mapped_dict[edge['to']][node_name_attribute] if edge['to'] in nodes_mapped_dict else edge[ edge['to'] = nodes_mapped_dict[edge['to']][node_name_attribute] if edge['to'] in nodes_mapped_dict else edge[
'to'] 'to']
if 'autofill_edges' in parameters['config'] and parameters['config']['autofill_edges']: if 'autofill_edges' in parameters['config'] and parameters['config']['autofill_edges']:
proteins = set(map(lambda n:n[node_name_attribute][1:],filter(lambda n: node_name_attribute in n,parameters['input_network']['nodes']))) proteins = set(map(lambda n: n[node_name_attribute][1:],
dataset = 'STRING' if 'interaction_protein_protein' not in parameters['config'] else parameters['config']['interaction_protein_protein'] filter(lambda n: node_name_attribute in n, parameters['input_network']['nodes'])))
dataset = 'STRING' if 'interaction_protein_protein' not in parameters['config'] else parameters['config'][
'interaction_protein_protein']
dataset_object = models.PPIDataset.objects.filter(name__iexact=dataset).last() dataset_object = models.PPIDataset.objects.filter(name__iexact=dataset).last()
interaction_objects = models.ProteinProteinInteraction.objects.filter( interaction_objects = models.ProteinProteinInteraction.objects.filter(
Q(ppi_dataset=dataset_object) & Q(from_protein__in=proteins) & Q(to_protein__in=proteins)) 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) edges.extend(auto_edges)
result['network']['edges'].extend(edges) result['network']['edges'].extend(edges)
...@@ -471,7 +475,7 @@ def graph_export(request) -> Response: ...@@ -471,7 +475,7 @@ def graph_export(request) -> Response:
edges = request.data.get('edges', []) edges = request.data.get('edges', [])
fmt = request.data.get('fmt', 'graphml') fmt = request.data.get('fmt', 'graphml')
G = nx.Graph() G = nx.Graph()
node_map = dict()
for node in nodes: for node in nodes:
# drugstone_id is not interesting outside of drugstone # drugstone_id is not interesting outside of drugstone
# try: # try:
...@@ -487,6 +491,10 @@ def graph_export(request) -> Response: ...@@ -487,6 +491,10 @@ def graph_export(request) -> Response:
node[key] = '' node[key] = ''
try: try:
node_name = node['label'] node_name = node['label']
if 'drugstone_id' in node:
node_map[node['drugstone_id']] = node['label']
elif 'id' in node:
node_map[node['id']] = node['label']
except KeyError: except KeyError:
node_name = node['drugstone_id'] node_name = node['drugstone_id']
G.add_node(node_name, **node) G.add_node(node_name, **node)
...@@ -498,9 +506,11 @@ def graph_export(request) -> Response: ...@@ -498,9 +506,11 @@ def graph_export(request) -> Response:
e[key] = json.dumps(e[key]) e[key] = json.dumps(e[key])
elif e[key] is None: elif e[key] is None:
e[key] = '' e[key] = ''
u_of_edgece = e.pop('from') u_of_edge = e.pop('from')
u_of_edge = u_of_edge if u_of_edge not in node_map else node_map[u_of_edge]
v_of_edge = e.pop('to') v_of_edge = e.pop('to')
G.add_edge(u_of_edgece, v_of_edge, **e) v_of_edge = node_map[v_of_edge] if v_of_edge in node_map else v_of_edge
G.add_edge(u_of_edge, v_of_edge, **e)
if fmt == 'graphml': if fmt == 'graphml':
data = nx.generate_graphml(G) data = nx.generate_graphml(G)
......
...@@ -4,7 +4,7 @@ python3 manage.py makemigrations drugstone ...@@ -4,7 +4,7 @@ python3 manage.py makemigrations drugstone
python3 manage.py migrate python3 manage.py migrate
python3 manage.py createfixtures python3 manage.py createfixtures
python3 manage.py cleanuptasks python3 manage.py cleanuptasks
python3 manage.py populate_db --update -a #python3 manage.py populate_db --update -a
#python3 manage.py make_graphs #python3 manage.py make_graphs
/usr/bin/supervisord -c "/etc/supervisor/conf.d/supervisord.conf" /usr/bin/supervisord -c "/etc/supervisor/conf.d/supervisord.conf"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment