diff commons/pyRepetUnit/profilesDB/tests/TestProfiles.py @ 18:94ab73e8a190

Uploaded
author m-zytnicki
date Mon, 29 Apr 2013 03:20:15 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commons/pyRepetUnit/profilesDB/tests/TestProfiles.py	Mon Apr 29 03:20:15 2013 -0400
@@ -0,0 +1,151 @@
+import os
+import unittest
+from commons.pyRepetUnit.profilesDB.Profiles import Profiles
+from commons.core.utils.FileUtils import FileUtils
+
+
+class TestProfiles(unittest.TestCase):
+
+    def createInputDBFile(self):
+        f = open(self._inputDBFile, "w")
+        f.write("HMMER2.0  [2.3.2]\n")
+        f.write("NAME  fn3\n")
+        f.write("ACC   PF00041\n")
+        f.write("DESC  Fibronectin type III domain\n")
+        f.write("LENG  84\n")
+        f.write("ALPH  Amino\n")
+        f.write("RF    no\n")
+        f.write("CS    yes\n")
+        f.write("MAP   yes\n")
+        f.write("COM   hmmbuild -A myhmms fn3.sto\n")
+        f.write("COM   hmmcalibrate myhmms\n")
+        f.write("NSEQ  108\n")
+        f.write("DATE  Thu Jan  8 17:50:26 2009\n")
+        f.write("CKSUM 6130\n")
+        f.write("GA    7.8 2.0;\n")
+        f.write("TC    7.9 2.1;\n")
+        f.write("NC    7.0 1.1;\n")
+        f.write("XT      -8455     -4  -1000  -1000  -8455     -4  -8455     -4 \n")
+        f.write("NULT      -4  -8455\n")
+        f.write("NULE     595  -1558     85    338   -294    453  -1158    197    249    902  -1085   -142    -21   -313     45    531    201    384  -1998   -644 \n")
+        f.write("EVD   -45.973442   0.237545\n")
+        f.write("HMM        A      C      D      E      F      G      H      I      K      L      M      N      P      Q      R      S      T      V      W      Y    \n")
+        f.write("         m->m   m->i   m->d   i->m   i->i   d->m   d->d   b->m   m->e\n")
+        f.write("COM   hmmcalibrate myhmms\n")
+        f.write("          -13      *  -6756\n")
+        f.write("     1  -1698  -4236  -5399   -847  -4220  -2885  -1259   -930  -2438    406  -3428  -4768   3631  -1835  -4773  -1187  -1331   -120  -4666  -1510     1\n")
+        f.write("     -   -150   -501    232     46   -382    399    104   -628    211   -461   -722    274    395     44     95    358    118   -368   -296   -251 \n")
+        f.write("     C   -144  -3400 -12951    -19  -6286   -701  -1378    -13      * \n")
+        f.write("//\n")
+        f.write("HMMER2.0  [2.3.2]\n")
+        f.write("NAME  truc\n")
+        f.write("ACC   PF00042.012\n")
+        f.write("LENG  123\n")
+        f.write("ALPH  Amino\n")
+        f.write("RF    no\n")
+        f.write("CS    yes\n")
+        f.write("MAP   yes\n")
+        f.write("COM   hmmbuild -A myhmms fn3.sto\n")
+        f.write("COM   hmmcalibrate myhmms\n")
+        f.write("NSEQ  108\n")
+        f.write("DATE  Thu Jan  8 17:50:26 2009\n")
+        f.write("CKSUM 6130\n")
+        f.write("GA    7.8 -1.0;\n")
+        f.write("TC    7.9 0.1;\n")
+        f.write("NC    7.8 0.1;\n")
+        f.write("XT      -8455     -4  -1000  -1000  -8455     -4  -8455     -4 \n")
+        f.write("NULT      -4  -8455\n")
+        f.write("NULE     595  -1558     85    338   -294    453  -1158    197    249    902  -1085   -142    -21   -313     45    531    201    384  -1998   -644 \n")
+        f.write("EVD   -45.973442   0.237545\n")
+        f.write("HMM        A      C      D      E      F      G      H      I      K      L      M      N      P      Q      R      S      T      V      W      Y    \n")
+        f.write("         m->m   m->i   m->d   i->m   i->i   d->m   d->d   b->m   m->e\n")
+        f.write("COM   hmmcalibrate myhmms\n")
+        f.write("          -13      *  -6756\n")
+        f.write("     1  -1698  -4236  -5399   -847  -4220  -2885  -1259   -930  -2438    406  -3428  -4768   3631  -1835  -4773  -1187  -1331   -120  -4666  -1510     1\n")
+        f.write("     -   -150   -501    232     46   -382    399    104   -628    211   -461   -722    274    395     44     95    358    118   -368   -296   -251 \n")
+        f.write("     C   -144  -3400 -12951    -19  -6286   -701  -1378    -13      * \n")
+        f.write("//\n")
+        f.close()
+        
+        
+    def setUp(self):
+        self.profiles = Profiles()
+        self._inputDBFile = "dummy.hmm"
+        
+        
+    def testRead(self):
+        # atomic profiles file
+        self.createInputDBFile()
+        file = open( self._inputDBFile )
+        profile = self.profiles
+        profile.read(file)
+        self.assertEqual("fn3",profile.name)
+        self.assertEqual("Fibronectin type III domain", profile.desc)
+        self.assertEqual(84, profile.length)
+        self.assertEqual("PF00041", profile.accNumber)
+        self.assertEqual(2.0, profile.GA_cut_off)
+        profile.read(file)
+        self.assertEqual("truc",profile.name)
+        self.assertEqual("", profile.desc)
+        self.assertEqual(123, profile.length)
+        self.assertEqual("PF00042.012", profile.accNumber)
+        self.assertEqual(-1.0, profile.GA_cut_off)        
+        os.system("rm " + self._inputDBFile)        
+        # empty file
+        f = open(self._inputDBFile, "w")
+        f.close()
+        file = open( self._inputDBFile )
+        profile = self.profiles
+        profile.read(file)
+        self.assertEqual(None, profile.name)
+        self.assertEqual(None, profile.desc)
+        self.assertEqual(None, profile.length)
+        self.assertEqual(None, profile.accNumber)
+        self.assertEqual(None, profile.GA_cut_off)
+        os.system("rm " + self._inputDBFile)
+        
+        
+    def testReadAndRetrieve(self):
+        # atomic profiles file
+        self.createInputDBFile()
+        file = open( self._inputDBFile )
+        profile = self.profiles
+        myProfile = profile.readAndRetrieve(file)
+        self.assertEqual("fn3",profile.name)
+        self.assertEqual("Fibronectin type III domain", profile.desc)
+        self.assertEqual(84, profile.length)
+        self.assertEqual("PF00041", profile.accNumber)
+        self.assertEqual(2.0, profile.GA_cut_off)
+        myProfile2 = profile.readAndRetrieve(file)
+        self.assertEqual("truc",profile.name)
+        self.assertEqual("", profile.desc)
+        self.assertEqual(123, profile.length)
+        self.assertEqual("PF00042.012", profile.accNumber)
+        self.assertEqual(-1.0, profile.GA_cut_off)
+        #I check if retrieve work like I want
+        f = open("retrieveResult", "w")
+        for item in myProfile:
+            f.write(item)
+        for item in myProfile2:
+            f.write(item)
+        f.close()
+        self.assertTrue(FileUtils.are2FilesIdentical("retrieveResult", self._inputDBFile))
+        os.system("rm " + self._inputDBFile) 
+        os.system("rm retrieveResult")       
+        # empty file
+        f = open(self._inputDBFile, "w")
+        f.close()
+        file = open( self._inputDBFile )
+        profile = self.profiles
+        myProfile3 = profile.readAndRetrieve(file)
+        self.assertEqual(None, profile.name)
+        self.assertEqual(None, profile.desc)
+        self.assertEqual(None, profile.length)
+        self.assertEqual(None, profile.accNumber)
+        self.assertEqual(None, profile.GA_cut_off)
+        self.assertEqual(None, myProfile3)
+        os.system("rm " + self._inputDBFile)    
+    
+        
+if __name__ == "__main__":                 
+    unittest.main()            
\ No newline at end of file