Skip to content
This repository
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 1102 lines (961 sloc) 54.551 kb
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
# Copyright 1999 by Cayte Lindner. All rights reserved.
# Copyright 2009 by Michiel de Hoon. All rights reserved.
# 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.ExPASy import Prodoc




class TestProdocRead(unittest.TestCase):

    def test_read_pdoc00100(self):
        "Reading Prodoc record PDOC00100"
        filename = os.path.join( 'Prosite', 'Doc', 'pdoc00100.txt')
        handle = open(filename)
        record = Prodoc.read(handle)
        handle.close()

        self.assertEqual(record.accession, "PDOC00100")
        self.assertEqual(len(record.prosite_refs), 4)
        self.assertEqual(record.prosite_refs[0], ("PS00107", "PROTEIN_KINASE_ATP"))
        self.assertEqual(record.prosite_refs[1], ("PS00108", "PROTEIN_KINASE_ST"))
        self.assertEqual(record.prosite_refs[2], ("PS00109", "PROTEIN_KINASE_TYR"))
        self.assertEqual(record.prosite_refs[3], ("PS50011", "PROTEIN_KINASE_DOM"))
        self.assertEqual(record.text, """\
******************************************
* Protein kinases signatures and profile *
******************************************

Eukaryotic protein kinases [1 to 5] are enzymes that belong to a very
extensive family of proteins which share a conserved catalytic core common to
both serine/threonine and tyrosine protein kinases. There are a number of
conserved regions in the catalytic domain of protein kinases. We have selected
two of these regions to build signature patterns. The first region, which is
located in the N-terminal extremity of the catalytic domain, is a glycine-rich
stretch of residues in the vicinity of a lysine residue, which has been shown
to be involved in ATP binding. The second region, which is located in the
central part of the catalytic domain, contains a conserved aspartic acid
residue which is important for the catalytic activity of the enzyme [6]; we
have derived two signature patterns for that region: one specific for serine/
threonine kinases and the other for tyrosine kinases. We also developed a
profile which is based on the alignment in [1] and covers the entire catalytic
domain.

-Consensus pattern: [LIV]-G-{P}-G-{P}-[FYWMGSTNH]-[SGA]-{PW}-[LIVCAT]-{PD}-x-
[GSTACLIVMFY]-x(5,18)-[LIVMFYWCSTAR]-[AIVP]-[LIVMFAGCKR]-K
[K binds ATP]
-Sequences known to belong to this class detected by the pattern: the majority
of known protein kinases but it fails to find a number of them, especially
viral kinases which are quite divergent in this region and are completely
missed by this pattern.
-Other sequence(s) detected in Swiss-Prot: 42.

-Consensus pattern: [LIVMFYC]-x-[HY]-x-D-[LIVMFY]-K-x(2)-N-[LIVMFYCT](3)
[D is an active site residue]
-Sequences known to belong to this class detected by the pattern: Most serine/
threonine specific protein kinases with 10 exceptions (half of them viral
kinases) and also Epstein-Barr virus BGLF4 and Drosophila ninaC which have
respectively Ser and Arg instead of the conserved Lys and which are therefore
detected by the tyrosine kinase specific pattern described below.
-Other sequence(s) detected in Swiss-Prot: 1.

-Consensus pattern: [LIVMFYC]-{A}-[HY]-x-D-[LIVMFY]-[RSTAC]-{D}-{PF}-N-
[LIVMFYC](3)
[D is an active site residue]
-Sequences known to belong to this class detected by the pattern: ALL tyrosine
specific protein kinases with the exception of human ERBB3 and mouse blk.
This pattern will also detect most bacterial aminoglycoside
phosphotransferases [8,9] and herpesviruses ganciclovir kinases [10]; which
are proteins structurally and evolutionary related to protein kinases.
-Other sequence(s) detected in Swiss-Prot: 17.

-Sequences known to belong to this class detected by the profile: ALL, except
for three viral kinases. This profile also detects receptor guanylate
cyclases (see <PDOC00430>) and 2-5A-dependent ribonucleases. Sequence
similarities between these two families and the eukaryotic protein kinase
family have been noticed before. It also detects Arabidopsis thaliana kinase-
like protein TMKL1 which seems to have lost its catalytic activity.
-Other sequence(s) detected in Swiss-Prot: 4.

-Note: If a protein analyzed includes the two protein kinase signatures, the
probability of it being a protein kinase is close to 100%
-Note: Eukaryotic-type protein kinases have also been found in prokaryotes
such as Myxococcus xanthus [11] and Yersinia pseudotuberculosis.
-Note: The patterns shown above has been updated since their publication in
[7].

-Expert(s) to contact by email:
Hunter T.; hunter@salk-sc2.sdsc.edu
Quinn A.M.; quinn@biomed.med.yale.edu

-Last update: April 2006 / Pattern revised.

""")

        self.assertEqual(len(record.references), 11)
        self.assertEqual(record.references[ 0].number, "1")
        self.assertEqual(record.references[ 0].authors, "Hanks S.K., Hunter T.")
        self.assertEqual(record.references[ 0].citation, """\
"Protein kinases 6. The eukaryotic protein kinase superfamily: kinase
(catalytic) domain structure and classification."
FASEB J. 9:576-596(1995).
PubMed=7768349""")
        self.assertEqual(record.references[ 1].number, "2")
        self.assertEqual(record.references[ 1].authors, "Hunter T.")
        self.assertEqual(record.references[ 1].citation, """\
"Protein kinase classification."
Methods Enzymol. 200:3-37(1991).
PubMed=1835513""")
        self.assertEqual(record.references[ 2].number, "3")
        self.assertEqual(record.references[ 2].authors, "Hanks S.K., Quinn A.M.")
        self.assertEqual(record.references[ 2].citation, """\
"Protein kinase catalytic domain sequence database: identification of
conserved features of primary structure and classification of family
members."
Methods Enzymol. 200:38-62(1991).
PubMed=1956325""")
        self.assertEqual(record.references[ 3].number, "4")
        self.assertEqual(record.references[ 3].authors, "Hanks S.K.")
        self.assertEqual(record.references[ 3].citation, 'Curr. Opin. Struct. Biol. 1:369-383(1991).')
        self.assertEqual(record.references[ 4].number, "5")
        self.assertEqual(record.references[ 4].authors, "Hanks S.K., Quinn A.M., Hunter T.")
        self.assertEqual(record.references[ 4].citation, """\
"The protein kinase family: conserved features and deduced phylogeny
of the catalytic domains."
Science 241:42-52(1988).
PubMed=3291115""")
        self.assertEqual(record.references[ 5].number, "6")
        self.assertEqual(record.references[ 5].authors, "Knighton D.R., Zheng J.H., Ten Eyck L.F., Ashford V.A., Xuong N.-H., Taylor S.S., Sowadski J.M.")
        self.assertEqual(record.references[ 5].citation, """\
"Crystal structure of the catalytic subunit of cyclic adenosine
monophosphate-dependent protein kinase."
Science 253:407-414(1991).
PubMed=1862342""")
        self.assertEqual(record.references[ 6].number, "7")
        self.assertEqual(record.references[ 6].authors, "Bairoch A., Claverie J.-M.")
        self.assertEqual(record.references[ 6].citation, """\
"Sequence patterns in protein kinases."
Nature 331:22-22(1988).
PubMed=3340146; DOI=10.1038/331022a0""")
        self.assertEqual(record.references[ 7].number, "8")
        self.assertEqual(record.references[ 7].authors, "Benner S.")
        self.assertEqual(record.references[ 7].citation, 'Nature 329:21-21(1987).')
        self.assertEqual(record.references[ 8].number, "9")
        self.assertEqual(record.references[ 8].authors, "Kirby R.")
        self.assertEqual(record.references[ 8].citation, """\
"Evolutionary origin of aminoglycoside phosphotransferase resistance
genes."
J. Mol. Evol. 30:489-492(1990).
PubMed=2165531""")
        self.assertEqual(record.references[ 9].number, "10")
        self.assertEqual(record.references[ 9].authors, "Littler E., Stuart A.D., Chee M.S.")
        self.assertEqual(record.references[ 9].citation, 'Nature 358:160-162(1992).')
        self.assertEqual(record.references[10].number, "11")
        self.assertEqual(record.references[10].authors, "Munoz-Dorado J., Inouye S., Inouye M.")
        self.assertEqual(record.references[10].citation, 'Cell 67:995-1006(1991).')

    def test_read_pdoc00113(self):
        "Reading Prodoc record PDOC00113"
        filename = os.path.join( 'Prosite', 'Doc', 'pdoc00113.txt')
        handle = open(filename)
        record = Prodoc.read(handle)
        handle.close()

        self.assertEqual(record.accession, "PDOC00113")
        self.assertEqual(len(record.prosite_refs), 1)
        self.assertEqual(record.prosite_refs[0], ("PS00123", "ALKALINE_PHOSPHATASE"))
        self.assertEqual(record.text, """\
************************************
* Alkaline phosphatase active site *
************************************

Alkaline phosphatase (EC 3.1.3.1) (ALP) [1] is a zinc and magnesium-containing
metalloenzyme which hydrolyzes phosphate esters, optimally at high pH. It is
found in nearly all living organisms, with the exception of some plants. In
Escherichia coli, ALP (gene phoA) is found in the periplasmic space. In yeast
it (gene PHO8) is found in lysosome-like vacuoles and in mammals, it is a
glycoprotein attached to the membrane by a GPI-anchor.

In mammals, four different isozymes are currently known [2]. Three of them are
tissue-specific: the placental, placental-like (germ cell) and intestinal
isozymes. The fourth form is tissue non-specific and was previously known as
the liver/bone/kidney isozyme.

Streptomyces' species involved in the synthesis of streptomycin (SM), an
antibiotic, express a phosphatase (EC 3.1.3.39) (gene strK) which is highly
related to ALP. It specifically cleaves both streptomycin-6-phosphate and,
more slowly, streptomycin-3"-phosphate.

A serine is involved in the catalytic activity of ALP. The region around the
active site serine is relatively well conserved and can be used as a signature
pattern.

-Consensus pattern: [IV]-x-D-S-[GAS]-[GASC]-[GAST]-[GA]-T
[S is the active site residue]
-Sequences known to belong to this class detected by the pattern: ALL.
-Other sequence(s) detected in Swiss-Prot: 3.
-Last update: June 1994 / Text revised.

""")

        self.assertEqual(len(record.references), 3)
        self.assertEqual(record.references[ 0].number, "1")
        self.assertEqual(record.references[ 0].authors, "Trowsdale J., Martin D., Bicknell D., Campbell I.")
        self.assertEqual(record.references[ 0].citation, """\
"Alkaline phosphatases."
Biochem. Soc. Trans. 18:178-180(1990).
PubMed=2379681""")
        self.assertEqual(record.references[ 1].number, "2")
        self.assertEqual(record.references[ 1].authors, "Manes T., Glade K., Ziomek C.A., Millan J.L.")
        self.assertEqual(record.references[ 1].citation, """\
"Genomic structure and comparison of mouse tissue-specific alkaline
phosphatase genes."
Genomics 8:541-554(1990).
PubMed=2286375""")
        self.assertEqual(record.references[ 2].number, "3")
        self.assertEqual(record.references[ 2].authors, "Mansouri K., Piepersberg W.")
        self.assertEqual(record.references[ 2].citation, """\
"Genetics of streptomycin production in Streptomyces griseus:
nucleotide sequence of five genes, strFGHIK, including a phosphatase
gene."
Mol. Gen. Genet. 228:459-469(1991).
PubMed=1654502""")

    def test_read_pdoc00144(self):
        "Reading Prodoc record PDOC00144"
        filename = os.path.join( 'Prosite', 'Doc', 'pdoc00144.txt')
        handle = open(filename)
        record = Prodoc.read(handle)
        handle.close()

        self.assertEqual(record.accession, "PDOC00144")
        self.assertEqual(len(record.prosite_refs), 2)
        self.assertEqual(record.prosite_refs[0], ("PS00159", "ALDOLASE_KDPG_KHG_1"))
        self.assertEqual(record.prosite_refs[1], ("PS00160", "ALDOLASE_KDPG_KHG_2"))
        self.assertEqual(record.text, """\
*************************************************
* KDPG and KHG aldolases active site signatures *
*************************************************

4-hydroxy-2-oxoglutarate aldolase (EC 4.1.3.16) (KHG-aldolase) catalyzes the
interconversion of 4-hydroxy-2-oxoglutarate into pyruvate and glyoxylate.
Phospho-2-dehydro-3-deoxygluconate aldolase (EC 4.1.2.14) (KDPG-aldolase)
catalyzes the interconversion of 6-phospho-2-dehydro-3-deoxy-D-gluconate into
pyruvate and glyceraldehyde 3-phosphate.

These two enzymes are structurally and functionally related [1]. They are both
homotrimeric proteins of approximately 220 amino-acid residues. They are class
I aldolases whose catalytic mechanism involves the formation of a Schiff-base
intermediate between the substrate and the epsilon-amino group of a lysine
residue. In both enzymes, an arginine is required for catalytic activity.

We developed two signature patterns for these enzymes. The first one contains
the active site arginine and the second, the lysine involved in the Schiff-
base formation.

-Consensus pattern: G-[LIVM]-x(3)-E-[LIV]-T-[LF]-R
[R is the active site residue]
-Sequences known to belong to this class detected by the pattern: ALL, except
for Bacillus subtilis KDPG-aldolase which has Thr instead of Arg in the
active site.
-Other sequence(s) detected in Swiss-Prot: NONE.

-Consensus pattern: G-x(3)-[LIVMF]-K-[LF]-F-P-[SA]-x(3)-G
[K is involved in Schiff-base formation]
-Sequences known to belong to this class detected by the pattern: ALL.
-Other sequence(s) detected in Swiss-Prot: NONE.

-Last update: November 1997 / Patterns and text revised.

""")

        self.assertEqual(len(record.references), 1)
        self.assertEqual(record.references[ 0].number, "1")
        self.assertEqual(record.references[ 0].authors, "Vlahos C.J., Dekker E.E.")
        self.assertEqual(record.references[ 0].citation, """\
"The complete amino acid sequence and identification of the
active-site arginine peptide of Escherichia coli
2-keto-4-hydroxyglutarate aldolase."
J. Biol. Chem. 263:11683-11691(1988).
PubMed=3136164""")

    def test_read_pdoc00149(self):
        "Reading Prodoc record PDOC00149"
        filename = os.path.join( 'Prosite', 'Doc', 'pdoc00149.txt')
        handle = open(filename)
        record = Prodoc.read(handle)
        handle.close()

        self.assertEqual(record.accession, "PDOC00149")
        self.assertEqual(len(record.prosite_refs), 1)
        self.assertEqual(record.prosite_refs[0], ("PS00165", "DEHYDRATASE_SER_THR"))
        self.assertEqual(record.text, """\
*********************************************************************
* Serine/threonine dehydratases pyridoxal-phosphate attachment site *
*********************************************************************

Serine and threonine dehydratases [1,2] are functionally and structurally
related pyridoxal-phosphate dependent enzymes:

- L-serine dehydratase (EC 4.3.1.17) and D-serine dehydratase (EC 4.3.1.18)
catalyze the dehydratation of L-serine (respectively D-serine) into ammonia
and pyruvate.
- Threonine dehydratase (EC 4.3.1.19) (TDH) catalyzes the dehydratation of
threonine into alpha-ketobutarate and ammonia. In Escherichia coli and
other microorganisms, two classes of TDH are known to exist. One is
involved in the biosynthesis of isoleucine, the other in hydroxamino acid
catabolism.

Threonine synthase (EC 4.2.3.1) is also a pyridoxal-phosphate enzyme, it
catalyzes the transformation of homoserine-phosphate into threonine. It has
been shown [3] that threonine synthase is distantly related to the serine/
threonine dehydratases.

In all these enzymes, the pyridoxal-phosphate group is attached to a lysine
residue. The sequence around this residue is sufficiently conserved to allow
the derivation of a pattern specific to serine/threonine dehydratases and
threonine synthases.

-Consensus pattern: [DESH]-x(4,5)-[STVG]-{EVKD}-[AS]-[FYI]-K-[DLIFSA]-[RLVMF]-
[GA]-[LIVMGA]
[The K is the pyridoxal-P attachment site]
-Sequences known to belong to this class detected by the pattern: ALL.
-Other sequence(s) detected in Swiss-Prot: 17.

-Note: Some bacterial L-serine dehydratases - such as those from Escherichia
coli - are iron-sulfur proteins [4] and do not belong to this family.

-Last update: December 2004 / Pattern and text revised.

""")

        self.assertEqual(len(record.references), 4)
        self.assertEqual(record.references[ 0].number, "1")
        self.assertEqual(record.references[ 0].authors, "Ogawa H., Gomi T., Konishi K., Date T., Nakashima H., Nose K., Matsuda Y., Peraino C., Pitot H.C., Fujioka M.")
        self.assertEqual(record.references[ 0].citation, """\
"Human liver serine dehydratase. cDNA cloning and sequence homology
with hydroxyamino acid dehydratases from other sources."
J. Biol. Chem. 264:15818-15823(1989).
PubMed=2674117""")
        self.assertEqual(record.references[ 1].number, "2")
        self.assertEqual(record.references[ 1].authors, "Datta P., Goss T.J., Omnaas J.R., Patil R.V.")
        self.assertEqual(record.references[ 1].citation, """\
"Covalent structure of biodegradative threonine dehydratase of
Escherichia coli: homology with other dehydratases."
Proc. Natl. Acad. Sci. U.S.A. 84:393-397(1987).
PubMed=3540965""")
        self.assertEqual(record.references[ 2].number, "3")
        self.assertEqual(record.references[ 2].authors, "Parsot C.")
        self.assertEqual(record.references[ 2].citation, """\
"Evolution of biosynthetic pathways: a common ancestor for threonine
synthase, threonine dehydratase and D-serine dehydratase."
EMBO J. 5:3013-3019(1986).
PubMed=3098560""")
        self.assertEqual(record.references[ 3].number, "4")
        self.assertEqual(record.references[ 3].authors, "Grabowski R., Hofmeister A.E.M., Buckel W.")
        self.assertEqual(record.references[ 3].citation, """\
"Bacterial L-serine dehydratases: a new family of enzymes containing
iron-sulfur clusters."
Trends Biochem. Sci. 18:297-300(1993).
PubMed=8236444""")

    def test_read_pdoc00340(self):
        "Reading Prodoc record PDOC00340"
        filename = os.path.join( 'Prosite', 'Doc', 'pdoc00340.txt')
        handle = open(filename)
        record = Prodoc.read(handle)
        handle.close()

        self.assertEqual(record.accession, "PDOC00340")
        self.assertEqual(len(record.prosite_refs), 3)
        self.assertEqual(record.prosite_refs[0], ("PS00406", "ACTINS_1"))
        self.assertEqual(record.prosite_refs[1], ("PS00432", "ACTINS_2"))
        self.assertEqual(record.prosite_refs[2], ("PS01132", "ACTINS_ACT_LIKE"))
        self.assertEqual(record.text, """\
*********************
* Actins signatures *
*********************

Actins [1 to 4] are highly conserved contractile proteins that are present in
all eukaryotic cells. In vertebrates there are three groups of actin isoforms:
alpha, beta and gamma. The alpha actins are found in muscle tissues and are a
major constituent of the contractile apparatus. The beta and gamma actins co-
exists in most cell types as components of the cytoskeleton and as mediators
of internal cell motility. In plants [5] there are many isoforms which are
probably involved in a variety of functions such as cytoplasmic streaming,
cell shape determination, tip growth, graviperception, cell wall deposition,
etc.

Actin exists either in a monomeric form (G-actin) or in a polymerized form (F-
actin). Each actin monomer can bind a molecule of ATP; when polymerization
occurs, the ATP is hydrolyzed.

Actin is a protein of from 374 to 379 amino acid residues. The structure of
actin has been highly conserved in the course of evolution.

Recently some divergent actin-like proteins have been identified in several
species. These proteins are:

- Centractin (actin-RPV) from mammals, fungi (yeast ACT5, Neurospora crassa
ro-4) and Pneumocystis carinii (actin-II). Centractin seems to be a
component of a multi-subunit centrosomal complex involved in microtubule
based vesicle motility. This subfamily is also known as ARP1.
- ARP2 subfamily which includes chicken ACTL, yeast ACT2, Drosophila 14D,
C.elegans actC.
- ARP3 subfamily which includes actin 2 from mammals, Drosophila 66B, yeast
ACT4 and fission yeast act2.
- ARP4 subfamily which includes yeast ACT3 and Drosophila 13E.

We developed three signature patterns. The first two are specific to actins
and span positions 54 to 64 and 357 to 365. The last signature picks up both
actins and the actin-like proteins and corresponds to positions 106 to 118 in
actins.

-Consensus pattern: [FY]-[LIV]-[GV]-[DE]-E-[ARV]-[QLAH]-x(1,2)-[RKQ](2)-[GD]
-Sequences known to belong to this class detected by the pattern: ALL, except
for the actin-like proteins and 10 actins.
-Other sequence(s) detected in Swiss-Prot: NONE.

-Consensus pattern: W-[IVC]-[STAK]-[RK]-x-[DE]-Y-[DNE]-[DE]
-Sequences known to belong to this class detected by the pattern: ALL, except
for the actin-like proteins and 9 actins.
-Other sequence(s) detected in Swiss-Prot: NONE.

-Consensus pattern: [LM]-[LIVMA]-T-E-[GAPQ]-x-[LIVMFYWHQPK]-[NS]-[PSTAQ]-x(2)-
N-[KR]
-Sequences known to belong to this class detected by the pattern: ALL, except
for 5 actins.
-Other sequence(s) detected in Swiss-Prot: NONE.

-Last update: December 2004 / Patterns and text revised.

""")

        self.assertEqual(len(record.references), 5)
        self.assertEqual(record.references[ 0].number, "1")
        self.assertEqual(record.references[ 0].authors, "Sheterline P., Clayton J., Sparrow J.C.")
        self.assertEqual(record.references[ 0].citation, '(In) Actins, 3rd Edition, Academic Press Ltd, London, (1996).')
        self.assertEqual(record.references[ 1].number, "2")
        self.assertEqual(record.references[ 1].authors, "Pollard T.D., Cooper J.A.")
        self.assertEqual(record.references[ 1].citation, 'Annu. Rev. Biochem. 55:987-1036(1986).')
        self.assertEqual(record.references[ 2].number, "3")
        self.assertEqual(record.references[ 2].authors, "Pollard T.D.")
        self.assertEqual(record.references[ 2].citation, """\
"Actin."
Curr. Opin. Cell Biol. 2:33-40(1990).
PubMed=2183841""")
        self.assertEqual(record.references[ 3].number, "4")
        self.assertEqual(record.references[ 3].authors, "Rubenstein P.A.")
        self.assertEqual(record.references[ 3].citation, """\
"The functional importance of multiple actin isoforms."
BioEssays 12:309-315(1990).
PubMed=2203335""")
        self.assertEqual(record.references[ 4].number, "5")
        self.assertEqual(record.references[ 4].authors, "Meagher R.B., McLean B.G.")
        self.assertEqual(record.references[ 4].citation, 'Cell Motil. Cytoskeleton 16:164-166(1990).')

    def test_read_pdoc00424(self):
        "Reading Prodoc record PDOC00424"
        filename = os.path.join( 'Prosite', 'Doc', 'pdoc00424.txt',)
        handle = open(filename)
        record = Prodoc.read(handle)
        handle.close()

        self.assertEqual(record.accession, "PDOC00424")
        self.assertEqual(len(record.prosite_refs), 1)
        self.assertEqual(record.prosite_refs[0], ("PS00488", "PAL_HISTIDASE"))
        self.assertEqual(record.text, """\
**********************************************************
* Phenylalanine and histidine ammonia-lyases active site *
**********************************************************

Phenylalanine ammonia-lyase (EC 4.3.1.5) (PAL) is a key enzyme of plant and
fungi phenylpropanoid metabolism which is involved in the biosynthesis of a
wide variety of secondary metabolites such as flavanoids, furanocoumarin
phytoalexins and cell wall components. These compounds have many important
roles in plants during normal growth and in responses to environmental stress.
PAL catalyzes the removal of an ammonia group from phenylalanine to form
trans-cinnamate.

Histidine ammonia-lyase (EC 4.3.1.3) (histidase) catalyzes the first step in
histidine degradation, the removal of an ammonia group from histidine to
produce urocanic acid.

The two types of enzymes are functionally and structurally related [1]. They
are the only enzymes which are known to have the modified amino acid dehydro-
alanine (DHA) in their active site. A serine residue has been shown [2,3,4] to
be the precursor of this essential electrophilic moiety. The region around
this active site residue is well conserved and can be used as a signature
pattern.

-Consensus pattern: [GS]-[STG]-[LIVM]-[STG]-[SAC]-S-G-[DH]-L-x-[PN]-L-[SA]-
x(2,3)-[SAGVTL]
[S is the active site residue]
-Sequences known to belong to this class detected by the pattern: ALL.
-Other sequence(s) detected in Swiss-Prot: NONE.
-Last update: April 2006 / Pattern revised.

""")

        self.assertEqual(len(record.references), 4)
        self.assertEqual(record.references[ 0].number, "1")
        self.assertEqual(record.references[ 0].authors, "Taylor R.G., Lambert M.A., Sexsmith E., Sadler S.J., Ray P.N., Mahuran D.J., McInnes R.R.")
        self.assertEqual(record.references[ 0].citation, """\
"Cloning and expression of rat histidase. Homology to two bacterial
histidases and four phenylalanine ammonia-lyases."
J. Biol. Chem. 265:18192-18199(1990).
PubMed=2120224""")
        self.assertEqual(record.references[ 1].number, "2")
        self.assertEqual(record.references[ 1].authors, "Langer M., Reck G., Reed J., Retey J.")
        self.assertEqual(record.references[ 1].citation, """\
"Identification of serine-143 as the most likely precursor of
dehydroalanine in the active site of histidine ammonia-lyase. A study
of the overexpressed enzyme by site-directed mutagenesis."
Biochemistry 33:6462-6467(1994).
PubMed=8204579""")
        self.assertEqual(record.references[ 2].number, "3")
        self.assertEqual(record.references[ 2].authors, "Schuster B., Retey J.")
        self.assertEqual(record.references[ 2].citation, """\
"Serine-202 is the putative precursor of the active site
dehydroalanine of phenylalanine ammonia lyase. Site-directed
mutagenesis studies on the enzyme from parsley (Petroselinum crispum
L.)."
FEBS Lett. 349:252-254(1994).
PubMed=8050576""")
        self.assertEqual(record.references[ 3].number, "4")
        self.assertEqual(record.references[ 3].authors, "Taylor R.G., McInnes R.R.")
        self.assertEqual(record.references[ 3].citation, """\
"Site-directed mutagenesis of conserved serines in rat histidase.
Identification of serine 254 as an essential active site residue."
J. Biol. Chem. 269:27473-27477(1994).
PubMed=7961661""")

    def test_read_pdoc00472(self):
        "Reading Prodoc record PDOC00472"
        filename = os.path.join( 'Prosite', 'Doc', 'pdoc00472.txt')
        handle = open(filename)
        record = Prodoc.read(handle)
        handle.close()

        self.assertEqual(record.accession, "PDOC00472")
        self.assertEqual(len(record.prosite_refs), 1)
        self.assertEqual(record.prosite_refs[0], ("PS00546", "CYSTEINE_SWITCH"))
        self.assertEqual(record.text, """\
*****************************
* Matrixins cysteine switch *
*****************************

Mammalian extracellular matrix metalloproteinases (EC 3.4.24.-), also known as
matrixins [1] (see <PDOC00129>), are zinc-dependent enzymes. They are secreted
by cells in an inactive form (zymogen) that differs from the mature enzyme by
the presence of an N-terminal propeptide. A highly conserved octapeptide is
found two residues downstream of the C-terminal end of the propeptide. This
region has been shown to be involved in autoinhibition of matrixins [2,3];
a cysteine within the octapeptide chelates the active site zinc ion, thus
inhibiting the enzyme. This region has been called the 'cysteine switch' or
'autoinhibitor region'.

A cysteine switch has been found in the following zinc proteases:

- MMP-1 (EC 3.4.24.7) (interstitial collagenase).
- MMP-2 (EC 3.4.24.24) (72 Kd gelatinase).
- MMP-3 (EC 3.4.24.17) (stromelysin-1).
- MMP-7 (EC 3.4.24.23) (matrilysin).
- MMP-8 (EC 3.4.24.34) (neutrophil collagenase).
- MMP-9 (EC 3.4.24.35) (92 Kd gelatinase).
- MMP-10 (EC 3.4.24.22) (stromelysin-2).
- MMP-11 (EC 3.4.24.-) (stromelysin-3).
- MMP-12 (EC 3.4.24.65) (macrophage metalloelastase).
- MMP-13 (EC 3.4.24.-) (collagenase 3).
- MMP-14 (EC 3.4.24.-) (membrane-type matrix metalliproteinase 1).
- MMP-15 (EC 3.4.24.-) (membrane-type matrix metalliproteinase 2).
- MMP-16 (EC 3.4.24.-) (membrane-type matrix metalliproteinase 3).
- Sea urchin hatching enzyme (EC 3.4.24.12) (envelysin) [4].
- Chlamydomonas reinhardtii gamete lytic enzyme (GLE) [5].

-Consensus pattern: P-R-C-[GN]-x-P-[DR]-[LIVSAPKQ]
[C chelates the zinc ion]
-Sequences known to belong to this class detected by the pattern: ALL, except
for cat MMP-7 and mouse MMP-11.
-Other sequence(s) detected in Swiss-Prot: NONE.
-Last update: November 1997 / Pattern and text revised.

""")

        self.assertEqual(len(record.references), 5)
        self.assertEqual(record.references[ 0].number, "1")
        self.assertEqual(record.references[ 0].authors, "Woessner J.F. Jr.")
        self.assertEqual(record.references[ 0].citation, """\
"Matrix metalloproteinases and their inhibitors in connective tissue
remodeling."
FASEB J. 5:2145-2154(1991).
PubMed=1850705""")
        self.assertEqual(record.references[ 1].number, "2")
        self.assertEqual(record.references[ 1].authors, "Sanchez-Lopez R., Nicholson R., Gesnel M.C., Matrisian L.M., Breathnach R.")
        self.assertEqual(record.references[ 1].citation, 'J. Biol. Chem. 263:11892-11899(1988).')
        self.assertEqual(record.references[ 2].number, "3")
        self.assertEqual(record.references[ 2].authors, "Park A.J., Matrisian L.M., Kells A.F., Pearson R., Yuan Z.Y., Navre M.")
        self.assertEqual(record.references[ 2].citation, """\
"Mutational analysis of the transin (rat stromelysin) autoinhibitor
region demonstrates a role for residues surrounding the 'cysteine
switch'."
J. Biol. Chem. 266:1584-1590(1991).
PubMed=1988438""")
        self.assertEqual(record.references[ 3].number, "4")
        self.assertEqual(record.references[ 3].authors, "Lepage T., Gache C.")
        self.assertEqual(record.references[ 3].citation, """\
"Early expression of a collagenase-like hatching enzyme gene in the
sea urchin embryo."
EMBO J. 9:3003-3012(1990).
PubMed=2167841""")
        self.assertEqual(record.references[ 4].number, "5")
        self.assertEqual(record.references[ 4].authors, "Kinoshita T., Fukuzawa H., Shimada T., Saito T., Matsuda Y.")
        self.assertEqual(record.references[ 4].citation, """\
"Primary structure and expression of a gamete lytic enzyme in
Chlamydomonas reinhardtii: similarity of functional domains to matrix
metalloproteases."
Proc. Natl. Acad. Sci. U.S.A. 89:4693-4697(1992).
PubMed=1584806""")

    def test_read_pdoc00640(self):
        "Reading Prodoc record PDOC00640"
        filename = os.path.join( 'Prosite', 'Doc', 'pdoc00640.txt',)
        handle = open(filename)
        record = Prodoc.read(handle)
        handle.close()

        self.assertEqual(record.accession, "PDOC00640")
        self.assertEqual(len(record.prosite_refs), 1)
        self.assertEqual(record.prosite_refs[0], ("PS00812", "GLYCOSYL_HYDROL_F8"))
        self.assertEqual(record.text, """\
******************************************
* Glycosyl hydrolases family 8 signature *
******************************************

The microbial degradation of cellulose and xylans requires several types of
enzymes such as endoglucanases (EC 3.2.1.4), cellobiohydrolases (EC 3.2.1.91)
(exoglucanases), or xylanases (EC 3.2.1.8) [1,2]. Fungi and bacteria produces
a spectrum of cellulolytic enzymes (cellulases) and xylanases which, on the
basis of sequence similarities, can be classified into families. One of these
families is known as the cellulase family D [3] or as the glycosyl hydrolases
family 8 [4,E1]. The enzymes which are currently known to belong to this
family are listed below.

- Acetobacter xylinum endonuclease cmcAX.
- Bacillus strain KSM-330 acidic endonuclease K (Endo-K).
- Cellulomonas josui endoglucanase 2 (celB).
- Cellulomonas uda endoglucanase.
- Clostridium cellulolyticum endoglucanases C (celcCC).
- Clostridium thermocellum endoglucanases A (celA).
- Erwinia chrysanthemi minor endoglucanase y (celY).
- Bacillus circulans beta-glucanase (EC 3.2.1.73).
- Escherichia coli hypothetical protein yhjM.

The most conserved region in these enzymes is a stretch of about 20 residues
that contains two conserved aspartate. The first asparatate is thought [5] to
act as the nucleophile in the catalytic mechanism. We have used this region as
a signature pattern.

-Consensus pattern: A-[ST]-D-[AG]-D-x(2)-[IM]-A-x-[SA]-[LIVM]-[LIVMG]-x-A-
x(3)-[FW]
[The first D is an active site residue]
-Sequences known to belong to this class detected by the pattern: ALL.
-Other sequence(s) detected in Swiss-Prot: NONE.

-Expert(s) to contact by email:
Henrissat B.; bernie@afmb.cnrs-mrs.fr

-Last update: November 1997 / Text revised.

""")

        self.assertEqual(len(record.references), 6)
        self.assertEqual(record.references[ 0].number, "1")
        self.assertEqual(record.references[ 0].authors, "Beguin P.")
        self.assertEqual(record.references[ 0].citation, """\
"Molecular biology of cellulose degradation."
Annu. Rev. Microbiol. 44:219-248(1990).
PubMed=2252383; DOI=10.1146/annurev.mi.44.100190.001251""")
        self.assertEqual(record.references[ 1].number, "2")
        self.assertEqual(record.references[ 1].authors, "Gilkes N.R., Henrissat B., Kilburn D.G., Miller R.C. Jr., Warren R.A.J.")
        self.assertEqual(record.references[ 1].citation, """\
"Domains in microbial beta-1, 4-glycanases: sequence conservation,
function, and enzyme families."
Microbiol. Rev. 55:303-315(1991).
PubMed=1886523""")
        self.assertEqual(record.references[ 2].number, "3")
        self.assertEqual(record.references[ 2].authors, "Henrissat B., Claeyssens M., Tomme P., Lemesle L., Mornon J.-P.")
        self.assertEqual(record.references[ 2].citation, """\
"Cellulase families revealed by hydrophobic cluster analysis."
Gene 81:83-95(1989).
PubMed=2806912""")
        self.assertEqual(record.references[ 3].number, "4")
        self.assertEqual(record.references[ 3].authors, "Henrissat B.")
        self.assertEqual(record.references[ 3].citation, """\
"A classification of glycosyl hydrolases based on amino acid sequence
similarities."
Biochem. J. 280:309-316(1991).
PubMed=1747104""")
        self.assertEqual(record.references[ 4].number, "5")
        self.assertEqual(record.references[ 4].authors, "Alzari P.M., Souchon H., Dominguez R.")
        self.assertEqual(record.references[ 4].citation, """\
"The crystal structure of endoglucanase CelA, a family 8 glycosyl
hydrolase from Clostridium thermocellum."
Structure 4:265-275(1996).
PubMed=8805535""")
        self.assertEqual(record.references[ 5].number, "E1")
        self.assertEqual(record.references[ 5].authors, "")
        self.assertEqual(record.references[ 5].citation, 'http://www.expasy.org/cgi-bin/lists?glycosid.txt')

    def test_read_pdoc00787(self):
        "Reading Prodoc record PDOC00787"
        filename = os.path.join( 'Prosite', 'Doc', 'pdoc00787.txt')
        handle = open(filename)
        record = Prodoc.read(handle)
        handle.close()

        self.assertEqual(record.accession, "PDOC00787")
        self.assertEqual(len(record.prosite_refs), 1)
        self.assertEqual(record.prosite_refs[0], ("PS01027", "GLYCOSYL_HYDROL_F39"))
        self.assertEqual(record.text, """\
******************************************************
* Glycosyl hydrolases family 39 putative active site *
******************************************************

It has been shown [1,E1] that the following glycosyl hydrolases can be
classified into a single family on the basis of sequence similarities:

- Mammalian lysosomal alpha-L-iduronidase (EC 3.2.1.76).
- Caldocellum saccharolyticum and Thermoanaerobacter saccharolyticum beta-
xylosidase (EC 3.2.1.37) (gene xynB).

The best conserved regions in these enzymes is located in the N-terminal
section. It contains a glutamic acid residue which, on the basis of
similarities with other families of glycosyl hydrolases [2], probably acts as
the proton donor in the catalytic mechanism. We use this region as a signature
pattern.

-Consensus pattern: W-x-F-E-x-W-N-E-P-[DN]
[The second E may be the active site residue]
-Sequences known to belong to this class detected by the pattern: ALL.
-Other sequence(s) detected in Swiss-Prot: NONE.

-Expert(s) to contact by email:
Henrissat B.; bernie@afmb.cnrs-mrs.fr

-Last update: May 2004 / Text revised.

""")

        self.assertEqual(len(record.references), 3)
        self.assertEqual(record.references[ 0].number, "1")
        self.assertEqual(record.references[ 0].authors, "Henrissat B., Bairoch A.")
        self.assertEqual(record.references[ 0].citation, """\
"New families in the classification of glycosyl hydrolases based on
amino acid sequence similarities."
Biochem. J. 293:781-788(1993).
PubMed=8352747""")
        self.assertEqual(record.references[ 1].number, "2")
        self.assertEqual(record.references[ 1].authors, "Henrissat B., Callebaut I., Fabrega S., Lehn P., Mornon J.-P., Davies G.")
        self.assertEqual(record.references[ 1].citation, """\
"Conserved catalytic machinery and the prediction of a common fold for
several families of glycosyl hydrolases."
Proc. Natl. Acad. Sci. U.S.A. 92:7090-7094(1995).
PubMed=7624375""")
        self.assertEqual(record.references[ 2].number, "E1")
        self.assertEqual(record.references[ 2].authors, '')
        self.assertEqual(record.references[ 2].citation, "http://www.expasy.org/cgi-bin/lists?glycosid.txt")

    def test_read_pdoc0933(self):
        "Reading Prodoc record PDOC00933"
        filename = os.path.join( 'Prosite', 'Doc', 'pdoc00933.txt')
        handle = open(filename)
        record = Prodoc.read(handle)
        handle.close()

        self.assertEqual(record.accession, "PDOC00933")
        self.assertEqual(len(record.prosite_refs), 1)
        self.assertEqual(record.prosite_refs[0], ("PS01213", "GLOBIN_FAM_2"))
        self.assertEqual(record.text, """\
**********************************************
* Protozoan/cyanobacterial globins signature *
**********************************************

Globins are heme-containing proteins involved in binding and/or transporting
oxygen [1]. Almost all globins belong to a large family (see <PDOC00793>), the
only exceptions are the following proteins which form a family of their own
[2,3,4]:

- Monomeric hemoglobins from the protozoan Paramecium caudatum, Tetrahymena
pyriformis and Tetrahymena thermophila.
- Cyanoglobins from the cyanobacteria Nostoc commune and Synechocystis PCC
6803.
- Globins LI637 and LI410 from the chloroplast of the alga Chlamydomonas
eugametos.
- Mycobacterium tuberculosis globins glbN and glbO.

These proteins contain a conserved histidine which could be involved in heme-
binding. As a signature pattern, we use a conserved region that ends with this
residue.

-Consensus pattern: F-[LF]-x(4)-[GE]-G-[PAT]-x(2)-[YW]-x-[GSE]-[KRQAE]-x(1,5)-
[LIVM]-x(3)-H
[The H may be a heme ligand]
-Sequences known to belong to this class detected by the pattern: ALL.
-Other sequence(s) detected in Swiss-Prot: NONE.
-Last update: April 2006 / Pattern revised.

""")

        self.assertEqual(len(record.references), 4)
        self.assertEqual(record.references[ 0].number, "1")
        self.assertEqual(record.references[ 0].authors, "Concise Encyclopedia Biochemistry, Second Edition, Walter de Gruyter, Berlin New-York (1988).")
        self.assertEqual(record.references[ 0].citation, '')
        self.assertEqual(record.references[ 1].number, "2")
        self.assertEqual(record.references[ 1].authors, "Takagi T.")
        self.assertEqual(record.references[ 1].citation, 'Curr. Opin. Struct. Biol. 3:413-418(1993).')
        self.assertEqual(record.references[ 2].number, "3")
        self.assertEqual(record.references[ 2].authors, "Couture M., Chamberland H., St-Pierre B., Lafontaine J., Guertin M.")
        self.assertEqual(record.references[ 2].citation, """\
"Nuclear genes encoding chloroplast hemoglobins in the unicellular
green alga Chlamydomonas eugametos."
Mol. Gen. Genet. 243:185-197(1994).
PubMed=8177215""")
        self.assertEqual(record.references[ 3].number, "4")
        self.assertEqual(record.references[ 3].authors, "Couture M., Das T.K., Savard P.Y., Ouellet Y., Wittenberg J.B., Wittenberg B.A., Rousseau D.L., Guertin M.")
        self.assertEqual(record.references[ 3].citation, """\
"Structural investigations of the hemoglobin of the cyanobacterium
Synechocystis PCC6803 reveal a unique distal heme pocket."
Eur. J. Biochem. 267:4770-4780(2000).
PubMed=10903511""")

