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)]
class FilterBlastMatch(_BaseFilter): 'It filters a seq if there is a match against a blastdb' def __init__(self, database, program, filters, dbtype=None, failed_drags_pair=True, reverse=False): '''The initiator database: path to a file with seqs or a blast database filter_params: expect_threshold similarty treshlod min_length_percentaje ''' self._blast_db = database self._blast_program = program self._filters = filters self._dbtype = dbtype super(FilterBlastMatch, self).__init__(reverse=reverse, failed_drags_pair=failed_drags_pair) 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 _do_check(self, seq): segments = self._matcher.get_matched_segments(get_name(seq)) return True if segments is None else False