Exemplo n.º 1
0
Arquivo: job.py Projeto: ajm/glutton
    def __init__(self, callback, database, queries, blast_version='blastx') :
        super(BlastJob, self).__init__(callback)

        self.database = database
        self.queries = queries

        assert blast_version in ('blastx', 'tblastx')

        self.blastx = Tblastx() if blast_version == 'tblastx' else Blastx()
Exemplo n.º 2
0
Arquivo: job.py Projeto: ajm/glutton
class BlastJob(Job) :
    def __init__(self, callback, database, queries, blast_version='blastx') :
        super(BlastJob, self).__init__(callback)

        self.database = database
        self.queries = queries

        assert blast_version in ('blastx', 'tblastx')

        self.blastx = Tblastx() if blast_version == 'tblastx' else Blastx()

    @property
    def input(self) :
        return self.queries

    @property
    def results(self) :
        return self.blastx.results

    def _get_filenames(self) :
        return [self.query_fname, self.out_fname]

    def _run(self) :
        global DEBUG

        self.query_fname = tmpfasta(self.queries)
        self.out_fname = tmpfile()

        result = self.blastx.run(self.query_fname, self.database, self.out_fname)

        q = dict([ (q.id, len(q)) for q in self.input ])

        if DEBUG :
            for br in self.results :
                threadsafe_io('blastx_stats.txt', "%s %s %.3f %d %d %d %d %d %.3e %d %.3f" % \
                                                                          (br.qseqid, 
                                                                           br.sseqid, 
                                                                           br.pident, 
                                                                           br.length, 
                                                                           br.qstart,
                                                                           br.qend,
                                                                           br.sstart,
                                                                           br.send,
                                                                           br.evalue,
                                                                           q[br.qseqid],
                                                                           ((br.pident / 100.0) * (max(br.qstart, br.qend) - min(br.qstart, br.qend))) / float(q[br.qseqid])))

        return result