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

handled issues with kpm results

Former-commit-id: d8c29d34f0f5aaa2e984ac812b938e736407aec6 [formerly c6db83308635874f45adfe15364cd892f018a28b]
Former-commit-id: e4e26e6fe30c806d37792fcf967abd365c9d039d
parent 0ac92f4f
No related branches found
No related tags found
No related merge requests found
...@@ -198,10 +198,16 @@ def kpm_task(task_hook: TaskHook): ...@@ -198,10 +198,16 @@ def kpm_task(task_hook: TaskHook):
network = {'nodes': nodes, 'edges': edges} network = {'nodes': nodes, 'edges': edges}
# Remapping everything from UniProt Accession numbers to internal IDs # Remapping everything from UniProt Accession numbers to internal IDs
result_nodes = Protein.objects.filter(uniprot_code__in=network["nodes"]) flat_map = lambda f, xs: (y for ys in xs for y in f(ys))
uniprote_nodes = []
uniprote_nodes.extend(network["nodes"])
uniprote_nodes.extend(set(flat_map(lambda l: [l['from'], l['to']], network['edges'])))
result_nodes = Protein.objects.filter(uniprot_code__in=uniprote_nodes)
node_map = {} node_map = {}
node_map_for_edges = {} node_map_for_edges = {}
for node in result_nodes: for node in result_nodes:
node_map_for_edges[node.uniprot_code] = node.id node_map_for_edges[node.uniprot_code] = node.id
if id_space == 'symbol': if id_space == 'symbol':
...@@ -213,19 +219,21 @@ def kpm_task(task_hook: TaskHook): ...@@ -213,19 +219,21 @@ def kpm_task(task_hook: TaskHook):
if id_space == 'ensembl': if id_space == 'ensembl':
node_map[node.uniprot_code] = [ensg.name for ensg in EnsemblGene.objects.filter(protein_id=node.id)] node_map[node.uniprot_code] = [ensg.name for ensg in EnsemblGene.objects.filter(protein_id=node.id)]
flat_map = lambda f, xs: (y for ys in xs for y in f(ys))
network["nodes"] = flat_map(lambda uniprot: node_map[uniprot], network["nodes"])
network["edges"] = list(map( network["nodes"] = list(flat_map(lambda uniprot: node_map[uniprot], network["nodes"]))
lambda uniprot_edge: {"from": "p" + str(node_map_for_edges[uniprot_edge["from"]]), drugstone_edges = []
"to": "p" + str(node_map_for_edges[uniprot_edge["to"]])}, for uniprot_edge in network['edges']:
network["edges"])) from_node = f'p{node_map_for_edges[uniprot_edge["from"]]}' if uniprot_edge['from'] in node_map_for_edges else uniprot_edge['from']
to_node = f'p{node_map_for_edges[uniprot_edge["to"]]}' if uniprot_edge['to'] in node_map_for_edges else uniprot_edge['to']
drugstone_edges.append({"from": from_node,"to": to_node})
network['edges']=drugstone_edges
node_types = {node: "protein" for node in network["nodes"]} node_types = {node: "protein" for node in network["nodes"]}
is_seed = {node: node in set(map(lambda p: "p"+str(p),protein_backend_ids)) for node in network["nodes"]} is_seed = {node: node in set(map(lambda p: "p" + str(p), protein_backend_ids)) for node in network["nodes"]}
result_dict = { result_dict = {
"network": network, "network": network,
"target_nodes":[node for node in network["nodes"] if node not in task_hook.seeds], "target_nodes": [node for node in network["nodes"] if node not in task_hook.seeds],
"node_attributes": {"node_types": node_types, "is_seed": is_seed} "node_attributes": {"node_types": node_types, "is_seed": is_seed}
} }
task_hook.set_results(results=result_dict) task_hook.set_results(results=result_dict)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment