def test_read_mast_output(self): """tests the read_mast_output function""" with open('testdata/mast.out') as inputfile: pevalues, annotations = meme.read_mast_output(inputfile.read(), ['VNG6198H', 'VNG0117H']) self.assertEquals('VNG6198H', pevalues[0][0]) self.assertEquals('VNG0117H', pevalues[1][0]) self.assertAlmostEquals(1.98e-14, pevalues[0][1]) self.assertAlmostEquals(3.39e-12, pevalues[1][1]) self.assertAlmostEquals(8.0e-12, pevalues[0][2]) self.assertAlmostEquals(1.4e-09, pevalues[1][2]) annot1 = annotations['VNG6198H'] self.assertAlmostEquals(6.6e-01, annot1[0][0]) self.assertEquals(16, annot1[0][1]) self.assertEquals(1, annot1[0][2]) annot2 = annotations['VNG0117H'] self.assertAlmostEquals(2.0e-01, annot2[0][0]) self.assertAlmostEquals(24, annot2[0][1]) self.assertAlmostEquals(-1, annot2[0][2]) self.assertAlmostEquals(4.9e-01, annot2[5][0]) self.assertAlmostEquals(223, annot2[5][1]) self.assertAlmostEquals(-2, annot2[5][2])
def __call__(self, seqs, all_seqs): """call the runner like a function""" with tempfile.NamedTemporaryFile(prefix='weeder.fasta', delete=False) as outfile: filename = outfile.name logging.info("Run Weeder on FASTA file: '%s'", filename) st.write_sequences_to_fasta_file(outfile, seqs.items()) pssms = weeder.run_weeder(filename) meme_outfile = '%s.meme' % filename dbfile = self.meme_suite.make_sequence_file( [(feature_id, locseq[1]) for feature_id, locseq in all_seqs.items()]) logging.info("# PSSMS created: %d", len(pssms)) logging.info("run MAST on '%s'", meme_outfile) motif_infos = [] for i in xrange(len(pssms)): pssm = pssms[i] motif_infos.append(meme.MemeMotifInfo(pssm.values(), i + 1, pssm.sequence_length(), len(pssm.sites()), None, pssm.evalue(), pssm.sites())) try: mast_out = self.meme_suite.mast( meme_outfile, dbfile, self.meme_suite.global_background_file()) pe_values, annotations = meme.read_mast_output(mast_out, seqs.keys()) return meme.MemeRunResult(pe_values, annotations, motif_infos) except: return meme.MemeRunResult([], {}, [])
def test_read_mast_output2(self): """tests the read_mast_output function, this one has some more silly blank line placements""" with open('testdata/mast2.out') as inputfile: pevalues, annotations = meme.read_mast_output(inputfile.read(), ['NP_279634.1', 'NP_279286.1']) self.assertTrue('NP_279634.1' in annotations) self.assertTrue('NP_279286.1' in annotations)
def test_read_mast_output4(self): """tests the read_mast_output function, this has on sequence/annotation block""" with open('testdata/mast4.out') as inputfile: pevalues, annotations = meme.read_mast_output(inputfile.read(), ['NP_280363.1', 'NP_280692.1']) pev = [pevalue for pevalue in pevalues if pevalue[0] == 'NP_280363.1'] self.assertAlmostEquals(1.0, pev[0][1]) self.assertAlmostEquals(4.0e02, pev[0][2]) self.assertTrue('NP_280363.1' not in annotations)
def test_read_mast_output3(self): """tests the read_mast_output function, this one has an incomplete block""" with open('testdata/mast3.out') as inputfile: pevalues, annotations = meme.read_mast_output(inputfile.read(), ['NP_279608.1']) pev = [pevalue for pevalue in pevalues if pevalue[0] == 'NP_279608.1'] self.assertAlmostEquals(3.9e-08, pev[0][1]) self.assertAlmostEquals(9.61e-11, pev[0][2]) self.assertTrue('NP_279608.1' in annotations)
def __call__(self, params): """call the runner like a function""" with tempfile.NamedTemporaryFile(prefix='weeder.fasta', delete=False) as outfile: filename = outfile.name logging.info("Run Weeder on FASTA file: '%s'", filename) st.write_sequences_to_fasta_file(outfile, params.seqs.items()) pssms = weeder.run_weeder(filename) meme_outfile = '%s.meme' % filename dbfile = self.meme_suite.make_sequence_file([ (feature_id, locseq[1]) for feature_id, locseq in params.used_seqs.items() ]) logging.info("# PSSMS created: %d %s", len(pssms), str([i.consensus_motif() for i in pssms])) logging.info("run MAST on '%s'", meme_outfile) motif_infos = [] for i in xrange(len(pssms)): pssm = pssms[i] motif_infos.append( meme.MemeMotifInfo(pssm.values, i + 1, pssm.sequence_length(), len(pssm.sites), None, pssm.e_value, pssm.sites)) try: mast_out = self.meme_suite.mast( meme_outfile, dbfile, self.meme_suite.global_background_file()) pe_values, annotations = meme.read_mast_output( mast_out, params.seqs.keys()) return meme.MemeRunResult(pe_values, annotations, motif_infos) except: return meme.MemeRunResult([], {}, []) finally: if self.__remove_tempfiles: for fileExtension in [ '', '.wee', '.mix', '.html', '.meme', '.1.f1', '.1.f2', '.2.f1', '.2.f2' ]: tmpName = filename + fileExtension if os.path.exists(tmpName): try: os.remove(tmpName) except: logging.warn("could not remove tmp file:'%s'", tmpName) try: os.remove(dbfile) except: logging.warn("could not remove tmp file:'%s'", dbfile)
def __call__(self, params): """call the runner like a function""" with tempfile.NamedTemporaryFile(prefix='weeder.fasta', delete=False) as outfile: filename = outfile.name logging.info("Run Weeder on FASTA file: '%s'", filename) st.write_sequences_to_fasta_file(outfile, params.seqs.items()) if seqtype=='upstream': freqfile = 'HS' elif seqtype=='p3utr': freqfile = 'HS3P' pssms = weeder.run_weeder(filename, freqfile) meme_outfile = '%s.meme' % filename dbfile = self.meme_suite.make_sequence_file( [(feature_id, locseq[1]) for feature_id, locseq in params.used_seqs.items()]) logging.info("# PSSMS created: %d %s", len(pssms),str([i.consensus_motif() for i in pssms])) logging.info("run MAST on '%s'", meme_outfile) motif_infos = [] for i in xrange(len(pssms)): pssm = pssms[i] motif_infos.append(meme.MemeMotifInfo(pssm.values, i + 1, pssm.sequence_length(), len(pssm.sites), None, pssm.e_value, pssm.sites)) try: mast_out = self.meme_suite.mast( meme_outfile, dbfile, self.meme_suite.global_background_file()) pe_values, annotations = meme.read_mast_output(mast_out, params.seqs.keys()) return meme.MemeRunResult(pe_values, annotations, motif_infos) except: return meme.MemeRunResult([], {}, []) finally: if self.__remove_tempfiles: for fileExtension in ['','.wee','.mix','.html','.meme','.1.f1','.1.f2','.2.f1','.2.f2']: tmpName = filename+fileExtension if os.path.exists(tmpName): try: os.remove(tmpName) except: logging.warn("could not remove tmp file:'%s'", tmpName) try: os.remove(dbfile) except: logging.warn("could not remove tmp file:'%s'", dbfile)