def getSSAroundSS(self, solarSystemID, jumps): ss = self.getSSInfo(solarSystemID) color = 0 if ss[2] > 0.5: color = "green" else: color = "red" ssRegion = colored(ss[0], color) ssName = colored(ss[1], color) ssSecruity = colored("%.1f" % ss[2], color) if self.ssgraph: gr = self.ssgraph else: gr = graph() nodes = self.getAllSS() gr.add_nodes(nodes) for edge in self.getAllSSEdges(): gr.add_edge(edge) print "Searching for Solar Systems around %s: %s(%s) in %d jumps." % (ssRegion, ssName, ssSecruity, jumps) ssinrad = breadth_first_search(gr, solarSystemID, radius(jumps)) ssinrad = ssinrad[1] text = "Found %d systems" % len(ssinrad) text = colored(text, "cyan") print "Done. %s, including current one." % text return ssinrad
def sample_gene_interactions(c, args, idx_to_sample): #fetch variant gene dict for all samples get_variant_genes(c, args, idx_to_sample) #file handle for fetching the hprd graph file_graph = os.path.join(path_dirname, 'hprd_interaction_graph') #load the graph using cPickle and close file handle gr = graph() f = open(file_graph, 'rb') gr = cPickle.load(f) f.close() k = [] variants = [] #calculate nodes from the graph hprd_genes = gr.nodes() if args.gene == None or args.gene not in hprd_genes: sys.stderr.write("gene name not given else not represented in the p-p interaction file\n") elif args.gene in hprd_genes: x, y = \ breadth_first_search(gr,root=args.gene,filter=radius(args.radius)) gst = digraph() gst.add_spanning_tree(x) dot = write(gst) out.write(dot) st, sd = shortest_path(gst, args.gene) if args.var_mode: for sample in sam.iterkeys(): var = sam[str(sample)] #for each level return interacting genes if they are # variants in the sample. # 0th order would be returned if the user chosen # gene is a variant in the sample for x in range(0, (args.radius+1)): for each in var: for key, value in sd.iteritems(): if value == x and key == each[0]: print "\t".join([str(sample),str(args.gene), \ str(x), \ str(key), \ str(each[1]), \ str(each[2]), \ str(each[3])]) elif (not args.var_mode): for sample in sam.iterkeys(): for each in sam[str(sample)]: variants.append(each[0]) for x in range(0, (args.radius+1)): for key, value in sd.iteritems(): if value == x and key in set(variants): k.append(key) if k: print "\t".join([str(sample), str(args.gene), \ str(x)+"_order:", ",".join(k)]) else: print "\t".join([str(sample), str(args.gene), str(x)+"_order:", "none"]) #initialize keys for next iteration k = []
def testbfs_in_empty_graph(self): gr = graph() st, lo = breadth_first_search(gr, filter=radius(2)) assert st == {} assert lo == []
def test_dfs_in_digraph(self): gr = testlib.new_graph() st, pre, post = depth_first_search(gr, root=0, filter=radius(3)) for each in st: assert (st[each] == None or st[each] == 0 or st[st[each]] == 0 or st[st[st[each]]] == 0)
def test_dfs_in_empty_graph(self): gr = graph() st, pre, post = depth_first_search(gr, filter=radius(2)) assert st == {} assert pre == [] assert post == []
def test_bfs_in_digraph(self): gr = testlib.new_digraph() st, lo = breadth_first_search(gr, root=0, filter=radius(3)) for each in st: assert (st[each] == None or st[each] == 0 or st[st[each]] == 0 or st[st[st[each]]] == 0)
def sample_lof_interactions(c, args, idx_to_sample, samples): lof = get_lof_genes(c, args, idx_to_sample) #file handle for fetching the hprd graph file_graph = os.path.join(path_dirname, 'hprd_interaction_graph') #load the graph using cPickle and close file handle gr = graph() f = open(file_graph, 'rb') gr = cPickle.load(f) f.close() #calculate nodes from the graph hprd_genes = gr.nodes() #initialize keys k = [] variants = [] if (not args.var_mode): for sample in lof.iterkeys(): lofvariants = list(set(lof[str(sample)])) for each in samples[str(sample)]: variants.append(each[0]) for gene in lofvariants: if gene in hprd_genes: x, y = \ breadth_first_search(gr,root=gene,\ filter=radius(args.radius)) gst = digraph() gst.add_spanning_tree(x) st, sd = shortest_path(gst, gene) # for each level return interacting genes # if they are variants in the sample. for rad in range(1, (args.radius+1)): for key, value in sd.iteritems(): if (value == rad) and key in set(variants): k.append(key) if k: print "\t".join([str(sample), \ str(gene), \ str(rad)+"_order:", ",".join(k)]) else: print "\t".join([str(sample), \ str(gene), \ str(rad)+"_order:", \ "none"]) #initialize k k = [] elif args.var_mode: for sample in lof.iterkeys(): lofvariants = list(set(lof[str(sample)])) var = samples[str(sample)] for gene in lofvariants: if gene in hprd_genes: x, y = \ breadth_first_search(gr,root=gene, \ filter=radius(args.radius)) gst = digraph() gst.add_spanning_tree(x) st, sd = shortest_path(gst, gene) for rad in range(1, (args.radius+1)): for each in var: for key, value in sd.iteritems(): if value == rad and key == each[0]: print "\t".join([str(sample), \ str(gene), \ str(rad), \ str(key), \ str(each[1]), \ str(each[2]), \ str(each[3]), \ str(each[4]), \ str(each[5]), \ str(each[6]), \ str(each[7]), \ str(each[8]), \ str(each[9]), \ str(each[10])])
def sample_gene_interactions(c, args, idx_to_sample): out = open("file.dot", 'w') #fetch variant gene dict for all samples samples = get_variant_genes(c, args, idx_to_sample) #file handle for fetching the hprd graph config = read_gemini_config(args=args) path_dirname = config["annotation_dir"] file_graph = os.path.join(path_dirname, 'hprd_interaction_graph') #load the graph using cPickle and close file handle gr = graph() f = open(file_graph, 'rb') gr = cPickle.load(f) f.close() k = [] variants = [] #calculate nodes from the graph hprd_genes = gr.nodes() if args.gene == None or args.gene not in hprd_genes: sys.stderr.write("Gene name not found or") sys.stderr.write(" gene not in p-p interaction file\n") elif args.gene in hprd_genes: x, y = \ breadth_first_search(gr,root=args.gene,filter=radius(args.radius)) gst = digraph() gst.add_spanning_tree(x) dot = write(gst) out.write(dot) st, sd = shortest_path(gst, args.gene) if args.var_mode: for sample in samples.iterkeys(): var = samples[str(sample)] #for each level return interacting genes if they are # variants in the sample. # 0th order would be returned if the user chosen # gene is a variant in the sample for x in range(0, (args.radius + 1)): for each in var: for key, value in sd.iteritems(): if value == x and key == each[0]: print "\t".join([str(sample),str(args.gene), \ str(x), \ str(key), \ str(each[1]), \ str(each[2]), \ str(each[3]), \ str(each[4]), \ str(each[5]), \ str(each[6]), \ str(each[7]), \ str(each[8]), \ str(each[9]), \ str(each[10]), \ str(each[11])]) elif (not args.var_mode): for sample in samples.iterkeys(): for each in samples[str(sample)]: variants.append(each[0]) for x in range(0, (args.radius + 1)): for key, value in sd.iteritems(): if value == x and key in set(variants): k.append(key) if k: print "\t".join([str(sample), str(args.gene), \ str(x)+"_order:", ",".join(k)]) else: print "\t".join([str(sample), str(args.gene), \ str(x)+"_order:", "none"]) #initialize keys for next iteration k = [] #initialize variants list for next iteration variants = []
def sample_lof_interactions(c, args, idx_to_sample, samples): lof = get_lof_genes(c, args, idx_to_sample) #file handle for fetching the hprd graph config = read_gemini_config(args=args) path_dirname = config["annotation_dir"] file_graph = os.path.join(path_dirname, 'hprd_interaction_graph') #load the graph using cPickle and close file handle gr = graph() f = open(file_graph, 'rb') gr = cPickle.load(f) f.close() #calculate nodes from the graph hprd_genes = gr.nodes() #initialize keys k = [] variants = [] if (not args.var_mode): for sample in lof.iterkeys(): lofvariants = list(set(lof[str(sample)])) for each in samples[str(sample)]: variants.append(each[0]) for gene in lofvariants: if gene in hprd_genes: x, y = \ breadth_first_search(gr,root=gene,\ filter=radius(args.radius)) gst = digraph() gst.add_spanning_tree(x) st, sd = shortest_path(gst, gene) # for each level return interacting genes # if they are variants in the sample. for rad in range(1, (args.radius + 1)): for key, value in sd.iteritems(): if (value == rad) and key in set(variants): k.append(key) if k: print "\t".join([str(sample), \ str(gene), \ str(rad)+"_order:", ",".join(k)]) else: print "\t".join([str(sample), \ str(gene), \ str(rad)+"_order:", \ "none"]) #initialize k k = [] #initialize variants list for next iteration variants = [] elif args.var_mode: for sample in lof.iterkeys(): lofvariants = list(set(lof[str(sample)])) var = samples[str(sample)] for gene in lofvariants: if gene in hprd_genes: x, y = \ breadth_first_search(gr,root=gene, \ filter=radius(args.radius)) gst = digraph() gst.add_spanning_tree(x) st, sd = shortest_path(gst, gene) for rad in range(1, (args.radius + 1)): for each in var: for key, value in sd.iteritems(): if value == rad and key == each[0]: print "\t".join([str(sample), \ str(gene), \ str(rad), \ str(key), \ str(each[1]), \ str(each[2]), \ str(each[3]), \ str(each[4]), \ str(each[5]), \ str(each[6]), \ str(each[7]), \ str(each[8]), \ str(each[9]), \ str(each[10]), \ str(each[11])])
def test_bfs_in_graph(self): gr = testlib.new_graph() st, lo = breadth_first_search(gr, root=0, filter=radius(3)) for each in st: assert (st[each] == None or st[each] == 0 or st[st[each]] == 0 or st[st[st[each]]] == 0)