Exemplo n.º 1
0
    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])
Exemplo n.º 2
0
    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([], {}, [])
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
    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)