def on_button_draw_annotation_clicked(self, widget, data=None): """ 2008-12-16 use DrawSNPRegion.drawGeneModel() to draw gene models 2008-02-02 """ if not self.chr_id2size: sys.stderr.write("No genome-wide pvalue plot has been drawn yet. Do it first!\n") return #if not self.gene_id2model: # self.gene_id2model, self.chr_id2gene_id_ls = self.get_gene_id2model(self.postgres_curs, tax_id=3702) if not self.gene_annotation: self.db_connect() xlim = self.axe_gene_model.get_xlim() left_chr, left_pos = get_chr_pos_from_x_axis_pos(xlim[0], self.chr_gap, self.chr_id2cumu_size, self.chr_id_ls) right_chr, right_pos = get_chr_pos_from_x_axis_pos(xlim[1], self.chr_gap, self.chr_id2cumu_size, self.chr_id_ls) #fake a snps_within_this_region for drawGeneModel() snps_within_this_region = PassingData(chr_pos_ls=[[left_chr, left_pos],[right_chr, right_pos]]) base_y_value = 1 gene_width = 0.8 gene_position_cycle = 5 return_data = DrawSNPRegion.drawGeneModel(self.axe_gene_model, snps_within_this_region, self.gene_annotation, candidate_gene_set=None,\ gene_width=gene_width, gene_position_cycle=gene_position_cycle, base_y_value=base_y_value, \ gene_box_text_gap=20, label_gene=0, rotate_xy=False,\ chr_id2cumu_size=self.chr_id2cumu_size, chr_id2size=self.chr_id2size, chr_gap=self.chr_gap,\ artist_obj_id2artist_gene_id_ls=self.artist_obj_id2artist_gene_id_ls, \ gene_id2artist_object_id=self.gene_id2artist_object_id, drawGeneOnTheBoundary=False) #set drawGeneOnTheBoundary to False because later adding text to these genes would corrupt the running program. self.axe_gene_model.set_ylim([base_y_value-gene_width, gene_position_cycle+gene_width*2]) """ for gene_id in self.chr_id2gene_id_ls[left_chr]: gene_model = self.gene_id2model[gene_id] if gene_model.start!=None and gene_model.stop!=None and gene_model.stop>left_pos and gene_id not in self.gene_id2artist_object_id: if left_chr==right_chr: #same chromosome if gene_model.start>right_pos: #totally out of range, skip it continue y_value = len(self.gene_id2artist_object_id)%4 #cycling through the y position to avoid clogging self.plot_one_gene(self.ax, gene_id, self.gene_id2model, self.chr_id2cumu_size, self.chr_id2size, self.chr_gap, y_value=-1-y_value, gene_width=self.gene_width) if left_chr!=right_chr: for gene_id in self.chr_id2gene_id_ls[right_chr]: gene_model = self.gene_id2model[gene_id] if gene_model.start!=None and gene_model.stop!=None and gene_model.start<right_pos and gene_id not in self.gene_id2artist_object_id: y_value = len(self.gene_id2artist_object_id)%4 #cycling through the y position to avoid clogging self.plot_one_gene(self.ax, gene_id, self.gene_id2model, self.chr_id2cumu_size, self.chr_id2size, self.chr_gap, y_value=-1-y_value, gene_width=self.gene_width) """ self.canvas_matplotlib.draw()