| 18 | 1 import os | 
|  | 2 import unittest | 
|  | 3 from commons.pyRepetUnit.profilesDB.Profiles import Profiles | 
|  | 4 from commons.pyRepetUnit.profilesDB.ProfilesDatabank import ProfilesDatabank | 
|  | 5 import commons.pyRepetUnit.profilesDB.ProfilesDB2Map | 
|  | 6 from commons.core.utils.FileUtils import FileUtils | 
|  | 7 | 
|  | 8 | 
|  | 9 class TestProfilesDB2Map(unittest.TestCase): | 
|  | 10 | 
|  | 11     def setUp(self): | 
|  | 12         self.profilesDB2Map = commons.pyRepetUnit.profilesDB.ProfilesDB2Map.ProfilesDB2Map() | 
|  | 13 | 
|  | 14 | 
|  | 15     def testWriteProfilesDB(self): | 
|  | 16         # atomic hmmerpfam file | 
|  | 17         profilesDB = ProfilesDatabank() | 
|  | 18         profiles1 = Profiles() | 
|  | 19         profiles1.name = "fn3" | 
|  | 20         profiles1.desc = "Fibronectin type III domain" | 
|  | 21         profiles1.length = 84 | 
|  | 22         profilesDB.append( profiles1 ) | 
|  | 23         profiles2 = Profiles() | 
|  | 24         profiles2.name = "truc" | 
|  | 25         profiles2.desc = "" | 
|  | 26         profiles2.length = 123 | 
|  | 27         profilesDB.append( profiles2 ) | 
|  | 28         file = open( "expectedFile", "w" ) | 
|  | 29         file.write( "fn3\tFibronectin type III domain\t1\t84\n" ) | 
|  | 30         file.write( "truc\t\t1\t123\n" ) | 
|  | 31         file.close() | 
|  | 32         self.profilesDB2Map.setOutputFile("testOutput.map") | 
|  | 33         self.profilesDB2Map._writeMapFile(profilesDB) | 
|  | 34         self.assertTrue(FileUtils.are2FilesIdentical("expectedFile", "testOutput.map")) | 
|  | 35         os.remove("expectedFile") | 
|  | 36         os.remove("testOutput.map") | 
|  | 37         #empty profileDB object | 
|  | 38         profilesDB = ProfilesDatabank() | 
|  | 39         self.profilesDB2Map._writeMapFile(profilesDB) | 
|  | 40         self.assertFalse(FileUtils.isRessourceExists("testOutput.map")) | 
|  | 41 | 
|  | 42     def testReadProfilesDB(self): | 
|  | 43         # atomic hmmerpfam file | 
|  | 44         f = open("dummy.hmm", "w") | 
|  | 45         f.write("HMMER2.0  [2.3.2]\n") | 
|  | 46         f.write("NAME  fn3\n") | 
|  | 47         f.write("ACC   PF00041\n") | 
|  | 48         f.write("DESC  Fibronectin type III domain\n") | 
|  | 49         f.write("LENG  84\n") | 
|  | 50         f.write("ALPH  Amino\n") | 
|  | 51         f.write("RF    no\n") | 
|  | 52         f.write("CS    yes\n") | 
|  | 53         f.write("MAP   yes\n") | 
|  | 54         f.write("COM   hmmbuild -A myhmms fn3.sto\n") | 
|  | 55         f.write("COM   hmmcalibrate myhmms\n") | 
|  | 56         f.write("NSEQ  108\n") | 
|  | 57         f.write("DATE  Thu Jan  8 17:50:26 2009\n") | 
|  | 58         f.write("CKSUM 6130\n") | 
|  | 59         f.write("GA    7.8 -1.0\n") | 
|  | 60         f.write("TC    7.9 0.1\n") | 
|  | 61         f.write("XT      -8455     -4  -1000  -1000  -8455     -4  -8455     -4 \n") | 
|  | 62         f.write("NULT      -4  -8455\n") | 
|  | 63         f.write("NULE     595  -1558     85    338   -294    453  -1158    197    249    902  -1085   -142    -21   -313     45    531    201    384  -1998   -644 \n") | 
|  | 64         f.write("EVD   -45.973442   0.237545\n") | 
|  | 65         f.write("HMM        A      C      D      E      F      G      H      I      K      L      M      N      P      Q      R      S      T      V      W      Y    \n") | 
|  | 66         f.write("         m->m   m->i   m->d   i->m   i->i   d->m   d->d   b->m   m->e\n") | 
|  | 67         f.write("COM   hmmcalibrate myhmms\n") | 
|  | 68         f.write("          -13      *  -6756\n") | 
|  | 69         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") | 
|  | 70         f.write("     -   -150   -501    232     46   -382    399    104   -628    211   -461   -722    274    395     44     95    358    118   -368   -296   -251 \n") | 
|  | 71         f.write("     C   -144  -3400 -12951    -19  -6286   -701  -1378    -13      * \n") | 
|  | 72         f.write("//\n") | 
|  | 73         f.write("HMMER2.0  [2.3.2]\n") | 
|  | 74         f.write("NAME  truc\n") | 
|  | 75         f.write("ACC   PF00041\n") | 
|  | 76         f.write("LENG  123\n") | 
|  | 77         f.write("ALPH  Amino\n") | 
|  | 78         f.write("RF    no\n") | 
|  | 79         f.write("CS    yes\n") | 
|  | 80         f.write("MAP   yes\n") | 
|  | 81         f.write("COM   hmmbuild -A myhmms fn3.sto\n") | 
|  | 82         f.write("COM   hmmcalibrate myhmms\n") | 
|  | 83         f.write("NSEQ  108\n") | 
|  | 84         f.write("DATE  Thu Jan  8 17:50:26 2009\n") | 
|  | 85         f.write("CKSUM 6130\n") | 
|  | 86         f.write("GA    7.8 -1.0\n") | 
|  | 87         f.write("TC    7.9 0.1\n") | 
|  | 88         f.write("XT      -8455     -4  -1000  -1000  -8455     -4  -8455     -4 \n") | 
|  | 89         f.write("NULT      -4  -8455\n") | 
|  | 90         f.write("NULE     595  -1558     85    338   -294    453  -1158    197    249    902  -1085   -142    -21   -313     45    531    201    384  -1998   -644 \n") | 
|  | 91         f.write("EVD   -45.973442   0.237545\n") | 
|  | 92         f.write("HMM        A      C      D      E      F      G      H      I      K      L      M      N      P      Q      R      S      T      V      W      Y    \n") | 
|  | 93         f.write("         m->m   m->i   m->d   i->m   i->i   d->m   d->d   b->m   m->e\n") | 
|  | 94         f.write("COM   hmmcalibrate myhmms\n") | 
|  | 95         f.write("          -13      *  -6756\n") | 
|  | 96         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") | 
|  | 97         f.write("     -   -150   -501    232     46   -382    399    104   -628    211   -461   -722    274    395     44     95    358    118   -368   -296   -251 \n") | 
|  | 98         f.write("     C   -144  -3400 -12951    -19  -6286   -701  -1378    -13      * \n") | 
|  | 99         f.write("//\n") | 
|  | 100         f.close() | 
|  | 101         self.profilesDB2Map.setInputFile("dummy.hmm") | 
|  | 102         pfamDB = self.profilesDB2Map._readProfilesDB() | 
|  | 103         expectedProfiles1 = Profiles() | 
|  | 104         expectedProfiles1.name = "fn3" | 
|  | 105         expectedProfiles1.desc = "Fibronectin type III domain" | 
|  | 106         expectedProfiles1.length = 84 | 
|  | 107         expectedProfiles2 = Profiles() | 
|  | 108         expectedProfiles2.name = "truc" | 
|  | 109         expectedProfiles2.desc = "" | 
|  | 110         expectedProfiles2.length = 123 | 
|  | 111         self.assertEqual(expectedProfiles1.name, pfamDB.get(0).name) | 
|  | 112         self.assertEqual(expectedProfiles1.desc, pfamDB.get(0).desc) | 
|  | 113         self.assertEqual(expectedProfiles1.length, pfamDB.get(0).length) | 
|  | 114         self.assertEqual(expectedProfiles2.name, pfamDB.get(1).name) | 
|  | 115         self.assertEqual(expectedProfiles2.desc, pfamDB.get(1).desc) | 
|  | 116         self.assertEqual(expectedProfiles2.length, pfamDB.get(1).length) | 
|  | 117         os.remove("dummy.hmm") | 
|  | 118         #empty pfamDB file | 
|  | 119         file = open( "pfamDBEmpty", "w" ) | 
|  | 120         file.close() | 
|  | 121         self.profilesDB2Map.setInputFile("pfamDBEmpty") | 
|  | 122         pfamDB2 = self.profilesDB2Map._readProfilesDB() | 
|  | 123         self.assertEquals(None, pfamDB2) | 
|  | 124         os.system("rm pfamDBEmpty") | 
|  | 125 | 
|  | 126     def testRun(self): | 
|  | 127         f = open("dummy.hmm", "w") | 
|  | 128         f.write("HMMER2.0  [2.3.2]\n") | 
|  | 129         f.write("NAME  fn3\n") | 
|  | 130         f.write("ACC   PF00041\n") | 
|  | 131         f.write("DESC  Fibronectin type III domain\n") | 
|  | 132         f.write("LENG  84\n") | 
|  | 133         f.write("ALPH  Amino\n") | 
|  | 134         f.write("RF    no\n") | 
|  | 135         f.write("CS    yes\n") | 
|  | 136         f.write("MAP   yes\n") | 
|  | 137         f.write("COM   hmmbuild -A myhmms fn3.sto\n") | 
|  | 138         f.write("COM   hmmcalibrate myhmms\n") | 
|  | 139         f.write("NSEQ  108\n") | 
|  | 140         f.write("DATE  Thu Jan  8 17:50:26 2009\n") | 
|  | 141         f.write("CKSUM 6130\n") | 
|  | 142         f.write("GA    7.8 -1.0\n") | 
|  | 143         f.write("TC    7.9 0.1\n") | 
|  | 144         f.write("XT      -8455     -4  -1000  -1000  -8455     -4  -8455     -4 \n") | 
|  | 145         f.write("NULT      -4  -8455\n") | 
|  | 146         f.write("NULE     595  -1558     85    338   -294    453  -1158    197    249    902  -1085   -142    -21   -313     45    531    201    384  -1998   -644 \n") | 
|  | 147         f.write("EVD   -45.973442   0.237545\n") | 
|  | 148         f.write("HMM        A      C      D      E      F      G      H      I      K      L      M      N      P      Q      R      S      T      V      W      Y    \n") | 
|  | 149         f.write("         m->m   m->i   m->d   i->m   i->i   d->m   d->d   b->m   m->e\n") | 
|  | 150         f.write("COM   hmmcalibrate myhmms\n") | 
|  | 151         f.write("          -13      *  -6756\n") | 
|  | 152         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") | 
|  | 153         f.write("     -   -150   -501    232     46   -382    399    104   -628    211   -461   -722    274    395     44     95    358    118   -368   -296   -251 \n") | 
|  | 154         f.write("     C   -144  -3400 -12951    -19  -6286   -701  -1378    -13      * \n") | 
|  | 155         f.write("//\n") | 
|  | 156         f.write("HMMER2.0  [2.3.2]\n") | 
|  | 157         f.write("NAME  truc\n") | 
|  | 158         f.write("ACC   PF00041\n") | 
|  | 159         f.write("LENG  123\n") | 
|  | 160         f.write("ALPH  Amino\n") | 
|  | 161         f.write("RF    no\n") | 
|  | 162         f.write("CS    yes\n") | 
|  | 163         f.write("MAP   yes\n") | 
|  | 164         f.write("COM   hmmbuild -A myhmms fn3.sto\n") | 
|  | 165         f.write("COM   hmmcalibrate myhmms\n") | 
|  | 166         f.write("NSEQ  108\n") | 
|  | 167         f.write("DATE  Thu Jan  8 17:50:26 2009\n") | 
|  | 168         f.write("CKSUM 6130\n") | 
|  | 169         f.write("GA    7.8 -1.0\n") | 
|  | 170         f.write("TC    7.9 0.1\n") | 
|  | 171         f.write("XT      -8455     -4  -1000  -1000  -8455     -4  -8455     -4 \n") | 
|  | 172         f.write("NULT      -4  -8455\n") | 
|  | 173         f.write("NULE     595  -1558     85    338   -294    453  -1158    197    249    902  -1085   -142    -21   -313     45    531    201    384  -1998   -644 \n") | 
|  | 174         f.write("EVD   -45.973442   0.237545\n") | 
|  | 175         f.write("HMM        A      C      D      E      F      G      H      I      K      L      M      N      P      Q      R      S      T      V      W      Y    \n") | 
|  | 176         f.write("         m->m   m->i   m->d   i->m   i->i   d->m   d->d   b->m   m->e\n") | 
|  | 177         f.write("COM   hmmcalibrate myhmms\n") | 
|  | 178         f.write("          -13      *  -6756\n") | 
|  | 179         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") | 
|  | 180         f.write("     -   -150   -501    232     46   -382    399    104   -628    211   -461   -722    274    395     44     95    358    118   -368   -296   -251 \n") | 
|  | 181         f.write("     C   -144  -3400 -12951    -19  -6286   -701  -1378    -13      * \n") | 
|  | 182         f.write("//\n") | 
|  | 183         f.close() | 
|  | 184         self.profilesDB2Map.setInputFile("dummy.hmm") | 
|  | 185         self.profilesDB2Map.setOutputFile("testOutput.map") | 
|  | 186         self.profilesDB2Map.run() | 
|  | 187         file = open( "expectedFile", "w" ) | 
|  | 188         file.write( "fn3\tFibronectin type III domain\t1\t84\n" ) | 
|  | 189         file.write( "truc\t\t1\t123\n" ) | 
|  | 190         file.close() | 
|  | 191         self.assertTrue(FileUtils.are2FilesIdentical("expectedFile", "testOutput.map")) | 
|  | 192         os.remove("expectedFile") | 
|  | 193         os.remove("testOutput.map") | 
|  | 194         os.remove("dummy.hmm") | 
|  | 195 | 
|  | 196 | 
|  | 197 if __name__ == "__main__": | 
|  | 198     unittest.main() | 
|  | 199 |