Exemple #1
0
 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)
Exemple #2
0
 def test_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)
     assert blaster.get_matched_segments('seq') == [(1, 1740)]
 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)]
Exemple #4
0
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
Exemple #5
0
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
Exemple #6
0
    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
Exemple #7
0
 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)