def _setup_checks(self, filterpacket): seqs = [s for seqs in filterpacket[SEQS_PASSED] for s in seqs] self._matcher = Blaster(seqs, self._blast_db, dbtype=self._dbtype, program=self._blast_program, filters=self._filters)
def xtest_blaster(self): seq = 'GAGAAATTCCTTTGGAAGTTATTCCGTAGCATAAGAGCTGAAACTTCAGAGCAAGTTT' seq += 'TCATTGGGCAAAATGGGGGAACAACCTATCTTCAGCACTCGAGCTCATGTCTTCCAAATTGA' seq += 'CCCAAACACAAAGAAGAACTGGGTACCCACCAGCAAGCATGCAGTTACTGTGTCTTATTTCT' seq += 'ATGACAGCACAAGAAATGTGTATAGGATAATCAGTTTAGATGGCTCAAAGGCAATAATAAAT' seq += 'AGTACCATCACCCCAAACATGACA' seqrec = SeqWrapper(SEQRECORD, SeqRecord(Seq(seq), id='seq'), None) blaster = Blaster([seqrec], 'nr', 'blastn', remote=True) print blaster.get_matched_segments('seq') assert blaster.get_matched_segments('seq') == [(1, 1740)]
def __call__(self, seqrecords): 'It does the work' if not seqrecords: return seqrecords matcher = Blaster(seqrecords, self.blastdb, self._program, self._dbtype, filters=self._filters, params=self._params, remote=self._remote) blasts = matcher.blasts blastdb = os.path.basename(self.blastdb) for seqrecord in seqrecords: align_result = blasts.get(get_name(seqrecord), None) if not align_result: continue match_counter = 0 for match in align_result['matches']: subject = match['subject']['name'] match_counter += 1 for match_part in match['match_parts']: if match_part['subject_end'] < match_part['subject_start']: strand = -1 subject_start = match_part['subject_end'] subject_end = match_part['subject_start'] else: strand = 1 subject_start = match_part['subject_start'] subject_end = match_part['subject_end'] query_start = match_part['query_start'] query_end = match_part['query_end'] qualifiers = {} qualifiers['Target'] = { 'start': subject_start, 'end': subject_end, 'name': subject } qualifiers['score'] = match_part['scores']['expect'] qualifiers['identity'] = match_part['scores']['identity'] qualifiers['blastdb'] = blastdb location = FeatureLocation(query_start, query_end, strand) feature = SeqFeature( location=location, type='match_part', qualifiers=qualifiers, id='match{0:03d}'.format(match_counter)) seqrecord.object.features.append(feature) return seqrecords