From 0d293506089d8e97dfd1696ca5aaf1bbf6232947 Mon Sep 17 00:00:00 2001 From: sepro Date: Thu, 30 Nov 2017 16:33:01 +0100 Subject: [PATCH] lc filter in place --- conekt/controllers/ecc.py | 3 ++- conekt/helpers/cytoscape.py | 38 +++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/conekt/controllers/ecc.py b/conekt/controllers/ecc.py index 798eebc..732515c 100644 --- a/conekt/controllers/ecc.py +++ b/conekt/controllers/ecc.py @@ -113,7 +113,7 @@ def ecc_graph_multi_json(): :param ecc_id: internal ID of the sequence to sequence ECC relationship :return: JSON object compatible with cytoscape.js """ - network, family = SequenceSequenceECCAssociation.get_ecc_multi_network(2, [230458, 35796, 162930]) + network, family = SequenceSequenceECCAssociation.get_ecc_multi_network(1, [162930, 56261, 203621, 94050]) network_cytoscape = CytoscapeHelper.parse_network(network) network_cytoscape = CytoscapeHelper.add_descriptions_nodes(network_cytoscape) @@ -121,5 +121,6 @@ def ecc_graph_multi_json(): network_cytoscape = CytoscapeHelper.add_lc_data_nodes(network_cytoscape) network_cytoscape = CytoscapeHelper.add_species_data_nodes(network_cytoscape) network_cytoscape = CytoscapeHelper.connect_homologs(network_cytoscape) + network_cytoscape = CytoscapeHelper.prune_unique_lc(network_cytoscape) return json.dumps(network_cytoscape) diff --git a/conekt/helpers/cytoscape.py b/conekt/helpers/cytoscape.py index 57aead8..2bd50cc 100644 --- a/conekt/helpers/cytoscape.py +++ b/conekt/helpers/cytoscape.py @@ -1,4 +1,5 @@ from copy import deepcopy +from collections import Counter from flask import url_for from sqlalchemy.orm import joinedload @@ -407,6 +408,43 @@ def add_depth_data_edges(network): return colored_network + @staticmethod + def prune_unique_lc(network): + """ + Remove genes from network that have an lc that occurs only once + + :param network: dict containing the network + :return: Cytoscape.js compatible network with the pruned network + """ + + lc_labels = [] + for node in network["nodes"]: + if 'lc_label' in node['data'].keys(): + lc_labels.append(node['data']['lc_label']) + + lc_counter = Counter(lc_labels) + + print(lc_counter) + + pruned_network = {'nodes': [], 'edges': []} + + good_nodes = [] + + for node in network['nodes']: + if 'lc_label' in node['data'].keys(): + if lc_counter[node['data']['lc_label']] > 1: + good_nodes.append(node['data']['name']) + pruned_network['nodes'].append(deepcopy(node)) + else: + good_nodes.append(node['data']['name']) + pruned_network['nodes'].append(deepcopy(node)) + + for edge in network['edges']: + if edge['data']['source'] in good_nodes and edge['data']['target'] in good_nodes: + pruned_network['edges'].append(deepcopy(edge)) + + return pruned_network + @staticmethod def merge_networks(network_one, network_two): """