annotate mayachemtools/bin/InfoPDBFiles.pl @ 9:ab29fa5c8c1f draft default tip

Uploaded
author deepakjadmin
date Thu, 15 Dec 2016 14:18:03 -0500
parents 73ae111cf86f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1 #!/usr/bin/perl -w
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
2 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
3 # $RCSfile: InfoPDBFiles.pl,v $
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
4 # $Date: 2015/02/28 20:46:20 $
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
5 # $Revision: 1.36 $
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
6 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
7 # Author: Manish Sud <msud@san.rr.com>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
8 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
9 # Copyright (C) 2015 Manish Sud. All rights reserved.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
10 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
11 # This file is part of MayaChemTools.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
12 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
13 # MayaChemTools is free software; you can redistribute it and/or modify it under
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
14 # the terms of the GNU Lesser General Public License as published by the Free
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
15 # Software Foundation; either version 3 of the License, or (at your option) any
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
16 # later version.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
17 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
18 # MayaChemTools is distributed in the hope that it will be useful, but without
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
19 # any warranty; without even the implied warranty of merchantability of fitness
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
20 # for a particular purpose. See the GNU Lesser General Public License for more
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
21 # details.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
22 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
23 # You should have received a copy of the GNU Lesser General Public License
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
24 # along with MayaChemTools; if not, see <http://www.gnu.org/licenses/> or
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
25 # write to the Free Software Foundation Inc., 59 Temple Place, Suite 330,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
26 # Boston, MA, 02111-1307, USA.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
27 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
28
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
29 use strict;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
30 use FindBin; use lib "$FindBin::Bin/../lib";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
31 use Getopt::Long;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
32 use File::Basename;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
33 use Text::ParseWords;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
34 use Benchmark;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
35 use FileUtil;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
36 use TextUtil;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
37 use PDBFileUtil;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
38
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
39 my($ScriptName, %Options, $StartTime, $EndTime, $TotalTime);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
40
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
41 # Autoflush STDOUT
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
42 $| = 1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
43
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
44 # Starting message...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
45 $ScriptName = basename($0);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
46 print "\n$ScriptName: Starting...\n\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
47 $StartTime = new Benchmark;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
48
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
49 # Get the options and setup script...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
50 SetupScriptUsage();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
51 if ($Options{help} || @ARGV < 1) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
52 die GetUsageFromPod("$FindBin::Bin/$ScriptName");
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
53 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
54
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
55 my(@PDBFilesList);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
56 @PDBFilesList = ExpandFileNames(\@ARGV, "pdb");
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
57
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
58 # Process options...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
59 print "Processing options...\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
60 my(%OptionsInfo);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
61 ProcessOptions();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
62
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
63 # Setup information about input files...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
64 my(%PDBFilesInfo);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
65 print "Checking input PDB file(s)...\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
66 RetrievePDBFilesInfo();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
67
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
68 # Process input files..
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
69 my($FileIndex);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
70 if (@PDBFilesList > 1) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
71 print "\nProcessing PDB files...\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
72 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
73 for $FileIndex (0 .. $#PDBFilesList) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
74 if ($PDBFilesInfo{FileOkay}[$FileIndex]) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
75 print "\nProcessing file $PDBFilesList[$FileIndex]...\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
76 ListPDBFileInfo($FileIndex);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
77 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
78 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
79 ListTotalSizeOfFiles();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
80
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
81 print "\n$ScriptName:Done...\n\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
82
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
83 $EndTime = new Benchmark;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
84 $TotalTime = timediff ($EndTime, $StartTime);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
85 print "Total time: ", timestr($TotalTime), "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
86
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
87 ###############################################################################
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
88
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
89 # List appropriate information...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
90 sub ListPDBFileInfo {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
91 my($Index) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
92 my($PDBFile, $PDBRecordLinesRef);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
93
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
94 $PDBFile = $PDBFilesList[$Index];
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
95 $PDBRecordLinesRef = ReadPDBFile($PDBFile);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
96
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
97 # Header informaton...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
98 if ($OptionsInfo{ListHeaderInfo}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
99 ListHeaderInfo($PDBRecordLinesRef);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
100 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
101
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
102 # Experiment informaton...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
103 if ($OptionsInfo{ListExperimentalTechniqueInfo}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
104 ListExperimentalTechniqueInfo($PDBRecordLinesRef);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
105 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
106
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
107 # Total number of records...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
108 my($TotalRecordsCount) = scalar @{$PDBRecordLinesRef};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
109 print "\nTotal number of records: $TotalRecordsCount\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
110
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
111 # List record type count information...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
112 ListRecordTypesInfo($PDBRecordLinesRef);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
113
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
114 if ($OptionsInfo{CountChains} || $OptionsInfo{CountResiduesInChains} || $OptionsInfo{ResiduesFrequencyInChains}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
115 ListChainsAndResiduesInfo($PDBRecordLinesRef);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
116 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
117 if ($OptionsInfo{CountResiduesAll} || $OptionsInfo{ResiduesFrequencyAll}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
118 ListAllResiduesInfo($PDBRecordLinesRef);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
119 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
120 if ($OptionsInfo{ResidueNumbersInfo}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
121 ListResidueNumbersInfo($PDBRecordLinesRef);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
122 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
123 if ($OptionsInfo{CalculateBoundingBox}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
124 ListBoundingBox($PDBRecordLinesRef);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
125 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
126
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
127 # File size and modification information...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
128 print "\nFile size: ", FormatFileSize($PDBFilesInfo{FileSize}[$Index]), " \n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
129 print "Last modified: ", $PDBFilesInfo{FileLastModified}[$Index], " \n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
130 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
131
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
132 sub ListHeaderInfo {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
133 my($PDBRecordLinesRef) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
134 my($HeaderRecordLine, $Classification, $DepositionDate, $IDCode);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
135
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
136 ($Classification, $DepositionDate, $IDCode) = (undef) x 3;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
137 $HeaderRecordLine = $PDBRecordLinesRef->[0];
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
138 if (IsHeaderRecordType($HeaderRecordLine)) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
139 ($Classification, $DepositionDate, $IDCode) = ParseHeaderRecordLine($HeaderRecordLine);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
140 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
141
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
142 $Classification = IsEmpty($Classification) ? 'Not available' : $Classification;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
143 $DepositionDate = IsEmpty($DepositionDate) ? 'Not available' : $DepositionDate;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
144 $IDCode = IsEmpty($IDCode) ? 'Not available' : $IDCode;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
145
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
146 print "\nClassification: $Classification\nID: $IDCode\nDeposition date: $DepositionDate\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
147 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
148
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
149 # List experimental technique information info...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
150 sub ListExperimentalTechniqueInfo {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
151 my($PDBRecordLinesRef) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
152 my($ExperimentalTechnique, $Resolution, $ResolutionUnits);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
153
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
154 $ExperimentalTechnique = GetExperimentalTechnique($PDBRecordLinesRef);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
155 print "\nExperimental technique: " . ($ExperimentalTechnique ? $ExperimentalTechnique : "Not available") . "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
156
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
157 ($Resolution, $ResolutionUnits) = GetExperimentalTechniqueResolution($PDBRecordLinesRef);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
158 print "Resolution: " . ($Resolution ? "$Resolution $ResolutionUnits" : "Not available") . "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
159
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
160 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
161
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
162 # List record type info...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
163 sub ListRecordTypesInfo {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
164 my($PDBRecordLinesRef) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
165 my($RecordType, $RecordCount, $RecordTypesCountRef, @RecordTypeCountInfo);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
166
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
167 $RecordTypesCountRef = GetRecordTypesCount($PDBRecordLinesRef);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
168
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
169 @RecordTypeCountInfo = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
170 if ($OptionsInfo{CountRecordType} =~ /^All$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
171 for $RecordType (@{$RecordTypesCountRef->{RecordTypes}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
172 $RecordCount = $RecordTypesCountRef->{Count}{$RecordType};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
173 push @RecordTypeCountInfo, "$RecordType - $RecordCount";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
174 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
175 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
176 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
177 for $RecordType (@{$OptionsInfo{SpecifiedRecordTypes}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
178 $RecordCount = (exists $RecordTypesCountRef->{Count}{$RecordType}) ? ($RecordTypesCountRef->{Count}{$RecordType}) : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
179 push @RecordTypeCountInfo, "$RecordType - $RecordCount";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
180 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
181 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
182 print "Number of individual records: ", JoinWords(\@RecordTypeCountInfo, '; ', 0), "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
183
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
184 if ($OptionsInfo{CheckMasterRecord}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
185 CheckMasterRecord($RecordTypesCountRef, $PDBRecordLinesRef);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
186 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
187 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
188
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
189 # List information about residues and chains...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
190 sub ListChainsAndResiduesInfo {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
191 my($PDBRecordLinesRef) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
192 my($ResidueName, $ResidueCount, $ChainCount, $ChainID, $CollectChainResiduesBeyondTER, $ChainsAndResiduesInfoRef);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
193
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
194 $CollectChainResiduesBeyondTER = 1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
195 $ChainsAndResiduesInfoRef = GetChainsAndResidues($PDBRecordLinesRef, 'AtomAndHetatm', $CollectChainResiduesBeyondTER);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
196 $ChainCount = @{$ChainsAndResiduesInfoRef->{ChainIDs}};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
197 if ($OptionsInfo{CountChains}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
198 print "\nNumber of chains: $ChainCount \n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
199 my($ChainID, @ChainIDsList);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
200 @ChainIDsList = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
201 for $ChainID (@{$ChainsAndResiduesInfoRef->{ChainIDs}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
202 push @ChainIDsList, CleanupChainID($ChainID);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
203 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
204 print "Chain IDs: ", JoinWords(\@ChainIDsList, ', ', 0),"\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
205 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
206
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
207 if ($OptionsInfo{CountResiduesInChains}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
208 my($TotalResiduesCount, $ResidueCountInfo, @ResiduesCountInfo);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
209 @ResiduesCountInfo = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
210 $TotalResiduesCount = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
211 for $ChainID (@{$ChainsAndResiduesInfoRef->{ChainIDs}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
212 $ResidueCount = @{$ChainsAndResiduesInfoRef->{Residues}{$ChainID}};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
213 $TotalResiduesCount += $ResidueCount;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
214 $ResidueCountInfo = "Chain ${ChainID} - ${ResidueCount}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
215 push @ResiduesCountInfo, $ResidueCountInfo;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
216 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
217 print "\nNumber of residues in chain(s): ";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
218 if ($ChainCount > 1) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
219 print "Total - $TotalResiduesCount; ", JoinWords(\@ResiduesCountInfo, '; ', 0),"\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
220 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
221 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
222 print "$TotalResiduesCount\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
223 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
224
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
225 # List of residues in each chain...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
226 if ($OptionsInfo{DetailLevel} >= 3) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
227 print "List of residues in chain(s): \n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
228 for $ChainID (@{$ChainsAndResiduesInfoRef->{ChainIDs}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
229 if ($ChainCount > 1) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
230 print "Chain ", CleanupChainID($ChainID), ": ";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
231 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
232 print JoinWords(\@{$ChainsAndResiduesInfoRef->{Residues}{$ChainID}}, ', ', 0),"\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
233 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
234 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
235 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
236 if ($OptionsInfo{ResiduesFrequencyInChains}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
237 # Setup a hash using residue count as key for sorting the values...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
238 my(%ResiduesCountToNameMap);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
239 %ResiduesCountToNameMap = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
240 @{$ResiduesCountToNameMap{ChainIDs}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
241 %{$ResiduesCountToNameMap{ResidueNames}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
242
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
243 for $ChainID (@{$ChainsAndResiduesInfoRef->{ChainIDs}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
244 push @{$ResiduesCountToNameMap{ChainIDs}}, $ChainID;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
245 %{$ResiduesCountToNameMap{ResidueNames}{$ChainID}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
246
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
247 for $ResidueName (sort keys %{$ChainsAndResiduesInfoRef->{ResidueCount}{$ChainID}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
248 $ResidueCount = $ChainsAndResiduesInfoRef->{ResidueCount}{$ChainID}{$ResidueName};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
249 # Setup count value for each chain...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
250 if (exists $ResiduesCountToNameMap{ResidueNames}{$ChainID}{$ResidueCount}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
251 $ResiduesCountToNameMap{ResidueNames}{$ChainID}{$ResidueCount} .= "~${ResidueName}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
252 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
253 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
254 $ResiduesCountToNameMap{ResidueNames}{$ChainID}{$ResidueCount} = $ResidueName;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
255 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
256 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
257 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
258 # Collect data for all the residues in all the chains...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
259 my(%AllResiduesNameToCountMap, %AllResiduesCountToNameMap);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
260 %AllResiduesNameToCountMap = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
261 %AllResiduesCountToNameMap = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
262 if ($ChainCount > 1) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
263 for $ChainID (@{$ChainsAndResiduesInfoRef->{ChainIDs}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
264 for $ResidueName (keys %{$ChainsAndResiduesInfoRef->{ResidueCount}{$ChainID}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
265 $ResidueCount = $ChainsAndResiduesInfoRef->{ResidueCount}{$ChainID}{$ResidueName};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
266 if (exists $AllResiduesNameToCountMap{$ResidueName}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
267 $AllResiduesNameToCountMap{$ResidueName} += $ResidueCount;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
268 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
269 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
270 $AllResiduesNameToCountMap{$ResidueName} = $ResidueCount;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
271 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
272 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
273 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
274 for $ResidueName (keys %AllResiduesNameToCountMap) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
275 $ResidueCount = $AllResiduesNameToCountMap{$ResidueName};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
276 if (exists $AllResiduesCountToNameMap{$ResidueCount}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
277 $AllResiduesCountToNameMap{$ResidueCount} .= "~${ResidueName}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
278 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
279 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
280 $AllResiduesCountToNameMap{$ResidueCount} = $ResidueName;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
281 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
282 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
283 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
284
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
285 # Setup distribution data for individual chains and the grand total as well...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
286 my($ChainResidueCount, $PercentResidueCount, $TotalResidueCount, $ResidueNames, @ResidueNamesList, %ResiduesFrequencyInfoMap);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
287 @{$ResiduesFrequencyInfoMap{ChainIDs}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
288 %{$ResiduesFrequencyInfoMap{Frequency}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
289 %{$ResiduesFrequencyInfoMap{PercentFrequency}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
290
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
291 @{$ResiduesFrequencyInfoMap{AllChainsFrequency}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
292 @{$ResiduesFrequencyInfoMap{AllChainsPercentFrequency}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
293
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
294 $TotalResidueCount = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
295
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
296 for $ChainID (@{$ResiduesCountToNameMap{ChainIDs}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
297 push @{$ResiduesFrequencyInfoMap{ChainIDs}}, $ChainID;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
298 @{$ResiduesFrequencyInfoMap{Frequency}{$ChainID}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
299 @{$ResiduesFrequencyInfoMap{PercentFrequency}{$ChainID}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
300
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
301 $ChainResidueCount = @{$ChainsAndResiduesInfoRef->{Residues}{$ChainID}};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
302 $TotalResidueCount += $ChainResidueCount;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
303
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
304 for $ResidueCount (sort {$b <=> $a} keys %{$ResiduesCountToNameMap{ResidueNames}{$ChainID}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
305 $ResidueNames = $ResiduesCountToNameMap{ResidueNames}{$ChainID}{$ResidueCount};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
306 @ResidueNamesList = split /~/, $ResidueNames;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
307 for $ResidueName (@ResidueNamesList) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
308 push @{$ResiduesFrequencyInfoMap{Frequency}{$ChainID}}, "${ResidueName} - ${ResidueCount}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
309 $PercentResidueCount = sprintf("%.1f", (($ResidueCount/$ChainResidueCount)*100)) + 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
310 push @{$ResiduesFrequencyInfoMap{PercentFrequency}{$ChainID}}, "${ResidueName} - ${PercentResidueCount}%";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
311 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
312 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
313 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
314 if ($ChainCount > 1) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
315 for $ResidueCount (sort {$b <=> $a} keys %AllResiduesCountToNameMap) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
316 $ResidueNames = $AllResiduesCountToNameMap{$ResidueCount};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
317 @ResidueNamesList = split /~/, $ResidueNames;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
318 for $ResidueName (@ResidueNamesList) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
319 push @{$ResiduesFrequencyInfoMap{AllChainsFrequency}}, "${ResidueName} - ${ResidueCount}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
320 $PercentResidueCount = sprintf("%.1f", (($ResidueCount/$TotalResidueCount)*100)) + 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
321 push @{$ResiduesFrequencyInfoMap{AllChainsPercentFrequency}}, "${ResidueName} - ${PercentResidueCount}%";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
322 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
323 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
324 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
325
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
326 # List distribution of residues
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
327 print "\nDistribution of residues in chain(s): \n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
328 for $ChainID (@{$ResiduesFrequencyInfoMap{ChainIDs}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
329 if ($ChainCount > 1) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
330 print "Chain ", CleanupChainID($ChainID), ": ";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
331 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
332 print JoinWords(\@{$ResiduesFrequencyInfoMap{Frequency}{$ChainID}}, '; ', 0), "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
333 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
334 if ($OptionsInfo{DetailLevel} >= 2) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
335 print "\nPercent distribution of residues in chain(s): \n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
336 for $ChainID (@{$ResiduesFrequencyInfoMap{ChainIDs}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
337 if ($ChainCount > 1) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
338 print "Chain ", CleanupChainID($ChainID), ": ";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
339 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
340 print JoinWords(\@{$ResiduesFrequencyInfoMap{PercentFrequency}{$ChainID}}, '; ', 0), "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
341 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
342 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
343 if ($ChainCount > 1) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
344 print "\nDistribution of residues across all chains: \n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
345 print JoinWords(\@{$ResiduesFrequencyInfoMap{AllChainsFrequency}}, '; ', 0), "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
346
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
347 if ($OptionsInfo{DetailLevel} >= 2) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
348 print "\nPercent distribution of residues across all chains: \n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
349 print JoinWords(\@{$ResiduesFrequencyInfoMap{AllChainsPercentFrequency}}, '; ', 0), "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
350 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
351 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
352 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
353 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
354
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
355 # List information about all the residues...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
356 sub ListAllResiduesInfo {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
357 my($PDBRecordLinesRef) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
358 my($TotalResidueCount, $AtomResiduesCount, $HetatmResiduesCount, $ResiduesInfoRef);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
359
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
360 $ResiduesInfoRef = GetAllResidues($PDBRecordLinesRef);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
361 $TotalResidueCount = @{$ResiduesInfoRef->{ResidueNames}};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
362 $AtomResiduesCount = @{$ResiduesInfoRef->{AtomResidueNames}};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
363 $HetatmResiduesCount = @{$ResiduesInfoRef->{HetatmResidueNames}};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
364
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
365 if ($OptionsInfo{CountResiduesAll}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
366 print "\nTotal number of residues: Total - $TotalResidueCount; ATOM residues - $AtomResiduesCount; HETATM residues - $HetatmResiduesCount\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
367
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
368 if ($OptionsInfo{DetailLevel} >= 3) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
369 print "List of residues: \n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
370 if ($AtomResiduesCount) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
371 print "ATOM residues: ", JoinWords(\@{$ResiduesInfoRef->{AtomResidueNames}}, ', ', 0), "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
372 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
373 if ($HetatmResiduesCount) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
374 print "HETATM residues: ", JoinWords(\@{$ResiduesInfoRef->{HetatmResidueNames}}, ', ', 0), "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
375 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
376 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
377 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
378
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
379 if ($OptionsInfo{ResiduesFrequencyAll}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
380 my($ResidueName, $ResidueCount);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
381
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
382 # Setup a hash using residue count as key for sorting the values...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
383 my(%ResiduesCountToNameMap, %AtomResiduesCountToNameMap, %HetatmResiduesCountToNameMap);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
384 %ResiduesCountToNameMap = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
385 %{$ResiduesCountToNameMap{ResidueNames}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
386
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
387 %AtomResiduesCountToNameMap = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
388 %{$AtomResiduesCountToNameMap{ResidueNames}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
389
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
390 %HetatmResiduesCountToNameMap = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
391 %{$HetatmResiduesCountToNameMap{ResidueNames}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
392
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
393 for $ResidueName (keys %{$ResiduesInfoRef->{ResidueCount}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
394 $ResidueCount = $ResiduesInfoRef->{ResidueCount}{$ResidueName};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
395 if (exists $ResiduesCountToNameMap{ResidueNames}{$ResidueCount}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
396 $ResiduesCountToNameMap{ResidueNames}{$ResidueCount} .= "~${ResidueName}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
397 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
398 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
399 $ResiduesCountToNameMap{ResidueNames}{$ResidueCount} = $ResidueName;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
400 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
401 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
402
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
403 if ($OptionsInfo{DetailLevel} >= 1) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
404 for $ResidueName (keys %{$ResiduesInfoRef->{AtomResidueCount}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
405 $ResidueCount = $ResiduesInfoRef->{AtomResidueCount}{$ResidueName};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
406 if (exists $AtomResiduesCountToNameMap{ResidueNames}{$ResidueCount}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
407 $AtomResiduesCountToNameMap{ResidueNames}{$ResidueCount} .= "~${ResidueName}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
408 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
409 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
410 $AtomResiduesCountToNameMap{ResidueNames}{$ResidueCount} = $ResidueName;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
411 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
412 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
413 for $ResidueName (keys %{$ResiduesInfoRef->{HetatmResidueCount}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
414 $ResidueCount = $ResiduesInfoRef->{HetatmResidueCount}{$ResidueName};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
415 if (exists $HetatmResiduesCountToNameMap{ResidueNames}{$ResidueCount}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
416 $HetatmResiduesCountToNameMap{ResidueNames}{$ResidueCount} .= "~${ResidueName}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
417 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
418 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
419 $HetatmResiduesCountToNameMap{ResidueNames}{$ResidueCount} = $ResidueName;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
420 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
421 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
422 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
423
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
424 # Setup distribution of residues info...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
425 my($ResidueNames, $PercentResidueCount, @ResidueNamesList, %ResiduesCountInfoMap, %AtomResiduesCountInfoMap, %HetatmResiduesCountInfoMap);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
426
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
427 @{$ResiduesCountInfoMap{Frequency}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
428 @{$ResiduesCountInfoMap{PercentFrequency}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
429 for $ResidueCount (sort {$b <=> $a} keys %{$ResiduesCountToNameMap{ResidueNames}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
430 $PercentResidueCount = sprintf("%.1f", (($ResidueCount/$TotalResidueCount)*100)) + 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
431 $ResidueNames = $ResiduesCountToNameMap{ResidueNames}{$ResidueCount};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
432 @ResidueNamesList = split /~/, $ResidueNames;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
433 for $ResidueName (@ResidueNamesList) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
434 push @{$ResiduesCountInfoMap{Frequency}}, "${ResidueName} - ${ResidueCount}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
435 push @{$ResiduesCountInfoMap{PercentFrequency}}, "${ResidueName} - ${PercentResidueCount}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
436 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
437 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
438 if ($OptionsInfo{DetailLevel} >= 1) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
439 @{$AtomResiduesCountInfoMap{Frequency}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
440 @{$AtomResiduesCountInfoMap{PercentFrequency}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
441 for $ResidueCount (sort {$b <=> $a} keys %{$AtomResiduesCountToNameMap{ResidueNames}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
442 $PercentResidueCount = sprintf("%.1f", (($ResidueCount/$TotalResidueCount)*100)) + 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
443 $ResidueNames = $AtomResiduesCountToNameMap{ResidueNames}{$ResidueCount};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
444 @ResidueNamesList = split /~/, $ResidueNames;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
445 for $ResidueName (@ResidueNamesList) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
446 push @{$AtomResiduesCountInfoMap{Frequency}}, "${ResidueName} - ${ResidueCount}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
447 push @{$AtomResiduesCountInfoMap{PercentFrequency}}, "${ResidueName} - ${PercentResidueCount}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
448 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
449 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
450 @{$HetatmResiduesCountInfoMap{Frequency}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
451 @{$HetatmResiduesCountInfoMap{PercentFrequency}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
452 for $ResidueCount (sort {$b <=> $a} keys %{$HetatmResiduesCountToNameMap{ResidueNames}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
453 $PercentResidueCount = sprintf("%.1f", (($ResidueCount/$TotalResidueCount)*100)) + 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
454 $ResidueNames = $HetatmResiduesCountToNameMap{ResidueNames}{$ResidueCount};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
455 @ResidueNamesList = split /~/, $ResidueNames;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
456 for $ResidueName (@ResidueNamesList) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
457 push @{$HetatmResiduesCountInfoMap{Frequency}}, "${ResidueName} - ${ResidueCount}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
458 push @{$HetatmResiduesCountInfoMap{PercentFrequency}}, "${ResidueName} - ${PercentResidueCount}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
459 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
460 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
461 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
462
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
463 # List distribution of residues
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
464 print "\nDistribution of residues: ", JoinWords(\@{$ResiduesCountInfoMap{Frequency}},'; ', 0), "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
465 if ($OptionsInfo{DetailLevel} >= 2) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
466 print "\nPercent distribution of residues: ", JoinWords(\@{$ResiduesCountInfoMap{PercentFrequency}},'; ', 0), "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
467 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
468
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
469 if ($OptionsInfo{DetailLevel} >= 1) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
470 print "\nDistribution of ATOM residues: ", JoinWords(\@{$AtomResiduesCountInfoMap{Frequency}},'; ', 0), "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
471 if ($OptionsInfo{DetailLevel} >= 2) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
472 print "\nPercent distribution of ATOM residues: ", JoinWords(\@{$AtomResiduesCountInfoMap{PercentFrequency}},'; ', 0), "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
473 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
474
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
475 print "\nDistribution of HETATM residues: ", JoinWords(\@{$HetatmResiduesCountInfoMap{Frequency}},'; ', 0), "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
476 if ($OptionsInfo{DetailLevel} >= 2) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
477 print "\nPercent distribution of HETATM residues: ", JoinWords(\@{$HetatmResiduesCountInfoMap{PercentFrequency}},'; ', 0), "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
478 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
479 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
480 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
481 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
482
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
483 # List information about residue numbers for each chain...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
484 sub ListResidueNumbersInfo {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
485 my($PDBRecordLinesRef) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
486 my($Index, $ResidueCount, $StartResidueNum, $EndResidueNum, $ChainID, $CollectChainResiduesBeyondTER, $ChainsAndResiduesInfoRef, $ResidueNum, $PreviousResidueNum, $ResidueName, $PreviousResidueName, $GapResiduePairsCount, $GapLength, $DescendingOrderResiduePairsCount, @DescendingOrderResiduePairs, @GapResiduePairs);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
487
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
488 $CollectChainResiduesBeyondTER = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
489 $ChainsAndResiduesInfoRef = GetChainsAndResidues($PDBRecordLinesRef, 'AtomAndHetatm', $CollectChainResiduesBeyondTER);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
490
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
491 print "\nATOM/HETATM residue numbers information for chains:\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
492
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
493 for $ChainID (@{$ChainsAndResiduesInfoRef->{ChainIDs}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
494 print "\nChain ID - ", CleanupChainID($ChainID), "";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
495
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
496 $ResidueCount = @{$ChainsAndResiduesInfoRef->{ResidueNumbers}{$ChainID}};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
497
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
498 # Start and end residue numbers...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
499 $StartResidueNum = $ChainsAndResiduesInfoRef->{ResidueNumbers}{$ChainID}[0];
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
500 $EndResidueNum = $ChainsAndResiduesInfoRef->{ResidueNumbers}{$ChainID}[$ResidueCount - 1];
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
501 print "; Number of residues: $ResidueCount; Start residue number - $StartResidueNum; End residue number - $EndResidueNum\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
502
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
503 # Identify any gaps in residue numbers or non-ascending order residue numbers...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
504 $GapResiduePairsCount = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
505 $DescendingOrderResiduePairsCount = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
506
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
507 @DescendingOrderResiduePairs = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
508 @GapResiduePairs = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
509
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
510 RESIDUE: for $Index (1 .. ($ResidueCount - 1)) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
511 $ResidueNum = $ChainsAndResiduesInfoRef->{ResidueNumbers}{$ChainID}[$Index];
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
512 $PreviousResidueNum = $ChainsAndResiduesInfoRef->{ResidueNumbers}{$ChainID}[$Index - 1];
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
513
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
514 $ResidueName = $ChainsAndResiduesInfoRef->{Residues}{$ChainID}[$Index];
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
515 $PreviousResidueName = $ChainsAndResiduesInfoRef->{Residues}{$ChainID}[$Index - 1];
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
516
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
517 if ($ResidueNum == ($PreviousResidueNum + 1)) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
518 # All is good...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
519 next RESIDUE;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
520 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
521
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
522 # Are residue in descending order?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
523 if ($ResidueNum < $PreviousResidueNum) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
524 $DescendingOrderResiduePairsCount++;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
525 push @DescendingOrderResiduePairs, "<${PreviousResidueName}${PreviousResidueNum} - ${ResidueName}${ResidueNum}>";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
526 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
527
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
528 # Track gaps in residue pairs...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
529 $GapResiduePairsCount++;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
530 $GapLength = abs($ResidueNum - $PreviousResidueNum) - 1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
531
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
532 push @GapResiduePairs, "<${PreviousResidueName}${PreviousResidueNum} - ${ResidueName}${ResidueNum}; $GapLength>";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
533 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
534
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
535 # Print gaps information...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
536 print "Gaps in residue numbers: ", $GapResiduePairsCount ? "Yes" : "None";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
537 if ($GapResiduePairsCount) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
538 print "; Number of gap residue number pairs: $GapResiduePairsCount; Gap residue pairs: <StartRes-EndRes; GapLength> - ", JoinWords(\@GapResiduePairs, "; ", 0);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
539 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
540 print "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
541
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
542 # Print descending residue order information...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
543 print "Residue numbers in descending order: ", $DescendingOrderResiduePairsCount ? "Yes" : "None";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
544 if ($DescendingOrderResiduePairsCount) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
545 print "; Number of descending residue number pairs: $DescendingOrderResiduePairsCount; Descending residue number pairs: <StartRes-EndRes> ", JoinWords(\@DescendingOrderResiduePairs, "; ", 0);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
546 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
547 print "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
548 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
549 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
550
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
551 # List min/max XYZ coordinates for ATOM/HETATM records...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
552 sub ListBoundingBox {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
553 my($PDBRecordLinesRef) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
554 my($XMin, $YMin, $ZMin, $XMax, $YMax, $ZMax, $XSize, $YSize, $ZSize);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
555
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
556 ($XMin, $YMin, $ZMin, $XMax, $YMax, $ZMax) = GetMinMaxCoords($PDBRecordLinesRef);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
557 $XSize = abs($XMax - $XMin);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
558 $YSize = abs($YMax - $YMin);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
559 $ZSize = abs($ZMax - $ZMin);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
560
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
561 $XMin = sprintf("%.3f", $XMin) + 0; $XMax = sprintf("%.3f", $XMax) + 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
562 $YMin = sprintf("%.3f", $YMin) + 0; $YMax = sprintf("%.3f", $YMax) + 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
563 $ZMin = sprintf("%.3f", $ZMin) + 0; $ZMax = sprintf("%.3f", $ZMax) + 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
564
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
565 $XSize = sprintf("%.3f", $XSize) + 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
566 $YSize = sprintf("%.3f", $YSize) + 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
567 $ZSize = sprintf("%.3f", $ZSize) + 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
568
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
569 print "\nBounding box coordinates: <XMin, XMax> - <$XMin, $XMax>; <YMin, YMax> - <$YMin, $YMax>; <ZMin, ZMax> - <$ZMin, $ZMax>;\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
570 print "Bounding box size in angstroms: XSize - $XSize; YSize - $YSize; ZSize - $ZSize\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
571
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
572 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
573
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
574 # Check master record counts against actual record counts...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
575 sub CheckMasterRecord {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
576 my($RecordTypesCountRef, $PDBRecordLinesRef) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
577
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
578 # Get master record information...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
579 my($NumOfRemarkRecords, $NumOfHetRecords, $NumOfHelixRecords, $NumOfSheetRecords, $NumOfTurnRecords, $NumOfSiteRecords, $NumOfTransformationsRecords, $NumOfAtomAndHetatmRecords, $NumOfTerRecords, $NumOfConectRecords, $NumOfSeqresRecords) = (undef) x 11;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
580 my($RecordLine, $MasterRecordFound);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
581 $MasterRecordFound = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
582
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
583 LINE: for $RecordLine (@{$PDBRecordLinesRef}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
584 if (IsMasterRecordType($RecordLine)) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
585 ($NumOfRemarkRecords, $NumOfHetRecords, $NumOfHelixRecords, $NumOfSheetRecords, $NumOfTurnRecords, $NumOfSiteRecords, $NumOfTransformationsRecords, $NumOfAtomAndHetatmRecords, $NumOfTerRecords, $NumOfConectRecords, $NumOfSeqresRecords) = ParseMasterRecordLine($RecordLine);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
586 $MasterRecordFound = 1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
587 last LINE;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
588 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
589 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
590 if (!$MasterRecordFound) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
591 print "\nWarning: MASTER record is missing.\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
592 return;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
593 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
594 my(@MasterRecordValidationInfo);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
595 @MasterRecordValidationInfo = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
596 $NumOfRemarkRecords += 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
597 if (exists($RecordTypesCountRef->{Count}{REMARK}) && $NumOfRemarkRecords != $RecordTypesCountRef->{Count}{REMARK}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
598 push @MasterRecordValidationInfo, "Number of REMARK records, $NumOfRemarkRecords, specified in MASTER record doen't match its explict count, $RecordTypesCountRef->{Count}{REMARK}.";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
599 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
600 $NumOfHetRecords += 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
601 if (exists($RecordTypesCountRef->{Count}{HET}) && $NumOfHetRecords != $RecordTypesCountRef->{Count}{HET}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
602 push @MasterRecordValidationInfo, "Number of HET records, $NumOfHetRecords, specified in MASTER record doen't match its explict count, $RecordTypesCountRef->{Count}{HET}.";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
603 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
604 $NumOfHelixRecords += 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
605 if (exists($RecordTypesCountRef->{Count}{HELIX}) && $NumOfHelixRecords != $RecordTypesCountRef->{Count}{HELIX}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
606 push @MasterRecordValidationInfo, "Number of HELIX records, $NumOfHelixRecords, specified in MASTER record doen't match its explict count, $RecordTypesCountRef->{Count}{HELIX}.";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
607 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
608 $NumOfSheetRecords += 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
609 if (exists($RecordTypesCountRef->{Count}{SHEET}) && $NumOfSheetRecords != $RecordTypesCountRef->{Count}{SHEET}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
610 push @MasterRecordValidationInfo, "Number of SHEET records, $NumOfSheetRecords, specified in MASTER record doen't match its explict count, $RecordTypesCountRef->{Count}{SHEET}.";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
611 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
612 $NumOfTurnRecords += 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
613 if (exists($RecordTypesCountRef->{Count}{TURN}) && $NumOfTurnRecords != $RecordTypesCountRef->{Count}{TURN}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
614 push @MasterRecordValidationInfo, "Number of TURN records, $NumOfTurnRecords, specified in MASTER record doen't match its explict count, $RecordTypesCountRef->{Count}{REMARK}.";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
615 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
616 $NumOfSiteRecords += 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
617 if (exists($RecordTypesCountRef->{Count}{SITE}) && $NumOfSiteRecords != $RecordTypesCountRef->{Count}{SITE}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
618 push @MasterRecordValidationInfo, "Number of SITE records, $NumOfSiteRecords, specified in MASTER record doen't match its explict count, $RecordTypesCountRef->{Count}{SITE}.";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
619 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
620
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
621 $NumOfTransformationsRecords += 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
622 my($RecordsCount, $ID, $RecordID, $RecordLabel);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
623 $RecordsCount = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
624 for $RecordLabel ('ORIGX', 'SCALE', 'MTRIX') {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
625 for $ID (1 .. 3) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
626 $RecordID = "${RecordLabel}${ID}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
627 if (exists $RecordTypesCountRef->{Count}{$RecordID}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
628 $RecordsCount += $RecordTypesCountRef->{Count}{$RecordID};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
629 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
630 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
631 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
632 if ($NumOfTransformationsRecords != $RecordsCount) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
633 push @MasterRecordValidationInfo, "Number of transformation records (ORIGXn+SCALEn+MTRIXn), $NumOfTransformationsRecords, specified in MASTER record doen't match its explict count, $RecordsCount.";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
634 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
635
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
636 $RecordsCount = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
637 for $RecordLabel ('ATOM', 'HETATM') {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
638 if (exists $RecordTypesCountRef->{Count}{$RecordLabel}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
639 $RecordsCount += $RecordTypesCountRef->{Count}{$RecordLabel};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
640 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
641 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
642 $NumOfAtomAndHetatmRecords += 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
643 if ($NumOfAtomAndHetatmRecords != $RecordsCount) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
644 push @MasterRecordValidationInfo, "Number of ATOM + HETATM records, $NumOfAtomAndHetatmRecords, specified in MASTER record doen't match its explict count, $RecordsCount.";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
645 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
646 $NumOfTerRecords += 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
647 if (exists($RecordTypesCountRef->{Count}{TER}) && $NumOfTerRecords != $RecordTypesCountRef->{Count}{TER}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
648 push @MasterRecordValidationInfo, "Number of TER records, $NumOfTerRecords, specified in MASTER record doen't match its explict count, $RecordTypesCountRef->{Count}{TER}.";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
649 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
650 $NumOfConectRecords += 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
651 if (exists($RecordTypesCountRef->{Count}{CONECT}) && $NumOfConectRecords != $RecordTypesCountRef->{Count}{CONECT}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
652 push @MasterRecordValidationInfo, "Number of CONECT records, $NumOfConectRecords, specified in MASTER record doen't match its explict count, $RecordTypesCountRef->{Count}{CONECT}.";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
653 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
654 $NumOfSeqresRecords += 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
655 if (exists($RecordTypesCountRef->{Count}{SEQRES}) && $NumOfSeqresRecords != $RecordTypesCountRef->{Count}{SEQRES}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
656 push @MasterRecordValidationInfo, "Number of SITE records, $NumOfSeqresRecords, specified in MASTER record doen't match its explict count, $RecordTypesCountRef->{Count}{SEQRES}.";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
657 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
658
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
659 if (@MasterRecordValidationInfo) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
660 print "\nMASTER record validation: Count mismatches found:\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
661 print JoinWords(\@MasterRecordValidationInfo, "\n", 0), "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
662 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
663 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
664 print "\nMASTER record validation: Count values match with the explicit count of the corresponding records.\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
665 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
666 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
667
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
668 # Total size of all the files...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
669 sub ListTotalSizeOfFiles {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
670 my($FileOkayCount, $TotalSize, $Index);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
671
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
672 $FileOkayCount = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
673 $TotalSize = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
674
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
675 for $Index (0 .. $#PDBFilesList) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
676 if ($PDBFilesInfo{FileOkay}[$Index]) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
677 $FileOkayCount++;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
678 $TotalSize += $PDBFilesInfo{FileSize}[$Index];
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
679 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
680 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
681 if ($FileOkayCount > 1) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
682 print "\nTotal size of $FileOkayCount files: ", FormatFileSize($TotalSize), "\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
683 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
684
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
685 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
686
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
687 # Empty chain IDs are replaced with "None[1-9]". But for displaying purposes, take out any
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
688 # numbers from label...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
689 sub CleanupChainID {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
690 my($ChainID) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
691
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
692 if ($ChainID =~ /^None/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
693 return 'None';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
694 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
695 return $ChainID;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
696 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
697
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
698 # Process option values...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
699 sub ProcessOptions {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
700 %OptionsInfo = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
701
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
702 # Setup record types to count...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
703 if ($Options{count}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
704 $OptionsInfo{CountRecordType} = $Options{count};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
705 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
706 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
707 $OptionsInfo{CountRecordType} = $Options{all} ? 'All' : 'ATOM,HETATM';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
708 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
709 @{$OptionsInfo{SpecifiedRecordTypes}} =();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
710 if ($OptionsInfo{CountRecordType} !~ /^All$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
711 my(@RecordTypes);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
712 @RecordTypes = split /\,/, $OptionsInfo{CountRecordType};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
713 push @{$OptionsInfo{SpecifiedRecordTypes}}, @RecordTypes;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
714 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
715 $OptionsInfo{CountChains} = ($Options{chains} || $Options{all}) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
716 $OptionsInfo{CheckMasterRecord} = ($Options{mastercheck} || $Options{all}) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
717
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
718 # Residue count is the default. So $Options{residues} is simply ignored.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
719 my($CountResidues) = 1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
720 $OptionsInfo{CountResiduesInChains} = (($CountResidues || $Options{all}) && $Options{residuesmode} =~ /^(InChains|Both)$/i) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
721 $OptionsInfo{CountResiduesAll} = (($CountResidues || $Options{all}) && $Options{residuesmode} =~ /^(All|Both)$/i) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
722
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
723 $OptionsInfo{ResiduesFrequencyInChains} = (($Options{frequency} || $Options{all}) && $Options{residuesmode} =~ /^(InChains|Both)$/i) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
724 $OptionsInfo{ResiduesFrequencyAll} = (($Options{frequency} || $Options{all}) && $Options{residuesmode} =~ /^(All|Both)$/i) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
725
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
726 $OptionsInfo{ResidueNumbersInfo} = ($Options{residuenumbers} || $Options{all}) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
727
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
728 $OptionsInfo{CalculateBoundingBox} = ($Options{boundingbox} || $Options{all}) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
729
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
730 $OptionsInfo{ListHeaderInfo} = ($Options{header} || $Options{all}) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
731 $OptionsInfo{DetailLevel} = $Options{detail};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
732
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
733 $OptionsInfo{ListExperimentalTechniqueInfo} = ($Options{experiment} || $Options{all}) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
734
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
735 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
736
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
737 # Retrieve information about PDB files...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
738 sub RetrievePDBFilesInfo {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
739 my($Index, $PDBFile, $ModifiedTimeString, $ModifiedDateString);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
740
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
741 %PDBFilesInfo = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
742 @{$PDBFilesInfo{FileOkay}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
743 @{$PDBFilesInfo{FileSize}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
744 @{$PDBFilesInfo{FileLastModified}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
745
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
746 FILELIST: for $Index (0 .. $#PDBFilesList) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
747 $PDBFilesInfo{FileOkay}[$Index] = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
748 $PDBFilesInfo{FileSize}[$Index] = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
749 $PDBFilesInfo{FileLastModified}[$Index] = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
750
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
751 $PDBFile = $PDBFilesList[$Index];
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
752 if (!(-e $PDBFile)) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
753 warn "Warning: Ignoring file $PDBFile: It doesn't exist\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
754 next FILELIST;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
755 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
756 if (!CheckFileType($PDBFile, "pdb")) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
757 warn "Warning: Ignoring file $PDBFile: It's not a PDB file\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
758 next FILELIST;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
759 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
760 if (! open PDBFILE, "$PDBFile") {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
761 warn "Warning: Ignoring file $PDBFile: Couldn't open it: $! \n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
762 next FILELIST;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
763 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
764 close PDBFILE;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
765
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
766 $PDBFilesInfo{FileOkay}[$Index] = 1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
767 $PDBFilesInfo{FileSize}[$Index] = FileSize($PDBFile);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
768 ($ModifiedTimeString, $ModifiedDateString) = FormattedFileModificationTimeAndDate($PDBFile);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
769 $PDBFilesInfo{FileLastModified}[$Index] = "$ModifiedTimeString; $ModifiedDateString";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
770 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
771 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
772
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
773
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
774 # Setup script usage and retrieve command line arguments specified using various options...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
775 sub SetupScriptUsage {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
776
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
777 # Retrieve all the options...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
778 %Options = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
779 $Options{count} = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
780 $Options{detail} = 1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
781 $Options{residuesmode} = 'Both';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
782
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
783 if (!GetOptions(\%Options, "all|a", "boundingbox|b", "count|c=s", "chains", "detail|d=i", "experiment|e", "frequency|f", "mastercheck|m", "header", "help|h", "residues", "residuesmode=s", "residuenumbers", "workingdir|w=s")) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
784 die "\nTo get a list of valid options and their values, use \"$ScriptName -h\" or\n\"perl -S $ScriptName -h\" command and try again...\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
785 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
786 if ($Options{workingdir}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
787 if (! -d $Options{workingdir}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
788 die "Error: The value specified, $Options{workingdir}, for option \"-w --workingdir\" is not a directory name.\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
789 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
790 chdir $Options{workingdir} or die "Error: Couldn't chdir $Options{workingdir}: $! \n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
791 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
792 if (!IsPositiveInteger($Options{detail})) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
793 die "Error: The value specified, $Options{detail}, for option \"-d --detail\" is not valid. Allowed values: > 0\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
794 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
795 if ($Options{residuesmode} !~ /^(InChains|All|Both)$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
796 die "Error: The value specified, $Options{residuesmode}, for option \"--ResiduesMode\" is not valid. Allowed values: InChains, All, or Both\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
797 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
798 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
799
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
800 __END__
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
801
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
802 =head1 NAME
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
803
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
804 InfoPDBFiles.pl - List information about PDB files
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
805
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
806 =head1 SYNOPSIS
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
807
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
808 InfoPDBFiles.pl PDBFile(s) PDB(s)...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
809
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
810 InfoPDBFiles.pl [B<-a, --all>] [B<-b, --BoundingBox>]
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
811 [B<-c, --count> "RecordType, [RecordType,...]" | All] [B<--chains>]
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
812 [B<-d, --detail> infolevel] [B<-e, --experiment>] [B<-f, --frequency>]
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
813 [B<-h, --help>] [B<--header>] [B<m, --MasterCheck>] [B<--residues>]
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
814 [B<--ResiduesMode> InChains | All | Both] [B<--ResidueNumbers>]
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
815 [B<-w, --WorkingDir> dirname] PDBFile(s)...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
816
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
817 =head1 DESCRIPTION
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
818
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
819 List information about contents of I<PDBFile(s)>: number of each record type, number of chains,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
820 count and percent distribution of residues in each chain, bounding box and so on.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
821 Multiple PDBFile names are separated by spaces. The valid file extension is I<.pdb>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
822 All other file name extensions are ignored during the wild card expansion. All the PDB files
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
823 in a current directory can be specified either by I<*.pdb> or the current directory name.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
824
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
825 In PDB files containing data for multiple models, all ATOM/HETAM records for chains after the first model
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
826 are ignored.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
827
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
828 =head1 OPTIONS
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
829
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
830 =over 4
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
831
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
832 =item B<-a, --all>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
833
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
834 List all the available information.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
835
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
836 =item B<-b, --BoundingBox>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
837
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
838 List min/max XYZ coordiates of ATOM/HETATM records.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
839
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
840 =item B<-c, --count> I<RecordType,[RecordType,...]|All>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
841
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
842 Types of PDB records to count in I<PDBFile(s)>. You can specify a list of any valid PDB
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
843 record type or count all record types found in the files. Possible values: Comma delimited list
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
844 of valid I<RecordTypes> or I<All>. Default: I<ATOM,HETATM>. And this is also B<default behavior>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
845
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
846 The list of valid PDB record types includes: I<HEADER, OBSLTE, TITLE, CAVEAT, COMPND, SOURCE, KEYWDS,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
847 EXPDTA, AUTHOR, REVDAT, SPRSDE, JRN, REMARK, DBRE, SEQADV, SEQRES, MODRES, HET, HETNAM, HETSYN,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
848 FORMUL, HELIX, SHEET, TURN, SSBOND, LINK, HYDBND, SLTBRG, CISPEP, SITE, CRYST1, ORIGX1, ORIGX2, ORIGX3,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
849 SCALE1, SCALE2, SCALE3, MTRIX1 MTRIX2 MTRIX3, TVECT, MODEL, ATOM, SIGATM, ANISOU, SIGUIJ, TER,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
850 HETATM, ENDMDL, CONECT, MASTER, END>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
851
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
852 =item B<--chains>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
853
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
854 Count number of chains.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
855
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
856 =item B<-d, --detail> I<infolevel>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
857
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
858 Level of information to print about PDB during various options. Default: I<1>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
859 Possible values: I<1, 2 or 3>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
860
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
861 =item B<-e, --experiment>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
862
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
863 List experimental technique information along with any applicable resolution.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
864
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
865 =item B<-f, --frequency>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
866
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
867 List distribution of residues: report count and percent of residues in individual chains and
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
868 across all the chains, or for all the residues in the file. The value of option B<--residuesmode>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
869 determines how residues are counted and what is listed. The list is sorted by frequency in
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
870 descending order. By default, only residue count values are reported. To list percent distribution
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
871 of residues, specify B<-d, --detail> value of I<2> or higher.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
872
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
873 =item B<-h, --help>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
874
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
875 Print this help message.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
876
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
877 =item B<--header>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
878
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
879 List header information.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
880
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
881 =item B<m, --MasterCheck>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
882
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
883 Check master record by explicitly counting the number of REMARK, HET, HELIX, SHEET, TURN, SITE,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
884 ORIGX, SCALE, MTRIX, ATOM, HETATM, TER, CONECT and SEQRES records and comparing their
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
885 values against contents of master record.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
886
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
887 =item B<--residues>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
888
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
889 Count residues in I<PDBFile(s)>. This is also B<default behavior>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
890
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
891 By default, only residue count values are reported. To list percent distribution of residues,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
892 specify B<-d, --detail> value of I<2> or higher.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
893
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
894 =item B<--ResiduesMode> <InChains | All | Both>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
895
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
896 Specify how to count residues in I<PDBFile(s)>: Count residue in each chain and across all the chains,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
897 list count iof all the residues in the file, or list both. Possible values: I<InChains, All, or Both>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
898 Default: I<Both>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
899
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
900 =item B<--ResidueNumbers>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
901
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
902 List information about ATOM residue numbers in each chain before TER record: start and end residue
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
903 number; gaps in residue numbers corresponding to non-sequential residue numbers; residue
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
904 numbers not in ascending order.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
905
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
906 =item B<-w, --WorkingDir> I<dirname>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
907
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
908 Location of working directory. Default: current directory.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
909
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
910 =back
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
911
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
912 =head1 EXAMPLES
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
913
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
914 To list total number of records and number of chain(s) residues in PDB files, type:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
915
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
916 % InfoPDBFiles.pl Sample1.pdb
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
917 % InfoPDBFiles.pl Sample2.pdb
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
918
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
919 To list all available information for PDB file Sample2.pdb, type:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
920
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
921 % InfoPDBFiles.pl -a Sample2.pdb
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
922
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
923 To list all available information for PDB file Sample2.pdb with all available details, type:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
924
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
925 % InfoPDBFiles.pl -a -d Sample2.pdb
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
926
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
927 To count ATOM and HETATM records in Sample2.pdb file, type:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
928
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
929 % InfoPDBFiles.pl -c "ATOM,HETATM" Sample2.pdb
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
930
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
931 To list distribution of residues in chains across the whole PDB file Sample2.pdb along with
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
932 percent distribution, type
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
933
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
934 % InfoPDBFiles.pl --frequency -d 2 Sample2.pdb
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
935
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
936 To list distribution of residues only across chains in PDB file Sample2.pdb along with
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
937 percent distribution, type
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
938
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
939 % InfoPDBFiles.pl --frequency -d 2 --ResiduesMode InChains Sample2.pdb
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
940
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
941 To list min/max coordinates of the bounding box which encompasses the structure in Sample1.pdb
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
942 file, type:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
943
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
944 % InfoPDBFiles.pl -b Sample1.pdb
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
945
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
946 =head1 AUTHOR
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
947
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
948 Manish Sud <msud@san.rr.com>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
949
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
950 =head1 SEE ALSO
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
951
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
952 ExtractFromPDBFiles.pl, InfoAminoAcids.pl, InfoNucleicAcids.pl, InfoSequenceFiles.pl, ModifyPDBFiles.pl
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
953
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
954 =head1 COPYRIGHT
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
955
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
956 Copyright (C) 2015 Manish Sud. All rights reserved.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
957
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
958 This file is part of MayaChemTools.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
959
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
960 MayaChemTools is free software; you can redistribute it and/or modify it under
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
961 the terms of the GNU Lesser General Public License as published by the Free
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
962 Software Foundation; either version 3 of the License, or (at your option)
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
963 any later version.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
964
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
965 =cut