# for each node (from diff expr) making a set of other diff expt gene nodes reachable from it for node in diff_expressed_nodes: diff_expr_descendants = nx.descendants(G, node) & diff_expressed_nodes diff_ancestors[node].update(diff_expr_descendants) all_mega_ancestorz += optimal_greedy(G, diff_expressed) freq = {k: len(v) for k, v in diff_ancestors.items()} freq = sorted(freq.items(), key=lambda x: x[1], reverse=True) hsa_names = FileDict(file='data/hsa_names.tsv', pattern='hsa:(?P<key>\d+)\t(?P<value>.*)') n_top_genes = 10 print('Top {} genes:'.format(n_top_genes)) hsa_names.preload(*[gene for gene, fr in freq[:n_top_genes]]) for gene, fr in freq[:n_top_genes]: print('{:>4} : {:>7} : {}'.format(fr, gene, hsa_names[gene])) print() print('Top {} genes in optimal-greedy algorithm:'.format(n_top_genes)) for gene, fr in all_mega_ancestorz.most_common(n_top_genes): print('{:>4} : {:>7} : {}'.format(fr, gene, hsa_names[gene])) print() print('Looking in the supergraph') supergraph.graph['name'] = 'SuperGraph' print(nx.info(supergraph)) diff_ancestors = defaultdict(set) diff_expressed_nodes = supergraph.nodes & diff_expressed # for each node (from diff expr) making a set of other diff expt gene nodes reachable from it