annotate mayachemtools/docs/modules/html/code/PDBFileUtil.html @ 0:73ae111cf86f draft

Uploaded
author deepakjadmin
date Wed, 20 Jan 2016 11:55:01 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1 <html>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
2 <head>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
3 <title>MayaChemTools:Code:PDBFileUtil.pm</title>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
4 <meta http-equiv="content-type" content="text/html;charset=utf-8">
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
5 <link rel="stylesheet" type="text/css" href="../../../css/MayaChemToolsCode.css">
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
6 </head>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
7 <body leftmargin="20" rightmargin="20" topmargin="10" bottommargin="10">
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
8 <br/>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
9 <center>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
10 <a href="http://www.mayachemtools.org" title="MayaChemTools Home"><img src="../../../images/MayaChemToolsLogo.gif" border="0" alt="MayaChemTools"></a>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
11 </center>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
12 <br/>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
13 <pre>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
14 <a name="package-PDBFileUtil-"></a> 1 <span class="k">package </span><span class="i">PDBFileUtil</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
15 2 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
16 3 <span class="c"># $RCSfile: PDBFileUtil.pm,v $</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
17 4 <span class="c"># $Date: 2015/02/28 20:47:18 $</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
18 5 <span class="c"># $Revision: 1.36 $</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
19 6 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
20 7 <span class="c"># Author: Manish Sud &lt;msud@san.rr.com&gt;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
21 8 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
22 9 <span class="c"># Copyright (C) 2015 Manish Sud. All rights reserved.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
23 10 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
24 11 <span class="c"># This file is part of MayaChemTools.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
25 12 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
26 13 <span class="c"># MayaChemTools is free software; you can redistribute it and/or modify it under</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
27 14 <span class="c"># the terms of the GNU Lesser General Public License as published by the Free</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
28 15 <span class="c"># Software Foundation; either version 3 of the License, or (at your option) any</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
29 16 <span class="c"># later version.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
30 17 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
31 18 <span class="c"># MayaChemTools is distributed in the hope that it will be useful, but without</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
32 19 <span class="c"># any warranty; without even the implied warranty of merchantability of fitness</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
33 20 <span class="c"># for a particular purpose. See the GNU Lesser General Public License for more</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
34 21 <span class="c"># details.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
35 22 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
36 23 <span class="c"># You should have received a copy of the GNU Lesser General Public License</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
37 24 <span class="c"># along with MayaChemTools; if not, see &lt;http://www.gnu.org/licenses/&gt; or</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
38 25 <span class="c"># write to the Free Software Foundation Inc., 59 Temple Place, Suite 330,</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
39 26 <span class="c"># Boston, MA, 02111-1307, USA.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
40 27 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
41 28
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
42 29 <span class="k">use</span> <span class="w">strict</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
43 30 <span class="k">use</span> <span class="w">Exporter</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
44 31 <span class="k">use</span> <span class="w">Text::ParseWords</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
45 32 <span class="k">use</span> <span class="w">TextUtil</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
46 33 <span class="k">use</span> <span class="w">FileUtil</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
47 34 <span class="k">use</span> <span class="w">TimeUtil</span> <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
48 35
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
49 36 <span class="k">use</span> <span class="w">vars</span> <span class="q">qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
50 37
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
51 38 <span class="i">@ISA</span> = <span class="q">qw(Exporter)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
52 39 <span class="i">@EXPORT</span> = <span class="q">qw(GetPDBRecordType GetRecordTypesCount GetAllResidues GetConectRecordLines GetChainsAndResidues GetExperimentalTechnique GetExperimentalTechniqueResolution GetMinMaxCoords IsPDBFile IsAtomRecordType IsConectRecordType IsHeaderRecordType IsHetatmRecordType IsSeqresRecordType IsModelRecordType IsEndmdlRecordType IsTerRecordType IsMasterRecordType ReadPDBFile ParseHeaderRecordLine GenerateHeaderRecordLine GenerateHeaderRecordTimeStamp ParseAtomRecordLine GenerateAtomRecordLine ParseAtomOrHetatmRecordLine GenerateAtomOrHetatmRecordLine GenerateHetatmRecordLine ParseHetatmRecordLine ParseConectRecordLine GenerateConectRecordLine ParseExpdtaRecordLine ParseRemark2ResolutionRecordLine ParseSeqresRecordLine ParseTerRecordLine GenerateTerRecordLine ParseMasterRecordLine GenerateEndRecordLine)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
53 40 <span class="i">@EXPORT_OK</span> = <span class="q">qw()</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
54 41
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
55 42 <span class="i">%EXPORT_TAGS</span> = <span class="s">(</span><span class="w">all</span> <span class="cm">=&gt;</span> <span class="s">[</span><span class="i">@EXPORT</span><span class="cm">,</span> <span class="i">@EXPORT_OK</span><span class="s">]</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
56 43
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
57 44 <span class="c"># Get PDB record type...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
58 <a name="GetPDBRecordType-"></a> 45 <span class="k">sub </span><span class="m">GetPDBRecordType</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
59 46 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
60 47
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
61 48 <span class="k">return</span> <span class="i">_GetRecordType</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
62 49 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
63 50
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
64 51 <span class="c"># Is it a PDB file?</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
65 <a name="IsPDBFile-"></a> 52 <span class="k">sub </span><span class="m">IsPDBFile</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
66 53 <span class="k">my</span><span class="s">(</span><span class="i">$PDBFile</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
67 54 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="cm">,</span> <span class="i">$Status</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
68 55
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
69 56 <span class="i">$Status</span> = <span class="n">0</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
70 57 <span class="k">open</span> <span class="w">PDBFILE</span><span class="cm">,</span> <span class="q">&quot;$PDBFile&quot;</span> <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Can&#39;t open $PDBFile: $!\n&quot;</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
71 58 <span class="i">$Line</span> = <span class="i">GetTextLine</span><span class="s">(</span>\<span class="i">*PDBFILE</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
72 59 <span class="i">$Status</span> = <span class="s">(</span><span class="i">$Line</span> =~ <span class="q">/^HEADER/i</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
73 60 <span class="k">close</span> <span class="w">PDBFILE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
74 61
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
75 62 <span class="k">return</span> <span class="i">$Status</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
76 63 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
77 64
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
78 65 <span class="c"># Is it a atom record type?</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
79 <a name="IsAtomRecordType-"></a> 66 <span class="k">sub </span><span class="m">IsAtomRecordType</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
80 67 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
81 68
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
82 69 <span class="k">return</span> <span class="i">_IsRecordType</span><span class="s">(</span><span class="i">$Line</span><span class="cm">,</span> <span class="q">&#39;ATOM&#39;</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
83 70 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
84 71
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
85 72 <span class="c"># Is it a connect record type?</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
86 <a name="IsConectRecordType-"></a> 73 <span class="k">sub </span><span class="m">IsConectRecordType</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
87 74 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
88 75
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
89 76 <span class="k">return</span> <span class="i">_IsRecordType</span><span class="s">(</span><span class="i">$Line</span><span class="cm">,</span> <span class="q">&#39;CONECT&#39;</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
90 77 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
91 78
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
92 79 <span class="c"># Is it a header atom record type?</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
93 <a name="IsHeaderRecordType-"></a> 80 <span class="k">sub </span><span class="m">IsHeaderRecordType</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
94 81 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
95 82
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
96 83 <span class="k">return</span> <span class="i">_IsRecordType</span><span class="s">(</span><span class="i">$Line</span><span class="cm">,</span> <span class="q">&#39;HEADER&#39;</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
97 84 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
98 85
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
99 86 <span class="c"># Is it a hetro atom record type?</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
100 <a name="IsHetatmRecordType-"></a> 87 <span class="k">sub </span><span class="m">IsHetatmRecordType</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
101 88 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
102 89
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
103 90 <span class="k">return</span> <span class="i">_IsRecordType</span><span class="s">(</span><span class="i">$Line</span><span class="cm">,</span> <span class="q">&#39;HETATM&#39;</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
104 91 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
105 92
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
106 93 <span class="c"># Is it a seqres record type?</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
107 <a name="IsSeqresRecordType-"></a> 94 <span class="k">sub </span><span class="m">IsSeqresRecordType</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
108 95 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
109 96
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
110 97 <span class="k">return</span> <span class="i">_IsRecordType</span><span class="s">(</span><span class="i">$Line</span><span class="cm">,</span> <span class="q">&#39;SEQRES&#39;</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
111 98 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
112 99
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
113 100 <span class="c"># Is it a MODEL record type?</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
114 <a name="IsModelRecordType-"></a> 101 <span class="k">sub </span><span class="m">IsModelRecordType</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
115 102 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
116 103
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
117 104 <span class="k">return</span> <span class="i">_IsRecordType</span><span class="s">(</span><span class="i">$Line</span><span class="cm">,</span> <span class="q">&#39;MODEL&#39;</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
118 105 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
119 106
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
120 107 <span class="c"># Is it a ENDMDL record type?</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
121 <a name="IsEndmdlRecordType-"></a> 108 <span class="k">sub </span><span class="m">IsEndmdlRecordType</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
122 109 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
123 110
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
124 111 <span class="k">return</span> <span class="i">_IsRecordType</span><span class="s">(</span><span class="i">$Line</span><span class="cm">,</span> <span class="q">&#39;ENDMDL&#39;</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
125 112 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
126 113
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
127 114 <span class="c"># Is it a TER record type?</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
128 <a name="IsTerRecordType-"></a> 115 <span class="k">sub </span><span class="m">IsTerRecordType</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
129 116 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
130 117
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
131 118 <span class="k">return</span> <span class="i">_IsRecordType</span><span class="s">(</span><span class="i">$Line</span><span class="cm">,</span> <span class="q">&#39;TER&#39;</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
132 119 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
133 120
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
134 121 <span class="c"># Is it a MASTER record type?</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
135 <a name="IsMasterRecordType-"></a> 122 <span class="k">sub </span><span class="m">IsMasterRecordType</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
136 123 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
137 124
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
138 125 <span class="k">return</span> <span class="i">_IsRecordType</span><span class="s">(</span><span class="i">$Line</span><span class="cm">,</span> <span class="q">&#39;MASTER&#39;</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
139 126 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
140 127
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
141 128 <span class="c"># Count the number of each record type and a reference to data type with these key/value pairs:</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
142 129 <span class="c"># {RecordTypes} - An array of unique record types in order of their presence in the file</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
143 130 <span class="c"># {Count}{$RecordType} - Count of each record type</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
144 131 <span class="c"># {Lines}{$RecordType} - Optional lines data for a specific record type.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
145 132 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
146 <a name="GetRecordTypesCount-"></a> 133 <span class="k">sub </span><span class="m">GetRecordTypesCount</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
147 134 <span class="k">my</span><span class="s">(</span><span class="i">$PDBRecordLinesRef</span><span class="cm">,</span> <span class="i">$SpecifiedRecordType</span><span class="cm">,</span> <span class="i">$GetRecordLinesFlag</span><span class="cm">,</span> <span class="i">$RecordType</span><span class="cm">,</span> <span class="i">$RecordLine</span><span class="cm">,</span> <span class="i">%RecordTypeDataMap</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
148 135
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
149 136 <span class="i">%RecordTypeDataMap</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
150 137 <span class="i">@</span>{<span class="i">$RecordTypeDataMap</span>{<span class="w">RecordTypes</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
151 138 <span class="i">%</span>{<span class="i">$RecordTypeDataMap</span>{<span class="w">Count</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
152 139 <span class="i">%</span>{<span class="i">$RecordTypeDataMap</span>{<span class="w">Lines</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
153 140
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
154 141 <span class="i">$SpecifiedRecordType</span> = <span class="q">&#39;&#39;</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
155 142 <span class="i">$GetRecordLinesFlag</span> = <span class="n">0</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
156 143 <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">3</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
157 144 <span class="s">(</span><span class="i">$PDBRecordLinesRef</span><span class="cm">,</span> <span class="i">$SpecifiedRecordType</span><span class="cm">,</span> <span class="i">$GetRecordLinesFlag</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
158 145 <span class="i">$SpecifiedRecordType</span> = <span class="k">uc</span> <span class="i">$SpecifiedRecordType</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
159 146 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
160 147 <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
161 148 <span class="s">(</span><span class="i">$PDBRecordLinesRef</span><span class="cm">,</span> <span class="i">$SpecifiedRecordType</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
162 149 <span class="i">$SpecifiedRecordType</span> = <span class="k">uc</span> <span class="i">$SpecifiedRecordType</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
163 150 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
164 151 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
165 152 <span class="s">(</span><span class="i">$PDBRecordLinesRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
166 153 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
167 154 <span class="j">LINE:</span> <span class="k">for</span> <span class="i">$RecordLine</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$PDBRecordLinesRef</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
168 155 <span class="i">$RecordType</span> = <span class="i">_GetRecordType</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
169 156 <span class="k">if</span> <span class="s">(</span><span class="i">$SpecifiedRecordType</span> &amp;&amp; <span class="s">(</span><span class="i">$SpecifiedRecordType</span> <span class="k">ne</span> <span class="i">$RecordType</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
170 157 <span class="k">next</span> <span class="j">LINE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
171 158 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
172 159 <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$RecordTypeDataMap</span>{<span class="w">Count</span>}{<span class="i">$RecordType</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
173 160 <span class="c"># Update count...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
174 161 <span class="i">$RecordTypeDataMap</span>{<span class="w">Count</span>}{<span class="i">$RecordType</span>} += <span class="n">1</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
175 162
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
176 163 <span class="k">if</span> <span class="s">(</span><span class="i">$GetRecordLinesFlag</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
177 164 <span class="k">push</span> <span class="i">@</span>{<span class="i">$RecordTypeDataMap</span>{<span class="w">Lines</span>}{<span class="i">$RecordType</span>}}<span class="cm">,</span> <span class="i">$RecordLine</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
178 165 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
179 166 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
180 167 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
181 168 <span class="c"># New record type...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
182 169 <span class="k">push</span> <span class="i">@</span>{<span class="i">$RecordTypeDataMap</span>{<span class="w">RecordTypes</span>}}<span class="cm">,</span> <span class="i">$RecordType</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
183 170 <span class="i">$RecordTypeDataMap</span>{<span class="w">Count</span>}{<span class="i">$RecordType</span>} = <span class="n">1</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
184 171
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
185 172 <span class="k">if</span> <span class="s">(</span><span class="i">$GetRecordLinesFlag</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
186 173 <span class="i">@</span>{<span class="i">$RecordTypeDataMap</span>{<span class="w">Lines</span>}{<span class="i">$RecordType</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
187 174 <span class="k">push</span> <span class="i">@</span>{<span class="i">$RecordTypeDataMap</span>{<span class="w">Lines</span>}{<span class="i">$RecordType</span>}}<span class="cm">,</span> <span class="i">$RecordLine</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
188 175 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
189 176 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
190 177 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
191 178 <span class="k">return</span> <span class="s">(</span>\<span class="i">%RecordTypeDataMap</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
192 179 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
193 180
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
194 181 <span class="c"># Collect CONECT record lines for specific atom number, modified specified data to exclude any atom</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
195 182 <span class="c"># number not present in the list of specified atom numbers and return a reference to list of</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
196 183 <span class="c"># CONECT record lines.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
197 184 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
198 <a name="GetConectRecordLines-"></a> 185 <span class="k">sub </span><span class="m">GetConectRecordLines</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
199 186 <span class="k">my</span><span class="s">(</span><span class="i">$PDBRecordLinesRef</span><span class="cm">,</span> <span class="i">$AtomNumbersMapRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
200 187 <span class="k">my</span><span class="s">(</span><span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$ConectAtomNumber</span><span class="cm">,</span> <span class="i">$RecordLine</span><span class="cm">,</span> <span class="i">@ConectRecordAtomNums</span><span class="cm">,</span> <span class="i">@ConectRecordLines</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
201 188
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
202 189 <span class="i">@ConectRecordLines</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
203 190 <span class="j">LINE:</span> <span class="k">for</span> <span class="i">$RecordLine</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$PDBRecordLinesRef</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
204 191 <span class="k">if</span> <span class="s">(</span>!<span class="i">IsConectRecordType</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
205 192 <span class="k">next</span> <span class="j">LINE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
206 193 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
207 194 <span class="i">@ConectRecordAtomNums</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
208 195 <span class="k">push</span> <span class="i">@ConectRecordAtomNums</span><span class="cm">,</span> <span class="i">ParseConectRecordLine</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
209 196 <span class="j">ATOMNUMBER:</span> <span class="k">for</span> <span class="i">$ConectAtomNumber</span> <span class="s">(</span><span class="i">@ConectRecordAtomNums</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
210 197 <span class="k">if</span> <span class="s">(</span><span class="k">defined</span> <span class="i">$ConectAtomNumber</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
211 198 <span class="i">$AtomNumber</span> = <span class="i">$ConectAtomNumber</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
212 199 <span class="k">if</span> <span class="s">(</span><span class="i">$AtomNumber</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
213 200 <span class="k">if</span> <span class="s">(</span>! <span class="k">exists</span> <span class="i">$AtomNumbersMapRef</span>-&gt;{<span class="i">$AtomNumber</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
214 201 <span class="k">next</span> <span class="j">LINE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
215 202 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
216 203 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
217 204 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
218 205 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
219 206 <span class="k">push</span> <span class="i">@ConectRecordLines</span><span class="cm">,</span> <span class="i">$RecordLine</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
220 207 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
221 208 <span class="k">return</span> \<span class="i">@ConectRecordLines</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
222 209 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
223 210
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
224 211 <span class="c"># Get chains and residue information using ATOM/HETATM or SEQRES records. And return a reference to a</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
225 212 <span class="c"># hash with these keys:</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
226 213 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
227 214 <span class="c"># @{$ChainsDataMap{ChainIDs}} - List of chain IDs with &#39;None&#39; for no chain identification</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
228 215 <span class="c"># @{$ChainsDataMap{Residues}{$ChainID}} - List of residues in order of their appearance in a chain</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
229 216 <span class="c"># @{$ChainsDataMap{ResidueNumbers}{$ChainID}} - List of residue numbers in order of their appearance in a chain</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
230 217 <span class="c"># %{$ChainsDataMap{ResidueCount}{$ChainID}{$ResidueName}} - Count of specific residues in a chain</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
231 218 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
232 219 <span class="c"># Notes:</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
233 220 <span class="c"># . Chains and residue data can be extacted using either ATOM/HETATM records or SEQRES records.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
234 221 <span class="c"># . In addition to a different chain ID in ATOM/HETATM a TER record also indicates end of an existing chain</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
235 222 <span class="c"># and start of a new one: ChainID in ATOM/HETATM records might still be emtpy.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
236 223 <span class="c"># . ATOM/HETATM records after the first ENDMDL records are simply ingnored.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
237 224 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
238 <a name="GetChainsAndResidues-"></a> 225 <span class="k">sub </span><span class="m">GetChainsAndResidues</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
239 226 <span class="k">my</span><span class="s">(</span><span class="i">$PDBRecordLinesRef</span><span class="cm">,</span> <span class="i">$RecordsSource</span><span class="cm">,</span> <span class="i">$GetChainResiduesBeyondTERFlag</span><span class="cm">,</span> <span class="i">$GetRecordLinesFlag</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
240 227
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
241 228 <span class="i">$RecordsSource</span> = <span class="q">&#39;AtomAndHetatm&#39;</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
242 229 <span class="i">$GetChainResiduesBeyondTERFlag</span> = <span class="n">0</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
243 230 <span class="i">$GetRecordLinesFlag</span> = <span class="n">0</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
244 231
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
245 232 <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">4</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
246 233 <span class="s">(</span><span class="i">$PDBRecordLinesRef</span><span class="cm">,</span> <span class="i">$RecordsSource</span><span class="cm">,</span> <span class="i">$GetChainResiduesBeyondTERFlag</span><span class="cm">,</span> <span class="i">$GetRecordLinesFlag</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
247 234 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
248 235 <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">3</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
249 236 <span class="s">(</span><span class="i">$PDBRecordLinesRef</span><span class="cm">,</span> <span class="i">$RecordsSource</span><span class="cm">,</span> <span class="i">$GetChainResiduesBeyondTERFlag</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
250 237 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
251 238 <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
252 239 <span class="s">(</span><span class="i">$PDBRecordLinesRef</span><span class="cm">,</span> <span class="i">$RecordsSource</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
253 240 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
254 241 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
255 242 <span class="s">(</span><span class="i">$PDBRecordLinesRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
256 243 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
257 244
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
258 245 <span class="k">if</span> <span class="s">(</span><span class="i">$RecordsSource</span> =~ <span class="q">/^AtomAndHetatm$/i</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
259 246 <span class="k">return</span> <span class="i">_GetChainsAndResiduesFromAtomHetatmRecords</span><span class="s">(</span><span class="i">$PDBRecordLinesRef</span><span class="cm">,</span> <span class="i">$GetChainResiduesBeyondTERFlag</span><span class="cm">,</span> <span class="i">$GetRecordLinesFlag</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
260 247 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
261 248 <span class="k">elsif</span> <span class="s">(</span><span class="i">$RecordsSource</span> =~ <span class="q">/^Seqres$/i</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
262 249 <span class="k">return</span> <span class="i">_GetChainsAndResiduesFromSeqresRecords</span><span class="s">(</span><span class="i">$PDBRecordLinesRef</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
263 250 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
264 251 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
265 252 <span class="k">my</span><span class="s">(</span><span class="i">%ChainsDataMap</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
266 253 <span class="i">%ChainsDataMap</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
267 254 <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">ChainIDs</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
268 255 <span class="i">%</span>{<span class="i">$ChainsDataMap</span>{<span class="w">Residues</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
269 256 <span class="i">%</span>{<span class="i">$ChainsDataMap</span>{<span class="w">ResidueNumbers</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
270 257 <span class="i">%</span>{<span class="i">$ChainsDataMap</span>{<span class="w">ResidueCount</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
271 258
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
272 259 <span class="k">return</span> \<span class="i">%ChainsDataMap</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
273 260 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
274 261 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
275 262
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
276 263
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
277 264 <span class="c"># Get residue information using ATOM/HETATM records and return a reference to a hash with</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
278 265 <span class="c"># these keys:</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
279 266 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
280 267 <span class="c"># @{$ResiduesDataMap{ResidueNames}} - List of all the residues</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
281 268 <span class="c"># %{$ResiduesDataMap{ResidueCount}{$ResidueName}} - Count of residues</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
282 269 <span class="c"># @{$ResiduesDataMap{AtomResidueNames}} - List of all the residues</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
283 270 <span class="c"># %{$ResiduesDataMap{AtomResidueCount}{$ResidueName}} - Count of residues in ATOM records</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
284 271 <span class="c"># @{$ResiduesDataMap{HetatomResidueNames}} - List of all the residues</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
285 272 <span class="c"># %{$ResiduesDataMap{HetatmResidueCount}{$ResidueName}} - Count of residues HETATM records</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
286 273 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
287 274 <span class="c"># Notes:</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
288 275 <span class="c"># . ATOM/HETATM records after the first ENDMDL records are simply ingnored.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
289 276 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
290 <a name="GetAllResidues-"></a> 277 <span class="k">sub </span><span class="m">GetAllResidues</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
291 278 <span class="k">my</span><span class="s">(</span><span class="i">$PDBRecordLinesRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
292 279
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
293 280 <span class="k">my</span><span class="s">(</span><span class="i">$PreviousChainID</span><span class="cm">,</span> <span class="i">$PreviousResidueNumber</span><span class="cm">,</span> <span class="i">$RecordLine</span><span class="cm">,</span> <span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="cm">,</span> <span class="i">$SegmentID</span><span class="cm">,</span> <span class="i">$ElementSymbol</span><span class="cm">,</span> <span class="i">$AtomCharge</span><span class="cm">,</span> <span class="i">%ResiduesDataMap</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
294 281
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
295 282 <span class="i">%ResiduesDataMap</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
296 283 <span class="i">@</span>{<span class="i">$ResiduesDataMap</span>{<span class="w">ResidueNames</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
297 284 <span class="i">%</span>{<span class="i">$ResiduesDataMap</span>{<span class="w">ResidueCount</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
298 285 <span class="i">@</span>{<span class="i">$ResiduesDataMap</span>{<span class="w">AtomResidueNames</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
299 286 <span class="i">%</span>{<span class="i">$ResiduesDataMap</span>{<span class="w">AtomResidueCount</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
300 287 <span class="i">@</span>{<span class="i">$ResiduesDataMap</span>{<span class="w">HetatmResidueNames</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
301 288 <span class="i">%</span>{<span class="i">$ResiduesDataMap</span>{<span class="w">HetatmResidueCount</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
302 289
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
303 290 <span class="i">$PreviousChainID</span> = <span class="q">&#39;&#39;</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
304 291 <span class="i">$PreviousResidueNumber</span> = <span class="n">0</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
305 292
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
306 293 <span class="j">LINE:</span> <span class="k">for</span> <span class="i">$RecordLine</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$PDBRecordLinesRef</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
307 294 <span class="k">if</span> <span class="s">(</span><span class="i">IsEndmdlRecordType</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
308 295 <span class="k">last</span> <span class="j">LINE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
309 296 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
310 297 <span class="k">if</span> <span class="s">(</span>!<span class="s">(</span><span class="i">IsAtomRecordType</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span> || <span class="i">IsHetatmRecordType</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
311 298 <span class="k">next</span> <span class="j">LINE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
312 299 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
313 300 <span class="s">(</span><span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="cm">,</span> <span class="i">$SegmentID</span><span class="cm">,</span> <span class="i">$ElementSymbol</span><span class="cm">,</span> <span class="i">$AtomCharge</span><span class="s">)</span> = <span class="i">ParseAtomRecordLine</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
314 301
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
315 302 <span class="k">if</span> <span class="s">(</span><span class="i">$PreviousChainID</span> <span class="k">eq</span> <span class="i">$ChainID</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
316 303 <span class="k">if</span> <span class="s">(</span><span class="i">$ResidueNumber</span> == <span class="i">$PreviousResidueNumber</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
317 304 <span class="k">next</span> <span class="j">LINE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
318 305 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
319 306 <span class="i">$PreviousResidueNumber</span> = <span class="i">$ResidueNumber</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
320 307 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
321 308 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
322 309 <span class="c"># New chain...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
323 310 <span class="i">$PreviousChainID</span> = <span class="i">$ChainID</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
324 311 <span class="i">$PreviousResidueNumber</span> = <span class="i">$ResidueNumber</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
325 312 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
326 313
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
327 314 <span class="c"># Store the residue and update its count...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
328 315 <span class="k">push</span> <span class="i">@</span>{<span class="i">$ResiduesDataMap</span>{<span class="w">ResidueNames</span>}}<span class="cm">,</span> <span class="i">$ResidueName</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
329 316 <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ResiduesDataMap</span>{<span class="w">ResidueCount</span>}{<span class="i">$ResidueName</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
330 317 <span class="i">$ResiduesDataMap</span>{<span class="w">ResidueCount</span>}{<span class="i">$ResidueName</span>} += <span class="n">1</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
331 318 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
332 319 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
333 320 <span class="i">$ResiduesDataMap</span>{<span class="w">ResidueCount</span>}{<span class="i">$ResidueName</span>} = <span class="n">1</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
334 321 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
335 322 <span class="c"># Update ATOM residue data...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
336 323 <span class="k">if</span> <span class="s">(</span><span class="i">IsAtomRecordType</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
337 324 <span class="k">push</span> <span class="i">@</span>{<span class="i">$ResiduesDataMap</span>{<span class="w">AtomResidueNames</span>}}<span class="cm">,</span> <span class="i">$ResidueName</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
338 325 <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ResiduesDataMap</span>{<span class="w">AtomResidueCount</span>}{<span class="i">$ResidueName</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
339 326 <span class="i">$ResiduesDataMap</span>{<span class="w">AtomResidueCount</span>}{<span class="i">$ResidueName</span>} += <span class="n">1</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
340 327 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
341 328 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
342 329 <span class="i">$ResiduesDataMap</span>{<span class="w">AtomResidueCount</span>}{<span class="i">$ResidueName</span>} = <span class="n">1</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
343 330 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
344 331 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
345 332 <span class="c"># Update HETATM residue data...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
346 333 <span class="k">if</span> <span class="s">(</span><span class="i">IsHetatmRecordType</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
347 334 <span class="k">push</span> <span class="i">@</span>{<span class="i">$ResiduesDataMap</span>{<span class="w">HetatmResidueNames</span>}}<span class="cm">,</span> <span class="i">$ResidueName</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
348 335 <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ResiduesDataMap</span>{<span class="w">HetatmResidueCount</span>}{<span class="i">$ResidueName</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
349 336 <span class="i">$ResiduesDataMap</span>{<span class="w">HetatmResidueCount</span>}{<span class="i">$ResidueName</span>} += <span class="n">1</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
350 337 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
351 338 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
352 339 <span class="i">$ResiduesDataMap</span>{<span class="w">HetatmResidueCount</span>}{<span class="i">$ResidueName</span>} = <span class="n">1</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
353 340 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
354 341 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
355 342 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
356 343
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
357 344 <span class="k">return</span> \<span class="i">%ResiduesDataMap</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
358 345 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
359 346
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
360 347 <span class="c"># Return min/max XYZ coordinates for ATOM/HETATM records...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
361 <a name="GetMinMaxCoords-"></a> 348 <span class="k">sub </span><span class="m">GetMinMaxCoords</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
362 349 <span class="k">my</span><span class="s">(</span><span class="i">$PDBRecordLinesRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
363 350
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
364 351 <span class="k">my</span><span class="s">(</span><span class="i">$XMin</span><span class="cm">,</span> <span class="i">$YMin</span><span class="cm">,</span> <span class="i">$ZMin</span><span class="cm">,</span> <span class="i">$XMax</span><span class="cm">,</span> <span class="i">$YMax</span><span class="cm">,</span> <span class="i">$ZMax</span><span class="cm">,</span> <span class="i">$RecordLine</span><span class="cm">,</span> <span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="cm">,</span> <span class="i">$SegmentID</span><span class="cm">,</span> <span class="i">$ElementSymbol</span><span class="cm">,</span> <span class="i">$AtomCharge</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
365 352
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
366 353 <span class="s">(</span><span class="i">$XMin</span><span class="cm">,</span> <span class="i">$YMin</span><span class="cm">,</span> <span class="i">$ZMin</span><span class="s">)</span> = <span class="s">(</span><span class="n">99999</span><span class="s">)</span> x <span class="n">3</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
367 354 <span class="s">(</span><span class="i">$XMax</span><span class="cm">,</span> <span class="i">$YMax</span><span class="cm">,</span> <span class="i">$ZMax</span><span class="s">)</span> = <span class="s">(</span><span class="n">-99999</span><span class="s">)</span> x <span class="n">3</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
368 355
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
369 356 <span class="j">LINE:</span> <span class="k">for</span> <span class="i">$RecordLine</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$PDBRecordLinesRef</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
370 357 <span class="k">if</span> <span class="s">(</span>!<span class="s">(</span><span class="i">IsAtomRecordType</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span> || <span class="i">IsHetatmRecordType</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
371 358 <span class="k">next</span> <span class="j">LINE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
372 359 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
373 360 <span class="s">(</span><span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="cm">,</span> <span class="i">$SegmentID</span><span class="cm">,</span> <span class="i">$ElementSymbol</span><span class="cm">,</span> <span class="i">$AtomCharge</span><span class="s">)</span> = <span class="i">ParseAtomRecordLine</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
374 361
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
375 362 <span class="i">$XMin</span> = <span class="s">(</span><span class="i">$X</span> &lt; <span class="i">$XMin</span><span class="s">)</span> ? <span class="i">$X</span> <span class="co">:</span> <span class="i">$XMin</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
376 363 <span class="i">$YMin</span> = <span class="s">(</span><span class="i">$Y</span> &lt; <span class="i">$YMin</span><span class="s">)</span> ? <span class="i">$Y</span> <span class="co">:</span> <span class="i">$YMin</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
377 364 <span class="i">$ZMin</span> = <span class="s">(</span><span class="i">$Z</span> &lt; <span class="i">$ZMin</span><span class="s">)</span> ? <span class="i">$Z</span> <span class="co">:</span> <span class="i">$ZMin</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
378 365
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
379 366 <span class="i">$XMax</span> = <span class="s">(</span><span class="i">$X</span> &gt; <span class="i">$XMax</span><span class="s">)</span> ? <span class="i">$X</span> <span class="co">:</span> <span class="i">$XMax</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
380 367 <span class="i">$YMax</span> = <span class="s">(</span><span class="i">$Y</span> &gt; <span class="i">$YMax</span><span class="s">)</span> ? <span class="i">$Y</span> <span class="co">:</span> <span class="i">$YMax</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
381 368 <span class="i">$ZMax</span> = <span class="s">(</span><span class="i">$Z</span> &gt; <span class="i">$ZMax</span><span class="s">)</span> ? <span class="i">$Z</span> <span class="co">:</span> <span class="i">$ZMax</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
382 369 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
383 370
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
384 371 <span class="k">if</span> <span class="s">(</span><span class="i">$XMin</span> == <span class="n">99999</span><span class="s">)</span> <span class="s">{</span> <span class="i">$XMin</span> = <span class="k">undef</span><span class="sc">;</span> <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
385 372 <span class="k">if</span> <span class="s">(</span><span class="i">$YMin</span> == <span class="n">99999</span><span class="s">)</span> <span class="s">{</span> <span class="i">$YMin</span> = <span class="k">undef</span><span class="sc">;</span> <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
386 373 <span class="k">if</span> <span class="s">(</span><span class="i">$ZMin</span> == <span class="n">99999</span><span class="s">)</span> <span class="s">{</span> <span class="i">$ZMin</span> = <span class="k">undef</span><span class="sc">;</span> <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
387 374 <span class="k">if</span> <span class="s">(</span><span class="i">$XMax</span> == <span class="n">-99999</span><span class="s">)</span> <span class="s">{</span> <span class="i">$XMax</span> = <span class="k">undef</span><span class="sc">;</span> <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
388 375 <span class="k">if</span> <span class="s">(</span><span class="i">$YMax</span> == <span class="n">-99999</span><span class="s">)</span> <span class="s">{</span> <span class="i">$YMax</span> = <span class="k">undef</span><span class="sc">;</span> <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
389 376 <span class="k">if</span> <span class="s">(</span><span class="i">$ZMax</span> == <span class="n">-99999</span><span class="s">)</span> <span class="s">{</span> <span class="i">$ZMax</span> = <span class="k">undef</span><span class="sc">;</span> <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
390 377
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
391 378 <span class="k">return</span> <span class="s">(</span><span class="i">$XMin</span><span class="cm">,</span> <span class="i">$YMin</span><span class="cm">,</span> <span class="i">$ZMin</span><span class="cm">,</span> <span class="i">$XMax</span><span class="cm">,</span> <span class="i">$YMax</span><span class="cm">,</span> <span class="i">$ZMax</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
392 379 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
393 380
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
394 381 <span class="c"># Read PDB file and return reference to record lines..</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
395 <a name="ReadPDBFile-"></a> 382 <span class="k">sub </span><span class="m">ReadPDBFile</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
396 383 <span class="k">my</span><span class="s">(</span><span class="i">$PDBFile</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
397 384
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
398 385 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="cm">,</span> <span class="i">@PDBRecordLines</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
399 386
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
400 387 <span class="i">@PDBRecordLines</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
401 388 <span class="k">open</span> <span class="w">PDBFILE</span><span class="cm">,</span> <span class="q">&quot;$PDBFile&quot;</span> <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Can&#39;t open $PDBFile: $!\n&quot;</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
402 389 <span class="k">while</span> <span class="s">(</span><span class="i">$Line</span> = <span class="i">GetTextLine</span><span class="s">(</span>\<span class="i">*PDBFILE</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
403 390 <span class="k">push</span> <span class="i">@PDBRecordLines</span><span class="cm">,</span> <span class="i">$Line</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
404 391 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
405 392
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
406 393 <span class="k">close</span> <span class="w">PDBFILE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
407 394
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
408 395 <span class="k">return</span> <span class="s">(</span>\<span class="i">@PDBRecordLines</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
409 396 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
410 397
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
411 398 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
412 399 <span class="c"># Get experimental technique information...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
413 400 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
414 <a name="GetExperimentalTechnique-"></a> 401 <span class="k">sub </span><span class="m">GetExperimentalTechnique</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
415 402 <span class="k">my</span><span class="s">(</span><span class="i">$PDBRecordLinesRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
416 403 <span class="k">my</span><span class="s">(</span><span class="i">$RecordLine</span><span class="cm">,</span> <span class="i">$ContinuationNum</span><span class="cm">,</span> <span class="i">$ExperimentalTechnique</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
417 404
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
418 405 <span class="i">$ExperimentalTechnique</span> = <span class="k">undef</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
419 406
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
420 407 <span class="j">LINE:</span> <span class="k">for</span> <span class="i">$RecordLine</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$PDBRecordLinesRef</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
421 408 <span class="k">if</span> <span class="s">(</span><span class="i">_IsRecordType</span><span class="s">(</span><span class="i">$RecordLine</span><span class="cm">,</span> <span class="q">&#39;EXPDTA&#39;</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
422 409 <span class="s">(</span><span class="i">$ContinuationNum</span><span class="cm">,</span> <span class="i">$ExperimentalTechnique</span><span class="s">)</span> = <span class="i">ParseExpdtaRecordLine</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
423 410 <span class="k">last</span> <span class="j">LINE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
424 411 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
425 412 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
426 413
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
427 414 <span class="k">return</span> <span class="i">$ExperimentalTechnique</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
428 415 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
429 416
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
430 417 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
431 418 <span class="c"># Get experimental technique resolution information...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
432 419 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
433 <a name="GetExperimentalTechniqueResolution-"></a> 420 <span class="k">sub </span><span class="m">GetExperimentalTechniqueResolution</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
434 421 <span class="k">my</span><span class="s">(</span><span class="i">$PDBRecordLinesRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
435 422 <span class="k">my</span><span class="s">(</span><span class="i">$RecordLine</span><span class="cm">,</span> <span class="i">$Resolution</span><span class="cm">,</span> <span class="i">$ResolutionUnits</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
436 423
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
437 424 <span class="s">(</span><span class="i">$Resolution</span><span class="cm">,</span> <span class="i">$ResolutionUnits</span><span class="s">)</span> = <span class="s">(</span><span class="s">(</span><span class="k">undef</span><span class="s">)</span> x <span class="n">2</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
438 425
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
439 426 <span class="j">LINE:</span> <span class="k">for</span> <span class="i">$RecordLine</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$PDBRecordLinesRef</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
440 427 <span class="k">if</span> <span class="s">(</span><span class="i">$RecordLine</span> =~ <span class="q">/^REMARK 2 RESOLUTION./i</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
441 428 <span class="s">(</span><span class="i">$Resolution</span><span class="cm">,</span> <span class="i">$ResolutionUnits</span><span class="s">)</span> = <span class="i">ParseRemark2ResolutionRecordLine</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
442 429 <span class="k">last</span> <span class="j">LINE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
443 430 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
444 431 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
445 432
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
446 433 <span class="k">return</span> <span class="s">(</span><span class="i">$Resolution</span><span class="cm">,</span> <span class="i">$ResolutionUnits</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
447 434 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
448 435
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
449 436 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
450 437 <span class="c"># Parse HEADER record line...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
451 <a name="ParseHeaderRecordLine-"></a> 438 <span class="k">sub </span><span class="m">ParseHeaderRecordLine</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
452 439 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
453 440 <span class="k">my</span><span class="s">(</span><span class="i">$Classification</span><span class="cm">,</span> <span class="i">$DepositionDate</span><span class="cm">,</span> <span class="i">$IDCode</span><span class="s">)</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
454 441
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
455 442 <span class="k">if</span> <span class="s">(</span><span class="i">$Line</span> !~ <span class="q">/^HEADER/i</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
456 443 <span class="k">return</span> <span class="s">(</span><span class="i">$Classification</span><span class="cm">,</span> <span class="i">$DepositionDate</span><span class="cm">,</span> <span class="i">$IDCode</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
457 444 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
458 445 <span class="k">my</span><span class="s">(</span><span class="i">$Length</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
459 446
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
460 447 <span class="s">(</span><span class="i">$Classification</span><span class="cm">,</span> <span class="i">$DepositionDate</span><span class="cm">,</span> <span class="i">$IDCode</span><span class="s">)</span> = <span class="s">(</span><span class="q">&#39;&#39;</span><span class="s">)</span> x <span class="n">3</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
461 448
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
462 449 <span class="i">$Length</span> = <span class="k">length</span> <span class="i">$Line</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
463 450
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
464 451 <span class="k">if</span> <span class="s">(</span><span class="i">$Length</span> &lt;= <span class="n">62</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
465 452 <span class="s">(</span><span class="i">$Classification</span><span class="cm">,</span> <span class="i">$DepositionDate</span><span class="s">)</span> = <span class="k">unpack</span><span class="s">(</span><span class="q">&quot;x10A40A9&quot;</span><span class="cm">,</span> <span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
466 453 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
467 454 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
468 455 <span class="s">(</span><span class="i">$Classification</span><span class="cm">,</span> <span class="i">$DepositionDate</span><span class="cm">,</span> <span class="i">$IDCode</span><span class="s">)</span> = <span class="k">unpack</span><span class="s">(</span><span class="q">&quot;x10A40A9x3A4&quot;</span><span class="cm">,</span> <span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
469 456 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
470 457
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
471 458 <span class="i">$Classification</span> = <span class="i">RemoveLeadingAndTrailingWhiteSpaces</span><span class="s">(</span><span class="i">$Classification</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
472 459 <span class="i">$DepositionDate</span> =~ <span class="q">s/ //g</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
473 460 <span class="i">$IDCode</span> =~ <span class="q">s/ //g</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
474 461
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
475 462 <span class="k">return</span> <span class="s">(</span><span class="i">$Classification</span><span class="cm">,</span> <span class="i">$DepositionDate</span><span class="cm">,</span> <span class="i">$IDCode</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
476 463 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
477 464
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
478 465 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
479 466 <span class="c"># Generate HEADER record line...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
480 <a name="GenerateHeaderRecordLine-"></a> 467 <span class="k">sub </span><span class="m">GenerateHeaderRecordLine</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
481 468 <span class="k">my</span><span class="s">(</span><span class="i">$Classification</span><span class="cm">,</span> <span class="i">$Date</span><span class="cm">,</span> <span class="i">$IDCode</span><span class="cm">,</span> <span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
482 469
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
483 470 <span class="i">$Classification</span> = <span class="q">&quot;Created using MayaChemTools&quot;</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
484 471 <span class="i">$Date</span> = <span class="i">GenerateHeaderRecordTimeStamp</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
485 472 <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">3</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
486 473 <span class="s">(</span><span class="i">$IDCode</span><span class="cm">,</span> <span class="i">$Classification</span><span class="cm">,</span> <span class="i">$Date</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
487 474 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
488 475 <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
489 476 <span class="s">(</span><span class="i">$IDCode</span><span class="cm">,</span> <span class="i">$Classification</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
490 477 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
491 478 <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
492 479 <span class="s">(</span><span class="i">$IDCode</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
493 480 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
494 481
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
495 482 <span class="i">$Line</span> = <span class="k">sprintf</span> <span class="q">&quot;HEADER %-40.40s%9.9s %4.4s&quot;</span><span class="cm">,</span> <span class="i">$Classification</span><span class="cm">,</span> <span class="i">$Date</span><span class="cm">,</span> <span class="i">$IDCode</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
496 483 <span class="k">return</span> <span class="i">$Line</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
497 484 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
498 485
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
499 486 <span class="c"># Generate PDB header time stamp...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
500 <a name="GenerateHeaderRecordTimeStamp-"></a> 487 <span class="k">sub </span><span class="m">GenerateHeaderRecordTimeStamp</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
501 488 <span class="k">return</span> <span class="i">TimeUtil::PDBFileTimeStamp</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
502 489 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
503 490
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
504 491 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
505 492 <span class="c"># Parse ATOM record line.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
506 493 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
507 <a name="ParseAtomRecordLine-"></a> 494 <span class="k">sub </span><span class="m">ParseAtomRecordLine</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
508 495 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
509 496
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
510 497 <span class="k">return</span> <span class="i">_ParseAtomOrHetatmRecordLine</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
511 498 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
512 499
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
513 500 <span class="c"># Generate ATOM record line...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
514 <a name="GenerateAtomRecordLine-"></a> 501 <span class="k">sub </span><span class="m">GenerateAtomRecordLine</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
515 502 <span class="k">my</span><span class="s">(</span><span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="cm">,</span> <span class="i">$SegmentID</span><span class="cm">,</span> <span class="i">$ElementSymbol</span><span class="cm">,</span> <span class="i">$AtomCharge</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
516 503
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
517 504 <span class="k">return</span> <span class="i">_GenerateAtomOrHetatmRecordLine</span><span class="s">(</span><span class="q">&#39;ATOM&#39;</span><span class="cm">,</span> <span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="cm">,</span> <span class="i">$SegmentID</span><span class="cm">,</span> <span class="i">$ElementSymbol</span><span class="cm">,</span> <span class="i">$AtomCharge</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
518 505 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
519 506
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
520 507 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
521 508 <span class="c"># Parse ATOM/HETATm record line.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
522 509 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
523 <a name="ParseAtomOrHetatmRecordLine-"></a> 510 <span class="k">sub </span><span class="m">ParseAtomOrHetatmRecordLine</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
524 511 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
525 512
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
526 513 <span class="k">return</span> <span class="i">_ParseAtomOrHetatmRecordLine</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
527 514 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
528 515
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
529 516 <span class="c"># Generate ATOM/HETATM record line...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
530 <a name="GenerateAtomOrHetatmRecordLine-"></a> 517 <span class="k">sub </span><span class="m">GenerateAtomOrHetatmRecordLine</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
531 518 <span class="k">my</span><span class="s">(</span><span class="i">$RecordType</span><span class="cm">,</span> <span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="cm">,</span> <span class="i">$SegmentID</span><span class="cm">,</span> <span class="i">$ElementSymbol</span><span class="cm">,</span> <span class="i">$AtomCharge</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
532 519
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
533 520 <span class="k">return</span> <span class="i">_GenerateAtomOrHetatmRecordLine</span><span class="s">(</span><span class="i">$RecordType</span><span class="cm">,</span> <span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="cm">,</span> <span class="i">$SegmentID</span><span class="cm">,</span> <span class="i">$ElementSymbol</span><span class="cm">,</span> <span class="i">$AtomCharge</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
534 521 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
535 522 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
536 523 <span class="c"># Parse HETATM record line...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
537 524 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
538 <a name="ParseHetatmRecordLine-"></a> 525 <span class="k">sub </span><span class="m">ParseHetatmRecordLine</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
539 526 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
540 527
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
541 528 <span class="k">return</span> <span class="i">_ParseAtomOrHetatmRecordLine</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
542 529 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
543 530
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
544 531 <span class="c"># Generate HETATM record line...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
545 <a name="GenerateHetatmRecordLine-"></a> 532 <span class="k">sub </span><span class="m">GenerateHetatmRecordLine</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
546 533 <span class="k">my</span><span class="s">(</span><span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="cm">,</span> <span class="i">$SegmentID</span><span class="cm">,</span> <span class="i">$ElementSymbol</span><span class="cm">,</span> <span class="i">$AtomCharge</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
547 534
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
548 535 <span class="k">return</span> <span class="i">_GenerateAtomOrHetatmRecordLine</span><span class="s">(</span><span class="q">&#39;HETATM&#39;</span><span class="cm">,</span> <span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="cm">,</span> <span class="i">$SegmentID</span><span class="cm">,</span> <span class="i">$ElementSymbol</span><span class="cm">,</span> <span class="i">$AtomCharge</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
549 536 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
550 537
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
551 538 <span class="c"># Parse EXPDTA record line...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
552 539 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
553 540 <span class="c"># EXPDTA format:</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
554 541 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
555 542 <span class="c">#1 - 6 Record name &quot;EXPDTA&quot;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
556 543 <span class="c"># 9 - 10 Continuation continuation Allows concatenation of multiple records.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
557 544 <span class="c"># 11 - 70 SList technique The experimental technique(s) with optional comment describing the sample or experiment.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
558 545 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
559 546 <span class="c"># The EXPDTA record identifies the experimental technique used. This may refer to the type of radiation and</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
560 547 <span class="c"># sample, or include the spectroscopic or modeling technique. Permitted values include:</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
561 548 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
562 549 <span class="c"># ELECTRON DIFFRACTION</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
563 550 <span class="c"># FIBER DIFFRACTION</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
564 551 <span class="c"># FLUORESCENCE TRANSFER</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
565 552 <span class="c"># NEUTRON DIFFRACTION</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
566 553 <span class="c"># NMR</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
567 554 <span class="c"># THEORETICAL MODEL</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
568 555 <span class="c"># X-RAY DIFFRACTION</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
569 556 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
570 <a name="ParseExpdtaRecordLine-"></a> 557 <span class="k">sub </span><span class="m">ParseExpdtaRecordLine</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
571 558 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
572 559
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
573 560 <span class="k">if</span> <span class="s">(</span><span class="i">$Line</span> !~ <span class="q">/^EXPDTA/i</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
574 561 <span class="k">return</span> <span class="s">(</span><span class="s">(</span><span class="k">undef</span><span class="s">)</span> x <span class="n">2</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
575 562 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
576 563
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
577 564 <span class="k">my</span><span class="s">(</span><span class="i">$ContinuationNum</span><span class="cm">,</span> <span class="i">$ExperimentalTechnique</span><span class="s">)</span> = <span class="k">unpack</span><span class="s">(</span><span class="q">&quot;x8A2A60&quot;</span> <span class="cm">,</span> <span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
578 565
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
579 566 <span class="i">$ContinuationNum</span> =~ <span class="q">s/ //g</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
580 567 <span class="i">$ExperimentalTechnique</span> = <span class="i">RemoveLeadingAndTrailingWhiteSpaces</span><span class="s">(</span><span class="i">$ExperimentalTechnique</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
581 568
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
582 569 <span class="k">return</span> <span class="s">(</span><span class="i">$ContinuationNum</span><span class="cm">,</span> <span class="i">$ExperimentalTechnique</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
583 570 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
584 571
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
585 572 <span class="c"># Parse REMARK 2 record line...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
586 573 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
587 574 <span class="c"># REMARK 2 format:</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
588 575 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
589 576 <span class="c"># The second REMARK 2 record has one of two formats. The first is used for diffraction studies, the second</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
590 577 <span class="c"># for other types of experiments in which resolution is not relevant, e.g., NMR and theoretical modeling.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
591 578 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
592 579 <span class="c">#For diffraction experiments:</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
593 580 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
594 581 <span class="c"># 1 - 6 Record name &quot;REMARK&quot;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
595 582 <span class="c"># 10 LString(1) &quot;2&quot;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
596 583 <span class="c"># 12 - 22 LString(11) &quot;RESOLUTION.&quot;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
597 584 <span class="c"># 23 - 27 Real(5.2) resolution Resolution.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
598 585 <span class="c"># 29 - 38 LString(10) &quot;ANGSTROMS.&quot;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
599 586 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
600 587 <span class="c"># REMARK 2 when not a diffraction experiment:</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
601 588 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
602 589 <span class="c"># 1 - 6 Record name &quot;REMARK&quot;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
603 590 <span class="c"># 10 LString(1) &quot;2&quot;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
604 591 <span class="c"># 12 - 38 LString(28) &quot;RESOLUTION. NOT APPLICABLE.&quot;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
605 592 <span class="c"># 41 - 70 String comment Comment.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
606 593 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
607 <a name="ParseRemark2ResolutionRecordLine-"></a> 594 <span class="k">sub </span><span class="m">ParseRemark2ResolutionRecordLine</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
608 595 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
609 596
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
610 597 <span class="k">if</span> <span class="s">(</span><span class="i">$Line</span> !~ <span class="q">/^REMARK 2 RESOLUTION./i</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
611 598 <span class="k">return</span> <span class="s">(</span><span class="s">(</span><span class="k">undef</span><span class="s">)</span> x <span class="n">2</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
612 599 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
613 600
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
614 601 <span class="k">my</span><span class="s">(</span><span class="i">$Resolution</span><span class="cm">,</span> <span class="i">$ResolutionUnits</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
615 602
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
616 603 <span class="k">if</span> <span class="s">(</span><span class="i">$Line</span> =~ <span class="q">/NOT APPLICABLE/i</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
617 604 <span class="s">(</span><span class="i">$Resolution</span><span class="cm">,</span> <span class="i">$ResolutionUnits</span><span class="s">)</span> = <span class="s">(</span><span class="q">&quot;NOT APPLICABLE&quot;</span><span class="cm">,</span> <span class="q">&quot;&quot;</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
618 605 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
619 606 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
620 607 <span class="s">(</span><span class="i">$Resolution</span><span class="cm">,</span> <span class="i">$ResolutionUnits</span><span class="s">)</span> = <span class="k">unpack</span><span class="s">(</span><span class="q">&quot;x22A5x1A10&quot;</span> <span class="cm">,</span> <span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
621 608 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
622 609
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
623 610 <span class="i">$Resolution</span> = <span class="i">RemoveLeadingAndTrailingWhiteSpaces</span><span class="s">(</span><span class="i">$Resolution</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
624 611
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
625 612 <span class="i">$ResolutionUnits</span> = <span class="i">RemoveLeadingAndTrailingWhiteSpaces</span><span class="s">(</span><span class="i">$ResolutionUnits</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
626 613 <span class="i">$ResolutionUnits</span> =~ <span class="q">s/\.$//</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
627 614
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
628 615 <span class="k">return</span> <span class="s">(</span><span class="i">$Resolution</span><span class="cm">,</span> <span class="i">$ResolutionUnits</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
629 616 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
630 617
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
631 618 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
632 619 <span class="c"># Parse SEQRES record line...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
633 620 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
634 621 <span class="c"># SEQRES format:</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
635 622 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
636 623 <span class="c"># 1 - 6 Record name &quot;SEQRES&quot;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
637 624 <span class="c"># 9 - 10 Serial number of the SEQRES record for the current chain. Starts at 1 and increments by one each line. Reset to 1 for each chain.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
638 625 <span class="c"># 12 - Chain identifier</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
639 626 <span class="c"># 14 - 17 Integer numRes Number of residues in the chain</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
640 627 <span class="c"># 20 - 22 24 -26 ... ... 68 - 70 Residue name resName Residue name.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
641 628 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
642 <a name="ParseSeqresRecordLine-"></a> 629 <span class="k">sub </span><span class="m">ParseSeqresRecordLine</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
643 630 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
644 631
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
645 632 <span class="k">if</span> <span class="s">(</span><span class="i">$Line</span> !~ <span class="q">/^SEQRES/i</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
646 633 <span class="k">return</span> <span class="s">(</span><span class="s">(</span><span class="k">undef</span><span class="s">)</span> x <span class="n">5</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
647 634 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
648 635 <span class="k">my</span><span class="s">(</span><span class="i">$RecordSerialNumber</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$NumOfResidues</span><span class="cm">,</span> <span class="i">$ResidueNames</span><span class="s">)</span> = <span class="k">unpack</span><span class="s">(</span><span class="q">&quot;x8A2x1A1x1A4x2A51&quot;</span> <span class="cm">,</span> <span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
649 636 <span class="i">$RecordSerialNumber</span> =~ <span class="q">s/ //g</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
650 637 <span class="i">$ChainID</span> =~ <span class="q">s/ //g</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
651 638 <span class="i">$NumOfResidues</span> =~ <span class="q">s/ //g</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
652 639 <span class="i">$ResidueNames</span> = <span class="i">RemoveLeadingAndTrailingWhiteSpaces</span><span class="s">(</span><span class="i">$ResidueNames</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
653 640
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
654 641 <span class="k">return</span> <span class="s">(</span><span class="i">$RecordSerialNumber</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$NumOfResidues</span><span class="cm">,</span> <span class="i">$ResidueNames</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
655 642 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
656 643
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
657 644 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
658 645 <span class="c"># Parse CONECT record line...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
659 646 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
660 647 <span class="c"># CONECT format:</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
661 648 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
662 649 <span class="c"># 1 - 6 Record name &quot;CONECT&quot;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
663 650 <span class="c"># 7 - 11 Atom number</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
664 651 <span class="c"># 12 - 16, 17 - 21, 22 - 26, 27 - 31 Atom number of bonded atom</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
665 652 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
666 653 <span class="c"># 32 - 36, 37 - 41 Atom number of hydrogen bonded atom</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
667 654 <span class="c"># 42 - 46 Atom number of salt bridged atom</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
668 655 <span class="c"># 47 - 51, 52 -56 Atom number of hydrogen bonded atom</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
669 656 <span class="c"># 57 - 61 Atom number of salt bridged atom</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
670 657 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
671 <a name="ParseConectRecordLine-"></a> 658 <span class="k">sub </span><span class="m">ParseConectRecordLine</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
672 659 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
673 660
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
674 661 <span class="k">if</span> <span class="s">(</span><span class="i">$Line</span> !~ <span class="q">/^CONECT/i</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
675 662 <span class="k">return</span> <span class="s">(</span><span class="s">(</span><span class="k">undef</span><span class="s">)</span> x <span class="n">11</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
676 663 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
677 664 <span class="k">my</span><span class="s">(</span><span class="i">$AtomNum</span><span class="cm">,</span> <span class="i">$BondedAtomNum1</span><span class="cm">,</span> <span class="i">$BondedAtomNum2</span><span class="cm">,</span> <span class="i">$BondedAtomNum3</span><span class="cm">,</span> <span class="i">$BondedAtomNum4</span><span class="cm">,</span> <span class="i">$HBondedAtomNum1</span><span class="cm">,</span> <span class="i">$HBondedAtomNum2</span><span class="cm">,</span> <span class="i">$SaltBridgedAtomNum1</span><span class="cm">,</span> <span class="i">$HBondedAtomNum3</span><span class="cm">,</span> <span class="i">$HBondedAtomNum4</span><span class="cm">,</span> <span class="i">$SaltBridgedAtomNum2</span><span class="s">)</span> = <span class="k">map</span> <span class="s">{</span><span class="q">s/ //g</span><span class="sc">;</span> <span class="i">$_</span><span class="s">}</span> <span class="k">unpack</span><span class="s">(</span><span class="q">&quot;x6A5A5A5A5A5A5A5A5A5A5A5&quot;</span><span class="cm">,</span> <span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
678 665
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
679 666 <span class="k">return</span> <span class="s">(</span><span class="i">$AtomNum</span><span class="cm">,</span> <span class="i">$BondedAtomNum1</span><span class="cm">,</span> <span class="i">$BondedAtomNum2</span><span class="cm">,</span> <span class="i">$BondedAtomNum3</span><span class="cm">,</span> <span class="i">$BondedAtomNum4</span><span class="cm">,</span> <span class="i">$HBondedAtomNum1</span><span class="cm">,</span> <span class="i">$HBondedAtomNum2</span><span class="cm">,</span> <span class="i">$SaltBridgedAtomNum1</span><span class="cm">,</span> <span class="i">$HBondedAtomNum3</span><span class="cm">,</span> <span class="i">$HBondedAtomNum4</span><span class="cm">,</span> <span class="i">$SaltBridgedAtomNum2</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
680 667 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
681 668
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
682 669 <span class="c"># Generate CONECT record line...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
683 <a name="GenerateConectRecordLine-"></a> 670 <span class="k">sub </span><span class="m">GenerateConectRecordLine</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
684 671 <span class="k">my</span><span class="s">(</span><span class="i">$AtomNum</span><span class="cm">,</span> <span class="i">$BondedAtomNum1</span><span class="cm">,</span> <span class="i">$BondedAtomNum2</span><span class="cm">,</span> <span class="i">$BondedAtomNum3</span><span class="cm">,</span> <span class="i">$BondedAtomNum4</span><span class="cm">,</span> <span class="i">$HBondedAtomNum1</span><span class="cm">,</span> <span class="i">$HBondedAtomNum2</span><span class="cm">,</span> <span class="i">$SaltBridgedAtomNum1</span><span class="cm">,</span> <span class="i">$HBondedAtomNum3</span><span class="cm">,</span> <span class="i">$HBondedAtomNum4</span><span class="cm">,</span> <span class="i">$SaltBridgedAtomNum2</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
685 672 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
686 673
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
687 674 <span class="i">$Line</span> = <span class="k">sprintf</span> <span class="q">&quot;CONECT%5.5s%5.5s%5.5s%5.5s%5.5s%5.5s%5.5s%5.5s%5.5s%5.5s%5.5s&quot;</span><span class="cm">,</span> <span class="i">$AtomNum</span><span class="cm">,</span> <span class="i">$BondedAtomNum1</span><span class="cm">,</span> <span class="i">$BondedAtomNum2</span><span class="cm">,</span> <span class="i">$BondedAtomNum3</span><span class="cm">,</span> <span class="i">$BondedAtomNum4</span><span class="cm">,</span> <span class="i">$HBondedAtomNum1</span><span class="cm">,</span> <span class="i">$HBondedAtomNum2</span><span class="cm">,</span> <span class="i">$SaltBridgedAtomNum1</span><span class="cm">,</span> <span class="i">$HBondedAtomNum3</span><span class="cm">,</span> <span class="i">$HBondedAtomNum4</span><span class="cm">,</span> <span class="i">$SaltBridgedAtomNum2</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
688 675
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
689 676 <span class="k">return</span> <span class="i">$Line</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
690 677 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
691 678
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
692 679 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
693 680 <span class="c"># Parse TER record line...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
694 681 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
695 682 <span class="c"># TER format:</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
696 683 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
697 684 <span class="c">#1 - 6 Record name &quot;TER &quot;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
698 685 <span class="c"># 7 - 11 Serial number</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
699 686 <span class="c"># 18 - 20 Residue name</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
700 687 <span class="c"># 22 Chain identifier</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
701 688 <span class="c"># 23 - 26 Residue sequence number</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
702 689 <span class="c"># 27 Insertion code</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
703 690 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
704 <a name="ParseTerRecordLine-"></a> 691 <span class="k">sub </span><span class="m">ParseTerRecordLine</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
705 692 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
706 693
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
707 694 <span class="k">if</span> <span class="s">(</span><span class="i">$Line</span> !~ <span class="q">/^TER/i</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
708 695 <span class="k">return</span> <span class="s">(</span><span class="s">(</span><span class="k">undef</span><span class="s">)</span> x <span class="n">5</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
709 696 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
710 697 <span class="k">my</span><span class="s">(</span><span class="i">$SerialNumber</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$Length</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
711 698
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
712 699 <span class="s">(</span><span class="i">$SerialNumber</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="s">)</span> = <span class="s">(</span><span class="q">&#39;&#39;</span><span class="s">)</span> x <span class="n">5</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
713 700
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
714 701 <span class="i">$Length</span> = <span class="k">length</span> <span class="i">$Line</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
715 702
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
716 703 <span class="k">if</span> <span class="s">(</span><span class="i">$Length</span> &lt;= <span class="n">17</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
717 704 <span class="s">(</span><span class="i">$SerialNumber</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="s">)</span> = <span class="k">map</span> <span class="s">{</span><span class="q">s/ //g</span><span class="sc">;</span> <span class="i">$_</span><span class="s">}</span> <span class="k">unpack</span><span class="s">(</span><span class="q">&quot;x6A5&quot;</span><span class="cm">,</span> <span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
718 705 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
719 706 <span class="k">elsif</span> <span class="s">(</span><span class="i">$Length</span> &lt;= <span class="n">21</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
720 707 <span class="s">(</span><span class="i">$SerialNumber</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="s">)</span> = <span class="k">map</span> <span class="s">{</span><span class="q">s/ //g</span><span class="sc">;</span> <span class="i">$_</span><span class="s">}</span> <span class="k">unpack</span><span class="s">(</span><span class="q">&quot;x6A5x6A3&quot;</span><span class="cm">,</span> <span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
721 708 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
722 709 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
723 710 <span class="s">(</span><span class="i">$SerialNumber</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="s">)</span> = <span class="k">map</span> <span class="s">{</span><span class="q">s/ //g</span><span class="sc">;</span> <span class="i">$_</span><span class="s">}</span> <span class="k">unpack</span><span class="s">(</span><span class="q">&quot;x6A5x6A3xA1A4A1&quot;</span><span class="cm">,</span> <span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
724 711 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
725 712
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
726 713 <span class="k">return</span> <span class="s">(</span><span class="i">$SerialNumber</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
727 714 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
728 715
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
729 716 <span class="c"># Generate TER record line...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
730 <a name="GenerateTerRecordLine-"></a> 717 <span class="k">sub </span><span class="m">GenerateTerRecordLine</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
731 718 <span class="k">my</span><span class="s">(</span><span class="i">$SerialNumber</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$Line</span><span class="s">)</span> = <span class="s">(</span><span class="q">&#39;&#39;</span><span class="s">)</span> x <span class="n">6</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
732 719
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
733 720 <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">5</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
734 721 <span class="s">(</span><span class="i">$SerialNumber</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
735 722 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
736 723 <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">4</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
737 724 <span class="s">(</span><span class="i">$SerialNumber</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
738 725 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
739 726 <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">3</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
740 727 <span class="s">(</span><span class="i">$SerialNumber</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
741 728 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
742 729 <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
743 730 <span class="s">(</span><span class="i">$SerialNumber</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
744 731 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
745 732 <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
746 733 <span class="s">(</span><span class="i">$SerialNumber</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
747 734 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
748 735 <span class="i">$Line</span> = <span class="k">sprintf</span> <span class="q">&quot;TER %5.5s %-3.3s %1.1s%4.4s%1.1s&quot;</span><span class="cm">,</span> <span class="i">$SerialNumber</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
749 736
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
750 737 <span class="k">return</span> <span class="i">$Line</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
751 738 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
752 739
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
753 740 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
754 741 <span class="c"># Parse MASTER record line...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
755 742 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
756 743 <span class="c"># MASTER record format:</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
757 744 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
758 745 <span class="c">#1 - 6 Record name &quot;MASTER&quot;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
759 746 <span class="c"># 11 - 15 Number of REMARK records</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
760 747 <span class="c"># 16 - 20 &quot;0&quot;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
761 748 <span class="c"># 21 - 25 Number of HET records</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
762 749 <span class="c"># 26 - 30 Number of HELIX records</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
763 750 <span class="c"># 31 - 35 Number of SHEET records</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
764 751 <span class="c"># 36 - 40 Number of TURN records</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
765 752 <span class="c"># 41 - 45 Number of SITE records</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
766 753 <span class="c"># 46 - 50 Number of coordinate transformation records (ORIGXn+SCALEn+MTRIXn)</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
767 754 <span class="c"># 51 - 55 Number of atomic coordinate records (ATOM+HETATM)</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
768 755 <span class="c"># 56 - 60 Number of TER records</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
769 756 <span class="c"># 61 - 65 Number of CONECT records</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
770 757 <span class="c"># 66 - 70 Number of SEQRES records</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
771 758 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
772 <a name="ParseMasterRecordLine-"></a> 759 <span class="k">sub </span><span class="m">ParseMasterRecordLine</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
773 760 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
774 761
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
775 762 <span class="k">if</span> <span class="s">(</span><span class="i">$Line</span> !~ <span class="q">/^MASTER/i</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
776 763 <span class="k">return</span> <span class="s">(</span><span class="s">(</span><span class="k">undef</span><span class="s">)</span> x <span class="n">11</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
777 764 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
778 765 <span class="k">my</span><span class="s">(</span><span class="i">$NumOfRemarkRecords</span><span class="cm">,</span> <span class="i">$NumOfHetRecords</span><span class="cm">,</span> <span class="i">$NumOfHelixRecords</span><span class="cm">,</span> <span class="i">$NumOfSheetRecords</span><span class="cm">,</span> <span class="i">$NumOfTurnRecords</span><span class="cm">,</span> <span class="i">$NumOfSiteRecords</span><span class="cm">,</span> <span class="i">$NumOfTransformationsRecords</span><span class="cm">,</span> <span class="i">$NumOfAtomAndHetatmRecords</span><span class="cm">,</span> <span class="i">$NumOfTerRecords</span><span class="cm">,</span> <span class="i">$NumOfConectRecords</span><span class="cm">,</span> <span class="i">$NumOfSeqresRecords</span><span class="s">)</span> = <span class="k">map</span> <span class="s">{</span><span class="q">s/ //g</span><span class="sc">;</span> <span class="i">$_</span><span class="s">}</span> <span class="k">unpack</span><span class="s">(</span><span class="q">&quot;x6x4A5x5A5A5A5A5A5A5A5A5A5A5&quot;</span><span class="cm">,</span> <span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
779 766
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
780 767 <span class="k">return</span> <span class="s">(</span><span class="i">$NumOfRemarkRecords</span><span class="cm">,</span> <span class="i">$NumOfHetRecords</span><span class="cm">,</span> <span class="i">$NumOfHelixRecords</span><span class="cm">,</span> <span class="i">$NumOfSheetRecords</span><span class="cm">,</span> <span class="i">$NumOfTurnRecords</span><span class="cm">,</span> <span class="i">$NumOfSiteRecords</span><span class="cm">,</span> <span class="i">$NumOfTransformationsRecords</span><span class="cm">,</span> <span class="i">$NumOfAtomAndHetatmRecords</span><span class="cm">,</span> <span class="i">$NumOfTerRecords</span><span class="cm">,</span> <span class="i">$NumOfConectRecords</span><span class="cm">,</span> <span class="i">$NumOfSeqresRecords</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
781 768 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
782 769
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
783 770 <span class="c"># End record...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
784 <a name="GenerateEndRecordLine-"></a> 771 <span class="k">sub </span><span class="m">GenerateEndRecordLine</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
785 772 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
786 773 <span class="i">$Line</span> = <span class="q">&#39;END &#39;</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
787 774 <span class="k">return</span> <span class="i">$Line</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
788 775 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
789 776
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
790 777 <span class="c"># ATOM/HETATM record format:</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
791 778 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
792 779 <span class="c"># 1 - 6 Record name</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
793 780 <span class="c"># 7 - 11 Atom serial number - right justified</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
794 781 <span class="c"># 13 - 16 Atom name</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
795 782 <span class="c"># 17 Alternate location indicator.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
796 783 <span class="c"># 18 - 20 Residue name - right justified</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
797 784 <span class="c"># 22 Chain identifier.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
798 785 <span class="c"># 23 - 26 Residue sequence number - right justified</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
799 786 <span class="c"># 27 Code for insertion of residues.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
800 787 <span class="c"># 31 - 38 Real(8.3), Orthogonal coordinates for X in Angstroms.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
801 788 <span class="c"># 39 - 46 Real(8.3), Orthogonal coordinates for Y in Angstroms.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
802 789 <span class="c"># 47 - 54 Real(8.3), Orthogonal coordinates for Z in Angstroms.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
803 790 <span class="c"># 55 - 60 Real(6.2), Occupancy</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
804 791 <span class="c"># 61 - 66 Real(6.2), Temperature factor</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
805 792 <span class="c"># 73 - 76 LString(4), Segment identifier, left-justified.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
806 793 <span class="c"># 77 - 78 LString(2), Element symbol, right-justified.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
807 794 <span class="c">#79 - 80 LString(2), Charge on the atom.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
808 795 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
809 796 <span class="c"># Notes:</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
810 797 <span class="c"># . Atom names starting with C, N, O and S are left justified starting with column 14</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
811 798 <span class="c"># and others are left justified starting with column 13.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
812 799 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
813 800 <span class="c"># . Six characters (columns) are reserved for atom names, assigned as follows:</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
814 801 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
815 802 <span class="c"># 13 - 14 Chemical symbol - right justified, except for hydrogen atoms</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
816 803 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
817 804 <span class="c"># And for amino acids:</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
818 805 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
819 806 <span class="c"># 15 Remoteness indicator (alphabetic) (A, B, G, D, E, Z and so on)</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
820 807 <span class="c"># 16 Branch designator (numeric)</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
821 808 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
822 <a name="_ParseAtomOrHetatmRecordLine-"></a> 809 <span class="k">sub </span><span class="m">_ParseAtomOrHetatmRecordLine</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
823 810 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
824 811
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
825 812 <span class="k">if</span> <span class="s">(</span><span class="i">$Line</span> !~ <span class="q">/^(ATOM|HETATM)/i</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
826 813 <span class="k">return</span> <span class="s">(</span><span class="s">(</span><span class="k">undef</span><span class="s">)</span> x <span class="n">15</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
827 814 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
828 815 <span class="k">my</span><span class="s">(</span><span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="cm">,</span> <span class="i">$SegmentID</span><span class="cm">,</span> <span class="i">$ElementSymbol</span><span class="cm">,</span> <span class="i">$AtomCharge</span><span class="cm">,</span> <span class="i">$Length</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
829 816
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
830 817 <span class="s">(</span><span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="cm">,</span> <span class="i">$SegmentID</span><span class="cm">,</span> <span class="i">$ElementSymbol</span><span class="cm">,</span> <span class="i">$AtomCharge</span><span class="s">)</span> = <span class="s">(</span><span class="q">&#39;&#39;</span><span class="s">)</span> x <span class="n">15</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
831 818
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
832 819 <span class="i">$Length</span> = <span class="k">length</span> <span class="i">$Line</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
833 820
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
834 821 <span class="k">if</span> <span class="s">(</span><span class="i">$Length</span> &lt;= <span class="n">72</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
835 822 <span class="s">(</span><span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="s">)</span> = <span class="k">map</span> <span class="s">{</span><span class="q">s/ //g</span><span class="sc">;</span> <span class="i">$_</span><span class="s">}</span> <span class="k">unpack</span><span class="s">(</span><span class="q">&quot;x6A5xA4A1A3xA1A4A1x3A8A8A8A6A6&quot;</span><span class="cm">,</span> <span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
836 823 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
837 824 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
838 825 <span class="s">(</span><span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="cm">,</span> <span class="i">$SegmentID</span><span class="cm">,</span> <span class="i">$ElementSymbol</span><span class="cm">,</span> <span class="i">$AtomCharge</span><span class="s">)</span> = <span class="k">map</span> <span class="s">{</span><span class="q">s/ //g</span><span class="sc">;</span> <span class="i">$_</span><span class="s">}</span> <span class="k">unpack</span><span class="s">(</span><span class="q">&quot;x6A5xA4A1A3xA1A4A1x3A8A8A8A6A6x6A4A2A2&quot;</span><span class="cm">,</span> <span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
839 826 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
840 827 <span class="k">return</span><span class="s">(</span><span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="cm">,</span> <span class="i">$SegmentID</span><span class="cm">,</span> <span class="i">$ElementSymbol</span><span class="cm">,</span> <span class="i">$AtomCharge</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
841 828 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
842 829
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
843 830 <span class="c"># Generate ATOM/HETATM record line...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
844 <a name="_GenerateAtomOrHetatmRecordLine-"></a> 831 <span class="k">sub </span><span class="m">_GenerateAtomOrHetatmRecordLine</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
845 832 <span class="k">my</span><span class="s">(</span><span class="i">$RecordType</span><span class="cm">,</span> <span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="cm">,</span> <span class="i">$SegmentID</span><span class="cm">,</span> <span class="i">$ElementSymbol</span><span class="cm">,</span> <span class="i">$AtomCharge</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
846 833 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="cm">,</span> <span class="i">$AtomNameFormat</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
847 834
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
848 835 <span class="k">if</span> <span class="s">(</span><span class="k">length</span><span class="s">(</span><span class="i">$AtomName</span><span class="s">)</span> &gt;= <span class="n">4</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
849 836 <span class="c"># Left justified starting at column 13 for all atom names of length 4...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
850 837 <span class="i">$AtomNameFormat</span> = <span class="q">&quot;%-4.4s&quot;</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
851 838 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
852 839 <span class="k">elsif</span> <span class="s">(</span><span class="i">IsEmpty</span><span class="s">(</span><span class="i">$ElementSymbol</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
853 840 <span class="c"># No element symbol specified; just guess from atom name to cover most likely cases...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
854 841 <span class="i">$AtomNameFormat</span> = <span class="s">(</span><span class="i">$AtomName</span> =~ <span class="q">/^(C|N|O|S)/i</span><span class="s">)</span> ? <span class="q">&quot; %-3.3s&quot;</span> <span class="co">:</span> <span class="q">&quot;%-4.4s&quot;</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
855 842 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
856 843 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
857 844 <span class="c"># Element symbol specified...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
858 845 <span class="k">if</span> <span class="s">(</span><span class="i">$ElementSymbol</span> =~ <span class="q">/^H$/i</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
859 846 <span class="c"># Hydrogen atom name with &lt;=3 characters is left justified starting at column 14;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
860 847 <span class="c"># Otherwise, left justified starting at column 13.</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
861 848 <span class="i">$AtomNameFormat</span> = <span class="s">(</span><span class="k">length</span><span class="s">(</span><span class="i">$AtomName</span><span class="s">)</span> &lt;= <span class="n">3</span><span class="s">)</span> ? <span class="q">&quot; %-3.3s&quot;</span> <span class="co">:</span> <span class="q">&quot;%-4.4s&quot;</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
862 849 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
863 850 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
864 851 <span class="c"># Non-hydrogen atom name...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
865 852 <span class="i">$AtomNameFormat</span> = <span class="s">(</span><span class="k">length</span><span class="s">(</span><span class="i">$ElementSymbol</span><span class="s">)</span> == <span class="n">1</span><span class="s">)</span> ? <span class="q">&quot; %-3.3s&quot;</span> <span class="co">:</span> <span class="q">&quot;%-4.4s&quot;</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
866 853 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
867 854 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
868 855
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
869 856 <span class="i">$Line</span> = <span class="k">sprintf</span> <span class="q">&quot;%-6.6s%5.5s ${AtomNameFormat}%1.1s%3.3s %1.1s%4.4s%1.1s %8.8s%8.8s%8.8s%6.6s%6.6s %-4.4s%2.2s%2.2s&quot;</span><span class="cm">,</span> <span class="i">$RecordType</span><span class="cm">,</span> <span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="cm">,</span> <span class="i">$SegmentID</span><span class="cm">,</span> <span class="i">$ElementSymbol</span><span class="cm">,</span> <span class="i">$AtomCharge</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
870 857
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
871 858 <span class="k">return</span> <span class="i">$Line</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
872 859 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
873 860
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
874 861 <span class="c"># Check record type...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
875 <a name="_IsRecordType-"></a> 862 <span class="k">sub </span><span class="m">_IsRecordType</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
876 863 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="cm">,</span> <span class="i">$SpecifiedType</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
877 864 <span class="k">my</span><span class="s">(</span><span class="i">$Type</span><span class="cm">,</span> <span class="i">$Status</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
878 865
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
879 866 <span class="s">(</span><span class="i">$Type</span><span class="s">)</span> = <span class="k">map</span> <span class="s">{</span><span class="q">s/ //g</span><span class="sc">;</span> <span class="i">$_</span><span class="s">}</span> <span class="k">unpack</span><span class="s">(</span><span class="q">&quot;A6&quot;</span><span class="cm">,</span> <span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
880 867
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
881 868 <span class="i">$Status</span> = <span class="s">(</span><span class="i">$SpecifiedType</span> <span class="k">eq</span> <span class="i">$Type</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
882 869
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
883 870 <span class="k">return</span> <span class="i">$Status</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
884 871 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
885 872
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
886 873 <span class="c"># Get record type...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
887 <a name="_GetRecordType-"></a> 874 <span class="k">sub </span><span class="m">_GetRecordType</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
888 875 <span class="k">my</span><span class="s">(</span><span class="i">$Line</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
889 876 <span class="k">my</span><span class="s">(</span><span class="i">$Type</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
890 877
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
891 878 <span class="s">(</span><span class="i">$Type</span><span class="s">)</span> = <span class="k">map</span> <span class="s">{</span><span class="q">s/ //g</span><span class="sc">;</span> <span class="i">$_</span><span class="s">}</span> <span class="k">unpack</span><span class="s">(</span><span class="q">&quot;A6&quot;</span><span class="cm">,</span> <span class="i">$Line</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
892 879
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
893 880 <span class="k">return</span> <span class="i">$Type</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
894 881 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
895 882
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
896 883 <span class="c"># Get chains and residues data using ATOM/HETATM records...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
897 884 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
898 <a name="_GetChainsAndResiduesFromAtomHetatmRecords-"></a> 885 <span class="k">sub </span><span class="m">_GetChainsAndResiduesFromAtomHetatmRecords</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
899 886 <span class="k">my</span><span class="s">(</span><span class="i">$PDBRecordLinesRef</span><span class="cm">,</span> <span class="i">$GetChainResiduesBeyondTERFlag</span><span class="cm">,</span> <span class="i">$GetRecordLinesFlag</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
900 887
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
901 888 <span class="k">my</span><span class="s">(</span><span class="i">$LineCount</span><span class="cm">,</span> <span class="i">$TotalChainCount</span><span class="cm">,</span> <span class="i">$PreviousResidueNumber</span><span class="cm">,</span> <span class="i">$ChainCount</span><span class="cm">,</span> <span class="i">$DefaultChainID</span><span class="cm">,</span> <span class="i">$DefaultChainLabel</span><span class="cm">,</span> <span class="i">$RecordLine</span><span class="cm">,</span> <span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="cm">,</span> <span class="i">$SegmentID</span><span class="cm">,</span> <span class="i">$ElementSymbol</span><span class="cm">,</span> <span class="i">$AtomCharge</span><span class="cm">,</span> <span class="i">%ChainsDataMap</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
902 889
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
903 890 <span class="c"># Do a quick chain count using TER record...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
904 891 <span class="i">$TotalChainCount</span> = <span class="n">0</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
905 892 <span class="j">LINE:</span> <span class="k">for</span> <span class="i">$RecordLine</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$PDBRecordLinesRef</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
906 893 <span class="k">if</span> <span class="s">(</span><span class="i">IsEndmdlRecordType</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
907 894 <span class="k">last</span> <span class="j">LINE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
908 895 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
909 896 <span class="k">if</span> <span class="s">(</span><span class="i">IsTerRecordType</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
910 897 <span class="i">$TotalChainCount</span>++<span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
911 898 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
912 899 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
913 900
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
914 901 <span class="i">%ChainsDataMap</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
915 902 <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">ChainIDs</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
916 903 <span class="i">%</span>{<span class="i">$ChainsDataMap</span>{<span class="w">Residues</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
917 904 <span class="i">%</span>{<span class="i">$ChainsDataMap</span>{<span class="w">ResidueNumbers</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
918 905 <span class="i">%</span>{<span class="i">$ChainsDataMap</span>{<span class="w">Lines</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
919 906 <span class="i">%</span>{<span class="i">$ChainsDataMap</span>{<span class="w">ResidueCount</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
920 907
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
921 908 <span class="i">$LineCount</span> = <span class="n">0</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
922 909 <span class="i">$ChainCount</span> = <span class="n">0</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
923 910 <span class="i">$DefaultChainLabel</span> = <span class="q">&#39;None&#39;</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
924 911 <span class="i">$DefaultChainID</span> = <span class="i">$DefaultChainLabel</span> . <span class="s">(</span><span class="i">$ChainCount</span> + <span class="n">1</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
925 912 <span class="i">$PreviousResidueNumber</span> = <span class="n">0</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
926 913
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
927 914 <span class="j">LINE:</span> <span class="k">for</span> <span class="i">$RecordLine</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$PDBRecordLinesRef</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
928 915 <span class="i">$LineCount</span>++<span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
929 916 <span class="k">if</span> <span class="s">(</span><span class="i">IsTerRecordType</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
930 917 <span class="i">$DefaultChainID</span> = <span class="i">$DefaultChainLabel</span> . <span class="s">(</span><span class="i">$ChainCount</span> + <span class="n">1</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
931 918 <span class="i">$ChainCount</span>++<span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
932 919 <span class="k">if</span> <span class="s">(</span><span class="i">$ChainCount</span> == <span class="i">$TotalChainCount</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
933 920 <span class="k">last</span> <span class="j">LINE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
934 921 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
935 922 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
936 923 <span class="k">next</span> <span class="j">LINE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
937 924 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
938 925 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
939 926 <span class="k">elsif</span> <span class="s">(</span>!<span class="s">(</span><span class="i">IsAtomRecordType</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span> || <span class="i">IsHetatmRecordType</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
940 927 <span class="k">next</span> <span class="j">LINE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
941 928 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
942 929 <span class="s">(</span><span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="cm">,</span> <span class="i">$SegmentID</span><span class="cm">,</span> <span class="i">$ElementSymbol</span><span class="cm">,</span> <span class="i">$AtomCharge</span><span class="s">)</span> = <span class="i">ParseAtomRecordLine</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
943 930
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
944 931 <span class="k">if</span> <span class="s">(</span><span class="i">IsEmpty</span><span class="s">(</span><span class="i">$ChainID</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
945 932 <span class="i">$ChainID</span> = <span class="i">$DefaultChainID</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
946 933 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
947 934 <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ChainsDataMap</span>{<span class="w">Residues</span>}{<span class="i">$ChainID</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
948 935 <span class="c"># Data for existing chain...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
949 936 <span class="k">if</span> <span class="s">(</span><span class="i">$GetRecordLinesFlag</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
950 937 <span class="k">push</span> <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">Lines</span>}{<span class="i">$ChainID</span>}}<span class="cm">,</span> <span class="i">$RecordLine</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
951 938 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
952 939
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
953 940 <span class="k">if</span> <span class="s">(</span><span class="i">$ResidueNumber</span> != <span class="i">$PreviousResidueNumber</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
954 941 <span class="c"># Next residue with in the chain...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
955 942 <span class="k">push</span> <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">Residues</span>}{<span class="i">$ChainID</span>}}<span class="cm">,</span> <span class="i">$ResidueName</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
956 943 <span class="k">push</span> <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">ResidueNumbers</span>}{<span class="i">$ChainID</span>}}<span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
957 944
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
958 945 <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ChainsDataMap</span>{<span class="w">ResidueCount</span>}{<span class="i">$ChainID</span>}{<span class="i">$ResidueName</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
959 946 <span class="i">$ChainsDataMap</span>{<span class="w">ResidueCount</span>}{<span class="i">$ChainID</span>}{<span class="i">$ResidueName</span>} += <span class="n">1</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
960 947 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
961 948 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
962 949 <span class="i">$ChainsDataMap</span>{<span class="w">ResidueCount</span>}{<span class="i">$ChainID</span>}{<span class="i">$ResidueName</span>} = <span class="n">1</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
963 950 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
964 951 <span class="i">$PreviousResidueNumber</span> = <span class="i">$ResidueNumber</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
965 952 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
966 953 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
967 954 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
968 955 <span class="c"># Data for new chain...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
969 956 <span class="k">push</span> <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">ChainIDs</span>}}<span class="cm">,</span> <span class="i">$ChainID</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
970 957
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
971 958 <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">Residues</span>}{<span class="i">$ChainID</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
972 959 <span class="k">push</span> <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">Residues</span>}{<span class="i">$ChainID</span>}}<span class="cm">,</span> <span class="i">$ResidueName</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
973 960
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
974 961 <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">ResidueNumbers</span>}{<span class="i">$ChainID</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
975 962 <span class="k">push</span> <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">ResidueNumbers</span>}{<span class="i">$ChainID</span>}}<span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
976 963
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
977 964 <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">Lines</span>}{<span class="i">$ChainID</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
978 965 <span class="k">if</span> <span class="s">(</span><span class="i">$GetRecordLinesFlag</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
979 966 <span class="k">push</span> <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">Lines</span>}{<span class="i">$ChainID</span>}}<span class="cm">,</span> <span class="i">$RecordLine</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
980 967 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
981 968
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
982 969 <span class="i">%</span>{<span class="i">$ChainsDataMap</span>{<span class="w">ResidueCount</span>}{<span class="i">$ChainID</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
983 970 <span class="i">$ChainsDataMap</span>{<span class="w">ResidueCount</span>}{<span class="i">$ChainID</span>}{<span class="i">$ResidueName</span>} = <span class="n">1</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
984 971 <span class="i">$PreviousResidueNumber</span> = <span class="i">$ResidueNumber</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
985 972 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
986 973 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
987 974 <span class="k">if</span> <span class="s">(</span>!<span class="i">$GetChainResiduesBeyondTERFlag</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
988 975 <span class="k">return</span> \<span class="i">%ChainsDataMap</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
989 976 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
990 977 <span class="c"># Look for any HETATM residues specified outside TER records which could belong to an existing chain...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
991 978 <span class="k">my</span><span class="s">(</span><span class="i">$LineIndex</span><span class="cm">,</span> <span class="i">$PreviousChainID</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
992 979 <span class="i">$PreviousChainID</span> = <span class="q">&#39;&#39;</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
993 980 <span class="i">$PreviousResidueNumber</span> = <span class="n">0</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
994 981 <span class="j">LINE:</span> <span class="k">for</span> <span class="i">$LineIndex</span> <span class="s">(</span><span class="s">(</span><span class="i">$LineCount</span> - <span class="n">1</span><span class="s">)</span> .. <span class="i">$#</span>{<span class="i">$PDBRecordLinesRef</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
995 982 <span class="i">$RecordLine</span> = <span class="i">$PDBRecordLinesRef</span>-&gt;[<span class="i">$LineIndex</span>]<span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
996 983 <span class="k">if</span> <span class="s">(</span><span class="i">IsEndmdlRecordType</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
997 984 <span class="k">last</span> <span class="j">LINE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
998 985 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
999 986 <span class="k">if</span> <span class="s">(</span>!<span class="s">(</span><span class="i">IsAtomRecordType</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span> || <span class="i">IsHetatmRecordType</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1000 987 <span class="k">next</span> <span class="j">LINE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1001 988 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1002 989 <span class="s">(</span><span class="i">$AtomNumber</span><span class="cm">,</span> <span class="i">$AtomName</span><span class="cm">,</span> <span class="i">$AlternateLocation</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="cm">,</span> <span class="i">$InsertionCode</span><span class="cm">,</span> <span class="i">$X</span><span class="cm">,</span> <span class="i">$Y</span><span class="cm">,</span> <span class="i">$Z</span><span class="cm">,</span> <span class="i">$Occupancy</span><span class="cm">,</span> <span class="i">$TemperatureFactor</span><span class="cm">,</span> <span class="i">$SegmentID</span><span class="cm">,</span> <span class="i">$ElementSymbol</span><span class="cm">,</span> <span class="i">$AtomCharge</span><span class="s">)</span> = <span class="i">ParseAtomRecordLine</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1003 990 <span class="k">if</span> <span class="s">(</span><span class="i">IsEmpty</span><span class="s">(</span><span class="i">$ChainID</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1004 991 <span class="c"># Ignore the chains with no ids...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1005 992 <span class="k">next</span> <span class="j">LINE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1006 993 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1007 994 <span class="k">if</span> <span class="s">(</span>! <span class="k">exists</span><span class="s">(</span><span class="i">$ChainsDataMap</span>{<span class="w">Residues</span>}{<span class="i">$ChainID</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1008 995 <span class="c"># Don&#39;t collect any new chains after TER record...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1009 996 <span class="k">next</span> <span class="j">LINE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1010 997 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1011 998 <span class="k">if</span> <span class="s">(</span><span class="i">$GetRecordLinesFlag</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1012 999 <span class="k">push</span> <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">Lines</span>}{<span class="i">$ChainID</span>}}<span class="cm">,</span> <span class="i">$RecordLine</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1013 1000 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1014 1001 <span class="k">if</span> <span class="s">(</span><span class="i">$ResidueNumber</span> != <span class="i">$PreviousResidueNumber</span> || <span class="i">$ChainID</span> <span class="k">ne</span> <span class="i">$PreviousChainID</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1015 1002
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1016 1003 <span class="k">push</span> <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">Residues</span>}{<span class="i">$ChainID</span>}}<span class="cm">,</span> <span class="i">$ResidueName</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1017 1004 <span class="k">push</span> <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">ResidueNumbers</span>}{<span class="i">$ChainID</span>}}<span class="cm">,</span> <span class="i">$ResidueNumber</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1018 1005
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1019 1006 <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ChainsDataMap</span>{<span class="w">ResidueCount</span>}{<span class="i">$ChainID</span>}{<span class="i">$ResidueName</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1020 1007 <span class="i">$ChainsDataMap</span>{<span class="w">ResidueCount</span>}{<span class="i">$ChainID</span>}{<span class="i">$ResidueName</span>} += <span class="n">1</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1021 1008 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1022 1009 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1023 1010 <span class="i">$ChainsDataMap</span>{<span class="w">ResidueCount</span>}{<span class="i">$ChainID</span>}{<span class="i">$ResidueName</span>} = <span class="n">1</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1024 1011 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1025 1012 <span class="i">$PreviousChainID</span> = <span class="i">$ChainID</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1026 1013 <span class="i">$PreviousResidueNumber</span> = <span class="i">$ResidueNumber</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1027 1014 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1028 1015 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1029 1016 <span class="k">return</span> \<span class="i">%ChainsDataMap</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1030 1017 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1031 1018
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1032 1019 <span class="c"># Get chains and residues data using SEQRES records...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1033 1020 <span class="c">#</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1034 <a name="_GetChainsAndResiduesFromSeqresRecords-"></a>1021 <span class="k">sub </span><span class="m">_GetChainsAndResiduesFromSeqresRecords</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1035 1022 <span class="k">my</span><span class="s">(</span><span class="i">$PDBRecordLinesRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1036 1023
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1037 1024 <span class="k">my</span><span class="s">(</span><span class="i">$ChainCount</span><span class="cm">,</span> <span class="i">$DefaultChainLabel</span><span class="cm">,</span> <span class="i">$DefaultChainID</span><span class="cm">,</span> <span class="i">$RecordLine</span><span class="cm">,</span> <span class="i">$RecordSerialNumber</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$NumOfResidues</span><span class="cm">,</span> <span class="i">$ResidueName</span><span class="cm">,</span> <span class="i">$ResidueNamesString</span><span class="cm">,</span> <span class="i">@ResidueNamesList</span><span class="cm">,</span> <span class="i">%ChainsDataMap</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1038 1025
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1039 1026 <span class="i">%ChainsDataMap</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1040 1027 <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">ChainIDs</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1041 1028 <span class="i">%</span>{<span class="i">$ChainsDataMap</span>{<span class="w">Residues</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1042 1029 <span class="i">%</span>{<span class="i">$ChainsDataMap</span>{<span class="w">ResidueNumbers</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1043 1030 <span class="i">%</span>{<span class="i">$ChainsDataMap</span>{<span class="w">ResidueCount</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1044 1031
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1045 1032 <span class="i">$ChainCount</span> = <span class="n">0</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1046 1033 <span class="i">$DefaultChainLabel</span> = <span class="q">&#39;None&#39;</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1047 1034 <span class="i">$DefaultChainID</span> = <span class="i">$DefaultChainLabel</span> . <span class="s">(</span><span class="i">$ChainCount</span> + <span class="n">1</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1048 1035
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1049 1036 <span class="j">LINE:</span> <span class="k">for</span> <span class="i">$RecordLine</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$PDBRecordLinesRef</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1050 1037 <span class="k">if</span> <span class="s">(</span>!<span class="i">IsSeqresRecordType</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1051 1038 <span class="k">next</span> <span class="j">LINE</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1052 1039 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1053 1040 <span class="s">(</span><span class="i">$RecordSerialNumber</span><span class="cm">,</span> <span class="i">$ChainID</span><span class="cm">,</span> <span class="i">$NumOfResidues</span><span class="cm">,</span> <span class="i">$ResidueNamesString</span><span class="s">)</span> = <span class="i">ParseSeqresRecordLine</span><span class="s">(</span><span class="i">$RecordLine</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1054 1041 <span class="k">if</span> <span class="s">(</span><span class="i">$RecordSerialNumber</span> == <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1055 1042 <span class="c"># Indicates start of a new chain...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1056 1043 <span class="i">$DefaultChainID</span> = <span class="i">$DefaultChainLabel</span> . <span class="s">(</span><span class="i">$ChainCount</span> + <span class="n">1</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1057 1044 <span class="i">$ChainCount</span>++<span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1058 1045 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1059 1046 <span class="k">if</span> <span class="s">(</span><span class="i">IsEmpty</span><span class="s">(</span><span class="i">$ChainID</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1060 1047 <span class="i">$ChainID</span> = <span class="i">$DefaultChainID</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1061 1048 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1062 1049 <span class="c"># Process the residues...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1063 1050 <span class="i">@ResidueNamesList</span> = <span class="k">split</span> <span class="q">/[ ]+/</span><span class="cm">,</span> <span class="i">$ResidueNamesString</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1064 1051
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1065 1052 <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ChainsDataMap</span>{<span class="w">Residues</span>}{<span class="i">$ChainID</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1066 1053 <span class="c"># Data for existing chain...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1067 1054 <span class="k">push</span> <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">Residues</span>}{<span class="i">$ChainID</span>}}<span class="cm">,</span> <span class="i">@ResidueNamesList</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1068 1055 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1069 1056 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1070 1057 <span class="c"># Data for new chain...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1071 1058 <span class="k">push</span> <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">ChainIDs</span>}}<span class="cm">,</span> <span class="i">$ChainID</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1072 1059 <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">Residues</span>}{<span class="i">$ChainID</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1073 1060 <span class="k">push</span> <span class="i">@</span>{<span class="i">$ChainsDataMap</span>{<span class="w">Residues</span>}{<span class="i">$ChainID</span>}}<span class="cm">,</span> <span class="i">@ResidueNamesList</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1074 1061 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1075 1062
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1076 1063 <span class="c"># Setup residue count...</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1077 1064 <span class="k">for</span> <span class="i">$ResidueName</span> <span class="s">(</span><span class="i">@ResidueNamesList</span><span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1078 1065 <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ChainsDataMap</span>{<span class="w">ResidueCount</span>}{<span class="i">$ChainID</span>}{<span class="i">$ResidueName</span>}<span class="s">)</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1079 1066 <span class="i">$ChainsDataMap</span>{<span class="w">ResidueCount</span>}{<span class="i">$ChainID</span>}{<span class="i">$ResidueName</span>} += <span class="n">1</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1080 1067 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1081 1068 <span class="k">else</span> <span class="s">{</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1082 1069 <span class="i">$ChainsDataMap</span>{<span class="w">ResidueCount</span>}{<span class="i">$ChainID</span>}{<span class="i">$ResidueName</span>} = <span class="n">1</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1083 1070 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1084 1071 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1085 1072 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1086 1073 <span class="k">return</span> \<span class="i">%ChainsDataMap</span><span class="sc">;</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1087 1074 <span class="s">}</span>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1088 1075
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1089 <a name="EOF-"></a></pre>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1090 <p>&nbsp;</p>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1091 <br />
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1092 <center>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1093 <img src="../../../images/h2o2.png">
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1094 </center>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1095 </body>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1096 </html>