def run(self): communicator = MPI.world.duplicate() node_rank = communicator.rank free_computing_nodes = range(1,communicator.size-1) #exclude the last node if node_rank == 0: (conn, curs) = db_connect(self.hostname, self.dbname, self.schema) schema_instance = form_schema_tables(self.fname, self.acc_cutoff, self.lm_bit) gene_id2no = get_gene_id2gene_no(curs) gene2enc_array = self.get_gene2enc_array(self.gim_inputfname, gene_id2no) gene2enc_array_pickle = cPickle.dumps(gene2enc_array, -1) gene_no2id = get_gene_no2gene_id(curs) gene_no2go_no = get_gene_no2go_no(curs) gene_no2id_pickle = cPickle.dumps(gene_no2id, -1) gene_no2go_no_pickle = cPickle.dumps(gene_no2go_no, -1) for node in free_computing_nodes: #send it to the computing_node communicator.send(gene2enc_array_pickle, node, 0) communicator.send(gene_no2id_pickle, communicator.size-1, 0) communicator.send(gene_no2go_no_pickle, communicator.size-1, 0) elif node_rank in free_computing_nodes: data, source, tag = communicator.receiveString(0, 0) gene2enc_array = cPickle.loads(data) #take the data elif node_rank==communicator.size-1: schema_instance = form_schema_tables(self.fname, self.acc_cutoff, self.lm_bit) data, source, tag = communicator.receiveString(0, 0) gene_no2id = cPickle.loads(data) data, source, tag = communicator.receiveString(0, 0) gene_no2go_no = cPickle.loads(data) mpi_synchronize(communicator) if node_rank == 0: curs.execute("DECLARE crs CURSOR FOR SELECT p.id, p.vertex_set, p.edge_set, p.recurrence_array,\ g.go_no_list from %s p, %s g where g.mcl_id=p.id"%(schema_instance.pattern_table, schema_instance.good_cluster_table)) input_node(communicator, curs, free_computing_nodes, self.message_size, self.report) elif node_rank in free_computing_nodes: parameter_list = [gene2enc_array, self.dataset_signature_set, self.p_value_cut_off] computing_node(communicator, parameter_list, self.computing_node_handler, report=self.report) elif node_rank==communicator.size-1: if not os.path.isdir(self.pic_output_dir): os.makedirs(self.pic_output_dir) cluster_info_instance = cluster_info() ofname = os.path.join(self.pic_output_dir, '%s_p%s'%(schema_instance.good_cluster_table, self.p_value_cut_off)) writer = csv.writer(open(ofname, 'w'), delimiter='\t') parameter_list = [self.pic_output_dir, cluster_info_instance, gene_no2id, gene_no2go_no, writer] output_node(communicator, free_computing_nodes, parameter_list, self.output_node_handler, self.report) del writer
def run(self): """ 10-17-05 bit control whether that setting has linear model """ schema_instance1 = form_schema_tables(self.fname1, self.acc_cutoff1, self.lm_bit1) schema_instance2 = form_schema_tables(self.fname2, self.acc_cutoff2, self.lm_bit2) (conn, curs) = db_connect(self.hostname, self.dbname, self.schema) p_gene_id_set1 = p_gene_id_set_from_gene_p_table(curs, schema_instance1.gene_p_table) p_gene_id_set2 = p_gene_id_set_from_gene_p_table(curs, schema_instance2.gene_p_table) p_gene_id_set_total = p_gene_id_set_from_gene_p_table(curs, schema_instance2.p_gene_table) catI_set = p_gene_id_set1 - p_gene_id_set2 catII_set = p_gene_id_set1 & p_gene_id_set2 catIII_set = p_gene_id_set2 - p_gene_id_set1 catIV_set = p_gene_id_set_total-(p_gene_id_set1|p_gene_id_set2) sample_ls_ls = [] for p_gene_id_set in [catI_set, catII_set, catIII_set, catIV_set]: sample_ls_ls.append(self.sample_p_gene_id_set(p_gene_id_set, self.no_of_samples)) writer = csv.writer(open(self.ofname, 'w'), delimiter = '\t') writer.writerow(['linear model coeffs of two settings']) writer.writerow([]) writer.writerow(['No.','intercept', 'coeff1', 'coeff2', 'coeff3', 'coeff4', 'coeff5', 'intercept_p_value',\ 'coeff1_p_value', 'coeff2_p_value', 'coeff3_p_value', 'coeff4_p_value', 'coeff5_p_value',\ 'score_cut_off']) #fetch linear model coefficients pga_instance_list = [None, None] #10-17-05 default is nothing, none of them have linear model if self.bit[0] == '1': pga_instance1 = p_gene_analysis() pga_instance1.go_no2lm_results, lm_results_2d_list = pga_instance1.get_go_no2lm_results(curs, schema_instance1.lm_table) pga_instance1.general_lm_results = pga_instance1.get_general_lm_results(lm_results_2d_list) pga_instance_list[0] = pga_instance1 self.output_lm_model(curs, schema_instance1, writer) if self.bit[1] == '1': pga_instance2 = p_gene_analysis() pga_instance2.go_no2lm_results, lm_results_2d_list = pga_instance2.get_go_no2lm_results(curs, schema_instance2.lm_table) pga_instance2.general_lm_results = pga_instance2.get_general_lm_results(lm_results_2d_list) pga_instance_list[1] = pga_instance2 self.output_lm_model(curs, schema_instance2, writer) #following is for drawing graph in output_p_gene_id_list() self.gene_no2gene_id = get_gene_no2gene_id(curs) self.gene_no2go_no = get_gene_no2go_no(curs) cluster_info_instance = cluster_info() for i in range(len(sample_ls_ls)): cat_no = i+1 sys.stderr.write("Category %s...\n"%cat_no) writer.writerow(['Category %s'%cat_no]) writer.writerow([self.category_no2information[cat_no]]) cat_dir = 'cat%s'%cat_no if not os.path.isdir(cat_dir): os.makedirs(cat_dir) if i==0: #this is different, prediction only in schema_instance1, so swap it self.output_p_gene_id_list(curs, schema_instance2, schema_instance1, sample_ls_ls[i], writer, cat_dir, \ pga_instance_list[1], pga_instance_list[0], cluster_info_instance, self.simple) else: self.output_p_gene_id_list(curs, schema_instance1, schema_instance2, sample_ls_ls[i], writer, cat_dir, \ pga_instance_list[0], pga_instance_list[1], cluster_info_instance, self.simple) sys.stderr.write("End Category %s.\n"%cat_no)
def __init__(self): """ 2008-01-17 use sys.argv[0] to figure out the path of guianalyzer.glade """ program_path = os.path.dirname(sys.argv[0]) xml = gtk.glade.XML(os.path.join(program_path, 'guianalyzer.glade')) xml.signal_autoconnect(self) self.window_center = xml.get_widget("window_center") self.window_center.connect("destroy", self.destroy) self.button_cluster_info = xml.get_widget("button_cluster_info") self.button_cluster_accuracy = xml.get_widget("button_cluster_accuracy") self.entry_hostname = xml.get_widget("entry_hostname") self.entry_dbname = xml.get_widget("entry_dbname") self.entry_schema = xml.get_widget("entry_schema") self.entry_no_of_datasets = xml.get_widget("entry_no_of_datasets") self.entry_splat_table = xml.get_widget("entry_splat_table") self.entry_mcl_table = xml.get_widget("entry_mcl_table") self.entry_cluster_stat = xml.get_widget("entry_cluster_stat") self.togglebutton_hide_show = xml.get_widget("togglebutton_hide_show") self.button_db_connect = xml.get_widget("button_db_connect") self.window_cluster_info1 = xml.get_widget("window_cluster_info1") self.window_cluster_info1.connect("delete_event", self.subwindow_hide) self.window_cluster_info1.show() self.textview_subgraph = xml.get_widget("textview_subgraph") self.treeview_dataset = xml.get_widget("treeview_dataset") self.button_dataset_plot = xml.get_widget("button_dataset_plot") self.treeview_go_association = xml.get_widget("treeview_go_association") self.button_go_plot = xml.get_widget("button_go_plot") self.entry_cluster_id = xml.get_widget("entry_cluster_id") self.button_search_cluster_id = xml.get_widget("button_search_cluster_id") self.window_cluster_info2 = xml.get_widget("window_cluster_info2") self.window_cluster_info2.connect("delete_event", self.subwindow_hide) self.window_cluster_info2.show() self.treeview_recurrence = xml.get_widget("treeview_recurrence") self.label_total_recurrence = xml.get_widget("label_total_recurrence") self.label_total_edges = xml.get_widget("label_total_edges") self.treeview_connectivity = xml.get_widget("treeview_connectivity") self.label_avg_connectivity = xml.get_widget("label_avg_connectivity") self.label_splat_connectivity = xml.get_widget("label_splat_connectivity") self.label_original_connectivity = xml.get_widget("label_original_connectivity") self.treeview_edge_correlation = xml.get_widget("treeview_edge_correlation") self.button_edge_cor_plot = xml.get_widget("button_edge_cor_plot") self.treeview_edge_significance = xml.get_widget("treeview_edge_significance") self.button_edge_sig_plot = xml.get_widget("button_edge_sig_plot") self.dialog_cluster_accuracy = xml.get_widget("dialog_cluster_accuracy") self.dialog_cluster_accuracy.connect("delete_event", self.subwindow_hide) self.dialog_cluster_accuracy.show() self.textview_cluster_id = xml.get_widget("textview_cluster_id") self.okbutton_cluster_accuracy = xml.get_widget("okbutton_cluster_accuracy") self.treeview_cluster_accuracy = xml.get_widget("treeview_cluster_accuracy") self.entry_cluster_accuracy_p_gene_table = xml.get_widget("entry_cluster_accuracy_p_gene_table") self.entry_cluster_accuracy_p_value_cut_off = xml.get_widget("entry_cluster_accuracy_p_value_cut_off") self.comboboxentry_plot_type = xml.get_widget("comboboxentry_plot_type") #06-14-05 to offer selection of plot type. self.comboboxentry_plot_type.set_active(0) #06-14-05 set default #borrowed class instances self.cluster_info_instance = cluster_info() self.cluster_info_need_init = 1 #flag whether the windows of cluster_info need to be initialized self.curs = None #used to check in on_button_cluster_info_clicked() self.cluster = None #used to check in on_button_go_plot_clicked() self.dataset_liststore_dict = {54:self.dataset_liststore_54, 55:self.dataset_liststore_55, 73:self.dataset_liststore_73, 74:self.dataset_liststore_74, 79:self.dataset_liststore_79, 80:self.dataset_liststore_80, 100:self.dataset_liststore_100, 101:self.dataset_liststore_101}