def scan(infile, motifs, cutoff, nreport=1, it=False): # Get configuration defaults config = MotifConfig() # Cutoff for motif scanning, only used if a cutoff is not supplied default_cutoff = config.get_default_params()['scan_cutoff'] # Number of CPUs to use ncpus = config.get_default_params()['ncpus'] cutoffs = parse_cutoff(motifs, cutoff, default_cutoff) total_result = {} jobs = [] fa = Fasta(infile) for motif in motifs: for i in range(0, len(fa), CHUNK): total_result[motif] = {} jobs.append(pool.apply_async( scan_fa_with_motif, (fa[i:i + CHUNK], motif, cutoffs[motif.id], nreport, ))) motifkey = dict([(m.id, m) for m in motifs]) for job in jobs: motif, result = job.get() total_result[motifkey[motif.id]].update(result) return total_result
def scan(infile, motifs, cutoff, nreport=1, it=False): # Get configuration defaults config = MotifConfig() # Cutoff for motif scanning, only used if a cutoff is not supplied default_cutoff = config.get_default_params()['scan_cutoff'] # Number of CPUs to use ncpus = config.get_default_params()['ncpus'] cutoffs = parse_cutoff(motifs, cutoff, default_cutoff) job_server = pp.Server(secret="beetrootsoup") if job_server.get_ncpus() > ncpus: job_server.set_ncpus(ncpus) total_result = {} jobs = [] fa = Fasta(infile) for motif in motifs: for i in range(0, len(fa), CHUNK): total_result[motif] = {} jobs.append(job_server.submit( scan_fa_with_motif, (fa[i:i + CHUNK], motif, cutoffs[motif.id], nreport, ), (),())) motifkey = dict([(m.id, m) for m in motifs]) for job in jobs: motif, result = job() total_result[motifkey[motif.id]].update(result) return total_result
def scan_it(infile, motifs, cutoff, nreport=1, rc=True): # Get configuration defaults config = MotifConfig() # Cutoff for motif scanning, only used if a cutoff is not supplied default_cutoff = config.get_default_params()['scan_cutoff'] # Number of CPUs to use ncpus = config.get_default_params()['ncpus'] cutoffs = parse_cutoff(motifs, cutoff, default_cutoff) jobs = [] fa = Fasta(infile) motifkey = dict([(m.id, m) for m in motifs]) for motif in motifs: for i in range(0, len(fa), CHUNK): jobs.append(pool.apply_async( scan_fa_with_motif, (fa[i:i + CHUNK], motif, cutoffs[motif.id], nreport, rc, ))) while len(jobs) > 10: job = jobs.pop(0) motif, result = job.get() yield motifkey[motif.id], result for job in jobs: motif, result = job.get() yield motifkey[motif.id], result
def parse_threshold_values(motif_file, cutoff): motifs = read_motifs(motif_file) d = parse_cutoff(motifs, cutoff) threshold = {} for m in motifs: c = m.pwm_min_score() + (m.pwm_max_score() - m.pwm_min_score()) * d[m.id] threshold[m.id] = c return threshold
def load_motifs(motif_file, cutoff=0.95): motifs = read_motifs(open(motif_file)) d = parse_cutoff(motifs, cutoff) cutoffs = [] for m in motifs: c = m.pwm_min_score() + (m.pwm_max_score() - m.pwm_min_score()) * d[m.id] cutoffs.append(c) return zip(motifs, cutoffs)
def scan_it(infile, motifs, cutoff, nreport=1, rc=True): # Get configuration defaults config = MotifConfig() # Cutoff for motif scanning, only used if a cutoff is not supplied default_cutoff = config.get_default_params()['scan_cutoff'] # Number of CPUs to use ncpus = config.get_default_params()['ncpus'] cutoffs = parse_cutoff(motifs, cutoff, default_cutoff) job_server = pp.Server(secret="beetrootsoup") pp.SHOW_EXPECTED_EXCEPTIONS # True if job_server.get_ncpus() > ncpus: job_server.set_ncpus(ncpus) jobs = [] fa = Fasta(infile) motifkey = dict([(m.id, m) for m in motifs]) for motif in motifs: for i in range(0, len(fa), CHUNK): jobs.append(job_server.submit( scan_fa_with_motif, (fa[i:i + CHUNK], motif, cutoffs[motif.id], nreport, rc, ), (),())) while len(jobs) > 10: job = jobs.pop(0) motif, result = job() yield motifkey[motif.id], result for job in jobs: motif, result = job() yield motifkey[motif.id], result