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()
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