1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509
|
# Copyright 2008 by Bartek Wilczynski. All rights reserved.
# Adapted from test_Mymodule.py by Jeff Chang
# This code is part of the Biopython distribution and governed by its
# license. Please see the LICENSE file that should have been included
# as part of this package.
import os
import unittest
from Bio import Motif
class MotifTestsBasic(unittest.TestCase):
def setUp(self):
self.PFMin = open("Motif/SRF.pfm")
self.SITESin = open("Motif/Arnt.sites")
self.TFout = "Motif/tf.out"
self.FAout = "Motif/fa.out"
self.PFMout = "Motif/fa.out"
from Bio.Seq import Seq
self.m=Motif.Motif()
self.m.add_instance(Seq("ATATA",self.m.alphabet))
def tearDown(self):
self.PFMin.close()
self.SITESin.close()
if os.path.exists(self.TFout):
os.remove(self.TFout)
if os.path.exists(self.FAout):
os.remove(self.FAout)
def test_alignace_parsing(self):
"""Test if Motif can parse AlignAce output files.
"""
from Bio.Alphabet import IUPAC
from Bio.Motif.Parsers import AlignAce
handle = open("Motif/alignace.out")
record = AlignAce.read(handle)
handle.close()
self.assertEqual(record.ver, "AlignACE 4.0 05/13/04\n")
self.assertEqual(record.cmd_line, "./AlignACE -i test.fa \n")
self.assertEqual(len(record.param_dict), 7)
self.assertEqual(record.param_dict['expect'], "10")
self.assertEqual(record.param_dict['gcback'], "0.38")
self.assertEqual(record.param_dict['minpass'], "200")
self.assertEqual(record.param_dict['seed'], "1227623309")
self.assertEqual(record.param_dict['numcols'], "10")
self.assertEqual(record.param_dict['undersample'], "1")
self.assertEqual(record.param_dict['oversample'], "1")
self.assertEqual(len(record.seq_dict), 10)
self.assertEqual(record.seq_dict[0], "SEQ1; M: CTCAATCGTAGA at 52\n")
self.assertEqual(record.seq_dict[1], "SEQ2; M: CTCAATCGTAGA at 172\n")
self.assertEqual(record.seq_dict[2], "SEQ3; M: CTCAATCGTAGA at 112\n")
self.assertEqual(record.seq_dict[3], "SEQ4; M: CTCAATCGTAGA at 173\n")
self.assertEqual(record.seq_dict[4], "SEQ5; M: CTCAATCGTAGA at 185\n")
self.assertEqual(record.seq_dict[5], "SEQ6; M: CTCAATCGTAGA at 105\n")
self.assertEqual(record.seq_dict[6], "SEQ7; M: CTCAATCGTAGA at 177\n")
self.assertEqual(record.seq_dict[7], "SEQ8; M: CTCAATCGTAGA at 172\n")
self.assertEqual(record.seq_dict[8], "SEQ9; M: CTCAATCGTAGA at 93\n")
self.assertEqual(record.seq_dict[9], "SEQ10; M: CTCAATCGTAGA at 3\n")
self.assertEqual(len(record.motifs), 16)
self.assertEqual(record.motifs[0].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(len(record.motifs[0].instances), 11)
self.assertEqual(record.motifs[0].instances[0].data, "TCTACGATTGAG")
self.assertEqual(record.motifs[0].instances[1].data, "TCTACGATTGAG")
self.assertEqual(record.motifs[0].instances[2].data, "TCTACGATTGAG")
self.assertEqual(record.motifs[0].instances[3].data, "TCTACGATTGAG")
self.assertEqual(record.motifs[0].instances[4].data, "TCTACGATTGAG")
self.assertEqual(record.motifs[0].instances[5].data, "TCTACGATTGAG")
self.assertEqual(record.motifs[0].instances[6].data, "TCTACGATTGAG")
self.assertEqual(record.motifs[0].instances[7].data, "TCTACGATTGAG")
self.assertEqual(record.motifs[0].instances[8].data, "TCTACGATTGAG")
self.assertEqual(record.motifs[0].instances[9].data, "TCAAAGATAGAG")
self.assertEqual(record.motifs[0].instances[10].data, "TCTACGATTGAG")
self.assertEqual(record.motifs[0].mask, [1,1,0,1,1,1,1,1,0,1,1,1])
self.assertAlmostEqual(record.motifs[0].score, 57.9079)
self.assertEqual(record.motifs[1].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(len(record.motifs[1].instances), 22)
self.assertEqual(record.motifs[1].instances[0].data, "GCGAAGGAAGCAGCGCGTGTG")
self.assertEqual(record.motifs[1].instances[1].data, "GGCACCGCCTCTACGATTGAG")
self.assertEqual(record.motifs[1].instances[2].data, "CAGAGCTTAGCATTGAACGCG")
self.assertEqual(record.motifs[1].instances[3].data, "CTAATGAAAGCAATGAGAGTG")
self.assertEqual(record.motifs[1].instances[4].data, "CTTGTGCCCTCTAAGCGTCCG")
self.assertEqual(record.motifs[1].instances[5].data, "GAGCACGACGCTTTGTACCTG")
self.assertEqual(record.motifs[1].instances[6].data, "CGGCACTTAGCAGCGTATCGT")
self.assertEqual(record.motifs[1].instances[7].data, "CTGGTTTCATCTACGATTGAG")
self.assertEqual(record.motifs[1].instances[8].data, "GGGCCAATAGCGGCGCCGGAG")
self.assertEqual(record.motifs[1].instances[9].data, "GTGGAGTTATCTTAGTGCGCG")
self.assertEqual(record.motifs[1].instances[10].data, "GAGAGGTTATCTACGATTGAG")
self.assertEqual(record.motifs[1].instances[11].data, "CTGCTCCCCGCATACAGCGCG")
self.assertEqual(record.motifs[1].instances[12].data, "CAGAACCGAGGTCCGGTACGG")
self.assertEqual(record.motifs[1].instances[13].data, "GTGCCCCAAGCTTACCCAGGG")
self.assertEqual(record.motifs[1].instances[14].data, "CGCCTCTGATCTACGATTGAG")
self.assertEqual(record.motifs[1].instances[15].data, "GTGCTCATAGGGACGTCGCGG")
self.assertEqual(record.motifs[1].instances[16].data, "CTGCCCCCCGCATAGTAGGGG")
self.assertEqual(record.motifs[1].instances[17].data, "GTAAAGAAATCGATGTGCCAG")
self.assertEqual(record.motifs[1].instances[18].data, "CACCTGCAATTGCTGGCAGCG")
self.assertEqual(record.motifs[1].instances[19].data, "GGCGGGCCATCCCTGTATGAA")
self.assertEqual(record.motifs[1].instances[20].data, "CTCCAGGTCGCATGGAGAGAG")
self.assertEqual(record.motifs[1].instances[21].data, "CCTCGGATCGCTTGGGAAGAG")
self.assertEqual(record.motifs[1].mask, [1,0,1,1,0,1,0,0,1,1,1,0,0,0,1,0,0,0,1,0,1])
self.assertAlmostEqual(record.motifs[1].score, 19.6235)
self.assertEqual(record.motifs[2].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(len(record.motifs[2].instances), 18)
self.assertEqual(record.motifs[2].instances[0].data, "GTGCGCGAAGGAAGCAGCGCG")
self.assertEqual(record.motifs[2].instances[1].data, "CAGAGCTTAGCATTGAACGCG")
self.assertEqual(record.motifs[2].instances[2].data, "GTGCCCGATGACCACCCGTCG")
self.assertEqual(record.motifs[2].instances[3].data, "GCCCTCTAAGCGTCCGCGGAT")
self.assertEqual(record.motifs[2].instances[4].data, "GAGCACGACGCTTTGTACCTG")
self.assertEqual(record.motifs[2].instances[5].data, "CGGCACTTAGCAGCGTATCGT")
self.assertEqual(record.motifs[2].instances[6].data, "GGGCCAATAGCGGCGCCGGAG")
self.assertEqual(record.motifs[2].instances[7].data, "GCGCACTAAGATAACTCCACG")
self.assertEqual(record.motifs[2].instances[8].data, "CGGCCCGTTGTCCAGCAGACG")
self.assertEqual(record.motifs[2].instances[9].data, "CTGCTCCCCGCATACAGCGCG")
self.assertEqual(record.motifs[2].instances[10].data, "GTGCCCCAAGCTTACCCAGGG")
self.assertEqual(record.motifs[2].instances[11].data, "GTGCTCATAGGGACGTCGCGG")
self.assertEqual(record.motifs[2].instances[12].data, "CTGCCCCCCGCATAGTAGGGG")
self.assertEqual(record.motifs[2].instances[13].data, "CGCCGCCATGCGACGCAGAGG")
self.assertEqual(record.motifs[2].instances[14].data, "AACCTCTAAGCATACTCTACG")
self.assertEqual(record.motifs[2].instances[15].data, "GACCTGGAGGCTTAGACTTGG")
self.assertEqual(record.motifs[2].instances[16].data, "GCGCTCTTCCCAAGCGATCCG")
self.assertEqual(record.motifs[2].instances[17].data, "GGGCCGTCAGCTCTCAAGTCT")
self.assertEqual(record.motifs[2].mask, [1,0,1,1,0,1,0,0,0,1,1,0,0,0,1,0,1,0,0,1,1])
self.assertAlmostEqual(record.motifs[2].score, 19.1804)
self.assertEqual(record.motifs[3].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(len(record.motifs[3].instances), 16)
self.assertEqual(record.motifs[3].instances[0].data, "GCCCCAAGCTTACCCAGGGAC")
self.assertEqual(record.motifs[3].instances[1].data, "GCCGTCTGCTGGACAACGGGC")
self.assertEqual(record.motifs[3].instances[2].data, "GCCGACGGGTGGTCATCGGGC")
self.assertEqual(record.motifs[3].instances[3].data, "GCCAATAGCGGCGCCGGAGTC")
self.assertEqual(record.motifs[3].instances[4].data, "GCCCCCCGCATAGTAGGGGGA")
self.assertEqual(record.motifs[3].instances[5].data, "GCCCGTACCGGACCTCGGTTC")
self.assertEqual(record.motifs[3].instances[6].data, "GCCTCATGTACCGGAAGGGAC")
self.assertEqual(record.motifs[3].instances[7].data, "GACACGCGCCTGGGAGGGTTC")
self.assertEqual(record.motifs[3].instances[8].data, "GCCTTTGGCCTTGGATGAGAA")
self.assertEqual(record.motifs[3].instances[9].data, "GGCCCTCGGATCGCTTGGGAA")
self.assertEqual(record.motifs[3].instances[10].data, "GCATGTTGGGAATCCGCGGAC")
self.assertEqual(record.motifs[3].instances[11].data, "GACACGCGCTGTATGCGGGGA")
self.assertEqual(record.motifs[3].instances[12].data, "GCCAGGTACAAAGCGTCGTGC")
self.assertEqual(record.motifs[3].instances[13].data, "GCGATCAGCTTGTGGGCGTGC")
self.assertEqual(record.motifs[3].instances[14].data, "GACAAATCGGATACTGGGGCA")
self.assertEqual(record.motifs[3].instances[15].data, "GCACTTAGCAGCGTATCGTTA")
self.assertEqual(record.motifs[3].mask, [1,1,1,0,0,0,0,1,1,0,0,0,0,1,0,0,1,1,1,0,1])
self.assertAlmostEqual(record.motifs[3].score, 18.0097)
self.assertEqual(record.motifs[4].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(len(record.motifs[4].instances), 15)
self.assertEqual(record.motifs[4].instances[0].data, "CGGCACAGAGCTT")
self.assertEqual(record.motifs[4].instances[1].data, "ATCCGCGGACGCT")
self.assertEqual(record.motifs[4].instances[2].data, "CGCCTGGGAGGGT")
self.assertEqual(record.motifs[4].instances[3].data, "CGGAAGGGACGTT")
self.assertEqual(record.motifs[4].instances[4].data, "ACACACAGACGGT")
self.assertEqual(record.motifs[4].instances[5].data, "TGCCAGAGAGGTT")
self.assertEqual(record.motifs[4].instances[6].data, "AGACTGAGACGTT")
self.assertEqual(record.motifs[4].instances[7].data, "AATCGTAGAGGAT")
self.assertEqual(record.motifs[4].instances[8].data, "CGTCTCGTAGGGT")
self.assertEqual(record.motifs[4].instances[9].data, "CGTCGCGGAGGAT")
self.assertEqual(record.motifs[4].instances[10].data, "CTTCTTAGACGCT")
self.assertEqual(record.motifs[4].instances[11].data, "CGACGCAGAGGAT")
self.assertEqual(record.motifs[4].instances[12].data, "ATGCTTAGAGGTT")
self.assertEqual(record.motifs[4].instances[13].data, "AGACTTGGGCGAT")
self.assertEqual(record.motifs[4].instances[14].data, "CGACCTGGAGGCT")
self.assertEqual(record.motifs[4].mask, [1,1,0,1,0,1,1,1,1,1,1,0,1])
self.assertAlmostEqual(record.motifs[4].score, 16.8287)
self.assertEqual(record.motifs[5].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(len(record.motifs[5].instances), 18)
self.assertEqual(record.motifs[5].instances[0].data, "GTGCGCGAAGGAAGCAGCGCGTG")
self.assertEqual(record.motifs[5].instances[1].data, "TTGAGCCGAGTAAAGGGCTGGTG")
self.assertEqual(record.motifs[5].instances[2].data, "CAATGCTAAGCTCTGTGCCGACG")
self.assertEqual(record.motifs[5].instances[3].data, "CAACTCTCTATGTAGTGCCCGAG")
self.assertEqual(record.motifs[5].instances[4].data, "CGACGCTTTGTACCTGGCTTGCG")
self.assertEqual(record.motifs[5].instances[5].data, "CGAGTCAATGACACGCGCCTGGG")
self.assertEqual(record.motifs[5].instances[6].data, "CGATACGCTGCTAAGTGCCGTCC")
self.assertEqual(record.motifs[5].instances[7].data, "CCGGGCCAATAGCGGCGCCGGAG")
self.assertEqual(record.motifs[5].instances[8].data, "CCACGCTTCGACACGTGGTATAG")
self.assertEqual(record.motifs[5].instances[9].data, "CCGAGCCTCATGTACCGGAAGGG")
self.assertEqual(record.motifs[5].instances[10].data, "CTGCTCCCCGCATACAGCGCGTG")
self.assertEqual(record.motifs[5].instances[11].data, "CCGAGGTCCGGTACGGGCAAGCC")
self.assertEqual(record.motifs[5].instances[12].data, "GTGCTCATAGGGACGTCGCGGAG")
self.assertEqual(record.motifs[5].instances[13].data, "CCCTACTATGCGGGGGGCAGGTC")
self.assertEqual(record.motifs[5].instances[14].data, "GCCAGCAATTGCAGGTGGTCGTG")
self.assertEqual(record.motifs[5].instances[15].data, "CTCTGCGTCGCATGGCGGCGTGG")
self.assertEqual(record.motifs[5].instances[16].data, "GGAGGCTTAGACTTGGGCGATAC")
self.assertEqual(record.motifs[5].instances[17].data, "GCATGGAGAGAGATCCGGAGGAG")
self.assertEqual(record.motifs[5].mask, [1,0,1,0,1,1,0,0,0,1,0,0,0,0,1,0,1,1,0,0,1,0,1])
self.assertAlmostEqual(record.motifs[5].score, 15.0441)
self.assertEqual(record.motifs[6].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(len(record.motifs[6].instances), 20)
self.assertEqual(record.motifs[6].instances[0].data, "GCGCGTGTGTGTAAC")
self.assertEqual(record.motifs[6].instances[1].data, "GCACAGAGCTTAGCA")
self.assertEqual(record.motifs[6].instances[2].data, "GGTGGTCATCGGGCA")
self.assertEqual(record.motifs[6].instances[3].data, "GCGCGTGTCATTGAC")
self.assertEqual(record.motifs[6].instances[4].data, "GGACGGCACTTAGCA")
self.assertEqual(record.motifs[6].instances[5].data, "GCGCGTCCCGGGCCA")
self.assertEqual(record.motifs[6].instances[6].data, "GCTCGGCCCGTTGTC")
self.assertEqual(record.motifs[6].instances[7].data, "GCGCGTGTCCTTTAA")
self.assertEqual(record.motifs[6].instances[8].data, "GCTGATCGCTGCTCC")
self.assertEqual(record.motifs[6].instances[9].data, "GCCCGTACCGGACCT")
self.assertEqual(record.motifs[6].instances[10].data, "GGACGTCGCGGAGGA")
self.assertEqual(record.motifs[6].instances[11].data, "GCGGGGGGCAGGTCA")
self.assertEqual(record.motifs[6].instances[12].data, "GGACGTACTGGCACA")
self.assertEqual(record.motifs[6].instances[13].data, "GCAGGTGGTCGTGCA")
self.assertEqual(record.motifs[6].instances[14].data, "GCGCATACCTTAACA")
self.assertEqual(record.motifs[6].instances[15].data, "GCACGGGACTTCAAC")
self.assertEqual(record.motifs[6].instances[16].data, "GCACGTAGCTGGTAA")
self.assertEqual(record.motifs[6].instances[17].data, "GCTCGTCTATGGTCA")
self.assertEqual(record.motifs[6].instances[18].data, "GCGCATGCTGGATCC")
self.assertEqual(record.motifs[6].instances[19].data, "GGCCGTCAGCTCTCA")
self.assertEqual(record.motifs[6].mask, [1,1,0,1,1,1,1,0,1,0,1,0,0,1,1])
self.assertAlmostEqual(record.motifs[6].score, 13.3145)
self.assertEqual(record.motifs[7].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(len(record.motifs[7].instances), 20)
self.assertEqual(record.motifs[7].instances[0].data, "GAACCGAGGTCCGGTACGGGC")
self.assertEqual(record.motifs[7].instances[1].data, "GCCCCCCGCATAGTAGGGGGA")
self.assertEqual(record.motifs[7].instances[2].data, "GTCCCTGGGTAAGCTTGGGGC")
self.assertEqual(record.motifs[7].instances[3].data, "ACTCCACGCTTCGACACGTGG")
self.assertEqual(record.motifs[7].instances[4].data, "ATCCTCTGCGTCGCATGGCGG")
self.assertEqual(record.motifs[7].instances[5].data, "GTTCAATGCTAAGCTCTGTGC")
self.assertEqual(record.motifs[7].instances[6].data, "GCTCATAGGGACGTCGCGGAG")
self.assertEqual(record.motifs[7].instances[7].data, "GTCCCGGGCCAATAGCGGCGC")
self.assertEqual(record.motifs[7].instances[8].data, "GCACTTAGCAGCGTATCGTTA")
self.assertEqual(record.motifs[7].instances[9].data, "GGCCCTCGGATCGCTTGGGAA")
self.assertEqual(record.motifs[7].instances[10].data, "CTGCTGGACAACGGGCCGAGC")
self.assertEqual(record.motifs[7].instances[11].data, "GGGCACTACATAGAGAGTTGC")
self.assertEqual(record.motifs[7].instances[12].data, "AGCCTCCAGGTCGCATGGAGA")
self.assertEqual(record.motifs[7].instances[13].data, "AATCGTAGATCAGAGGCGAGA")
self.assertEqual(record.motifs[7].instances[14].data, "GAACTCCACTAAGACTTGAGA")
self.assertEqual(record.motifs[7].instances[15].data, "GAGCAGCGATCAGCTTGTGGG")
self.assertEqual(record.motifs[7].instances[16].data, "GCCAGGTACAAAGCGTCGTGC")
self.assertEqual(record.motifs[7].instances[17].data, "AGTCAATGACACGCGCCTGGG")
self.assertEqual(record.motifs[7].instances[18].data, "GGTCATGGAATCTTATGTAGC")
self.assertEqual(record.motifs[7].instances[19].data, "GTAGATAACAGAGGTCGGGGG")
self.assertEqual(record.motifs[7].mask, [1,0,0,1,0,0,0,1,1,0,0,1,1,0,0,0,1,1,0,1,1])
self.assertAlmostEqual(record.motifs[7].score, 11.6098)
self.assertEqual(record.motifs[8].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(len(record.motifs[8].instances), 14)
self.assertEqual(record.motifs[8].instances[0].data, "CCGAGTAAAGGGCTG")
self.assertEqual(record.motifs[8].instances[1].data, "GTGGTCATCGGGCAC")
self.assertEqual(record.motifs[8].instances[2].data, "GATAACAGAGGTCGG")
self.assertEqual(record.motifs[8].instances[3].data, "CGGCGCCGGAGTCTG")
self.assertEqual(record.motifs[8].instances[4].data, "GCGCGTCCCGGGCCA")
self.assertEqual(record.motifs[8].instances[5].data, "CTGGACAACGGGCCG")
self.assertEqual(record.motifs[8].instances[6].data, "CGGATACTGGGGCAG")
self.assertEqual(record.motifs[8].instances[7].data, "GGGAGCAGCGATCAG")
self.assertEqual(record.motifs[8].instances[8].data, "CAGAACCGAGGTCCG")
self.assertEqual(record.motifs[8].instances[9].data, "GGGTCCCTGGGTAAG")
self.assertEqual(record.motifs[8].instances[10].data, "GTGCTCATAGGGACG")
self.assertEqual(record.motifs[8].instances[11].data, "GAGATCCGGAGGAGG")
self.assertEqual(record.motifs[8].instances[12].data, "GCGATCCGAGGGCCG")
self.assertEqual(record.motifs[8].instances[13].data, "GAGTTCACATGGCTG")
self.assertEqual(record.motifs[8].mask, [1,0,1,0,0,1,1,0,1,1,1,1,1,0,1])
self.assertAlmostEqual(record.motifs[8].score, 11.2943)
self.assertEqual(record.motifs[9].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(len(record.motifs[9].instances), 18)
self.assertEqual(record.motifs[9].instances[0].data, "TAGAGGCGGTG")
self.assertEqual(record.motifs[9].instances[1].data, "GCTAAGCTCTG")
self.assertEqual(record.motifs[9].instances[2].data, "TGGAAGCAGTG")
self.assertEqual(record.motifs[9].instances[3].data, "GCGAGGCTGTG")
self.assertEqual(record.motifs[9].instances[4].data, "ACGACGCTTTG")
self.assertEqual(record.motifs[9].instances[5].data, "GGGACGCGCAC")
self.assertEqual(record.motifs[9].instances[6].data, "TCGAAGCGTGG")
self.assertEqual(record.motifs[9].instances[7].data, "TGTATGCGGGG")
self.assertEqual(record.motifs[9].instances[8].data, "GGTAAGCTTGG")
self.assertEqual(record.motifs[9].instances[9].data, "TGTACGCTGGG")
self.assertEqual(record.motifs[9].instances[10].data, "ACTATGCGGGG")
self.assertEqual(record.motifs[9].instances[11].data, "GGTATGCGCTG")
self.assertEqual(record.motifs[9].instances[12].data, "GGTACCCGGAG")
self.assertEqual(record.motifs[9].instances[13].data, "GCGACGCAGAG")
self.assertEqual(record.motifs[9].instances[14].data, "TGGCGGCGTGG")
self.assertEqual(record.motifs[9].instances[15].data, "TCTAGGCGGGC")
self.assertEqual(record.motifs[9].instances[16].data, "AGTATGCTTAG")
self.assertEqual(record.motifs[9].instances[17].data, "TGGAGGCTTAG")
self.assertEqual(record.motifs[9].mask, [1,1,1,1,0,1,1,1,1,1,1])
self.assertAlmostEqual(record.motifs[9].score, 9.7924)
self.assertEqual(record.motifs[10].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(len(record.motifs[10].instances), 13)
self.assertEqual(record.motifs[10].instances[0].data, "GCACAGAGCTTAGCATTGAAC")
self.assertEqual(record.motifs[10].instances[1].data, "GTCCGCGGATTCCCAACATGC")
self.assertEqual(record.motifs[10].instances[2].data, "ATACACAGCCTCGCAAGCCAG")
self.assertEqual(record.motifs[10].instances[3].data, "GGCCCGGGACGCGCACTAAGA")
self.assertEqual(record.motifs[10].instances[4].data, "GCCCGTTGTCCAGCAGACGGC")
self.assertEqual(record.motifs[10].instances[5].data, "GAGCAGCGATCAGCTTGTGGG")
self.assertEqual(record.motifs[10].instances[6].data, "GAACCGAGGTCCGGTACGGGC")
self.assertEqual(record.motifs[10].instances[7].data, "GTCCCTGGGTAAGCTTGGGGC")
self.assertEqual(record.motifs[10].instances[8].data, "GACCTGCCCCCCGCATAGTAG")
self.assertEqual(record.motifs[10].instances[9].data, "AACCAGCGCATACCTTAACAG")
self.assertEqual(record.motifs[10].instances[10].data, "ATCCTCTGCGTCGCATGGCGG")
self.assertEqual(record.motifs[10].instances[11].data, "GACCATAGACGAGCATCAAAG")
self.assertEqual(record.motifs[10].instances[12].data, "GGCCCTCGGATCGCTTGGGAA")
self.assertEqual(record.motifs[10].mask, [1,0,1,1,0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,1,1])
self.assertAlmostEqual(record.motifs[10].score, 9.01393)
self.assertEqual(record.motifs[11].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(len(record.motifs[11].instances), 16)
self.assertEqual(record.motifs[11].instances[0].data, "GCCGTCCGTC")
self.assertEqual(record.motifs[11].instances[1].data, "GGCGTGCGCG")
self.assertEqual(record.motifs[11].instances[2].data, "GGCGCGTGTC")
self.assertEqual(record.motifs[11].instances[3].data, "AGCGCGTGTG")
self.assertEqual(record.motifs[11].instances[4].data, "GCGGTGCGTG")
self.assertEqual(record.motifs[11].instances[5].data, "AGCGCGTGTC")
self.assertEqual(record.motifs[11].instances[6].data, "AGCGTCCGCG")
self.assertEqual(record.motifs[11].instances[7].data, "ACCGTCTGTG")
self.assertEqual(record.motifs[11].instances[8].data, "GCCATGCGAC")
self.assertEqual(record.motifs[11].instances[9].data, "ACCACCCGTC")
self.assertEqual(record.motifs[11].instances[10].data, "GGCGCCGGAG")
self.assertEqual(record.motifs[11].instances[11].data, "ACCACGTGTC")
self.assertEqual(record.motifs[11].instances[12].data, "GGCTTGCGAG")
self.assertEqual(record.motifs[11].instances[13].data, "GCGATCCGAG")
self.assertEqual(record.motifs[11].instances[14].data, "AGTGCGCGTC")
self.assertEqual(record.motifs[11].instances[15].data, "AGTGCCCGAG")
self.assertEqual(record.motifs[11].mask, [1,1,1,1,1,1,1,1,1,1])
self.assertAlmostEqual(record.motifs[11].score, 7.51121)
self.assertEqual(record.motifs[12].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(len(record.motifs[12].instances), 16)
self.assertEqual(record.motifs[12].instances[0].data, "GCCGACGGGTGGTCATCGGG")
self.assertEqual(record.motifs[12].instances[1].data, "GCACGACGCTTTGTACCTGG")
self.assertEqual(record.motifs[12].instances[2].data, "CCTGGGAGGGTTCAATAACG")
self.assertEqual(record.motifs[12].instances[3].data, "GCGCGTCCCGGGCCAATAGC")
self.assertEqual(record.motifs[12].instances[4].data, "GCCGTCTGCTGGACAACGGG")
self.assertEqual(record.motifs[12].instances[5].data, "GTCCCTTCCGGTACATGAGG")
self.assertEqual(record.motifs[12].instances[6].data, "GCTGCTCCCCGCATACAGCG")
self.assertEqual(record.motifs[12].instances[7].data, "GCCCCAAGCTTACCCAGGGA")
self.assertEqual(record.motifs[12].instances[8].data, "ACCGGCTGACGCTAATACGG")
self.assertEqual(record.motifs[12].instances[9].data, "GCGGGGGGCAGGTCATTACA")
self.assertEqual(record.motifs[12].instances[10].data, "GCTGGCAGCGTCTAAGAAGG")
self.assertEqual(record.motifs[12].instances[11].data, "GCAGGTGGTCGTGCAATACG")
self.assertEqual(record.motifs[12].instances[12].data, "GCTGGTTGAAGTCCCGTGCG")
self.assertEqual(record.motifs[12].instances[13].data, "GCACGTAGCTGGTAAATAGG")
self.assertEqual(record.motifs[12].instances[14].data, "GCGGCGTGGATTTCATACAG")
self.assertEqual(record.motifs[12].instances[15].data, "CCTGGAGGCTTAGACTTGGG")
self.assertEqual(record.motifs[12].mask, [1,1,0,1,1,0,0,1,1,0,1,0,0,0,1,0,0,0,1,1])
self.assertAlmostEqual(record.motifs[12].score, 5.63667)
self.assertEqual(record.motifs[13].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(len(record.motifs[13].instances), 15)
self.assertEqual(record.motifs[13].instances[0].data, "GCCGACGGGTGGTCATCGGG")
self.assertEqual(record.motifs[13].instances[1].data, "ATCCGCGGACGCTTAGAGGG")
self.assertEqual(record.motifs[13].instances[2].data, "ACGCTTTGTACCTGGCTTGC")
self.assertEqual(record.motifs[13].instances[3].data, "ACGGACGGCACTTAGCAGCG")
self.assertEqual(record.motifs[13].instances[4].data, "GCCGTCTGCTGGACAACGGG")
self.assertEqual(record.motifs[13].instances[5].data, "ACACACAGACGGTTGAAAGG")
self.assertEqual(record.motifs[13].instances[6].data, "GCCGATAGTGCTTAAGTTCG")
self.assertEqual(record.motifs[13].instances[7].data, "CTTGCCCGTACCGGACCTCG")
self.assertEqual(record.motifs[13].instances[8].data, "ACCGGCTGACGCTAATACGG")
self.assertEqual(record.motifs[13].instances[9].data, "GCCCCCCGCATAGTAGGGGG")
self.assertEqual(record.motifs[13].instances[10].data, "GCTGGCAGCGTCTAAGAAGG")
self.assertEqual(record.motifs[13].instances[11].data, "GCAGGTGGTCGTGCAATACG")
self.assertEqual(record.motifs[13].instances[12].data, "ACGCACGGGACTTCAACCAG")
self.assertEqual(record.motifs[13].instances[13].data, "GCACGTAGCTGGTAAATAGG")
self.assertEqual(record.motifs[13].instances[14].data, "ATCCTCTGCGTCGCATGGCG")
self.assertEqual(record.motifs[13].mask, [1,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,0,1,1])
self.assertAlmostEqual(record.motifs[13].score, 3.89842)
self.assertEqual(record.motifs[14].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(len(record.motifs[14].instances), 14)
self.assertEqual(record.motifs[14].instances[0].data, "GAGGCTGTGTAT")
self.assertEqual(record.motifs[14].instances[1].data, "GAGGTCGGGGGT")
self.assertEqual(record.motifs[14].instances[2].data, "GACGGACGGCAC")
self.assertEqual(record.motifs[14].instances[3].data, "TTGGCCCGGGAC")
self.assertEqual(record.motifs[14].instances[4].data, "GAGGCTCGGCCC")
self.assertEqual(record.motifs[14].instances[5].data, "CACGCGCTGTAT")
self.assertEqual(record.motifs[14].instances[6].data, "TAGGCCAGGTAT")
self.assertEqual(record.motifs[14].instances[7].data, "GAGGTCCGGTAC")
self.assertEqual(record.motifs[14].instances[8].data, "TACGCTGGGGAT")
self.assertEqual(record.motifs[14].instances[9].data, "GTCGCGGAGGAT")
self.assertEqual(record.motifs[14].instances[10].data, "TACGCACGGGAC")
self.assertEqual(record.motifs[14].instances[11].data, "TACTCCGGGTAC")
self.assertEqual(record.motifs[14].instances[12].data, "GACGCAGAGGAT")
self.assertEqual(record.motifs[14].instances[13].data, "TAGGCGGGCCAT")
self.assertEqual(record.motifs[14].mask, [1,1,1,1,1,0,1,1,1,0,1,1])
self.assertAlmostEqual(record.motifs[14].score, 3.33444)
self.assertEqual(record.motifs[15].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(len(record.motifs[15].instances), 21)
self.assertEqual(record.motifs[15].instances[0].data, "CGGCTCAATCGTAGAGGC")
self.assertEqual(record.motifs[15].instances[1].data, "CGACGGGTGGTCATCGGG")
self.assertEqual(record.motifs[15].instances[2].data, "CGCTTAGAGGGCACAAGC")
self.assertEqual(record.motifs[15].instances[3].data, "TGACACGCGCCTGGGAGG")
self.assertEqual(record.motifs[15].instances[4].data, "CGATACGCTGCTAAGTGC")
self.assertEqual(record.motifs[15].instances[5].data, "CGTCCCGGGCCAATAGCG")
self.assertEqual(record.motifs[15].instances[6].data, "CCACGCTTCGACACGTGG")
self.assertEqual(record.motifs[15].instances[7].data, "CGTCTGCTGGACAACGGG")
self.assertEqual(record.motifs[15].instances[8].data, "ACACAGACGGTTGAAAGG")
self.assertEqual(record.motifs[15].instances[9].data, "TGCTCCCCGCATACAGCG")
self.assertEqual(record.motifs[15].instances[10].data, "TGAGGCTTGCCCGTACCG")
self.assertEqual(record.motifs[15].instances[11].data, "TGCCCCAAGCTTACCCAG")
self.assertEqual(record.motifs[15].instances[12].data, "CGGCTGACGCTAATACGG")
self.assertEqual(record.motifs[15].instances[13].data, "CGCGACGTCCCTATGAGC")
self.assertEqual(record.motifs[15].instances[14].data, "TGCCCCCCGCATAGTAGG")
self.assertEqual(record.motifs[15].instances[15].data, "CGTTGCCTTCTTAGACGC")
self.assertEqual(record.motifs[15].instances[16].data, "TGACTCAATCGTAGACCC")
self.assertEqual(record.motifs[15].instances[17].data, "AGTCCCGTGCGTATGTGG")
self.assertEqual(record.motifs[15].instances[18].data, "AGGCTCGCACGTAGCTGG")
self.assertEqual(record.motifs[15].instances[19].data, "CCACGCCGCCATGCGACG")
self.assertEqual(record.motifs[15].instances[20].data, "AGCCTCCAGGTCGCATGG")
self.assertEqual(record.motifs[15].mask, [1,1,0,1,0,1,0,0,1,1,0,1,1,0,0,0,1,1])
self.assertAlmostEqual(record.motifs[15].score, 1.0395)
def test_pfm_parsing(self):
"""Test to be sure that Motif can parse pfm files.
"""
motif= Motif.read(self.PFMin,"jaspar-pfm")
assert motif.length==12
def test_sites_parsing(self):
"""Test to be sure that Motif can parse sites files.
"""
motif= Motif.read(self.SITESin,"jaspar-sites")
assert motif.length==6
def test_FAoutput(self):
"""Ensure that we can write proper FASTA output files.
"""
output_handle = open(self.FAout, "w")
output_handle.write(self.m.format("fasta"))
output_handle.close()
def test_TFoutput(self):
"""Ensure that we can write proper TransFac output files.
"""
output_handle = open(self.TFout, "w")
output_handle.write(self.m.format("transfac"))
output_handle.close()
def test_pfm_output(self):
"""Ensure that we can write proper pfm output files.
"""
output_handle = open(self.PFMout, "w")
output_handle.write(self.m.format("jaspar-pfm"))
output_handle.close()
class TestMEME(unittest.TestCase):
def test_meme_parser_1(self):
"""Test if Motif can parse MEME output files (first test)
"""
from Bio.Alphabet import IUPAC
from Bio.Motif.Parsers import MEME
handle = open("Motif/meme.out")
record = MEME.read(handle)
self.assertEqual(record.version, '3.5.7')
self.assertEqual(record.datafile, 'test.fa')
self.assertEqual(record.alphabet, IUPAC.unambiguous_dna)
self.assertEqual(len(record.sequence_names), 10)
self.assertEqual(record.sequence_names[0], 'SEQ1;')
self.assertEqual(record.sequence_names[1], 'SEQ2;')
self.assertEqual(record.sequence_names[2], 'SEQ3;')
self.assertEqual(record.sequence_names[3], 'SEQ4;')
self.assertEqual(record.sequence_names[4], 'SEQ5;')
self.assertEqual(record.sequence_names[5], 'SEQ6;')
self.assertEqual(record.sequence_names[6], 'SEQ7;')
self.assertEqual(record.sequence_names[7], 'SEQ8;')
self.assertEqual(record.sequence_names[8], 'SEQ9;')
self.assertEqual(record.sequence_names[9], 'SEQ10;')
self.assertEqual(record.command, 'meme test.fa -dna -w 10 -dir /home/bartek/MetaMotif/meme')
self.assertEqual(len(record.motifs), 1)
motif = record.motifs[0]
self.assertEqual(motif.num_occurrences, 10)
self.assertAlmostEqual(motif.evalue, 1.1e-22)
self.assertEqual(motif.alphabet, IUPAC.unambiguous_dna)
self.assertEqual(motif.name, "Motif 1")
self.assertEqual(len(motif.instances), 10)
self.assertAlmostEqual(motif.instances[0].pvalue, 8.71e-07)
self.assertAlmostEqual(motif.instances[1].pvalue, 8.71e-07)
self.assertAlmostEqual(motif.instances[2].pvalue, 8.71e-07)
self.assertAlmostEqual(motif.instances[3].pvalue, 8.71e-07)
self.assertAlmostEqual(motif.instances[4].pvalue, 8.71e-07)
self.assertAlmostEqual(motif.instances[5].pvalue, 8.71e-07)
self.assertAlmostEqual(motif.instances[6].pvalue, 8.71e-07)
self.assertAlmostEqual(motif.instances[7].pvalue, 8.71e-07)
self.assertAlmostEqual(motif.instances[8].pvalue, 8.71e-07)
self.assertAlmostEqual(motif.instances[9].pvalue, 8.71e-07)
self.assertEqual(motif.instances[0].sequence_name, 'SEQ10;')
self.assertEqual(motif.instances[1].sequence_name, 'SEQ9;')
self.assertEqual(motif.instances[2].sequence_name, 'SEQ8;')
self.assertEqual(motif.instances[3].sequence_name, 'SEQ7;')
self.assertEqual(motif.instances[4].sequence_name, 'SEQ6;')
self.assertEqual(motif.instances[5].sequence_name, 'SEQ5;')
self.assertEqual(motif.instances[6].sequence_name, 'SEQ4;')
self.assertEqual(motif.instances[7].sequence_name, 'SEQ3;')
self.assertEqual(motif.instances[8].sequence_name, 'SEQ2;')
self.assertEqual(motif.instances[9].sequence_name, 'SEQ1;')
self.assertEqual(motif.instances[0].start, 3)
self.assertEqual(motif.instances[1].start, 93)
self.assertEqual(motif.instances[2].start, 172)
self.assertEqual(motif.instances[3].start, 177)
self.assertEqual(motif.instances[4].start, 105)
self.assertEqual(motif.instances[5].start, 185)
self.assertEqual(motif.instances[6].start, 173)
self.assertEqual(motif.instances[7].start, 112)
self.assertEqual(motif.instances[8].start, 172)
self.assertEqual(motif.instances[9].start, 52)
self.assertEqual(motif.instances[0].strand, '+')
self.assertEqual(motif.instances[1].strand, '+')
self.assertEqual(motif.instances[2].strand, '+')
self.assertEqual(motif.instances[3].strand, '+')
self.assertEqual(motif.instances[4].strand, '+')
self.assertEqual(motif.instances[5].strand, '+')
self.assertEqual(motif.instances[6].strand, '+')
self.assertEqual(motif.instances[7].strand, '+')
self.assertEqual(motif.instances[8].strand, '+')
self.assertEqual(motif.instances[9].strand, '+')
self.assertEqual(motif.instances[0].length, 10)
self.assertEqual(motif.instances[1].length, 10)
self.assertEqual(motif.instances[2].length, 10)
self.assertEqual(motif.instances[3].length, 10)
self.assertEqual(motif.instances[4].length, 10)
self.assertEqual(motif.instances[5].length, 10)
self.assertEqual(motif.instances[6].length, 10)
self.assertEqual(motif.instances[7].length, 10)
self.assertEqual(motif.instances[8].length, 10)
self.assertEqual(motif.instances[9].length, 10)
self.assertEqual(motif.instances[0].motif_name, 'Motif 1')
self.assertEqual(motif.instances[1].motif_name, 'Motif 1')
self.assertEqual(motif.instances[2].motif_name, 'Motif 1')
self.assertEqual(motif.instances[3].motif_name, 'Motif 1')
self.assertEqual(motif.instances[4].motif_name, 'Motif 1')
self.assertEqual(motif.instances[5].motif_name, 'Motif 1')
self.assertEqual(motif.instances[6].motif_name, 'Motif 1')
self.assertEqual(motif.instances[7].motif_name, 'Motif 1')
self.assertEqual(motif.instances[8].motif_name, 'Motif 1')
self.assertEqual(motif.instances[9].motif_name, 'Motif 1')
self.assertEqual(motif.instances[0].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(motif.instances[1].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(motif.instances[2].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(motif.instances[3].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(motif.instances[4].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(motif.instances[5].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(motif.instances[6].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(motif.instances[7].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(motif.instances[8].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(motif.instances[9].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(motif.instances[0].data, "CTCAATCGTA")
self.assertEqual(motif.instances[1].data, "CTCAATCGTA")
self.assertEqual(motif.instances[2].data, "CTCAATCGTA")
self.assertEqual(motif.instances[3].data, "CTCAATCGTA")
self.assertEqual(motif.instances[4].data, "CTCAATCGTA")
self.assertEqual(motif.instances[5].data, "CTCAATCGTA")
self.assertEqual(motif.instances[6].data, "CTCAATCGTA")
self.assertEqual(motif.instances[7].data, "CTCAATCGTA")
self.assertEqual(motif.instances[8].data, "CTCAATCGTA")
self.assertEqual(motif.instances[9].data, "CTCAATCGTA")
handle.close()
def test_meme_parser_2(self):
"""Test if Motif can parse MEME output files (second test)
"""
from Bio.Alphabet import IUPAC
from Bio.Motif.Parsers import MEME
handle = open("Motif/meme.dna.oops.txt")
record = MEME.read(handle)
self.assertEqual(record.version, '3.0')
self.assertEqual(record.datafile, 'INO_up800.s')
self.assertEqual(record.alphabet, IUPAC.unambiguous_dna)
self.assertEqual(len(record.sequence_names), 7)
self.assertEqual(record.sequence_names[0], 'CHO1')
self.assertEqual(record.sequence_names[1], 'CHO2')
self.assertEqual(record.sequence_names[2], 'FAS1')
self.assertEqual(record.sequence_names[3], 'FAS2')
self.assertEqual(record.sequence_names[4], 'ACC1')
self.assertEqual(record.sequence_names[5], 'INO1')
self.assertEqual(record.sequence_names[6], 'OPI3')
self.assertEqual(record.command, 'meme -mod oops -dna -revcomp -nmotifs 2 -bfile yeast.nc.6.freq INO_up800.s')
self.assertEqual(len(record.motifs), 2)
motif = record.motifs[0]
self.assertEqual(motif.num_occurrences, 7)
self.assertAlmostEqual(motif.evalue, 0.2)
self.assertEqual(motif.alphabet, IUPAC.unambiguous_dna)
self.assertEqual(motif.name, "Motif 1")
self.assertEqual(len(motif.instances), 7)
self.assertAlmostEqual(motif.instances[0].pvalue, 1.85e-08)
self.assertAlmostEqual(motif.instances[1].pvalue, 1.85e-08)
self.assertAlmostEqual(motif.instances[2].pvalue, 1.52e-07)
self.assertAlmostEqual(motif.instances[3].pvalue, 2.52e-07)
self.assertAlmostEqual(motif.instances[4].pvalue, 4.23e-07)
self.assertAlmostEqual(motif.instances[5].pvalue, 9.43e-07)
self.assertAlmostEqual(motif.instances[6].pvalue, 3.32e-06)
self.assertEqual(motif.instances[0].sequence_name, 'INO1')
self.assertEqual(motif.instances[1].sequence_name, 'FAS1')
self.assertEqual(motif.instances[2].sequence_name, 'ACC1')
self.assertEqual(motif.instances[3].sequence_name, 'CHO2')
self.assertEqual(motif.instances[4].sequence_name, 'CHO1')
self.assertEqual(motif.instances[5].sequence_name, 'FAS2')
self.assertEqual(motif.instances[6].sequence_name, 'OPI3')
self.assertEqual(motif.instances[0].strand, '-')
self.assertEqual(motif.instances[1].strand, '+')
self.assertEqual(motif.instances[2].strand, '+')
self.assertEqual(motif.instances[3].strand, '+')
self.assertEqual(motif.instances[4].strand, '+')
self.assertEqual(motif.instances[5].strand, '+')
self.assertEqual(motif.instances[6].strand, '+')
self.assertEqual(motif.instances[0].length, 12)
self.assertEqual(motif.instances[1].length, 12)
self.assertEqual(motif.instances[2].length, 12)
self.assertEqual(motif.instances[3].length, 12)
self.assertEqual(motif.instances[4].length, 12)
self.assertEqual(motif.instances[5].length, 12)
self.assertEqual(motif.instances[6].length, 12)
self.assertEqual(motif.instances[0].start, 620)
self.assertEqual(motif.instances[1].start, 95)
self.assertEqual(motif.instances[2].start, 83)
self.assertEqual(motif.instances[3].start, 354)
self.assertEqual(motif.instances[4].start, 611)
self.assertEqual(motif.instances[5].start, 567)
self.assertEqual(motif.instances[6].start, 340)
self.assertEqual(motif.instances[0].data, "TTCACATGCCGC")
self.assertEqual(motif.instances[1].data, "TTCACATGCCGC")
self.assertEqual(motif.instances[2].data, "TTCACATGGCCC")
self.assertEqual(motif.instances[3].data, "TTCTCATGCCGC")
self.assertEqual(motif.instances[4].data, "TTCACACGGCAC")
self.assertEqual(motif.instances[5].data, "TTCACATGCTAC")
self.assertEqual(motif.instances[6].data, "TTCAGATCGCTC")
motif = record.motifs[1]
self.assertEqual(motif.num_occurrences, 7)
self.assertAlmostEqual(motif.evalue, 110)
self.assertEqual(motif.alphabet, IUPAC.unambiguous_dna)
self.assertEqual(motif.name, "Motif 2")
self.assertEqual(len(motif.instances), 7)
self.assertAlmostEqual(motif.instances[0].pvalue, 3.24e-07)
self.assertAlmostEqual(motif.instances[1].pvalue, 3.24e-07)
self.assertAlmostEqual(motif.instances[2].pvalue, 3.24e-07)
self.assertAlmostEqual(motif.instances[3].pvalue, 5.29e-06)
self.assertAlmostEqual(motif.instances[4].pvalue, 6.25e-06)
self.assertAlmostEqual(motif.instances[5].pvalue, 8.48e-06)
self.assertAlmostEqual(motif.instances[6].pvalue, 8.48e-06)
self.assertEqual(motif.instances[0].sequence_name, 'OPI3')
self.assertEqual(motif.instances[1].sequence_name, 'ACC1')
self.assertEqual(motif.instances[2].sequence_name, 'CHO1')
self.assertEqual(motif.instances[3].sequence_name, 'INO1')
self.assertEqual(motif.instances[4].sequence_name, 'FAS1')
self.assertEqual(motif.instances[5].sequence_name, 'FAS2')
self.assertEqual(motif.instances[6].sequence_name, 'CHO2')
self.assertEqual(motif.instances[0].strand, '-')
self.assertEqual(motif.instances[1].strand, '+')
self.assertEqual(motif.instances[2].strand, '-')
self.assertEqual(motif.instances[3].strand, '-')
self.assertEqual(motif.instances[4].strand, '+')
self.assertEqual(motif.instances[5].strand, '-')
self.assertEqual(motif.instances[6].strand, '-')
self.assertEqual(motif.instances[0].length, 10)
self.assertEqual(motif.instances[1].length, 10)
self.assertEqual(motif.instances[2].length, 10)
self.assertEqual(motif.instances[3].length, 10)
self.assertEqual(motif.instances[4].length, 10)
self.assertEqual(motif.instances[5].length, 10)
self.assertEqual(motif.instances[6].length, 10)
self.assertEqual(motif.instances[0].start, 186)
self.assertEqual(motif.instances[1].start, 232)
self.assertEqual(motif.instances[2].start, 559)
self.assertEqual(motif.instances[3].start, 283)
self.assertEqual(motif.instances[4].start, 44)
self.assertEqual(motif.instances[5].start, 185)
self.assertEqual(motif.instances[6].start, 413)
self.assertEqual(motif.instances[0].data, "TCTGGCACAG")
self.assertEqual(motif.instances[1].data, "TCTGGCACAG")
self.assertEqual(motif.instances[2].data, "TCTGGCACAG")
self.assertEqual(motif.instances[3].data, "GCGGGCGCAG")
self.assertEqual(motif.instances[4].data, "GCAGGCACGG")
self.assertEqual(motif.instances[5].data, "TCTGGCACTC")
self.assertEqual(motif.instances[6].data, "TCTGGCATCG")
handle.close()
def test_meme_parser_3(self):
"""Test if Motif can parse MEME output files (third test)
"""
from Bio.Alphabet import IUPAC
from Bio.Motif.Parsers import MEME
handle = open("Motif/meme.protein.oops.txt")
record = MEME.read(handle)
self.assertEqual(record.version, '3.0')
self.assertEqual(record.datafile, 'adh.s')
self.assertEqual(record.alphabet, IUPAC.protein)
self.assertEqual(len(record.sequence_names), 33)
self.assertEqual(record.sequence_names[0], "2BHD_STREX")
self.assertEqual(record.sequence_names[1], "3BHD_COMTE")
self.assertEqual(record.sequence_names[2], "ADH_DROME")
self.assertEqual(record.sequence_names[3], "AP27_MOUSE")
self.assertEqual(record.sequence_names[4], "BA72_EUBSP")
self.assertEqual(record.sequence_names[5], "BDH_HUMAN")
self.assertEqual(record.sequence_names[6], "BPHB_PSEPS")
self.assertEqual(record.sequence_names[7], "BUDC_KLETE")
self.assertEqual(record.sequence_names[8], "DHES_HUMAN")
self.assertEqual(record.sequence_names[9], "DHGB_BACME")
self.assertEqual(record.sequence_names[10], "DHII_HUMAN")
self.assertEqual(record.sequence_names[11], "DHMA_FLAS1")
self.assertEqual(record.sequence_names[12], "ENTA_ECOLI")
self.assertEqual(record.sequence_names[13], "FIXR_BRAJA")
self.assertEqual(record.sequence_names[14], "GUTD_ECOLI")
self.assertEqual(record.sequence_names[15], "HDE_CANTR")
self.assertEqual(record.sequence_names[16], "HDHA_ECOLI")
self.assertEqual(record.sequence_names[17], "LIGD_PSEPA")
self.assertEqual(record.sequence_names[18], "NODG_RHIME")
self.assertEqual(record.sequence_names[19], "RIDH_KLEAE")
self.assertEqual(record.sequence_names[20], "YINL_LISMO")
self.assertEqual(record.sequence_names[21], "YRTP_BACSU")
self.assertEqual(record.sequence_names[22], "CSGA_MYXXA")
self.assertEqual(record.sequence_names[23], "DHB2_HUMAN")
self.assertEqual(record.sequence_names[24], "DHB3_HUMAN")
self.assertEqual(record.sequence_names[25], "DHCA_HUMAN")
self.assertEqual(record.sequence_names[26], "FABI_ECOLI")
self.assertEqual(record.sequence_names[27], "FVT1_HUMAN")
self.assertEqual(record.sequence_names[28], "HMTR_LEIMA")
self.assertEqual(record.sequence_names[29], "MAS1_AGRRA")
self.assertEqual(record.sequence_names[30], "PCR_PEA")
self.assertEqual(record.sequence_names[31], "RFBB_NEIGO")
self.assertEqual(record.sequence_names[32], "YURA_MYXXA")
self.assertEqual(record.command, 'meme adh.s -mod oops -protein -nmotifs 2')
self.assertEqual(len(record.motifs), 2)
motif = record.motifs[0]
self.assertEqual(motif.num_occurrences, 33)
self.assertAlmostEqual(motif.evalue, 3.6e-165)
self.assertEqual(motif.alphabet, IUPAC.protein)
self.assertEqual(motif.name, "Motif 1")
self.assertEqual(len(motif.instances), 33)
self.assertAlmostEqual(motif.instances[0].pvalue, 1.64e-22)
self.assertAlmostEqual(motif.instances[1].pvalue, 6.32e-22)
self.assertAlmostEqual(motif.instances[2].pvalue, 1.13e-21)
self.assertAlmostEqual(motif.instances[3].pvalue, 4.04e-21)
self.assertAlmostEqual(motif.instances[4].pvalue, 6.12e-21)
self.assertAlmostEqual(motif.instances[5].pvalue, 7.52e-20)
self.assertAlmostEqual(motif.instances[6].pvalue, 3.35e-19)
self.assertAlmostEqual(motif.instances[7].pvalue, 4.82e-19)
self.assertAlmostEqual(motif.instances[8].pvalue, 4.82e-19)
self.assertAlmostEqual(motif.instances[9].pvalue, 1.11e-18)
self.assertAlmostEqual(motif.instances[10].pvalue, 1.25e-18)
self.assertAlmostEqual(motif.instances[11].pvalue, 2.23e-18)
self.assertAlmostEqual(motif.instances[12].pvalue, 5.53e-18)
self.assertAlmostEqual(motif.instances[13].pvalue, 9.65e-18)
self.assertAlmostEqual(motif.instances[14].pvalue, 2.86e-17)
self.assertAlmostEqual(motif.instances[15].pvalue, 8.20e-17)
self.assertAlmostEqual(motif.instances[16].pvalue, 9.09e-17)
self.assertAlmostEqual(motif.instances[17].pvalue, 1.37e-16)
self.assertAlmostEqual(motif.instances[18].pvalue, 2.52e-16)
self.assertAlmostEqual(motif.instances[19].pvalue, 1.21e-15)
self.assertAlmostEqual(motif.instances[20].pvalue, 1.61e-15)
self.assertAlmostEqual(motif.instances[21].pvalue, 1.77e-15)
self.assertAlmostEqual(motif.instances[22].pvalue, 7.81e-15)
self.assertAlmostEqual(motif.instances[23].pvalue, 8.55e-15)
self.assertAlmostEqual(motif.instances[24].pvalue, 1.47e-14)
self.assertAlmostEqual(motif.instances[25].pvalue, 3.24e-14)
self.assertAlmostEqual(motif.instances[26].pvalue, 1.80e-12)
self.assertAlmostEqual(motif.instances[27].pvalue, 2.10e-12)
self.assertAlmostEqual(motif.instances[28].pvalue, 4.15e-12)
self.assertAlmostEqual(motif.instances[29].pvalue, 5.20e-12)
self.assertAlmostEqual(motif.instances[30].pvalue, 4.80e-10)
self.assertAlmostEqual(motif.instances[31].pvalue, 2.77e-08)
self.assertAlmostEqual(motif.instances[32].pvalue, 5.72e-08)
self.assertEqual(motif.instances[0].sequence_name, 'YRTP_BACSU')
self.assertEqual(motif.instances[1].sequence_name, 'AP27_MOUSE')
self.assertEqual(motif.instances[2].sequence_name, 'NODG_RHIME')
self.assertEqual(motif.instances[3].sequence_name, 'BUDC_KLETE')
self.assertEqual(motif.instances[4].sequence_name, 'FIXR_BRAJA')
self.assertEqual(motif.instances[5].sequence_name, 'DHGB_BACME')
self.assertEqual(motif.instances[6].sequence_name, 'HMTR_LEIMA')
self.assertEqual(motif.instances[7].sequence_name, 'YURA_MYXXA')
self.assertEqual(motif.instances[8].sequence_name, 'GUTD_ECOLI')
self.assertEqual(motif.instances[9].sequence_name, '2BHD_STREX')
self.assertEqual(motif.instances[10].sequence_name, 'HDHA_ECOLI')
self.assertEqual(motif.instances[11].sequence_name, 'DHB2_HUMAN')
self.assertEqual(motif.instances[12].sequence_name, 'DHMA_FLAS1')
self.assertEqual(motif.instances[13].sequence_name, 'HDE_CANTR')
self.assertEqual(motif.instances[14].sequence_name, 'FVT1_HUMAN')
self.assertEqual(motif.instances[15].sequence_name, 'BDH_HUMAN')
self.assertEqual(motif.instances[16].sequence_name, 'RIDH_KLEAE')
self.assertEqual(motif.instances[17].sequence_name, 'DHES_HUMAN')
self.assertEqual(motif.instances[18].sequence_name, 'BA72_EUBSP')
self.assertEqual(motif.instances[19].sequence_name, 'LIGD_PSEPA')
self.assertEqual(motif.instances[20].sequence_name, 'DHII_HUMAN')
self.assertEqual(motif.instances[21].sequence_name, 'ENTA_ECOLI')
self.assertEqual(motif.instances[22].sequence_name, '3BHD_COMTE')
self.assertEqual(motif.instances[23].sequence_name, 'DHB3_HUMAN')
self.assertEqual(motif.instances[24].sequence_name, 'RFBB_NEIGO')
self.assertEqual(motif.instances[25].sequence_name, 'YINL_LISMO')
self.assertEqual(motif.instances[26].sequence_name, 'BPHB_PSEPS')
self.assertEqual(motif.instances[27].sequence_name, 'CSGA_MYXXA')
self.assertEqual(motif.instances[28].sequence_name, 'FABI_ECOLI')
self.assertEqual(motif.instances[29].sequence_name, 'ADH_DROME')
self.assertEqual(motif.instances[30].sequence_name, 'DHCA_HUMAN')
self.assertEqual(motif.instances[31].sequence_name, 'PCR_PEA')
self.assertEqual(motif.instances[32].sequence_name, 'MAS1_AGRRA')
self.assertEqual(motif.instances[0].strand, '+')
self.assertEqual(motif.instances[1].strand, '+')
self.assertEqual(motif.instances[2].strand, '+')
self.assertEqual(motif.instances[3].strand, '+')
self.assertEqual(motif.instances[4].strand, '+')
self.assertEqual(motif.instances[5].strand, '+')
self.assertEqual(motif.instances[6].strand, '+')
self.assertEqual(motif.instances[7].strand, '+')
self.assertEqual(motif.instances[8].strand, '+')
self.assertEqual(motif.instances[9].strand, '+')
self.assertEqual(motif.instances[10].strand, '+')
self.assertEqual(motif.instances[11].strand, '+')
self.assertEqual(motif.instances[12].strand, '+')
self.assertEqual(motif.instances[13].strand, '+')
self.assertEqual(motif.instances[14].strand, '+')
self.assertEqual(motif.instances[15].strand, '+')
self.assertEqual(motif.instances[16].strand, '+')
self.assertEqual(motif.instances[17].strand, '+')
self.assertEqual(motif.instances[18].strand, '+')
self.assertEqual(motif.instances[19].strand, '+')
self.assertEqual(motif.instances[20].strand, '+')
self.assertEqual(motif.instances[21].strand, '+')
self.assertEqual(motif.instances[22].strand, '+')
self.assertEqual(motif.instances[23].strand, '+')
self.assertEqual(motif.instances[24].strand, '+')
self.assertEqual(motif.instances[25].strand, '+')
self.assertEqual(motif.instances[26].strand, '+')
self.assertEqual(motif.instances[27].strand, '+')
self.assertEqual(motif.instances[28].strand, '+')
self.assertEqual(motif.instances[29].strand, '+')
self.assertEqual(motif.instances[30].strand, '+')
self.assertEqual(motif.instances[31].strand, '+')
self.assertEqual(motif.instances[32].strand, '+')
self.assertEqual(motif.instances[0].length, 29)
self.assertEqual(motif.instances[1].length, 29)
self.assertEqual(motif.instances[2].length, 29)
self.assertEqual(motif.instances[3].length, 29)
self.assertEqual(motif.instances[4].length, 29)
self.assertEqual(motif.instances[5].length, 29)
self.assertEqual(motif.instances[6].length, 29)
self.assertEqual(motif.instances[7].length, 29)
self.assertEqual(motif.instances[8].length, 29)
self.assertEqual(motif.instances[9].length, 29)
self.assertEqual(motif.instances[10].length, 29)
self.assertEqual(motif.instances[11].length, 29)
self.assertEqual(motif.instances[12].length, 29)
self.assertEqual(motif.instances[13].length, 29)
self.assertEqual(motif.instances[14].length, 29)
self.assertEqual(motif.instances[15].length, 29)
self.assertEqual(motif.instances[16].length, 29)
self.assertEqual(motif.instances[17].length, 29)
self.assertEqual(motif.instances[18].length, 29)
self.assertEqual(motif.instances[19].length, 29)
self.assertEqual(motif.instances[20].length, 29)
self.assertEqual(motif.instances[21].length, 29)
self.assertEqual(motif.instances[22].length, 29)
self.assertEqual(motif.instances[23].length, 29)
self.assertEqual(motif.instances[24].length, 29)
self.assertEqual(motif.instances[25].length, 29)
self.assertEqual(motif.instances[26].length, 29)
self.assertEqual(motif.instances[27].length, 29)
self.assertEqual(motif.instances[28].length, 29)
self.assertEqual(motif.instances[29].length, 29)
self.assertEqual(motif.instances[30].length, 29)
self.assertEqual(motif.instances[31].length, 29)
self.assertEqual(motif.instances[32].length, 29)
self.assertEqual(motif.instances[0].start, 155)
self.assertEqual(motif.instances[1].start, 149)
self.assertEqual(motif.instances[2].start, 152)
self.assertEqual(motif.instances[3].start, 152)
self.assertEqual(motif.instances[4].start, 189)
self.assertEqual(motif.instances[5].start, 160)
self.assertEqual(motif.instances[6].start, 193)
self.assertEqual(motif.instances[7].start, 160)
self.assertEqual(motif.instances[8].start, 154)
self.assertEqual(motif.instances[9].start, 152)
self.assertEqual(motif.instances[10].start, 159)
self.assertEqual(motif.instances[11].start, 232)
self.assertEqual(motif.instances[12].start, 165)
self.assertEqual(motif.instances[13].start, 467)
self.assertEqual(motif.instances[14].start, 186)
self.assertEqual(motif.instances[15].start, 208)
self.assertEqual(motif.instances[16].start, 160)
self.assertEqual(motif.instances[17].start, 155)
self.assertEqual(motif.instances[18].start, 157)
self.assertEqual(motif.instances[19].start, 157)
self.assertEqual(motif.instances[20].start, 183)
self.assertEqual(motif.instances[21].start, 144)
self.assertEqual(motif.instances[22].start, 151)
self.assertEqual(motif.instances[23].start, 198)
self.assertEqual(motif.instances[24].start, 165)
self.assertEqual(motif.instances[25].start, 154)
self.assertEqual(motif.instances[26].start, 153)
self.assertEqual(motif.instances[27].start, 88)
self.assertEqual(motif.instances[28].start, 159)
self.assertEqual(motif.instances[29].start, 152)
self.assertEqual(motif.instances[30].start, 193)
self.assertEqual(motif.instances[31].start, 26)
self.assertEqual(motif.instances[32].start, 349)
self.assertEqual(motif.instances[0].data, "YSASKFAVLGLTESLMQEVRKHNIRVSAL")
self.assertEqual(motif.instances[1].data, "YSSTKGAMTMLTKAMAMELGPHKIRVNSV")
self.assertEqual(motif.instances[2].data, "YCASKAGMIGFSKSLAQEIATRNITVNCV")
self.assertEqual(motif.instances[3].data, "YSSSKFAVRGLTQTAARDLAPLGITVNGF")
self.assertEqual(motif.instances[4].data, "YATSKAALASLTRELAHDYAPHGIRVNAI")
self.assertEqual(motif.instances[5].data, "YAASKGGMKLMTETLALEYAPKGIRVNNI")
self.assertEqual(motif.instances[6].data, "YTMAKGALEGLTRSAALELAPLQIRVNGV")
self.assertEqual(motif.instances[7].data, "YSASKAFLSTFMESLRVDLRGTGVRVTCI")
self.assertEqual(motif.instances[8].data, "YSAAKFGGVGLTQSLALDLAEYGITVHSL")
self.assertEqual(motif.instances[9].data, "YGASKWGVRGLSKLAAVELGTDRIRVNSV")
self.assertEqual(motif.instances[10].data, "YASSKAAASHLVRNMAFDLGEKNIRVNGI")
self.assertEqual(motif.instances[11].data, "YGSSKAAVTMFSSVMRLELSKWGIKVASI")
self.assertEqual(motif.instances[12].data, "YVAAKGGVAMLTRAMAVDLARHGILVNMI")
self.assertEqual(motif.instances[13].data, "YSSSKAGILGLSKTMAIEGAKNNIKVNIV")
self.assertEqual(motif.instances[14].data, "YSASKFAIRGLAEALQMEVKPYNVYITVA")
self.assertEqual(motif.instances[15].data, "YCITKFGVEAFSDCLRYEMYPLGVKVSVV")
self.assertEqual(motif.instances[16].data, "YTASKFAVQAFVHTTRRQVAQYGVRVGAV")
self.assertEqual(motif.instances[17].data, "YCASKFALEGLCESLAVLLLPFGVHLSLI")
self.assertEqual(motif.instances[18].data, "YPASKASVIGLTHGLGREIIRKNIRVVGV")
self.assertEqual(motif.instances[19].data, "YSAAKAASINLMEGYRQGLEKYGIGVSVC")
self.assertEqual(motif.instances[20].data, "YSASKFALDGFFSSIRKEYSVSRVNVSIT")
self.assertEqual(motif.instances[21].data, "YGASKAALKSLALSVGLELAGSGVRCNVV")
self.assertEqual(motif.instances[22].data, "YSASKAAVSALTRAAALSCRKQGYAIRVN")
self.assertEqual(motif.instances[23].data, "YSASKAFVCAFSKALQEEYKAKEVIIQVL")
self.assertEqual(motif.instances[24].data, "YSASKAAADHLVRAWQRTYRLPSIVSNCS")
self.assertEqual(motif.instances[25].data, "YGATKWAVRDLMEVLRMESAQEGTNIRTA")
self.assertEqual(motif.instances[26].data, "YTAAKQAIVGLVRELAFELAPYVRVNGVG")
self.assertEqual(motif.instances[27].data, "YRMSKAALNMAVRSMSTDLRPEGFVTVLL")
self.assertEqual(motif.instances[28].data, "MGLAKASLEANVRYMANAMGPEGVRVNAI")
self.assertEqual(motif.instances[29].data, "YSGTKAAVVNFTSSLAKLAPITGVTAYTV")
self.assertEqual(motif.instances[30].data, "YGVTKIGVTVLSRIHARKLSEQRKGDKIL")
self.assertEqual(motif.instances[31].data, "KDSTLFGVSSLSDSLKGDFTSSALRCKEL")
self.assertEqual(motif.instances[32].data, "YINCVAPLRMTELCLPHLYETGSGRIVNI")
motif = record.motifs[1]
self.assertEqual(motif.num_occurrences, 33)
self.assertAlmostEqual(motif.evalue, 2.3e-159)
self.assertEqual(motif.alphabet, IUPAC.protein)
self.assertEqual(motif.name, "Motif 2")
self.assertEqual(len(motif.instances), 33)
self.assertAlmostEqual(motif.instances[0].pvalue, 2.44e-23)
self.assertAlmostEqual(motif.instances[1].pvalue, 5.50e-23)
self.assertAlmostEqual(motif.instances[2].pvalue, 5.38e-22)
self.assertAlmostEqual(motif.instances[3].pvalue, 5.65e-20)
self.assertAlmostEqual(motif.instances[4].pvalue, 1.17e-19)
self.assertAlmostEqual(motif.instances[5].pvalue, 1.17e-19)
self.assertAlmostEqual(motif.instances[6].pvalue, 4.74e-19)
self.assertAlmostEqual(motif.instances[7].pvalue, 9.31e-19)
self.assertAlmostEqual(motif.instances[8].pvalue, 2.50e-18)
self.assertAlmostEqual(motif.instances[9].pvalue, 3.45e-18)
self.assertAlmostEqual(motif.instances[10].pvalue, 5.86e-18)
self.assertAlmostEqual(motif.instances[11].pvalue, 9.86e-18)
self.assertAlmostEqual(motif.instances[12].pvalue, 2.47e-17)
self.assertAlmostEqual(motif.instances[13].pvalue, 3.01e-17)
self.assertAlmostEqual(motif.instances[14].pvalue, 3.33e-17)
self.assertAlmostEqual(motif.instances[15].pvalue, 4.06e-17)
self.assertAlmostEqual(motif.instances[16].pvalue, 4.06e-17)
self.assertAlmostEqual(motif.instances[17].pvalue, 8.05e-17)
self.assertAlmostEqual(motif.instances[18].pvalue, 1.90e-16)
self.assertAlmostEqual(motif.instances[19].pvalue, 2.77e-16)
self.assertAlmostEqual(motif.instances[20].pvalue, 3.65e-16)
self.assertAlmostEqual(motif.instances[21].pvalue, 8.31e-16)
self.assertAlmostEqual(motif.instances[22].pvalue, 4.05e-15)
self.assertAlmostEqual(motif.instances[23].pvalue, 5.24e-15)
self.assertAlmostEqual(motif.instances[24].pvalue, 3.00e-14)
self.assertAlmostEqual(motif.instances[25].pvalue, 8.47e-14)
self.assertAlmostEqual(motif.instances[26].pvalue, 1.46e-13)
self.assertAlmostEqual(motif.instances[27].pvalue, 1.46e-13)
self.assertAlmostEqual(motif.instances[28].pvalue, 1.59e-12)
self.assertAlmostEqual(motif.instances[29].pvalue, 6.97e-10)
self.assertAlmostEqual(motif.instances[30].pvalue, 3.15e-09)
self.assertAlmostEqual(motif.instances[31].pvalue, 2.77e-07)
self.assertAlmostEqual(motif.instances[32].pvalue, 4.24e-07)
self.assertEqual(motif.instances[0].sequence_name, 'HDE_CANTR')
self.assertEqual(motif.instances[1].sequence_name, 'DHII_HUMAN')
self.assertEqual(motif.instances[2].sequence_name, 'YINL_LISMO')
self.assertEqual(motif.instances[3].sequence_name, 'HDHA_ECOLI')
self.assertEqual(motif.instances[4].sequence_name, 'RIDH_KLEAE')
self.assertEqual(motif.instances[5].sequence_name, 'BUDC_KLETE')
self.assertEqual(motif.instances[6].sequence_name, 'ENTA_ECOLI')
self.assertEqual(motif.instances[7].sequence_name, 'AP27_MOUSE')
self.assertEqual(motif.instances[8].sequence_name, 'DHMA_FLAS1')
self.assertEqual(motif.instances[9].sequence_name, 'YRTP_BACSU')
self.assertEqual(motif.instances[10].sequence_name, 'DHGB_BACME')
self.assertEqual(motif.instances[11].sequence_name, 'DHB3_HUMAN')
self.assertEqual(motif.instances[12].sequence_name, 'PCR_PEA')
self.assertEqual(motif.instances[13].sequence_name, 'BDH_HUMAN')
self.assertEqual(motif.instances[14].sequence_name, 'BA72_EUBSP')
self.assertEqual(motif.instances[15].sequence_name, 'FIXR_BRAJA')
self.assertEqual(motif.instances[16].sequence_name, '3BHD_COMTE')
self.assertEqual(motif.instances[17].sequence_name, '2BHD_STREX')
self.assertEqual(motif.instances[18].sequence_name, 'HMTR_LEIMA')
self.assertEqual(motif.instances[19].sequence_name, 'FVT1_HUMAN')
self.assertEqual(motif.instances[20].sequence_name, 'DHB2_HUMAN')
self.assertEqual(motif.instances[21].sequence_name, 'LIGD_PSEPA')
self.assertEqual(motif.instances[22].sequence_name, 'NODG_RHIME')
self.assertEqual(motif.instances[23].sequence_name, 'DHCA_HUMAN')
self.assertEqual(motif.instances[24].sequence_name, 'MAS1_AGRRA')
self.assertEqual(motif.instances[25].sequence_name, 'BPHB_PSEPS')
self.assertEqual(motif.instances[26].sequence_name, 'GUTD_ECOLI')
self.assertEqual(motif.instances[27].sequence_name, 'DHES_HUMAN')
self.assertEqual(motif.instances[28].sequence_name, 'RFBB_NEIGO')
self.assertEqual(motif.instances[29].sequence_name, 'ADH_DROME')
self.assertEqual(motif.instances[30].sequence_name, 'FABI_ECOLI')
self.assertEqual(motif.instances[31].sequence_name, 'YURA_MYXXA')
self.assertEqual(motif.instances[32].sequence_name, 'CSGA_MYXXA')
self.assertEqual(motif.instances[0].start, 323)
self.assertEqual(motif.instances[1].start, 35)
self.assertEqual(motif.instances[2].start, 6)
self.assertEqual(motif.instances[3].start, 12)
self.assertEqual(motif.instances[4].start, 15)
self.assertEqual(motif.instances[5].start, 3)
self.assertEqual(motif.instances[6].start, 6)
self.assertEqual(motif.instances[7].start, 8)
self.assertEqual(motif.instances[8].start, 15)
self.assertEqual(motif.instances[9].start, 7)
self.assertEqual(motif.instances[10].start, 8)
self.assertEqual(motif.instances[11].start, 49)
self.assertEqual(motif.instances[12].start, 87)
self.assertEqual(motif.instances[13].start, 56)
self.assertEqual(motif.instances[14].start, 7)
self.assertEqual(motif.instances[15].start, 37)
self.assertEqual(motif.instances[16].start, 7)
self.assertEqual(motif.instances[17].start, 7)
self.assertEqual(motif.instances[18].start, 7)
self.assertEqual(motif.instances[19].start, 33)
self.assertEqual(motif.instances[20].start, 83)
self.assertEqual(motif.instances[21].start, 7)
self.assertEqual(motif.instances[22].start, 7)
self.assertEqual(motif.instances[23].start, 5)
self.assertEqual(motif.instances[24].start, 246)
self.assertEqual(motif.instances[25].start, 6)
self.assertEqual(motif.instances[26].start, 3)
self.assertEqual(motif.instances[27].start, 3)
self.assertEqual(motif.instances[28].start, 7)
self.assertEqual(motif.instances[29].start, 7)
self.assertEqual(motif.instances[30].start, 7)
self.assertEqual(motif.instances[31].start, 117)
self.assertEqual(motif.instances[32].start, 52)
self.assertEqual(motif.instances[0].data, 'KVVLITGAGAGLGKEYAKWFAKYGAKVVV')
self.assertEqual(motif.instances[1].data, 'KKVIVTGASKGIGREMAYHLAKMGAHVVV')
self.assertEqual(motif.instances[2].data, 'KVIIITGASSGIGKATALLLAEKGAKLVL')
self.assertEqual(motif.instances[3].data, 'KCAIITGAGAGIGKEIAITFATAGASVVV')
self.assertEqual(motif.instances[4].data, 'KVAAITGAASGIGLECARTLLGAGAKVVL')
self.assertEqual(motif.instances[5].data, 'KVALVTGAGQGIGKAIALRLVKDGFAVAI')
self.assertEqual(motif.instances[6].data, 'KNVWVTGAGKGIGYATALAFVEAGAKVTG')
self.assertEqual(motif.instances[7].data, 'LRALVTGAGKGIGRDTVKALHASGAKVVA')
self.assertEqual(motif.instances[8].data, 'KAAIVTGAAGGIGRATVEAYLREGASVVA')
self.assertEqual(motif.instances[9].data, 'KTALITGGGRGIGRATALALAKEGVNIGL')
self.assertEqual(motif.instances[10].data, 'KVVVITGSSTGLGKSMAIRFATEKAKVVV')
self.assertEqual(motif.instances[11].data, 'QWAVITGAGDGIGKAYSFELAKRGLNVVL')
self.assertEqual(motif.instances[12].data, 'GNVVITGASSGLGLATAKALAESGKWHVI')
self.assertEqual(motif.instances[13].data, 'KAVLVTGCDSGFGFSLAKHLHSKGFLVFA')
self.assertEqual(motif.instances[14].data, 'KVTIITGGTRGIGFAAAKIFIDNGAKVSI')
self.assertEqual(motif.instances[15].data, 'KVMLLTGASRGIGHATAKLFSEAGWRIIS')
self.assertEqual(motif.instances[16].data, 'KVALVTGGASGVGLEVVKLLLGEGAKVAF')
self.assertEqual(motif.instances[17].data, 'KTVIITGGARGLGAEAARQAVAAGARVVL')
self.assertEqual(motif.instances[18].data, 'PVALVTGAAKRLGRSIAEGLHAEGYAVCL')
self.assertEqual(motif.instances[19].data, 'AHVVVTGGSSGIGKCIAIECYKQGAFITL')
self.assertEqual(motif.instances[20].data, 'KAVLVTGGDCGLGHALCKYLDELGFTVFA')
self.assertEqual(motif.instances[21].data, 'QVAFITGGASGAGFGQAKVFGQAGAKIVV')
self.assertEqual(motif.instances[22].data, 'RKALVTGASGAIGGAIARVLHAQGAIVGL')
self.assertEqual(motif.instances[23].data, 'HVALVTGGNKGIGLAIVRDLCRLFSGDVV')
self.assertEqual(motif.instances[24].data, 'PVILVSGSNRGVGKAIAEDLIAHGYRLSL')
self.assertEqual(motif.instances[25].data, 'EAVLITGGASGLGRALVDRFVAEAKVAVL')
self.assertEqual(motif.instances[26].data, 'QVAVVIGGGQTLGAFLCHGLAAEGYRVAV')
self.assertEqual(motif.instances[27].data, 'TVVLITGCSSGIGLHLAVRLASDPSQSFK')
self.assertEqual(motif.instances[28].data, 'KNILVTGGAGFIGSAVVRHIIQNTRDSVV')
self.assertEqual(motif.instances[29].data, 'KNVIFVAGLGGIGLDTSKELLKRDLKNLV')
self.assertEqual(motif.instances[30].data, 'KRILVTGVASKLSIAYGIAQAMHREGAEL')
self.assertEqual(motif.instances[31].data, 'IDTNVTGAAATLSAVLPQMVERKRGHLVG')
self.assertEqual(motif.instances[32].data, 'TSAMLPGLRQGALRRVAHVTSRMGSLAAN')
handle.close()
def test_meme_parser_4(self):
"""Test if Motif can parse MEME output files (fourth test)
"""
from Bio.Alphabet import IUPAC
from Bio.Motif.Parsers import MEME
handle = open("Motif/meme.protein.tcm.txt")
record = MEME.read(handle)
self.assertEqual(record.version, '3.0')
self.assertEqual(record.datafile, 'farntrans5.s')
self.assertEqual(record.alphabet, IUPAC.protein)
self.assertEqual(len(record.sequence_names), 5)
self.assertEqual(record.sequence_names[0], "RAM1_YEAST")
self.assertEqual(record.sequence_names[1], "PFTB_RAT")
self.assertEqual(record.sequence_names[2], "BET2_YEAST")
self.assertEqual(record.sequence_names[3], "RATRABGERB")
self.assertEqual(record.sequence_names[4], "CAL1_YEAST")
self.assertEqual(record.command, 'meme farntrans5.s -mod tcm -protein -nmotifs 2')
self.assertEqual(len(record.motifs), 2)
motif = record.motifs[0]
self.assertEqual(motif.num_occurrences, 24)
self.assertAlmostEqual(motif.evalue, 2.2e-94)
self.assertEqual(motif.alphabet, IUPAC.protein)
self.assertEqual(motif.name, "Motif 1")
self.assertEqual(len(motif.instances), 24)
self.assertAlmostEqual(motif.instances[0].pvalue, 7.28e-22)
self.assertAlmostEqual(motif.instances[1].pvalue, 6.18e-21)
self.assertAlmostEqual(motif.instances[2].pvalue, 9.17e-20)
self.assertAlmostEqual(motif.instances[3].pvalue, 1.15e-19)
self.assertAlmostEqual(motif.instances[4].pvalue, 4.30e-19)
self.assertAlmostEqual(motif.instances[5].pvalue, 7.36e-19)
self.assertAlmostEqual(motif.instances[6].pvalue, 8.19e-19)
self.assertAlmostEqual(motif.instances[7].pvalue, 2.10e-18)
self.assertAlmostEqual(motif.instances[8].pvalue, 1.43e-17)
self.assertAlmostEqual(motif.instances[9].pvalue, 3.41e-17)
self.assertAlmostEqual(motif.instances[10].pvalue, 5.00e-17)
self.assertAlmostEqual(motif.instances[11].pvalue, 6.64e-17)
self.assertAlmostEqual(motif.instances[12].pvalue, 1.27e-16)
self.assertAlmostEqual(motif.instances[13].pvalue, 3.17e-16)
self.assertAlmostEqual(motif.instances[14].pvalue, 3.47e-16)
self.assertAlmostEqual(motif.instances[15].pvalue, 4.30e-15)
self.assertAlmostEqual(motif.instances[16].pvalue, 2.40e-14)
self.assertAlmostEqual(motif.instances[17].pvalue, 2.81e-14)
self.assertAlmostEqual(motif.instances[18].pvalue, 7.78e-14)
self.assertAlmostEqual(motif.instances[19].pvalue, 1.14e-13)
self.assertAlmostEqual(motif.instances[20].pvalue, 1.33e-13)
self.assertAlmostEqual(motif.instances[21].pvalue, 3.52e-13)
self.assertAlmostEqual(motif.instances[22].pvalue, 5.47e-13)
self.assertAlmostEqual(motif.instances[23].pvalue, 3.11e-10)
self.assertEqual(motif.instances[0].sequence_name, "BET2_YEAST")
self.assertEqual(motif.instances[1].sequence_name, "RATRABGERB")
self.assertEqual(motif.instances[2].sequence_name, "CAL1_YEAST")
self.assertEqual(motif.instances[3].sequence_name, "PFTB_RAT")
self.assertEqual(motif.instances[4].sequence_name, "PFTB_RAT")
self.assertEqual(motif.instances[5].sequence_name, "RATRABGERB")
self.assertEqual(motif.instances[6].sequence_name, "RATRABGERB")
self.assertEqual(motif.instances[7].sequence_name, "BET2_YEAST")
self.assertEqual(motif.instances[8].sequence_name, "RATRABGERB")
self.assertEqual(motif.instances[9].sequence_name, "BET2_YEAST")
self.assertEqual(motif.instances[10].sequence_name, "RAM1_YEAST")
self.assertEqual(motif.instances[11].sequence_name, "BET2_YEAST")
self.assertEqual(motif.instances[12].sequence_name, "RAM1_YEAST")
self.assertEqual(motif.instances[13].sequence_name, "PFTB_RAT")
self.assertEqual(motif.instances[14].sequence_name, "RAM1_YEAST")
self.assertEqual(motif.instances[15].sequence_name, "PFTB_RAT")
self.assertEqual(motif.instances[16].sequence_name, "RATRABGERB")
self.assertEqual(motif.instances[17].sequence_name, "PFTB_RAT")
self.assertEqual(motif.instances[18].sequence_name, "BET2_YEAST")
self.assertEqual(motif.instances[19].sequence_name, "CAL1_YEAST")
self.assertEqual(motif.instances[20].sequence_name, "RAM1_YEAST")
self.assertEqual(motif.instances[21].sequence_name, "RAM1_YEAST")
self.assertEqual(motif.instances[22].sequence_name, "CAL1_YEAST")
self.assertEqual(motif.instances[23].sequence_name, "BET2_YEAST")
self.assertEqual(motif.instances[0].strand, '+')
self.assertEqual(motif.instances[1].strand, '+')
self.assertEqual(motif.instances[2].strand, '+')
self.assertEqual(motif.instances[3].strand, '+')
self.assertEqual(motif.instances[4].strand, '+')
self.assertEqual(motif.instances[5].strand, '+')
self.assertEqual(motif.instances[6].strand, '+')
self.assertEqual(motif.instances[7].strand, '+')
self.assertEqual(motif.instances[8].strand, '+')
self.assertEqual(motif.instances[9].strand, '+')
self.assertEqual(motif.instances[10].strand, '+')
self.assertEqual(motif.instances[11].strand, '+')
self.assertEqual(motif.instances[12].strand, '+')
self.assertEqual(motif.instances[13].strand, '+')
self.assertEqual(motif.instances[14].strand, '+')
self.assertEqual(motif.instances[15].strand, '+')
self.assertEqual(motif.instances[16].strand, '+')
self.assertEqual(motif.instances[17].strand, '+')
self.assertEqual(motif.instances[18].strand, '+')
self.assertEqual(motif.instances[19].strand, '+')
self.assertEqual(motif.instances[20].strand, '+')
self.assertEqual(motif.instances[21].strand, '+')
self.assertEqual(motif.instances[22].strand, '+')
self.assertEqual(motif.instances[23].strand, '+')
self.assertEqual(motif.instances[0].length, 30)
self.assertEqual(motif.instances[1].length, 30)
self.assertEqual(motif.instances[2].length, 30)
self.assertEqual(motif.instances[3].length, 30)
self.assertEqual(motif.instances[4].length, 30)
self.assertEqual(motif.instances[5].length, 30)
self.assertEqual(motif.instances[6].length, 30)
self.assertEqual(motif.instances[7].length, 30)
self.assertEqual(motif.instances[8].length, 30)
self.assertEqual(motif.instances[9].length, 30)
self.assertEqual(motif.instances[10].length, 30)
self.assertEqual(motif.instances[11].length, 30)
self.assertEqual(motif.instances[12].length, 30)
self.assertEqual(motif.instances[13].length, 30)
self.assertEqual(motif.instances[14].length, 30)
self.assertEqual(motif.instances[15].length, 30)
self.assertEqual(motif.instances[16].length, 30)
self.assertEqual(motif.instances[17].length, 30)
self.assertEqual(motif.instances[18].length, 30)
self.assertEqual(motif.instances[19].length, 30)
self.assertEqual(motif.instances[20].length, 30)
self.assertEqual(motif.instances[21].length, 30)
self.assertEqual(motif.instances[22].length, 30)
self.assertEqual(motif.instances[23].length, 30)
self.assertEqual(motif.instances[0].start, 223)
self.assertEqual(motif.instances[1].start, 227)
self.assertEqual(motif.instances[2].start, 275)
self.assertEqual(motif.instances[3].start, 237)
self.assertEqual(motif.instances[4].start, 138)
self.assertEqual(motif.instances[5].start, 179)
self.assertEqual(motif.instances[6].start, 131)
self.assertEqual(motif.instances[7].start, 172)
self.assertEqual(motif.instances[8].start, 276)
self.assertEqual(motif.instances[9].start, 124)
self.assertEqual(motif.instances[10].start, 247)
self.assertEqual(motif.instances[11].start, 272)
self.assertEqual(motif.instances[12].start, 145)
self.assertEqual(motif.instances[13].start, 286)
self.assertEqual(motif.instances[14].start, 296)
self.assertEqual(motif.instances[15].start, 348)
self.assertEqual(motif.instances[16].start, 83)
self.assertEqual(motif.instances[17].start, 189)
self.assertEqual(motif.instances[18].start, 73)
self.assertEqual(motif.instances[19].start, 205)
self.assertEqual(motif.instances[20].start, 198)
self.assertEqual(motif.instances[21].start, 349)
self.assertEqual(motif.instances[22].start, 327)
self.assertEqual(motif.instances[23].start, 24)
self.assertEqual(motif.instances[0].data, "GGLNGRPSKLPDVCYSWWVLSSLAIIGRLD")
self.assertEqual(motif.instances[1].data, "GGLNGRPEKLPDVCYSWWVLASLKIIGRLH")
self.assertEqual(motif.instances[2].data, "GGFQGRENKFADTCYAFWCLNSLHLLTKDW")
self.assertEqual(motif.instances[3].data, "GGIGGVPGMEAHGGYTFCGLAALVILKKER")
self.assertEqual(motif.instances[4].data, "GGFGGGPGQYPHLAPTYAAVNALCIIGTEE")
self.assertEqual(motif.instances[5].data, "GGFGCRPGSESHAGQIYCCTGFLAITSQLH")
self.assertEqual(motif.instances[6].data, "GSFAGDIWGEIDTRFSFCAVATLALLGKLD")
self.assertEqual(motif.instances[7].data, "GGFGLCPNAESHAAQAFTCLGALAIANKLD")
self.assertEqual(motif.instances[8].data, "GGFADRPGDMVDPFHTLFGIAGLSLLGEEQ")
self.assertEqual(motif.instances[9].data, "GSFQGDRFGEVDTRFVYTALSALSILGELT")
self.assertEqual(motif.instances[10].data, "GFGSCPHVDEAHGGYTFCATASLAILRSMD")
self.assertEqual(motif.instances[11].data, "GGISDRPENEVDVFHTVFGVAGLSLMGYDN")
self.assertEqual(motif.instances[12].data, "GPFGGGPGQLSHLASTYAAINALSLCDNID")
self.assertEqual(motif.instances[13].data, "GGFQGRCNKLVDGCYSFWQAGLLPLLHRAL")
self.assertEqual(motif.instances[14].data, "RGFCGRSNKLVDGCYSFWVGGSAAILEAFG")
self.assertEqual(motif.instances[15].data, "GGLLDKPGKSRDFYHTCYCLSGLSIAQHFG")
self.assertEqual(motif.instances[16].data, "GGVSASIGHDPHLLYTLSAVQILTLYDSIH")
self.assertEqual(motif.instances[17].data, "GSFLMHVGGEVDVRSAYCAASVASLTNIIT")
self.assertEqual(motif.instances[18].data, "GAFAPFPRHDAHLLTTLSAVQILATYDALD")
self.assertEqual(motif.instances[19].data, "YNGAFGAHNEPHSGYTSCALSTLALLSSLE")
self.assertEqual(motif.instances[20].data, "GFKTCLEVGEVDTRGIYCALSIATLLNILT")
self.assertEqual(motif.instances[21].data, "PGLRDKPGAHSDFYHTNYCLLGLAVAESSY")
self.assertEqual(motif.instances[22].data, "GGFSKNDEEDADLYHSCLGSAALALIEGKF")
self.assertEqual(motif.instances[23].data, "HNFEYWLTEHLRLNGIYWGLTALCVLDSPE")
motif = record.motifs[1]
self.assertEqual(motif.num_occurrences, 21)
self.assertAlmostEqual(motif.evalue, 3.1e-19)
self.assertEqual(motif.alphabet, IUPAC.protein)
self.assertEqual(motif.name, "Motif 2")
self.assertEqual(len(motif.instances), 21)
self.assertAlmostEqual(motif.instances[0].pvalue, 2.24e-13)
self.assertAlmostEqual(motif.instances[1].pvalue, 1.30e-12)
self.assertAlmostEqual(motif.instances[2].pvalue, 4.20e-12)
self.assertAlmostEqual(motif.instances[3].pvalue, 9.60e-12)
self.assertAlmostEqual(motif.instances[4].pvalue, 5.08e-11)
self.assertAlmostEqual(motif.instances[5].pvalue, 5.01e-10)
self.assertAlmostEqual(motif.instances[6].pvalue, 6.90e-10)
self.assertAlmostEqual(motif.instances[7].pvalue, 1.57e-09)
self.assertAlmostEqual(motif.instances[8].pvalue, 2.34e-09)
self.assertAlmostEqual(motif.instances[9].pvalue, 4.59e-09)
self.assertAlmostEqual(motif.instances[10].pvalue, 1.65e-08)
self.assertAlmostEqual(motif.instances[11].pvalue, 1.65e-08)
self.assertAlmostEqual(motif.instances[12].pvalue, 1.65e-08)
self.assertAlmostEqual(motif.instances[13].pvalue, 2.54e-08)
self.assertAlmostEqual(motif.instances[14].pvalue, 4.58e-08)
self.assertAlmostEqual(motif.instances[15].pvalue, 5.86e-08)
self.assertAlmostEqual(motif.instances[16].pvalue, 1.52e-07)
self.assertAlmostEqual(motif.instances[17].pvalue, 1.91e-07)
self.assertAlmostEqual(motif.instances[18].pvalue, 4.34e-07)
self.assertAlmostEqual(motif.instances[19].pvalue, 5.01e-07)
self.assertAlmostEqual(motif.instances[20].pvalue, 5.78e-07)
self.assertEqual(motif.instances[0].sequence_name, "BET2_YEAST")
self.assertEqual(motif.instances[1].sequence_name, "RATRABGERB")
self.assertEqual(motif.instances[2].sequence_name, "RATRABGERB")
self.assertEqual(motif.instances[3].sequence_name, "RATRABGERB")
self.assertEqual(motif.instances[4].sequence_name, "RAM1_YEAST")
self.assertEqual(motif.instances[5].sequence_name, "CAL1_YEAST")
self.assertEqual(motif.instances[6].sequence_name, "BET2_YEAST")
self.assertEqual(motif.instances[7].sequence_name, "RATRABGERB")
self.assertEqual(motif.instances[8].sequence_name, "PFTB_RAT")
self.assertEqual(motif.instances[9].sequence_name, "RAM1_YEAST")
self.assertEqual(motif.instances[10].sequence_name, "CAL1_YEAST")
self.assertEqual(motif.instances[11].sequence_name, "PFTB_RAT")
self.assertEqual(motif.instances[12].sequence_name, "PFTB_RAT")
self.assertEqual(motif.instances[13].sequence_name, "RAM1_YEAST")
self.assertEqual(motif.instances[14].sequence_name, "PFTB_RAT")
self.assertEqual(motif.instances[15].sequence_name, "CAL1_YEAST")
self.assertEqual(motif.instances[16].sequence_name, "PFTB_RAT")
self.assertEqual(motif.instances[17].sequence_name, "CAL1_YEAST")
self.assertEqual(motif.instances[18].sequence_name, "BET2_YEAST")
self.assertEqual(motif.instances[19].sequence_name, "BET2_YEAST")
self.assertEqual(motif.instances[20].sequence_name, "RAM1_YEAST")
self.assertEqual(motif.instances[0].strand, '+')
self.assertEqual(motif.instances[1].strand, '+')
self.assertEqual(motif.instances[2].strand, '+')
self.assertEqual(motif.instances[3].strand, '+')
self.assertEqual(motif.instances[4].strand, '+')
self.assertEqual(motif.instances[5].strand, '+')
self.assertEqual(motif.instances[6].strand, '+')
self.assertEqual(motif.instances[7].strand, '+')
self.assertEqual(motif.instances[8].strand, '+')
self.assertEqual(motif.instances[9].strand, '+')
self.assertEqual(motif.instances[10].strand, '+')
self.assertEqual(motif.instances[11].strand, '+')
self.assertEqual(motif.instances[12].strand, '+')
self.assertEqual(motif.instances[13].strand, '+')
self.assertEqual(motif.instances[14].strand, '+')
self.assertEqual(motif.instances[15].strand, '+')
self.assertEqual(motif.instances[16].strand, '+')
self.assertEqual(motif.instances[17].strand, '+')
self.assertEqual(motif.instances[18].strand, '+')
self.assertEqual(motif.instances[19].strand, '+')
self.assertEqual(motif.instances[20].strand, '+')
self.assertEqual(motif.instances[0].length, 14)
self.assertEqual(motif.instances[1].length, 14)
self.assertEqual(motif.instances[2].length, 14)
self.assertEqual(motif.instances[3].length, 14)
self.assertEqual(motif.instances[4].length, 14)
self.assertEqual(motif.instances[5].length, 14)
self.assertEqual(motif.instances[6].length, 14)
self.assertEqual(motif.instances[7].length, 14)
self.assertEqual(motif.instances[8].length, 14)
self.assertEqual(motif.instances[9].length, 14)
self.assertEqual(motif.instances[10].length, 14)
self.assertEqual(motif.instances[11].length, 14)
self.assertEqual(motif.instances[12].length, 14)
self.assertEqual(motif.instances[13].length, 14)
self.assertEqual(motif.instances[14].length, 14)
self.assertEqual(motif.instances[15].length, 14)
self.assertEqual(motif.instances[16].length, 14)
self.assertEqual(motif.instances[17].length, 14)
self.assertEqual(motif.instances[18].length, 14)
self.assertEqual(motif.instances[19].length, 14)
self.assertEqual(motif.instances[20].length, 14)
self.assertEqual(motif.instances[0].start, 254)
self.assertEqual(motif.instances[1].start, 258)
self.assertEqual(motif.instances[2].start, 162)
self.assertEqual(motif.instances[3].start, 66)
self.assertEqual(motif.instances[4].start, 278)
self.assertEqual(motif.instances[5].start, 190)
self.assertEqual(motif.instances[6].start, 55)
self.assertEqual(motif.instances[7].start, 114)
self.assertEqual(motif.instances[8].start, 172)
self.assertEqual(motif.instances[9].start, 330)
self.assertEqual(motif.instances[10].start, 126)
self.assertEqual(motif.instances[11].start, 268)
self.assertEqual(motif.instances[12].start, 220)
self.assertEqual(motif.instances[13].start, 229)
self.assertEqual(motif.instances[14].start, 330)
self.assertEqual(motif.instances[15].start, 239)
self.assertEqual(motif.instances[16].start, 121)
self.assertEqual(motif.instances[17].start, 362)
self.assertEqual(motif.instances[18].start, 107)
self.assertEqual(motif.instances[19].start, 155)
self.assertEqual(motif.instances[20].start, 180)
self.assertEqual(motif.instances[0].data, "INYEKLTEFILKCQ")
self.assertEqual(motif.instances[1].data, "IDREKLRSFILACQ")
self.assertEqual(motif.instances[2].data, "INVEKAIEFVLSCM")
self.assertEqual(motif.instances[3].data, "MNKEEILVFIKSCQ")
self.assertEqual(motif.instances[4].data, "INVEKLLEWSSARQ")
self.assertEqual(motif.instances[5].data, "IDTEKLLGYIMSQQ")
self.assertEqual(motif.instances[6].data, "FVKEEVISFVLSCW")
self.assertEqual(motif.instances[7].data, "INVDKVVAYVQSLQ")
self.assertEqual(motif.instances[8].data, "INREKLLQYLYSLK")
self.assertEqual(motif.instances[9].data, "FNKHALRDYILYCC")
self.assertEqual(motif.instances[10].data, "LDKRSLARFVSKCQ")
self.assertEqual(motif.instances[11].data, "LNLKSLLQWVTSRQ")
self.assertEqual(motif.instances[12].data, "DLFEGTAEWIARCQ")
self.assertEqual(motif.instances[13].data, "ELTEGVLNYLKNCQ")
self.assertEqual(motif.instances[14].data, "FHQQALQEYILMCC")
self.assertEqual(motif.instances[15].data, "KFKEDTITWLLHRQ")
self.assertEqual(motif.instances[16].data, "IVATDVCQFLELCQ")
self.assertEqual(motif.instances[17].data, "IPQEIFNDFSKRCC")
self.assertEqual(motif.instances[18].data, "DRKVRLISFIRGNQ")
self.assertEqual(motif.instances[19].data, "EVVDPAVDFVLKCY")
self.assertEqual(motif.instances[20].data, "IDRKGIYQWLISLK")
handle.close()
class TestMAST(unittest.TestCase):
def test_mast_parser_1(self):
"""Test if Motif can parse MAST output files (first test)
"""
from Bio.Alphabet import IUPAC
from Bio.Motif.Parsers import MAST
handle = open("Motif/mast.dna.oops.txt")
record = MAST.read(handle)
self.assertEqual(record.version, "3.0")
self.assertEqual(record.database, "INO_up800.s")
self.assertEqual(record.alphabet, IUPAC.unambiguous_dna)
self.assertEqual(len(record.motifs), 2)
self.assertEqual(record.motifs[0].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(record.motifs[0].length, 12)
self.assertEqual(record.motifs[0].name, "1")
self.assertEqual(record.motifs[1].alphabet, IUPAC.unambiguous_dna)
self.assertEqual(record.motifs[1].length, 10)
self.assertEqual(record.motifs[1].name, "2")
self.assertEqual(len(record.sequences), 7)
self.assertEqual(record.sequences[0], "ACC1")
self.assertEqual(record.sequences[1], "CHO1")
self.assertEqual(record.sequences[2], "INO1")
self.assertEqual(record.sequences[3], "FAS1")
self.assertEqual(record.sequences[4], "OPI3")
self.assertEqual(record.sequences[5], "CHO2")
self.assertEqual(record.sequences[6], "FAS2")
self.assertEqual(record.diagrams["ACC1"], "82_[+1]_137_[+2]_559")
self.assertEqual(record.diagrams["CHO1"], "152_[+2]_396_[-2]_42_[+1]_17_[+1]_149")
self.assertEqual(record.diagrams["INO1"], "282_[-2]_327_[-1]_55_[+1]_102")
self.assertEqual(record.diagrams["FAS1"], "43_[+2]_41_[+1]_694")
self.assertEqual(record.diagrams["OPI3"], "185_[-2]_144_[+1]_449")
self.assertEqual(record.diagrams["CHO2"], "353_[+1]_47_[-2]_378")
self.assertEqual(record.diagrams["FAS2"], "184_[-2]_372_[+1]_222")
handle.close()
def test_mast_parser_2(self):
"""Test if Motif can parse MAST output files (second test)
"""
from Bio.Alphabet import IUPAC
from Bio.Motif.Parsers import MAST
handle = open("Motif/mast.protein.oops.txt")
record = MAST.read(handle)
self.assertEqual(record.version, "3.0")
self.assertEqual(record.database, "adh.s")
self.assertEqual(record.alphabet, IUPAC.protein)
self.assertEqual(len(record.motifs), 2)
self.assertEqual(record.motifs[0].alphabet, IUPAC.protein)
self.assertEqual(record.motifs[0].length, 29)
self.assertEqual(record.motifs[0].name, "1")
self.assertEqual(record.motifs[1].alphabet, IUPAC.protein)
self.assertEqual(record.motifs[1].length, 29)
self.assertEqual(record.motifs[1].name, "2")
self.assertEqual(len(record.sequences), 33)
self.assertEqual(record.sequences[0], "BUDC_KLETE")
self.assertEqual(record.sequences[1], "YRTP_BACSU")
self.assertEqual(record.sequences[2], "AP27_MOUSE")
self.assertEqual(record.sequences[3], "HDE_CANTR")
self.assertEqual(record.sequences[4], "HDHA_ECOLI")
self.assertEqual(record.sequences[5], "DHII_HUMAN")
self.assertEqual(record.sequences[6], "FIXR_BRAJA")
self.assertEqual(record.sequences[7], "DHGB_BACME")
self.assertEqual(record.sequences[8], "NODG_RHIME")
self.assertEqual(record.sequences[9], "RIDH_KLEAE")
self.assertEqual(record.sequences[10], "YINL_LISMO")
self.assertEqual(record.sequences[11], "DHMA_FLAS1")
self.assertEqual(record.sequences[12], "HMTR_LEIMA")
self.assertEqual(record.sequences[13], "2BHD_STREX")
self.assertEqual(record.sequences[14], "ENTA_ECOLI")
self.assertEqual(record.sequences[15], "DHB2_HUMAN")
self.assertEqual(record.sequences[16], "BDH_HUMAN")
self.assertEqual(record.sequences[17], "BA72_EUBSP")
self.assertEqual(record.sequences[18], "FVT1_HUMAN")
self.assertEqual(record.sequences[19], "GUTD_ECOLI")
self.assertEqual(record.sequences[20], "DHB3_HUMAN")
self.assertEqual(record.sequences[21], "3BHD_COMTE")
self.assertEqual(record.sequences[22], "LIGD_PSEPA")
self.assertEqual(record.sequences[23], "DHES_HUMAN")
self.assertEqual(record.sequences[24], "RFBB_NEIGO")
self.assertEqual(record.sequences[25], "BPHB_PSEPS")
self.assertEqual(record.sequences[26], "YURA_MYXXA")
self.assertEqual(record.sequences[27], "PCR_PEA")
self.assertEqual(record.sequences[28], "DHCA_HUMAN")
self.assertEqual(record.sequences[29], "ADH_DROME")
self.assertEqual(record.sequences[30], "MAS1_AGRRA")
self.assertEqual(record.sequences[31], "FABI_ECOLI")
self.assertEqual(record.sequences[32], "CSGA_MYXXA")
self.assertEqual(record.diagrams["BUDC_KLETE"], "2_[2]_120_[1]_61")
self.assertEqual(record.diagrams["YRTP_BACSU"], "6_[2]_119_[1]_55")
self.assertEqual(record.diagrams["AP27_MOUSE"], "7_[2]_112_[1]_67")
self.assertEqual(record.diagrams["HDE_CANTR"], "8_[2]_125_[1]_131_[2]_115_[1]_411")
self.assertEqual(record.diagrams["HDHA_ECOLI"], "11_[2]_74_[1]_15_[1]_68")
self.assertEqual(record.diagrams["DHII_HUMAN"], "34_[2]_119_[1]_81")
self.assertEqual(record.diagrams["FIXR_BRAJA"], "36_[2]_123_[1]_61")
self.assertEqual(record.diagrams["DHGB_BACME"], "7_[2]_123_[1]_74")
self.assertEqual(record.diagrams["NODG_RHIME"], "6_[2]_116_[1]_65")
self.assertEqual(record.diagrams["RIDH_KLEAE"], "14_[2]_116_[1]_61")
self.assertEqual(record.diagrams["YINL_LISMO"], "5_[2]_75_[2]_15_[1]_66")
self.assertEqual(record.diagrams["DHMA_FLAS1"], "14_[2]_121_[1]_77")
self.assertEqual(record.diagrams["HMTR_LEIMA"], "6_[2]_157_[1]_66")
self.assertEqual(record.diagrams["2BHD_STREX"], "6_[2]_116_[1]_75")
self.assertEqual(record.diagrams["ENTA_ECOLI"], "5_[2]_109_[1]_76")
self.assertEqual(record.diagrams["DHB2_HUMAN"], "82_[2]_120_[1]_127")
self.assertEqual(record.diagrams["BDH_HUMAN"], "55_[2]_123_[1]_107")
self.assertEqual(record.diagrams["BA72_EUBSP"], "6_[2]_121_[1]_64")
self.assertEqual(record.diagrams["FVT1_HUMAN"], "32_[2]_124_[1]_118")
self.assertEqual(record.diagrams["GUTD_ECOLI"], "2_[2]_122_[1]_77")
self.assertEqual(record.diagrams["DHB3_HUMAN"], "48_[2]_120_[1]_84")
self.assertEqual(record.diagrams["3BHD_COMTE"], "6_[2]_115_[1]_74")
self.assertEqual(record.diagrams["LIGD_PSEPA"], "6_[2]_121_[1]_120")
self.assertEqual(record.diagrams["DHES_HUMAN"], "2_[2]_50_[2]_44_[1]_144")
self.assertEqual(record.diagrams["RFBB_NEIGO"], "6_[2]_129_[1]_153")
self.assertEqual(record.diagrams["BPHB_PSEPS"], "5_[2]_118_[1]_94")
self.assertEqual(record.diagrams["YURA_MYXXA"], "65_[2]_22_[2]_14_[1]_70")
self.assertEqual(record.diagrams["PCR_PEA"], "25_[1]_32_[2]_284")
self.assertEqual(record.diagrams["DHCA_HUMAN"], "4_[2]_159_[1]_55")
self.assertEqual(record.diagrams["ADH_DROME"], "6_[2]_116_[1]_75")
self.assertEqual(record.diagrams["MAS1_AGRRA"], "245_[2]_74_[1]_14_[1]_56")
self.assertEqual(record.diagrams["FABI_ECOLI"], "6_[2]_123_[1]_75")
self.assertEqual(record.diagrams["CSGA_MYXXA"], "51_[2]_7_[1]_50")
handle.close()
def test_mast_parser_3(self):
"""Test if Motif can parse MAST output files (third test)
"""
from Bio.Alphabet import IUPAC
from Bio.Motif.Parsers import MAST
handle = open("Motif/mast.protein.tcm.txt")
record = MAST.read(handle)
self.assertEqual(record.version, "3.0")
self.assertEqual(record.database, "farntrans5.s")
self.assertEqual(record.alphabet, IUPAC.protein)
self.assertEqual(len(record.motifs), 2)
self.assertEqual(record.motifs[0].alphabet, IUPAC.protein)
self.assertEqual(record.motifs[0].length, 30)
self.assertEqual(record.motifs[0].name, "1")
self.assertEqual(record.motifs[1].alphabet, IUPAC.protein)
self.assertEqual(record.motifs[1].length, 14)
self.assertEqual(record.motifs[1].name, "2")
self.assertEqual(len(record.sequences), 5)
self.assertEqual(record.sequences[0], "BET2_YEAST")
self.assertEqual(record.sequences[1], "RATRABGERB")
self.assertEqual(record.sequences[2], "CAL1_YEAST")
self.assertEqual(record.sequences[3], "PFTB_RAT")
self.assertEqual(record.sequences[4], "RAM1_YEAST")
self.assertEqual(record.diagrams["BET2_YEAST"], "6_[2]_3_[1]_1_[2]_4_[1]_4_[2]_3_[1]_1_[2]_3_[1]_21_[1]_1_[2]_4_[1]_24")
self.assertEqual(record.diagrams["RATRABGERB"], "65_[2]_3_[1]_1_[2]_3_[1]_1_[2]_3_[1]_18_[1]_1_[2]_4_[1]_26")
self.assertEqual(record.diagrams["CAL1_YEAST"], "125_[2]_50_[2]_1_[1]_4_[2]_22_[1]_22_[1]_5_[2]_1")
self.assertEqual(record.diagrams["PFTB_RAT"], "120_[2]_3_[1]_4_[2]_3_[1]_1_[2]_3_[1]_1_[2]_4_[1]_14_[2]_4_[1]_60")
self.assertEqual(record.diagrams["RAM1_YEAST"], "144_[1]_5_[2]_4_[1]_1_[2]_4_[1]_1_[2]_4_[1]_4_[2]_5_[1]_35_[2]_4")
handle.close()
if __name__ == "__main__":
runner = unittest.TextTestRunner(verbosity = 2)
unittest.main(testRunner=runner)
|