class TestProdocParse(unittest.TestCase):

    def test_parse_pdoc(self):
        "Parsing an excerpt of prosite.doc"
        filename = os.path.join( 'Prosite', 'Doc', 'prosite.excerpt.doc')
        handle = open(filename)
        records = Prodoc.parse(handle)

        # Testing the first parsed record
        record = records.next()
        self.assertEqual(record.accession, "PDOC00000")
        self.assertEqual(len(record.prosite_refs), 0)
        self.assertEqual(record.text, """\
**********************************
*** PROSITE documentation file ***
**********************************

Release 20.43 of 10-Feb-2009.

PROSITE is developed by the Swiss Institute of Bioinformatics (SIB) under
the responsability of Amos Bairoch and Nicolas Hulo.

This release was prepared by: Nicolas Hulo, Virginie Bulliard, Petra
Langendijk-Genevaux and Christian Sigrist with the help of Edouard
de Castro, Lorenzo Cerutti, Corinne Lachaize and Amos Bairoch.


See: http://www.expasy.org/prosite/
Email: prosite@expasy.org

Acknowledgements:

- To all those mentioned in this document who have reviewed the entry(ies)
for which they are listed as experts. With specific thanks to Rein Aasland,
Mark Boguski, Peer Bork, Josh Cherry, Andre Chollet, Frank Kolakowski,
David Landsman, Bernard Henrissat, Eugene Koonin, Steve Henikoff, Manuel
Peitsch and Jonathan Reizer.
- Jim Apostolopoulos is the author of the PDOC00699 entry.
- Brigitte Boeckmann is the author of the PDOC00691, PDOC00703, PDOC00829,
PDOC00796, PDOC00798, PDOC00799, PDOC00906, PDOC00907, PDOC00908,
PDOC00912, PDOC00913, PDOC00924, PDOC00928, PDOC00929, PDOC00955,
PDOC00961, PDOC00966, PDOC00988 and PDOC50020 entries.
- Jean-Louis Boulay is the author of the PDOC01051, PDOC01050, PDOC01052,
PDOC01053 and PDOC01054 entries.
- Ryszard Brzezinski is the author of the PDOC60000 entry.
- Elisabeth Coudert is the author of the PDOC00373 entry.
- Kirill Degtyarenko is the author of the PDOC60001 entry.
- Christian Doerig is the author of the PDOC01049 entry.
- Kay Hofmann is the author of the PDOC50003, PDOC50006, PDOC50007 and
PDOC50017 entries.
- Chantal Hulo is the author of the PDOC00987 entry.
- Karine Michoud is the author of the PDOC01044 and PDOC01042 entries.
- Yuri Panchin is the author of the PDOC51013 entry.
- S. Ramakumar is the author of the PDOC51052, PDOC60004, PDOC60010,
PDOC60011, PDOC60015, PDOC60016, PDOC60018, PDOC60020, PDOC60021,
PDOC60022, PDOC60023, PDOC60024, PDOC60025, PDOC60026, PDOC60027,
PDOC60028, PDOC60029 and PDOC60030 entries.
- Keith Robison is the author of the PDOC00830 and PDOC00861 entries.

------------------------------------------------------------------------
PROSITE is copyright. It is produced by the Swiss Institute of
Bioinformatics (SIB). There are no restrictions on its use by non-profit
institutions as long as its content is in no way modified. Usage by and
for commercial entities requires a license agreement. For information
about the licensing scheme send an email to license@isb-sib.ch or
see: http://www.expasy.org/prosite/prosite_license.htm.
------------------------------------------------------------------------

""")

        # Testing the second parsed record"
        record = records.next()
        self.assertEqual(record.accession, "PDOC00001")
        self.assertEqual(len(record.prosite_refs), 1)
        self.assertEqual(record.prosite_refs[0], ("PS00001", "ASN_GLYCOSYLATION"))
        self.assertEqual(record.text, """\
************************
* N-glycosylation site *
************************

It has been known for a long time [1] that potential N-glycosylation sites are
specific to the consensus sequence Asn-Xaa-Ser/Thr. It must be noted that the
presence of the consensus tripeptide is not sufficient to conclude that an
asparagine residue is glycosylated, due to the fact that the folding of the
protein plays an important role in the regulation of N-glycosylation [2]. It
has been shown [3] that the presence of proline between Asn and Ser/Thr will
inhibit N-glycosylation; this has been confirmed by a recent [4] statistical
analysis of glycosylation sites, which also shows that about 50% of the sites
that have a proline C-terminal to Ser/Thr are not glycosylated.

It must also be noted that there are a few reported cases of glycosylation
sites with the pattern Asn-Xaa-Cys; an experimentally demonstrated occurrence
of such a non-standard site is found in the plasma protein C [5].

-Consensus pattern: N-{P}-[ST]-{P}
[N is the glycosylation site]
-Last update: May 1991 / Text revised.

""")
        self.assertEqual(record.references[ 0].number, "1")
        self.assertEqual(record.references[ 0].authors, "Marshall R.D.")
        self.assertEqual(record.references[ 0].citation, """\
"Glycoproteins."
Annu. Rev. Biochem. 41:673-702(1972).
PubMed=4563441; DOI=10.1146/annurev.bi.41.070172.003325""")
        self.assertEqual(record.references[ 1].number, "2")
        self.assertEqual(record.references[ 1].authors, "Pless D.D., Lennarz W.J.")
        self.assertEqual(record.references[ 1].citation, """\
"Enzymatic conversion of proteins to glycoproteins."
Proc. Natl. Acad. Sci. U.S.A. 74:134-138(1977).
PubMed=264667""")
        self.assertEqual(record.references[ 2].number, "3")
        self.assertEqual(record.references[ 2].authors, "Bause E.")
        self.assertEqual(record.references[ 2].citation, """\
"Structural requirements of N-glycosylation of proteins. Studies with
proline peptides as conformational probes."
Biochem. J. 209:331-336(1983).
PubMed=6847620""")
        self.assertEqual(record.references[ 3].number, "4")
        self.assertEqual(record.references[ 3].authors, "Gavel Y., von Heijne G.")
        self.assertEqual(record.references[ 3].citation, """\
"Sequence differences between glycosylated and non-glycosylated
Asn-X-Thr/Ser acceptor sites: implications for protein engineering."
Protein Eng. 3:433-442(1990).
PubMed=2349213""")
        self.assertEqual(record.references[ 4].number, "5")
        self.assertEqual(record.references[ 4].authors, "Miletich J.P., Broze G.J. Jr.")
        self.assertEqual(record.references[ 4].citation, """\
"Beta protein C is not glycosylated at asparagine 329. The rate of
translation may influence the frequency of usage at
asparagine-X-cysteine sites."
J. Biol. Chem. 265:11397-11404(1990).
PubMed=1694179""")

        # Testing the third parsed record"
        record = records.next()
        self.assertEqual(record.accession, "PDOC00004")
        self.assertEqual(len(record.prosite_refs), 1)
        self.assertEqual(record.prosite_refs[0], ("PS00004", "CAMP_PHOSPHO_SITE"))
        self.assertEqual(record.text, """\
****************************************************************
* cAMP- and cGMP-dependent protein kinase phosphorylation site *
****************************************************************

There has been a number of studies relative to the specificity of cAMP- and
cGMP-dependent protein kinases [1,2,3]. Both types of kinases appear to share
a preference for the phosphorylation of serine or threonine residues found
close to at least two consecutive N-terminal basic residues. It is important
to note that there are quite a number of exceptions to this rule.

-Consensus pattern: [RK](2)-x-[ST]
[S or T is the phosphorylation site]
-Last update: June 1988 / First entry.

""")

        self.assertEqual(record.references[ 0].number, "1")
        self.assertEqual(record.references[ 0].authors, "Fremisco J.R., Glass D.B., Krebs E.G.")
        self.assertEqual(record.references[ 0].citation, """\
J. Biol. Chem. 255:4240-4245(1980).""")
        self.assertEqual(record.references[ 1].number, "2")
        self.assertEqual(record.references[ 1].authors, "Glass D.B., Smith S.B.")
        self.assertEqual(record.references[ 1].citation, """\
"Phosphorylation by cyclic GMP-dependent protein kinase of a synthetic
peptide corresponding to the autophosphorylation site in the enzyme."
J. Biol. Chem. 258:14797-14803(1983).
PubMed=6317673""")
        self.assertEqual(record.references[ 2].number, "3")
        self.assertEqual(record.references[ 2].authors, "Glass D.B., el-Maghrabi M.R., Pilkis S.J.")
        self.assertEqual(record.references[ 2].citation, """\
"Synthetic peptides corresponding to the site phosphorylated in
6-phosphofructo-2-kinase/fructose-2,6-bisphosphatase as substrates of
cyclic nucleotide-dependent protein kinases."
J. Biol. Chem. 261:2987-2993(1986).
PubMed=3005275""")

        # Testing the fourth parsed record"
        record = records.next()
        self.assertEqual(record.accession, "PDOC60030")
        self.assertEqual(len(record.prosite_refs), 1)
        self.assertEqual(record.prosite_refs[0], ("PS60030", "BACTERIOCIN_IIA"))
        self.assertEqual(record.text, """\
******************************************
* Bacteriocin class IIa family signature *
******************************************

Many Gram-positive bacteria produce ribosomally synthesized antimicrobial
peptides, often termed bacteriocins. One important and well studied class of
bacteriocins is the class IIa or pediocin-like bacteriocins produced by lactic
acid bacteria. All class IIa bacteriocins are produced by food-associated
strains, isolated from a variety of food products of industrial and natural
origins, including meat products, dairy products and vegetables. Class IIa
bacteriocins are all cationic, display anti-Listeria activity, and kill target
cells by permeabilizing the cell membrane [1-3].

Class IIa bacteriocins contain between 37 and 48 residues. Based on their
primary structures, the peptide chains of class IIa bacteriocins may be
divided roughly into two regions: a hydrophilic, cationic and highly conserved
N-terminal region, and a less conserved hydrophobic/amphiphilic C-terminal
region. The N-terminal region contains the conserved Y-G-N-G-V/L 'pediocin
box' motif and two conserved cysteine residues joined by a disulfide bridge.
It forms a three-stranded antiparallel beta-sheet supported by the conserved
disulfide bridge (see <PDB:1OG7>). This cationic N-terminal beta-sheet domain
mediates binding of the class IIa bacteriocin to the target cell membrane. The
C-terminal region forms a hairpin-like domain (see <PDB:1OG7>) that penetrates
into the hydrophobic part of the target cell membrane, thereby mediating
leakage through the membrane. The two domains are joined by a hinge, which
enables movement of the domains relative to each other [2,3].

Some proteins known to belong to the class IIa bacteriocin family are listed
below:

- Pediococcus acidilactici pediocin PA-1.
- Leuconostoc mesenteroides mesentericin Y105.
- Carnobacterium piscicola carnobacteriocin B2.
- Lactobacillus sake sakacin P.
- Enterococcus faecium enterocin A.
- Enterococcus faecium enterocin P.
- Leuconostoc gelidum leucocin A.
- Lactobacillus curvatus curvacin A.
- Listeria innocua listeriocin 743A.

The pattern we developed for the class IIa bacteriocin family covers the
'pediocin box' motif.

-Conserved pattern: Y-G-N-G-[VL]-x-C-x(4)-C
-Sequences known to belong to this class detected by the pattern: ALL.
-Other sequence(s) detected in Swiss-Prot: NONE.

-Expert(s) to contact by email:
Ramakumar S.; ramak@physics.iisc.ernet.in

-Last update: March 2006 / First entry.

""")

        self.assertEqual(record.references[ 0].number, "1")
        self.assertEqual(record.references[ 0].authors, "Ennahar S., Sonomoto K., Ishizaki A.")
        self.assertEqual(record.references[ 0].citation, """\
"Class IIa bacteriocins from lactic acid bacteria: antibacterial
activity and food preservation."
J. Biosci. Bioeng. 87:705-716(1999).
PubMed=16232543""")
        self.assertEqual(record.references[ 1].number, "2")
        self.assertEqual(record.references[ 1].authors, "Johnsen L., Fimland G., Nissen-Meyer J.")
        self.assertEqual(record.references[ 1].citation, """\
"The C-terminal domain of pediocin-like antimicrobial peptides (class
IIa bacteriocins) is involved in specific recognition of the
C-terminal part of cognate immunity proteins and in determining the
antimicrobial spectrum."
J. Biol. Chem. 280:9243-9250(2005).
PubMed=15611086; DOI=10.1074/jbc.M412712200""")
        self.assertEqual(record.references[ 2].number, "3")
        self.assertEqual(record.references[ 2].authors, "Fimland G., Johnsen L., Dalhus B., Nissen-Meyer J.")
        self.assertEqual(record.references[ 2].citation, """\
"Pediocin-like antimicrobial peptides (class IIa bacteriocins) and
their immunity proteins: biosynthesis, structure, and mode of
action."
J. Pept. Sci. 11:688-696(2005).
PubMed=16059970; DOI=10.1002/psc.699""")


if __name__ == "__main__":
    runner = unittest.TextTestRunner(verbosity = 2)
    unittest.main(testRunner=runner)
Something went wrong with that request. Please try again.