def _blast_feature(self, f, c1, c2): trans = Translator(self._abort_event) cds = trans.translate(f.extract(c1), 11) sixframes = trans.translate_six_frames_single(c2, 11) if not sixframes: return [(None, None, None)] results = [] for frame in sixframes: res = BlastCLI.s2s_blast(cds, frame, self.evalue, command='blastp', task='blastp') if res: results.extend(res) hsps = BlastCLI.all_hsps(results) if not hsps: return [(None, None, None)] f1 = [] f2 = [] col = [] fname = self._feature_name(f, default='CDS') cds_len = len(cds) min_len = len(cds) * self.min_length for hsp in hsps: if hsp.align_length < min_len: continue if hsp.identities / float(hsp.align_length) < self.min_identity: continue color_t = (float(hsp.identities) / hsp.align_length) print '%s %s: %5.1f%% (%5.1f%%)' % (c1.description, fname, color_t * 100, float(hsp.identities) / cds_len * 100) col.append(colors.linearlyInterpolatedColor(colors.Color(0, 0, 1, 0.2), colors.Color(0, 1, 0, 0.2), 0.2, 1, color_t)) qstart = (hsp.query_start - 1) * 3 qend = qstart + hsp.align_length * 3 sstart = (hsp.sbjct_start - 1) * 3 send = sstart + hsp.align_length * 3 f1.append( SeqFeature(FeatureLocation(f.location.start + qstart, f.location.start + qend, strand=hsp.strand[0]))) f2.append(SeqFeature(FeatureLocation(sstart, send, strand=hsp.strand[1]))) return zip(f1, f2, col)
def _blast_feature(self, f, c1, c2, features1, features2, evalue, max_rlen): results = BlastCLI.s2s_blast(f.extract(c1), c2, evalue, command='blastn', task='blastn') hsps = BlastCLI.all_hsps(results, max_rlen) if not hsps: return [(None, None, None)] f1 = [] f2 = [] col = [] for hsp in hsps: col.append(colors.linearlyInterpolatedColor(colors.Color(1,1,1,0.2), colors.Color(0,0,0,0.2), 0, 1, float(hsp.identities)/hsp.align_length)) f1.append(SeqFeature(FeatureLocation(f.location.start+hsp.query_start, f.location.start+hsp.query_start+hsp.align_length, strand=0))) f2.append(SeqFeature(FeatureLocation(hsp.sbjct_start, hsp.sbjct_start+hsp.align_length, strand=0))) return zip(f1, f2, col)
def _blast_feature(self, f, c1, c2, features1, features2, evalue, max_rlen): trans = Translator(self._abort_event) cds = trans.translate(f.extract(c1), 11) sixframes = trans.translate_six_frames_single(c2, 11) if not sixframes: return [(None, None, None)] results = [] for frame in sixframes: res = BlastCLI.s2s_blast(cds, frame, evalue, command='blastp', task='blastp') if res: results.extend(res) hsps = BlastCLI.all_hsps(results, max_rlen) if not hsps: return [(None, None, None)] f1 = [] f2 = [] col = [] c1_name = pretty_rec_name(c1) if 'locus_tag' in f.qualifiers: fname = f.qualifiers['locus_tag'][0] else: fname = 'CDS' cds_len = len(cds) for hsp in hsps: color_t = (float(hsp.identities) / hsp.align_length) print '%s %s: %5.1f%% (%5.1f%%)' % (c1_name, fname, color_t * 100, float(hsp.identities) / cds_len * 100) col.append( colors.linearlyInterpolatedColor(colors.Color(0, 0, 1, 0.2), colors.Color(0, 1, 0, 0.2), 0.2, 1, color_t)) qstart = (hsp.query_start - 1) * 3 qend = qstart + hsp.align_length * 3 sstart = (hsp.sbjct_start - 1) * 3 send = sstart + hsp.align_length * 3 f1.append( SeqFeature( FeatureLocation(f.location.start + qstart, f.location.start + qend, strand=hsp.strand[0]))) f2.append( SeqFeature(FeatureLocation(sstart, send, strand=hsp.strand[1]))) return zip(f1, f2, col)