def write_schemadelica_plot(self): """Write schemadelica plot as SVG and PDF.""" gd_diagram = GenomeDiagram.Diagram("Primer Scheme", track_size=0.15) primer_feature_set = GenomeDiagram.FeatureSet() # make the gc track window = 50 gc_set = GenomeDiagram.GraphSet("GC content") graphdata1 = self.apply_to_window(self.primary_ref.seq, window, self.calc_gc) gc_set.new_graph( graphdata1, "GC content", style="line", color=colors.violet, altcolor=colors.purple, ) gc_track = GenomeDiagram.Track("GC content", height=1.5, greytrack=0, scale_largetick_interval=1e3) gc_track.add_set(gc_set) # make the primer track for r in self.regions: region = str(r.region_num) strand = 1 if r.region_num % 2 else -1 fwd_feature = SeqFeature( FeatureLocation(r.left.start, r.left.end, strand=strand)) rev_feature = SeqFeature( FeatureLocation(r.right.end, r.right.start, strand=strand)) region_feature = SeqFeature( FeatureLocation(r.left.start, r.right.start, strand=strand)) primer_color = colors.red region_color = colors.palevioletred primer_feature_set.add_feature( region_feature, color=region_color, name=region, label=True, label_position="middle", label_angle=0 if strand == 1 else -180, ) primer_feature_set.add_feature(fwd_feature, color=primer_color, name=region) primer_feature_set.add_feature(rev_feature, color=primer_color, name=region) primer_track = GenomeDiagram.Track(name="Annotated Features", height=1) primer_track.add_set(primer_feature_set) gd_diagram.add_track(primer_track, 2) gd_diagram.add_track(gc_track, 1) rows = max(2, int(round(len(self.primary_ref) / 10000.0))) gd_diagram.draw( format="linear", pagesize=(300 * rows, 200 * rows), fragments=rows, start=0, end=len(self.primary_ref), ) pdf_filepath = self.outpath / f"{self.prefix}.plot.pdf" svg_filepath = self.outpath / f"{self.prefix}.plot.svg" logger.info(f"Writing {pdf_filepath}") logger.info(f"Writing {svg_filepath}") gd_diagram.write(str(pdf_filepath), "PDF", dpi=300) gd_diagram.write(str(svg_filepath), "SVG", dpi=300)
def write_schemadelica_plot(self, path='./'): logger.info('Writing plot') #print(dir(GenomeDiagram)) gd_diagram = GenomeDiagram.Diagram("Primer Scheme", track_size=0.15) primer_feature_set = GenomeDiagram.FeatureSet() #make the gc track window = 50 gc_set = GenomeDiagram.GraphSet('GC skew') graphdata1 = self.apply_to_window(self.primary_reference.seq, window, self.calc_gc_skew) gc_set.new_graph(graphdata1, 'GC Skew', style='line', color=colors.violet, altcolor=colors.purple) gc_track = GenomeDiagram.Track('GC Skew', height=1.5, greytrack=0, scale_largetick_interval=1e3) gc_track.add_set(gc_set) #make the primer track for r in self.regions: region = str(r.region_num) strand = 1 if r.region_num % 2 else -1 fwd_feature = SeqFeature( FeatureLocation(r.top_pair.left.start, r.top_pair.left.end, strand=strand)) rev_feature = SeqFeature( FeatureLocation(r.top_pair.right.end, r.top_pair.right.start, strand=strand)) region_feature = SeqFeature( FeatureLocation(r.top_pair.left.start, r.top_pair.right.start, strand=strand)) primer_color = colors.red #if strand == 1 else colors.blue region_color = colors.palevioletred #if strand == 1 else colors.lightblue primer_feature_set.add_feature( region_feature, color=region_color, name=region, label=True, label_position="middle", label_angle=0 if strand == 1 else -180) primer_feature_set.add_feature(fwd_feature, color=primer_color, name=region) primer_feature_set.add_feature(rev_feature, color=primer_color, name=region) primer_track = GenomeDiagram.Track(name="Annotated Features", height=1) primer_track.add_set(primer_feature_set) gd_diagram.add_track(primer_track, 2) gd_diagram.add_track(gc_track, 1) rows = max(2, int(round(len(self.primary_reference) / 10000.0))) gd_diagram.draw(format='linear', pagesize=(300 * rows, 200 * rows), fragments=rows, start=0, end=len(self.primary_reference)) pdf_filepath = os.path.join(path, '{}.pdf'.format(self.prefix)) svg_filepath = os.path.join(path, '{}.svg'.format(self.prefix)) gd_diagram.write(pdf_filepath, 'PDF', dpi=300) gd_diagram.write(svg_filepath, 'SVG', dpi=300)
label_angle=0) if (len(track_list) == 0 or len(track_list) == 4): track_for_this_feature = GenomeDiagram.Track( name=feature.qualifiers.get('gene'), scale=1, scale_fontsize=15, scale_ticks=1, scale_largeticks=0.5, scale_largetick_interval=500) else: track_for_this_feature = GenomeDiagram.Track( name=feature.qualifiers.get('gene')) track_for_this_feature.add_set(gd_feature_set) track_list.append(track_for_this_feature) gdgs = GenomeDiagram.GraphSet('GC Content') seq_string = str(record.seq) def chunkstring(string, length): return (string[0 + i:length + i] for i in range(0, len(string), length)) def gdps(str_list): ret_list = [] i = 50 for strng in str_list: ret_list.append((i, SeqUtils.GC(strng))) i = i + 100 return ret_list
SNV_track = GenomeDiagram.Track('SNV', greytrack=False, scale=True, scale_format='SInt', scale_fontsize=10, scale_fontangle=90, scale_largetick_interval=5000, scale_smalltick_interval=1000, scale_largeticks=0.5, scale_smallticks=0.2) SNV_track.add_set(feature_set_SNV) #%% entropy_graph_set = GenomeDiagram.GraphSet('entropy') entropy_graph = entropy_graph_set.new_graph(alignment_entropy, name='entropy', style='line') entropy_track = GenomeDiagram.Track('entropy') entropy_track.add_set(entropy_graph_set) HUMAN_YFV_diagram = GenomeDiagram.Diagram("YFV Human Infections", pagesize='A4', orientation='portrait', x=0.2, y=0.3, tracklines=False) HUMAN_YFV_diagram.add_track(genes_track, 1) HUMAN_YFV_diagram.add_track(entropy_track, 2)