annotate mayachemtools/lib/Fingerprints/TopologicalPharmacophoreAtomPairsFingerprints.pm @ 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 package Fingerprints::TopologicalPharmacophoreAtomPairsFingerprints;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
2 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
3 # $RCSfile: TopologicalPharmacophoreAtomPairsFingerprints.pm,v $
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
4 # $Date: 2015/02/28 20:48:54 $
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
5 # $Revision: 1.34 $
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 Carp;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
31 use Exporter;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
32 use Fingerprints::Fingerprints;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
33 use TextUtil ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
34 use MathUtil ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
35 use Molecule;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
36 use AtomTypes::FunctionalClassAtomTypes;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
37
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
38 use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
39
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
40 @ISA = qw(Fingerprints::Fingerprints Exporter);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
41 @EXPORT = qw();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
42 @EXPORT_OK = qw();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
43
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
44 %EXPORT_TAGS = (all => [@EXPORT, @EXPORT_OK]);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
45
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
46 # Setup class variables...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
47 my($ClassName);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
48 _InitializeClass();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
49
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
50 # Overload Perl functions...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
51 use overload '""' => 'StringifyTopologicalPharmacophoreAtomPairsFingerprints';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
52
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
53 # Class constructor...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
54 sub new {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
55 my($Class, %NamesAndValues) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
56
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
57 # Initialize object...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
58 my $This = $Class->SUPER::new();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
59 bless $This, ref($Class) || $Class;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
60 $This->_InitializeTopologicalPharmacophoreAtomPairsFingerprints();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
61
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
62 $This->_InitializeTopologicalPharmacophoreAtomPairsFingerprintsProperties(%NamesAndValues);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
63
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
64 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
65 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
66
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
67 # Initialize object data...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
68 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
69 sub _InitializeTopologicalPharmacophoreAtomPairsFingerprints {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
70 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
71
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
72 # Type of fingerprint...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
73 $This->{Type} = 'TopologicalPharmacophoreAtomPairs';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
74
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
75 # Type of vector...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
76 $This->{VectorType} = 'FingerprintsVector';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
77
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
78 # AtomPairsSetSizeToUse...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
79 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
80 # ArbitrarySize - Corrresponds to atom pairs with non-zero count
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
81 # FixedSize - Corresponds to all atom pairs with zero and non-zero count
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
82 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
83 # Possible values: ArbitrarySize or FixedSize. Default: ArbitrarySize
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
84 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
85 $This->{AtomPairsSetSizeToUse} = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
86
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
87 # Type of FingerprintsVector...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
88 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
89 # OrderedNumericalValues - For ArbitrarySize value of AtomPairsSetSizeToUse
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
90 # NumericalValues - For FixedSize value of AtomPairsSetSizeToUse
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
91 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
92 # Possible values: OrderedNumericalValues or NumericalValues. Default: NumericalValues
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
93 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
94 $This->{FingerprintsVectorType} = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
95
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
96 # Vector values precision for real values which might be generated after
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
97 # normalization and fuzzification...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
98 $This->{ValuesPrecision} = 2;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
99
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
100 # Minimum and maximum bond distance between pharmacophore atom paris...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
101 $This->{MinDistance} = 1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
102 $This->{MaxDistance} = 10;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
103
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
104 # Initialize atom types and weight information...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
105 $This->_InitializePharmacophoreAtomTypesAndWeightInformation();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
106
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
107 # Normalization methodology to use for scaling the occurance count of pharmacophore atom
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
108 # pairs at various distances.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
109 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
110 # Possible values: None, ByHeavyAtomsCount, ByAtomTypesCount. Default: None
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
111 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
112 $This->{NormalizationMethodology} = 'None';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
113
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
114 # Initialize fuzzification parameters...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
115 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
116 $This->_InitializeFuzzificationInformation();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
117
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
118 # Pharmacophore types assigned to each heavy atom...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
119 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
120 %{$This->{AssignedAtomTypes}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
121
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
122 # Assigned Atom types count of each type in the molecule...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
123 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
124 %{$This->{AssignedAtomTypesCount}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
125
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
126 # All pharmacophore atom pairs between minimum and maximum distance...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
127 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
128 @{$This->{AtomPairsIDs}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
129 %{$This->{AtomPairsCount}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
130 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
131
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
132 # Inialize pharmacophore atom types and weight information...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
133 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
134 sub _InitializePharmacophoreAtomTypesAndWeightInformation {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
135 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
136
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
137 # Default pharmacophore atom types to use for atom pairs fingerprint generation
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
138 # are: HBD, HBA, PI, NI, H
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
139 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
140 @{$This->{AtomTypesToUse}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
141 @{$This->{AtomTypesToUse}} = sort ('HBD', 'HBA', 'PI', 'NI', 'H');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
142
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
143 # Weight of the various pharmacophore atom types to use for their contribution to atom
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
144 # pair interaction. It allows to increase the importance of specific pharmacophore atom
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
145 # types in the generted fingerprints.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
146 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
147 # A value of 0 eliminates the contribution by a particular pharmacophore atom
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
148 # type and 2 doubles its contribution.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
149 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
150 my($AtomType, %AvailableAtomTypes);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
151
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
152 %AvailableAtomTypes = AtomTypes::FunctionalClassAtomTypes::GetAvailableFunctionalClasses();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
153
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
154 %{$This->{AtomTypesWeight}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
155 for $AtomType (keys %AvailableAtomTypes) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
156 $This->{AtomTypesWeight}{$AtomType} = 1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
157 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
158 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
159 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
160
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
161 # Initialize fuzzification information...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
162 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
163 sub _InitializeFuzzificationInformation {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
164 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
165
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
166 # To fuzz or not to fuzz atom pairs count. Default: No fuzzication
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
167 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
168 $This->{FuzzifyAtomPairsCount} = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
169
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
170 # When to fuzz atom pair count...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
171 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
172 # Possible values: BeforeNormalization or AfterNormalization. Default: AfterNormalization
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
173 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
174 $This->{FuzzificationMode} = 'AfterNormalization';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
175
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
176 # How to fuzz atom pair count...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
177 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
178 # Possible values: FuzzyBinning or FuzzyBinSmoothing. Default: FuzzyBinning
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
179 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
180 $This->{FuzzificationMethodology} = 'FuzzyBinning';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
181
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
182 # By how much to fuzz atom pairs count...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
183 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
184 $This->{FuzzFactor} = 0.15;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
185
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
186 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
187 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
188
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
189 # Initialize class ...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
190 sub _InitializeClass {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
191 #Class name...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
192 $ClassName = __PACKAGE__;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
193 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
194
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
195 # Initialize object properties....
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
196 sub _InitializeTopologicalPharmacophoreAtomPairsFingerprintsProperties {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
197 my($This, %NamesAndValues) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
198
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
199 my($Name, $Value, $MethodName);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
200 while (($Name, $Value) = each %NamesAndValues) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
201 $MethodName = "Set${Name}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
202 $This->$MethodName($Value);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
203 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
204
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
205 # Make sure molecule object was specified...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
206 if (!exists $NamesAndValues{Molecule}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
207 croak "Error: ${ClassName}->New: Object can't be instantiated without specifying molecule...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
208 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
209
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
210 $This->_InitializeTopologicalPharmacophoreAtomPairsFingerprintsVector();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
211
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
212 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
213 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
214
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
215 # Initialize fingerprints vector...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
216 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
217 sub _InitializeTopologicalPharmacophoreAtomPairsFingerprintsVector {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
218 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
219
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
220 if (!$This->{AtomPairsSetSizeToUse}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
221 $This->{AtomPairsSetSizeToUse} = 'ArbitrarySize';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
222 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
223
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
224 # Vector type and type of values...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
225 $This->{VectorType} = 'FingerprintsVector';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
226
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
227 if ($This->{AtomPairsSetSizeToUse} =~ /^FixedSize$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
228 $This->{FingerprintsVectorType} = 'OrderedNumericalValues';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
229 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
230 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
231 $This->{FingerprintsVectorType} = 'NumericalValues';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
232 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
233
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
234 $This->_InitializeFingerprintsVector();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
235 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
236
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
237 # Set atom parits set size to use...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
238 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
239 sub SetAtomPairsSetSizeToUse {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
240 my($This, $Value) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
241
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
242 if ($This->{AtomPairsSetSizeToUse}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
243 croak "Error: ${ClassName}->SetAtomPairsSetSizeToUse: Can't change size: It's already set...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
244 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
245
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
246 if ($Value !~ /^(ArbitrarySize|FixedSize)$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
247 croak "Error: ${ClassName}->SetAtomPairsSetSizeToUse: Unknown AtomPairsSetSizeToUse value: $Value; Supported values: ArbitrarySize or FixedSize";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
248 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
249
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
250 $This->{AtomPairsSetSizeToUse} = $Value;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
251
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
252 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
253 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
254
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
255 # Disable change of AvailableAtomTypes...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
256 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
257 sub SetAvailableAtomTypes {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
258 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
259
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
260 carp "Warning: ${ClassName}->SetAvailableAtomTypes: AvailableAtomTypes value can't be set...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
261
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
262 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
263 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
264
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
265 # Set atom types to use for atom pairs...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
266 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
267 sub SetAtomTypesToUse {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
268 my($This, @Values) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
269 my($FirstValue, $TypeOfFirstValue, $AtomType, $SpecifiedAtomType, @SpecifiedAtomTypes, @AtomTypesToUse);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
270
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
271 if (!@Values) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
272 carp "Warning: ${ClassName}->SetAtomTypesToUse: No values specified...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
273 return;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
274 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
275
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
276 $FirstValue = $Values[0];
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
277 $TypeOfFirstValue = ref $FirstValue;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
278
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
279 @SpecifiedAtomTypes = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
280 @AtomTypesToUse = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
281
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
282 if ($TypeOfFirstValue =~ /^ARRAY/) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
283 push @SpecifiedAtomTypes, @{$FirstValue};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
284 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
285 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
286 push @SpecifiedAtomTypes, @Values;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
287 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
288
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
289 # Make sure specified AtomTypes are valid...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
290 for $SpecifiedAtomType (@SpecifiedAtomTypes) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
291 if (!AtomTypes::FunctionalClassAtomTypes::IsFunctionalClassAvailable($SpecifiedAtomType)) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
292 croak "Error: ${ClassName}->SetAtomTypesToUse: Specified atom type, $SpecifiedAtomType, is not supported...\n ";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
293 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
294 $AtomType = $SpecifiedAtomType;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
295 push @AtomTypesToUse, $AtomType;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
296 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
297
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
298 # Set atom types to use...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
299 @{$This->{AtomTypesToUse}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
300 push @{$This->{AtomTypesToUse}}, sort @AtomTypesToUse;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
301
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
302 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
303 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
304
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
305 # Set vector values precision for real values which might be generated after
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
306 # normalization and fuzzification...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
307 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
308 sub SetValuesPrecision {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
309 my($This, $Value) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
310
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
311 if (!TextUtil::IsPositiveInteger($Value)) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
312 croak "Error: ${ClassName}->SetValuesPrecision: ValuesPrecision value, $Value, is not valid: It must be a positive integer...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
313 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
314 $This->{ValuesPrecision} = $Value;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
315
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
316 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
317 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
318
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
319 # Set minimum distance for pharmacophore atom pairs...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
320 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
321 sub SetMinDistance {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
322 my($This, $Value) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
323
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
324 if (!TextUtil::IsInteger($Value)) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
325 croak "Error: ${ClassName}->SetMinDistance: MinDistance value, $Value, is not valid: It must be an integer...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
326 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
327 $This->{MinDistance} = $Value;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
328
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
329 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
330 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
331
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
332 # Set maximum distance for pharmacophore atom pairs...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
333 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
334 sub SetMaxDistance {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
335 my($This, $Value) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
336
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
337 if (!TextUtil::IsPositiveInteger($Value)) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
338 croak "Error: ${ClassName}->SetMaxDistance: MaxDistance value, $Value, is not valid: It must be a positive integer...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
339 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
340 $This->{MaxDistance} = $Value;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
341
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
342 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
343 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
344
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
345 # Set normalization methodology to use for scaling the occurance count of pharmacophore atom
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
346 # pairs over distance range beween minimum and maximum distance.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
347 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
348 sub SetNormalizationMethodology {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
349 my($This, $Value) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
350
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
351 if ($Value !~ /^(ByHeavyAtomsCount|ByAtomTypesCount|None)$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
352 croak "Error: ${ClassName}->SetNormalizationMethodology: NormalizationMethodology value, $Value, is not valid. Supported values: None, ByHeavyAtomsCount or ByAtomTypesCount...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
353 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
354
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
355 $This->{NormalizationMethodology} = $Value;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
356
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
357 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
358 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
359
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
360 # Set weight of the various pharmacophore atom types to use for their contribution to atom
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
361 # pair interaction using atom types label and value hash.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
362 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
363 # It allows to increase the importance of specific pharmacophore atom
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
364 # types in the generted fingerprints.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
365 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
366 # A value of 0 eliminates the contribution by a particular pharmacophore atom
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
367 # type and 2 doubles its contribution.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
368 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
369 sub SetAtomTypesWeight {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
370 my($This, %AtomTypesWeight) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
371 my($AtomType, $Weight);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
372
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
373 while (($AtomType, $Weight) = each %AtomTypesWeight) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
374 if (!exists $This->{AtomTypesWeight}{$AtomType}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
375 croak "Error: ${ClassName}->SetAtomTypesWeight: AtomTypeWeight for $AtomType couldn't be set: Unknown atom type...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
376 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
377 if (!(TextUtil::IsFloat($Weight) && ($Weight >= 0))) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
378 croak "Error: ${ClassName}->SetAtomTypesWeight: Specified weight value, $Weight, for AtomType, $AtomType, muts be >= 0...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
379 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
380 $This->{AtomTypesWeight}{$AtomType} = $Weight;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
381 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
382 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
383
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
384 # Set fuzzification methodology to use for fuzzifying atom pairs count...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
385 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
386 sub SetFuzzificationMethodology {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
387 my($This, $Value) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
388
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
389 if ($Value !~ /^(FuzzyBinning|FuzzyBinSmoothing)$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
390 croak "Error: ${ClassName}->SetFuzzificationMethodology: FuzzificationMethodology value, $Value, is not valid. Supported values: FuzzyBinning or FuzzyBinSmoothing...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
391 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
392
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
393 $This->{FuzzificationMethodology} = $Value;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
394
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
395 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
396 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
397
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
398 # Set fuzzification mode for fuzzifying atom pairs count...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
399 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
400 sub SetFuzzificationMode {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
401 my($This, $Value) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
402
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
403 if ($Value !~ /^(BeforeNormalization|AfterNormalization)$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
404 croak "Error: ${ClassName}->SetFuzzificationMode: FuzzificationMode value, $Value, is not valid. Supported values: BeforeNormalization or AfterNormalization...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
405 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
406
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
407 $This->{FuzzificationMode} = $Value;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
408
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
409 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
410 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
411
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
412 # Set fuzz factor values used for fuzzifying atom pairs count...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
413 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
414 sub SetFuzzFactor {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
415 my($This, $Value) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
416
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
417 if ($This->{FuzzificationMethodology} =~ /^FuzzyBinning$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
418 if (!(TextUtil::IsFloat($Value) && $Value >=0 && $Value <= 1.0)) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
419 croak "Error: ${ClassName}->SetFuzzFactor: Specified fuzz factor value, $Value, must be >= 0 and <= 1...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
420 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
421 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
422 elsif ($This->{FuzzificationMethodology} =~ /^FuzzyBinSmoothing$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
423 if (!(TextUtil::IsFloat($Value) && $Value >=0 && $Value <= 0.5)) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
424 croak "Error: ${ClassName}->SetFuzzFactor: Specified fuzz factor value, $Value, must be >= 0 and <= 0.5...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
425 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
426 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
427 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
428 croak "Error: ${ClassName}->SetFuzzFactor: Fuzz factor value can't be changed: Uknown FuzzificationMethodology: $This->{FuzzificationMethodology}...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
429 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
430
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
431 $This->{FuzzFactor} = $Value;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
432
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
433 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
434 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
435
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
436 # Generate fingerprints description...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
437 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
438 sub GetDescription {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
439 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
440
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
441 # Is description explicity set?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
442 if (exists $This->{Description}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
443 return $This->{Description};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
444 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
445
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
446 # Generate fingerprints description...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
447
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
448 return "$This->{Type}:$This->{AtomPairsSetSizeToUse}:MinDistance$This->{MinDistance}:MaxDistance$This->{MaxDistance}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
449 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
450
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
451 # Generate topological pharmacophore atom pairs [ Ref 60-62, Ref 65, Ref 68 ] fingerprints...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
452 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
453 # Methodology:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
454 # . Generate a distance matrix.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
455 # . Assign pharmacophore atom types to all the atoms.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
456 # . Initialize pharmacophore atom pairs basis set for all unique pairs between
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
457 # minimum and maximum distance.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
458 # . Using distance matrix and pharmacophore atom types, count occurance of
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
459 # unique atom pairs between specified distance range - It corresponds to the
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
460 # correlation-vector for the atom pairs.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
461 # . Weigh contribution of each atom type to atom pair interaction by its specified
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
462 # weight during occurance count.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
463 # . Assign count to appropriate distance bin for a specific atom pair
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
464 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
465 # . Normalize occurance count of pharmacophore atom pairs by heavy atom count
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
466 # or sum of AtomTypeCounts of each pharmacophore atom type in the atom pair
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
467 # at a specific distance.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
468 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
469 # . Fuzzify occurance count of pharmacophore atom pairs using FuzzyBinning or
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
470 # FuzzySmothing methodology.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
471 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
472 # Notes:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
473 # . Hydrogen atoms are ignored during the fingerprint generation.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
474 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
475 sub GenerateFingerprints {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
476 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
477
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
478 if ($This->{MinDistance} > $This->{MaxDistance}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
479 croak "Error: ${ClassName}->GenerateTopologicalPharmacophoreAtomPairsFingerprints: No fingerpritns generated: MinDistance, $This->{MinDistance}, must be <= MaxDistance, $This->{MaxDistance}...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
480 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
481
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
482 # Cache appropriate molecule data...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
483 $This->_SetupMoleculeDataCache();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
484
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
485 # Generate distance matrix...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
486 if (!$This->_SetupDistanceMatrix()) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
487 carp "Warning: ${ClassName}->GenerateFingerprints: Fingerprints generation didn't succeed: Couldn't generate distance matrix...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
488 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
489 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
490
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
491 # Assign pharmacohore atom types to all heavy atoms...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
492 $This->_AssignPharmacophoreAtomTypes();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
493
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
494 # Initialize values of all possible pharmacohore atom pairs...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
495 $This->_InitializePharmacophoreAtomPairs();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
496
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
497 # Count atom pairs...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
498 $This->_CountPharmacohoreAtomPairs();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
499
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
500 # Fuzzify atom pairs count...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
501 if ($This->{FuzzificationMode} =~ /^BeforeNormalization$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
502 $This->_FuzzifyPharmacohoreAtomPairsCount();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
503 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
504
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
505 # Normalize atom pairs count...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
506 $This->_NormalizePharmacohoreAtomPairsCount();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
507
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
508 # Fuzzify atom pairs count...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
509 if ($This->{FuzzificationMode} =~ /^AfterNormalization$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
510 $This->_FuzzifyPharmacohoreAtomPairsCount();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
511 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
512
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
513 # Set final fingerprints...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
514 $This->_SetFinalFingerprints();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
515
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
516 # Clear cached molecule data...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
517 $This->_ClearMoleculeDataCache();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
518
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
519 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
520 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
521
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
522 # Setup distance matrix...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
523 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
524 sub _SetupDistanceMatrix {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
525 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
526
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
527 $This->{DistanceMatrix} = $This->GetMolecule()->GetDistanceMatrix();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
528
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
529 if (!$This->{DistanceMatrix}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
530 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
531 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
532
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
533 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
534 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
535
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
536 # Assign pharmacohore atom types to all heavy atoms and count each atom
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
537 # types assigned...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
538 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
539 sub _AssignPharmacophoreAtomTypes {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
540 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
541 my($Atom, $AtomID, $AtomType, $AssignedAtomType, $FunctionalClassAtomTypes);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
542
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
543 # Assign topological pharmacophore atom types...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
544 $FunctionalClassAtomTypes = new AtomTypes::FunctionalClassAtomTypes('Molecule' => $This->{Molecule}, 'IgnoreHydrogens' => 1, 'FunctionalClassesToUse' => $This->{AtomTypesToUse});
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
545 $FunctionalClassAtomTypes->AssignAtomTypes();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
546
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
547 %{$This->{AssignedAtomTypes}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
548
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
549 # Initialize assigned atom types count...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
550 %{$This->{AssignedAtomTypesCount}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
551 for $AtomType (@{$This->{AtomTypesToUse}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
552 $This->{AssignedAtomTypesCount}{$AtomType} = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
553 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
554
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
555 $This->{HeavyAtomCount} = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
556
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
557 ATOM: for $Atom (@{$This->{Atoms}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
558 if ($Atom->IsHydrogen()) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
559 next ATOM;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
560 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
561 $This->{HeavyAtomCount} += 1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
562
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
563 $AtomID = $Atom->GetID();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
564
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
565 # Collect all possible pharmacophore atom types which could be assigned to atom...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
566 my(@AtomTypes);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
567
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
568 @AtomTypes = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
569 $AssignedAtomType = $FunctionalClassAtomTypes->GetAtomType($Atom);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
570 if ($AssignedAtomType && $AssignedAtomType !~ /^None$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
571 push @AtomTypes, split /\./, $AssignedAtomType;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
572 for $AtomType (@AtomTypes) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
573 $This->{AssignedAtomTypesCount}{$AtomType} += 1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
574 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
575 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
576
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
577 # Assign phramacophore types to atom...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
578 $AtomID = $Atom->GetID();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
579 $This->{AssignedAtomTypes}{$AtomID} = \@AtomTypes;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
580 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
581 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
582 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
583
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
584 # Initialize values of all possible pharmacohore atom pairs...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
585 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
586 # Let:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
587 # Dmin = Minimum distance correspoding to number of bonds between two atoms
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
588 # Dmax = Maximum distance correspoding to number of bonds between two atoms
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
589 # D = Distance correspoding to number of bonds between two atoms
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
590 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
591 # P = Number of pharmacophore atom types to consider
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
592 # PPDn = Number of possible unique pharmacophore atom pairs at a distance Dn
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
593 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
594 # PPT = Total number of possible pharmacophore atom pairs at all distances between Dmin and Dmax
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
595 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
596 # Then:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
597 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
598 # PPD = (P * (P - 1))/2 + P
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
599 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
600 # PPT = ((Dmax - Dmin) + 1) * ((P * (P - 1))/2 + P)
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
601 # = ((Dmax - Dmin) + 1) * PPD
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
602 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
603 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
604 # So for default values of Dmin = 1, Dmax = 10 and P = 5,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
605 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
606 # PPD = (5 * (5 - 1))/2 + 5 = 15
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
607 # PPT = ((10 - 1) + 1) * 15 = 150
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
608 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
609 # the pharmacophore atom pairs bais set includes 150 values.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
610 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
611 sub _InitializePharmacophoreAtomPairs {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
612 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
613 my($Distance, $Index1, $Index2, $AtomType1, $AtomType2);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
614
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
615 %{$This->{AtomPairsCount}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
616
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
617 for $Distance ($This->{MinDistance} .. $This->{MaxDistance}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
618 %{$This->{AtomPairsCount}{$Distance}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
619
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
620 for $Index1 (0 .. $#{$This->{AtomTypesToUse}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
621 $AtomType1 = $This->{AtomTypesToUse}[$Index1];
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
622 %{$This->{AtomPairsCount}{$Distance}{$AtomType1}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
623
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
624 for $Index2 ($Index1 .. $#{$This->{AtomTypesToUse}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
625 $AtomType2 = $This->{AtomTypesToUse}[$Index2];
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
626 $This->{AtomPairsCount}{$Distance}{$AtomType1}{$AtomType2} = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
627 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
628 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
629 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
630 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
631 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
632
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
633 # Count pharmacophore atom pairs between mininum and maximum distance at each
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
634 # distance using distance matrix and pharmacophore atom types assiged to each heavy
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
635 # atom.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
636 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
637 # Let:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
638 # Px = Pharmacophore atom type x
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
639 # Py = Pharmacophore atom type y
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
640 # Dn = Distance between Px and Py in specified distance range
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
641 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
642 # Then:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
643 # Px-Dn-Py = Pharmacophore atom pair ID for atom types Px and Py at distance Dn
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
644 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
645 # For example: H-D1-H, H-D2-HBA, PI-D5-PI and so on
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
646 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
647 # Notes:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
648 # . The row and column indices of distance matrix correspond to atom indices.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
649 # . Distance value of BigNumber implies the atom is not connected to any other atom.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
650 # . Due to symmetric nature of distance matrix, only upper or lower triangular matrix
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
651 # needs to be processed during identification and count of pharmacophore atom pairs.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
652 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
653 sub _CountPharmacohoreAtomPairs {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
654 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
655 my($NumOfRows, $NumOfCols, $RowIndex, $ColIndex, $DistanceMatrix, $Distance, $AtomID1, $AtomID2, $AtomType1, $AtomType2, $SkipIndexCheck, $CountIncrement);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
656
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
657 $DistanceMatrix = $This->{DistanceMatrix};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
658 ($NumOfRows, $NumOfCols) = $DistanceMatrix->GetSize();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
659 $SkipIndexCheck = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
660
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
661 ROWINDEX: for $RowIndex (0 .. ($NumOfRows - 1) ) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
662 $AtomID1 = $This->{AtomIndexToID}{$RowIndex};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
663 if ( !((exists($This->{AssignedAtomTypes}{$AtomID1}) && @{$This->{AssignedAtomTypes}{$AtomID1}})) ) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
664 next ROWINDEX;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
665 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
666
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
667 COLINDEX: for $ColIndex ($RowIndex .. ($NumOfCols - 1) ) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
668 $AtomID2 = $This->{AtomIndexToID}{$ColIndex};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
669 if ( !((exists($This->{AssignedAtomTypes}{$AtomID2}) && @{$This->{AssignedAtomTypes}{$AtomID2}})) ) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
670 next COLINDEX;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
671 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
672
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
673 $Distance = $DistanceMatrix->GetValue($RowIndex, $ColIndex, $SkipIndexCheck);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
674 if ($Distance < $This->{MinDistance} || $Distance > $This->{MaxDistance}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
675 next COLINDEX;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
676 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
677
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
678 ATOMTYPE1: for $AtomType1 (@{$This->{AssignedAtomTypes}{$AtomID1}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
679 if ($This->{AtomTypesWeight}{$AtomType1} == 0) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
680 next ATOMTYPE1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
681 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
682 ATOMTYPE2: for $AtomType2 (@{$This->{AssignedAtomTypes}{$AtomID2}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
683 if ($This->{AtomTypesWeight}{$AtomType2} == 0) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
684 next ATOMTYPE2;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
685 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
686 $CountIncrement = $This->{AtomTypesWeight}{$AtomType1} * $This->{AtomTypesWeight}{$AtomType2};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
687 if ($AtomType1 le $AtomType2) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
688 $This->{AtomPairsCount}{$Distance}{$AtomType1}{$AtomType2} += $CountIncrement;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
689 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
690 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
691 $This->{AtomPairsCount}{$Distance}{$AtomType2}{$AtomType1} += $CountIncrement;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
692 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
693 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
694 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
695 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
696 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
697 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
698 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
699
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
700 # Normalize the occurance count of pharmacophore atom pairs over the specified distance
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
701 # range...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
702 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
703 sub _NormalizePharmacohoreAtomPairsCount {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
704 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
705
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
706 METHODOLOGY: {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
707 if ($This->{NormalizationMethodology} =~ /^None$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
708 last METHODOLOGY;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
709 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
710 if ($This->{NormalizationMethodology} =~ /^ByHeavyAtomsCount$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
711 $This->_NormalizeAtomPairsCountByHeavyAtomsCount();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
712 last METHODOLOGY;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
713 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
714 if ($This->{NormalizationMethodology} =~ /^ByAtomTypesCount$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
715 $This->_NormalizeAtomPairsCountByAtomTypesCount();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
716 last METHODOLOGY;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
717 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
718 croak "Error: ${ClassName}->_NormalizePharmacohoreAtomPairsCount: Unknown NormalizationMethodology: $This->{NormalizationMethodology}...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
719 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
720 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
721 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
722
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
723
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
724 # Normalize the occurance count of pharmacophore atom pairs at various distances by
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
725 # heavy atom count...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
726 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
727 sub _NormalizeAtomPairsCountByHeavyAtomsCount {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
728 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
729 my($Distance, $AtomType1, $AtomType2);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
730
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
731 if ($This->{HeavyAtomCount} == 0) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
732 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
733 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
734
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
735 for $Distance (keys %{$This->{AtomPairsCount}} ) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
736 for $AtomType1 (keys %{$This->{AtomPairsCount}{$Distance}} ) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
737 ATOMTYPE2: for $AtomType2 (keys %{$This->{AtomPairsCount}{$Distance}{$AtomType1}} ) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
738 if ($This->{AtomPairsCount}{$Distance}{$AtomType1}{$AtomType2} == 0) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
739 next ATOMTYPE2;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
740 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
741 $This->{AtomPairsCount}{$Distance}{$AtomType1}{$AtomType2} /= $This->{HeavyAtomCount};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
742 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
743 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
744 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
745 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
746 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
747
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
748 # Normalize the occurance count of pharmacophore atom pairs at various distances by
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
749 # dividing it using sum of the count of each pharmacophore atom type present in the
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
750 # molecule for the corresponding atom pair.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
751 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
752 sub _NormalizeAtomPairsCountByAtomTypesCount {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
753 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
754 my($Distance, $AtomType1, $AtomType2, $AtomType1Count, $AtomType2Count, $NormalizationFactor);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
755
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
756 for $Distance (keys %{$This->{AtomPairsCount}} ) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
757 for $AtomType1 (keys %{$This->{AtomPairsCount}{$Distance}} ) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
758 ATOMTYPE2: for $AtomType2 (keys %{$This->{AtomPairsCount}{$Distance}{$AtomType1}} ) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
759 if ($This->{AtomPairsCount}{$Distance}{$AtomType1}{$AtomType2} == 0) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
760 next ATOMTYPE2;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
761 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
762 $NormalizationFactor = $This->{AssignedAtomTypesCount}{$AtomType1} + $This->{AssignedAtomTypesCount}{$AtomType2};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
763 $This->{AtomPairsCount}{$Distance}{$AtomType1}{$AtomType2} /= $NormalizationFactor;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
764 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
765 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
766 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
767 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
768 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
769
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
770 # Fuzzify pharmacophore atom pairs count...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
771 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
772 # Let:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
773 # Px = Pharmacophore atom type x
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
774 # Py = Pharmacophore atom type y
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
775 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
776 # PPxy = Pharmacophore atom pair between atom type Px and Py
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
777 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
778 # PPxyDn = Pharmacophore atom pairs count between atom type Px and Py at distance Dn
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
779 # PPxyDn-1 = Pharmacophore atom pairs count between atom type Px and Py at distance Dn - 1
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
780 # PPxyDn+1 = Pharmacophore atom pairs count between atom type Px and Py at distance Dn + 1
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
781 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
782 # FF = FuzzFactor for FuzzyBinning and FuzzyBinSmoothing
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
783 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
784 # Then:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
785 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
786 # For FuzzyBinning:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
787 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
788 # PPxyDn = PPxyDn (Unchanged)
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
789 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
790 # PPxyDn-1 = PPxyDn-1 + PPxyDn * FF
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
791 # PPxyDn+1 = PPxyDn+1 + PPxyDn * FF
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
792 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
793 # For FuzzyBinSmoothing:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
794 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
795 # PPxyDn = PPxyDn - PPxyDn * 2FF for Dmin < Dn < Dmax
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
796 # PPxyDn = PPxyDn - PPxyDn * FF for Dn = Dmin or Dmax
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
797 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
798 # PPxyDn-1 = PPxyDn-1 + PPxyDn * FF
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
799 # PPxyDn+1 = PPxyDn+1 + PPxyDn * FF
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
800 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
801 # In both fuzzification schemes, a value of 0 for FF implies no fuzzification of occurance counts.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
802 # A value of 1 during FuzzyBinning corresponds to maximum fuzzification of occurance counts;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
803 # however, a value of 1 during FuzzyBinSmoothing ends up completely distributing the value over
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
804 # the previous and next distance bins.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
805 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
806 # So for default value of FuzzFactor (FF) 0.15, the occurance count of pharmacohore atom pairs
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
807 # at distance Dn during FuzzyBinning is left unchanged and the counts at distances Dn -1 and Dn + 1
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
808 # are incremened by PPxyDn * 0.15.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
809 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
810 # And during FuzzyBinSmoothing the occurance counts at Distance Dn is scaled back using multiplicate
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
811 # factor of (1 - 2*0.15) and the occurance counts at distances Dn -1 and Dn + 1 are incremened by
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
812 # PPxyDn * 0.15. In otherwords, occurance bin count is smoothed out by distributing it over the
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
813 # previous and next distance value.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
814 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
815 sub _FuzzifyPharmacohoreAtomPairsCount {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
816 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
817 my($Index1, $Index2, $AtomType1, $AtomType2, $CurrentDistance, $CurrentCount, $NextDistance, $NextCount, $PreviousDistance, $ModifyCurrentCount, $ChangeInCountValue);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
818
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
819 if (!($This->{FuzzifyAtomPairsCount} && $This->{FuzzFactor} > 0)) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
820 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
821 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
822
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
823 $ModifyCurrentCount = ($This->{FuzzificationMethodology} =~ /^FuzzyBinSmoothing$/i) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
824
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
825 for $Index1 (0 .. $#{$This->{AtomTypesToUse}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
826 $AtomType1 = $This->{AtomTypesToUse}[$Index1];
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
827 for $Index2 ($Index1 .. $#{$This->{AtomTypesToUse}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
828 $AtomType2 = $This->{AtomTypesToUse}[$Index2];
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
829
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
830 $CurrentCount = 0; $NextCount = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
831
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
832 $NextDistance = $This->{MinDistance};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
833 $NextCount = $This->{AtomPairsCount}{$NextDistance}{$AtomType1}{$AtomType2};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
834
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
835 DISTANCE: for $CurrentDistance ($This->{MinDistance} .. $This->{MaxDistance}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
836 $NextDistance = $CurrentDistance + 1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
837 $PreviousDistance = $CurrentDistance - 1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
838
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
839 $CurrentCount = $NextCount;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
840 $NextCount = ($CurrentDistance < $This->{MaxDistance}) ? $This->{AtomPairsCount}{$NextDistance}{$AtomType1}{$AtomType2} : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
841
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
842 if ($CurrentCount == 0) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
843 # No contribution to fuzzy binning from this distance...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
844 next DISTANCE;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
845 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
846
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
847 $ChangeInCountValue = $CurrentCount * $This->{FuzzFactor};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
848
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
849 if ($CurrentDistance > $This->{MinDistance}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
850 # Increment count at previous distance...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
851 $This->{AtomPairsCount}{$PreviousDistance}{$AtomType1}{$AtomType2} += $ChangeInCountValue;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
852 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
853
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
854 if ($ModifyCurrentCount) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
855 # Decrement count at current distance for FuzzyBinSmoothing...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
856 if ($CurrentDistance > $This->{MinDistance} && $CurrentDistance < $This->{MaxDistance}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
857 $This->{AtomPairsCount}{$CurrentDistance}{$AtomType1}{$AtomType2} -= 2 * $ChangeInCountValue;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
858 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
859 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
860 $This->{AtomPairsCount}{$CurrentDistance}{$AtomType1}{$AtomType2} -= $ChangeInCountValue;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
861 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
862 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
863
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
864 if ($CurrentDistance < $This->{MaxDistance}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
865 # Increment count at next distance...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
866 $This->{AtomPairsCount}{$NextDistance}{$AtomType1}{$AtomType2} += $ChangeInCountValue;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
867 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
868 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
869 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
870 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
871 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
872 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
873
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
874 # Set final fingerpritns vector...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
875 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
876 sub _SetFinalFingerprints {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
877 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
878 my($Distance, $Index1, $Index2, $AtomType1, $AtomType2, $Value, $RoundOffValues, $ValuesPrecision, $UseArbitrarySetSize, @Values);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
879
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
880 # Mark successful generation of fingerprints...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
881 $This->{FingerprintsGenerated} = 1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
882
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
883 @Values = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
884 @{$This->{AtomPairsIDs}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
885
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
886 # Do values need to be rounded off?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
887 $RoundOffValues = (($This->{NormalizationMethodology} !~ /^None$/i) || ($This->{FuzzifyAtomPairsCount})) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
888 $ValuesPrecision = $This->{ValuesPrecision};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
889
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
890 # Is it an ArbitraySize atom pairs set size?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
891 $UseArbitrarySetSize = $This->{AtomPairsSetSizeToUse} =~ /^ArbitrarySize$/i ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
892
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
893 # Collect all atom paris count values...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
894 for $Distance ($This->{MinDistance} .. $This->{MaxDistance}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
895 for $Index1 (0 .. $#{$This->{AtomTypesToUse}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
896 $AtomType1 = $This->{AtomTypesToUse}[$Index1];
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
897 INDEX2: for $Index2 ($Index1 .. $#{$This->{AtomTypesToUse}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
898 $AtomType2 = $This->{AtomTypesToUse}[$Index2];
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
899
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
900 # Atom pair count...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
901 $Value = $This->{AtomPairsCount}{$Distance}{$AtomType1}{$AtomType2};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
902 if ($RoundOffValues) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
903 $Value = MathUtil::round($Value, $This->{ValuesPrecision}) + 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
904 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
905
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
906 # Ignore or not to ignore...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
907 if ($UseArbitrarySetSize && $Value == 0) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
908 next INDEX2;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
909 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
910
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
911 push @{$This->{AtomPairsIDs}}, "${AtomType1}-D${Distance}-${AtomType2}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
912 push @Values, $Value;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
913 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
914 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
915 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
916
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
917 # Add AtomPairsIDs and count values to fingerprint vector...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
918 $This->{FingerprintsVector}->AddValueIDs(\@{$This->{AtomPairsIDs}});
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
919 $This->{FingerprintsVector}->AddValues(\@Values);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
920
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
921 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
922 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
923
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
924 # Get pharmacophore atom pair IDs corresponding to atom pairs count values in
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
925 # fingerprint vector as an array or reference to an array...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
926 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
927 # AtomPairIDs list is generated during finalization of fingerprints and the fingerprint
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
928 # vector containing count values matches the atom pairs array.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
929 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
930 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
931 sub GetAtomPairIDs {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
932 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
933
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
934 return wantarray ? @{$This->{AtomPairsIDs}} : \@{$This->{AtomPairsIDs}};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
935 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
936
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
937 # Cache appropriate molecule data...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
938 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
939 sub _SetupMoleculeDataCache {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
940 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
941
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
942 # Get all atoms including hydrogens to correctly map atom indices to atom IDs for
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
943 # usage of distance matrix. The hydrogen atoms are ignored during processing...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
944 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
945 @{$This->{Atoms}} = $This->GetMolecule()->GetAtoms();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
946
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
947 # Get all atom IDs...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
948 my(@AtomIDs);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
949 @AtomIDs = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
950 @AtomIDs = map { $_->GetID() } @{$This->{Atoms}};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
951
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
952 # Set AtomIndex to AtomID hash...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
953 %{$This->{AtomIndexToID}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
954 @{$This->{AtomIndexToID}}{ (0 .. $#AtomIDs) } = @AtomIDs;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
955
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
956 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
957 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
958
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
959 # Clear cached molecule data...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
960 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
961 sub _ClearMoleculeDataCache {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
962 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
963
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
964 @{$This->{Atoms}} = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
965
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
966 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
967 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
968
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
969
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
970 # Return a string containg data for TopologicalPharmacophoreAtomPairsFingerprints object...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
971 sub StringifyTopologicalPharmacophoreAtomPairsFingerprints {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
972 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
973 my($FingerprintsString);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
974
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
975 # Type of fingerprint...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
976 $FingerprintsString = "Fingerprint type: $This->{Type}; AtomPairsSetSizeToUse: $This->{AtomPairsSetSizeToUse}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
977
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
978 # Min and max distance...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
979 $FingerprintsString .= "; MinDistance: $This->{MinDistance}; MaxDistance: $This->{MaxDistance}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
980
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
981 # Pharmacophore type labels and description...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
982 my($AtomType, @AtomTypes, @AtomTypesOrder, %AvailableAtomTypes);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
983
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
984 @AtomTypesOrder = AtomTypes::FunctionalClassAtomTypes::GetFunctionalClassesOrder();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
985 %AvailableAtomTypes = AtomTypes::FunctionalClassAtomTypes::GetAvailableFunctionalClasses();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
986
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
987 @AtomTypes = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
988 for $AtomType (@AtomTypesOrder) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
989 push @AtomTypes, "$AtomType: $AvailableAtomTypes{$AtomType}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
990 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
991
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
992 $FingerprintsString .= "; AtomTypesToUse: <" . TextUtil::JoinWords(\@{$This->{AtomTypesToUse}}, ", ", 0) . ">";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
993 $FingerprintsString .= "; AtomTypesOrder: <" . TextUtil::JoinWords(\@AtomTypesOrder, ", ", 0) . ">";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
994 $FingerprintsString .= "; AvailableAtomTypes: <" . TextUtil::JoinWords(\@AtomTypes, ", ", 0) . ">";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
995
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
996 # Normalization method...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
997 $FingerprintsString .= "; NormalizationMethodology: $This->{NormalizationMethodology}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
998
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
999 # Weights...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1000 my($FirstLabel, $Label, $Weight);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1001
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1002 $FingerprintsString .= "; AtomTypesWeight <Labels: Weight>: <";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1003 $FirstLabel = 1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1004 for $Label (sort @{$This->{AtomTypesToUse}}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1005 $Weight = $This->{AtomTypesWeight}{$Label};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1006 if ($FirstLabel) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1007 $FirstLabel = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1008 $FingerprintsString .= " ${Label}: ${Weight}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1009 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1010 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1011 $FingerprintsString .= "; ${Label}: ${Weight}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1012 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1013 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1014 $FingerprintsString .= ">";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1015
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1016 # Fuzzification of count...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1017 my($FuzzifyFlag);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1018 $FuzzifyFlag = $This->{FuzzifyAtomPairsCount} ? "Yes" : "No";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1019 $FingerprintsString .= "; FuzzifyAtomPairsCount: $FuzzifyFlag; FuzzificationMode: $This->{FuzzificationMode}; FuzzificationMethodology: $This->{FuzzificationMethodology}; FuzzFactor: $This->{FuzzFactor}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1020
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1021 # Total number of pharmacophore atom pairs...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1022 $FingerprintsString .= "; NumOfAtomPairs: " . $This->{FingerprintsVector}->GetNumOfValues();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1023
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1024 # FingerprintsVector...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1025 $FingerprintsString .= "; FingerprintsVector: < $This->{FingerprintsVector} >";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1026
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1027 return $FingerprintsString;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1028 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1029
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1030 1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1031
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1032 __END__
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1033
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1034 =head1 NAME
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1035
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1036 TopologicalPharmacophoreAtomPairsFingerprints
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1037
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1038 =head1 SYNOPSIS
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1039
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1040 use Fingerprints::TopologicalPharmacophoreAtomPairsFingerprints;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1041
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1042 use Fingerprints::TopologicalPharmacophoreAtomPairsFingerprints qw(:all);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1043
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1044 =head1 DESCRIPTION
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1045
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1046 B<TopologicalPharmacophoreAtomPairsFingerprints> [ Ref 60-62, Ref 65, Ref 68 ] class provides
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1047 the following methods:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1048
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1049 new, GenerateFingerprints, GetDescription, GetAtomPairIDs, SetAtomTypesToUse,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1050 SetAtomTypesWeight, SetFuzzFactor, SetFuzzificationMethodology,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1051 SetFuzzificationMode, SetMaxDistance, SetMinDistance,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1052 SetNormalizationMethodology, SetValuesPrecision,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1053 StringifyTopologicalPharmacophoreAtomPairsFingerprints
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1054
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1055 B<TopologicalPharmacophoreAtomPairsFingerprints> is derived from B<Fingerprints> class which in turn
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1056 is derived from B<ObjectProperty> base class that provides methods not explicitly defined
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1057 in B<TopologicalPharmacophoreAtomPairsFingerprints>, B<Fingerprints> or B<ObjectProperty> classes using Perl's
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1058 AUTOLOAD functionality. These methods are generated on-the-fly for a specified object property:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1059
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1060 Set<PropertyName>(<PropertyValue>);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1061 $PropertyValue = Get<PropertyName>();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1062 Delete<PropertyName>();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1063
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1064 Based on the values specified for B<AtomTypesToUse>, pharmacophore atom types are
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1065 assigned to all non-hydrogen atoms in a molecule and a distance matrix is generated.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1066 A pharmacophore atom pairs basis set is initialized for all unique possible pairs within
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1067 B<MinDistance> and B<MaxDistance> range.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1068
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1069 Let:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1070
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1071 P = Valid pharmacophore atom type
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1072
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1073 Px = Pharmacophore atom type x
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1074 Py = Pharmacophore atom type y
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1075
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1076 Dmin = Minimum distance corresponding to number of bonds between two atoms
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1077 Dmax = Maximum distance corresponding to number of bonds between two atoms
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1078 D = Distance corresponding to number of bonds between two atoms
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1079
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1080 Px-Dn-Py = Pharmacophore atom pair ID for atom types Px and Py at distance Dn
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1081
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1082 P = Number of pharmacophore atom types to consider
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1083 PPDn = Number of possible unique pharmacophore atom pairs at a distance Dn
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1084
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1085 PPT = Total number of possible pharmacophore atom pairs at all distances between Dmin and Dmax
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1086
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1087 Then:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1088
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1089 PPD = (P * (P - 1))/2 + P
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1090
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1091 PPT = ((Dmax - Dmin) + 1) * ((P * (P - 1))/2 + P)
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1092 = ((Dmax - Dmin) + 1) * PPD
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1093
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1094 So for default values of Dmin = 1, Dmax = 10 and P = 5,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1095
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1096 PPD = (5 * (5 - 1))/2 + 5 = 15
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1097 PPT = ((10 - 1) + 1) * 15 = 150
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1098
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1099 The pharmacophore atom pairs bais set includes 150 values.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1100
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1101 The atom pair IDs correspond to:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1102
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1103 Px-Dn-Py = Pharmacophore atom pair ID for atom types Px and Py at distance Dn
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1104
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1105 For example: H-D1-H, H-D2-HBA, PI-D5-PI and so on
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1106
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1107 Using distance matrix and pharmacohore atom types, occurrence of unique pharmacohore atom
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1108 pairs is counted. The contribution of each atom type to atom pair interaction is optionally
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1109 weighted by specified B<AtomTypesWeight> before assigning its count to appropriate distance
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1110 bin. Based on B<NormalizationMethodology> option, pharmacophore atom pairs count is optionally
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1111 normalized. Additionally, pharmacohore atom pairs count is optionally fuzzified before or after
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1112 the normalization controlled by values of B<FuzzifyAtomPairsCount>, B<FuzzificationMode>,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1113 B<FuzzificationMethodology> and B<FuzzFactor>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1114
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1115 The final pharmacophore atom pairs count along with atom pair identifiers involving all non-hydrogen
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1116 atoms, with optional normalization and fuzzification, constitute pharmacophore topological atom pairs
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1117 fingerprints of the molecule.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1118
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1119 For I<ArbitrarySize> value of B<AtomPairsSetSizeToUse>, the fingerprint vector correspond to
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1120 only those topological pharmacophore atom pairs which are present and have non-zero count. However,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1121 for I<FixedSize> value of B<AtomPairsSetSizeToUse>, the fingerprint vector contains all possible
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1122 valid topological pharmacophore atom pairs with both zero and non-zero count values.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1123
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1124 The current release of MayaChemTools generates the following types of topological pharmacophore
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1125 atom pairs fingerprints vector strings:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1126
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1127 FingerprintsVector;TopologicalPharmacophoreAtomPairs:ArbitrarySize:Min
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1128 Distance1:MaxDistance10;54;NumericalValues;IDsAndValuesString;H-D1-H H
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1129 -D1-NI HBA-D1-NI HBD-D1-NI H-D2-H H-D2-HBA H-D2-HBD HBA-D2-HBA HBA-D2-
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1130 HBD H-D3-H H-D3-HBA H-D3-HBD H-D3-NI HBA-D3-NI HBD-D3-NI H-D4-H H-D4-H
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1131 BA H-D4-HBD HBA-D4-HBA HBA-D4-HBD HBD-D4-HBD H-D5-H H-D5-HBA H-D5-...;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1132 18 1 2 1 22 12 8 1 2 18 6 3 1 1 1 22 13 6 5 7 2 28 9 5 1 1 1 36 16 10
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1133 3 4 1 37 10 8 1 35 10 9 3 3 1 28 7 7 4 18 16 12 5 1 2 1
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1134
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1135 FingerprintsVector;TopologicalPharmacophoreAtomPairs:FixedSize:MinDist
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1136 ance1:MaxDistance10;150;OrderedNumericalValues;ValuesString;18 0 0 1 0
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1137 0 0 2 0 0 1 0 0 0 0 22 12 8 0 0 1 2 0 0 0 0 0 0 0 0 18 6 3 1 0 0 0 1
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1138 0 0 1 0 0 0 0 22 13 6 0 0 5 7 0 0 2 0 0 0 0 0 28 9 5 1 0 0 0 1 0 0 1 0
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1139 0 0 0 36 16 10 0 0 3 4 0 0 1 0 0 0 0 0 37 10 8 0 0 0 0 1 0 0 0 0 0 0
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1140 0 35 10 9 0 0 3 3 0 0 1 0 0 0 0 0 28 7 7 4 0 0 0 0 0 0 0 0 0 0 0 18...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1141
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1142 FingerprintsVector;TopologicalPharmacophoreAtomPairs:FixedSize:MinDist
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1143 ance1:MaxDistance10;150;OrderedNumericalValues;IDsAndValuesString;H-D1
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1144 -H H-D1-HBA H-D1-HBD H-D1-NI H-D1-PI HBA-D1-HBA HBA-D1-HBD HBA-D1-NI H
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1145 BA-D1-PI HBD-D1-HBD HBD-D1-NI HBD-D1-PI NI-D1-NI NI-D1-PI PI-D1-PI H-D
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1146 2-H H-D2-HBA H-D2-HBD H-D2-NI H-D2-PI HBA-D2-HBA HBA-D2-HBD HBA-D2...;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1147 18 0 0 1 0 0 0 2 0 0 1 0 0 0 0 22 12 8 0 0 1 2 0 0 0 0 0 0 0 0 18 6 3
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1148 1 0 0 0 1 0 0 1 0 0 0 0 22 13 6 0 0 5 7 0 0 2 0 0 0 0 0 28 9 5 1 0 0 0
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1149 1 0 0 1 0 0 0 0 36 16 10 0 0 3 4 0 0 1 0 0 0 0
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1150
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1151 =head2 METHODS
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1152
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1153 =over 4
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1154
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1155 =item B<new>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1156
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1157 $TPAPFP = new TopologicalPharmacophoreAtomPairsFingerprints(
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1158 %NamesAndValues);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1159
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1160 Using specified I<TopologicalPharmacophoreAtomPairsFingerprints> property names and
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1161 values hash, B<new> method creates a new object and returns a reference to newly created
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1162 B<TopologicalPharmacophoreAtomPairsFingerprints> object. By default, the following properties
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1163 are initialized:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1164
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1165 Molecule = ''
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1166 Type = 'TopologicalPharmacophoreAtomPairs'
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1167 MinDistance = 1
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1168 MaxDistance = 10
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1169 NormalizationMethodology = 'None'
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1170 AtomTypesToUse = ['HBD', 'HBA', 'PI', 'NI', 'H']
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1171
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1172 FuzzifyAtomPairsCount = 0
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1173 FuzzificationMode = 'AfterNormalization'
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1174 FuzzificationMethodology = 'FuzzyBinning'
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1175 FuzzFactor = 0.15
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1176
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1177 ValuesPrecision = 2
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1178
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1179 Examples:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1180
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1181 $TPAPFP = new TopologicalPharmacophoreAtomPairsFingerprints(
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1182 'Molecule' => $Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1183
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1184 $TPAPFP = new TopologicalPharmacophoreAtomPairsFingerprints(
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1185 'Molecule' => $Molecule,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1186 'AtomPairsSetSizeToUse' => 'ArbitrarySize',
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1187 'MinDistance' => 1,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1188 'MaxDistance' => 10,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1189 'NormalizationMethodology' => 'None',
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1190 'AtomTypesToUse' => ['HBD', 'HBA', 'PI', 'NI', 'H'],
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1191 'FuzzifyAtomPairsCount' => 0);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1192
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1193 $TPAPFP = new TopologicalPharmacophoreAtomPairsFingerprints(
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1194 'Molecule' => $Molecule,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1195 'AtomPairsSetSizeToUse' => 'FizedSize',
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1196 'MinDistance' => 1,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1197 'MaxDistance' => 10,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1198 'NormalizationMethodology' => 'None',
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1199 'AtomTypesToUse' => ['HBD', 'HBA', 'PI', 'NI', 'H'],
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1200 'FuzzifyAtomPairsCount' => 1,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1201 'FuzzificationMethodology' => 'FuzzyBinning',
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1202 'FuzzFactor' => 0.15,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1203 'ValuesPrecision' => 2);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1204
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1205 $TPAPFP->GenerateFingerprints();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1206 print "$TPAPFP\n";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1207
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1208 =item B<GetDescription>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1209
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1210 $Description = $TopologicalPharmacophoreAtomPairsFP->GetDescription();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1211
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1212 Returns a string containing description of topological pharmacophore atom pairs fingerprints.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1213
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1214 =item B<GenerateFingerprints>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1215
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1216 $TopologicalPharmacophoreAtomPairsFP->GenerateFingerprints();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1217
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1218 Generates topological pharmacophore atom pairs fingerprints and returns
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1219 I<TopologicalPharmacophoreAtomPairsFP>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1220
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1221 =item B<GetAtomPairIDs>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1222
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1223 $AtomPairIDsRef = $TopologicalPharmacophoreAtomPairsFP->GetAtomPairIDs();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1224 @AtomPairIDs = $TopologicalPharmacophoreAtomPairsFP->GetAtomPairIDs();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1225
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1226 Returns atom pair IDs corresponding to atom pairs count values in topological pharmacophore
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1227 atom pairs fingerprints vector as an array or reference to an array.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1228
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1229 =item B<SetAtomPairsSetSizeToUse>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1230
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1231 $TopologicalPharmacophoreAtomPairsFP->SetAtomPairsSetSizeToUse($Values);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1232
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1233 Sets pharmacophore atom pairs set size to use for topological pharmacophore fingerprints
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1234 generation and returns I<TopologicalPharmacophoreAtomPairsFingerprints>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1235
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1236 Possible values for pharmacophore atom pairs set size are: I<ArbitrarySize, FizedSize>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1237 Default value: I<ArbitrarySize>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1238
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1239 For I<ArbitrarySize> value of B<AtomPairsSetSizeToUse>, the fingerprint vector correspond to
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1240 only those topological pharmacophore atom pairs which are present and have non-zero count. However,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1241 for I<FixedSize> value of B<AtomPairsSetSizeToUse>, the fingerprint vector contains all possible
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1242 valid topological pharmacophore atom pairs with both zero and non-zero count values.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1243
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1244 =item B<SetAtomTypesToUse>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1245
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1246 $TopologicalPharmacophoreAtomPairsFP->SetAtomTypesToUse($ValuesRef);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1247 $TopologicalPharmacophoreAtomPairsFP->SetAtomTypesToUse(@Values);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1248
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1249 Sets pharmacophore atom types to use for topological pharmacophore fingerprints
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1250 generation and returns I<TopologicalPharmacophoreAtomPairsFingerprints>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1251
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1252 Possible values for pharmacophore atom types are: I<Ar, CA, H, HBA, HBD, Hal, NI, PI, RA>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1253 Default value [ Ref 60-62 ] : I<HBD,HBA,PI,NI,H>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1254
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1255 The pharmacophore atom types abbreviations correspond to:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1256
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1257 HBD: HydrogenBondDonor
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1258 HBA: HydrogenBondAcceptor
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1259 PI : PositivelyIonizable
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1260 NI : NegativelyIonizable
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1261 Ar : Aromatic
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1262 Hal : Halogen
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1263 H : Hydrophobic
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1264 RA : RingAtom
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1265 CA : ChainAtom
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1266
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1267 I<AtomTypes::FunctionalClassAtomTypes> module is used to assign pharmacophore atom
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1268 types. It uses following definitions [ Ref 60-61, Ref 65-66 ]:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1269
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1270 HydrogenBondDonor: NH, NH2, OH
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1271 HydrogenBondAcceptor: N[!H], O
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1272 PositivelyIonizable: +, NH2
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1273 NegativelyIonizable: -, C(=O)OH, S(=O)OH, P(=O)OH
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1274
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1275 =item B<SetAtomTypesWeight>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1276
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1277 $TopologicalPharmacophoreAtomPairsFP->SetAtomTypesWeight(
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1278 %AtomTypesToWeight);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1279
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1280 Sets weights of specified pharmacophore atom types to use during calculation of their contribution
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1281 to atom pair count and returns I<TopologicalPharmacophoreAtomPairsFP>. Default values: I<1 for
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1282 each atom type>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1283
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1284 The weight values allow to increase the importance of specific pharmacophore atom type
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1285 in the generated fingerprints. A weight value of 0 for an atom type eliminates its contribution to
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1286 atom pair count where as weight value of 2 doubles its contribution.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1287
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1288 =item B<SetFuzzFactor>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1289
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1290 $TopologicalPharmacophoreAtomPairsFP->SetFuzzFactor($Value);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1291
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1292 Sets fuzz factor value to use during fuzzification of atom pairs count and returns
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1293 I<TopologicalPharmacophoreAtomPairsFP>. Default value: I<0.15>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1294
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1295 Valid values: For I<FuzzyBinning> value of B<FuzzificationMethodology>: I<between 0 and 1.0>; For
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1296 I<FuzzyBinSmoothing> value of B<FuzzificationMethodology>: I<between 0 and 0.5>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1297
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1298 =item B<SetFuzzificationMethodology>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1299
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1300 $TopologicalPharmacophoreAtomPairsFP->SetFuzzificationMethodology($Value);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1301
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1302 Sets fuzzification methodology to use for fuzzification of atom pairs count and returns
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1303 I<TopologicalPharmacophoreAtomPairsFP>. Default value: I<FuzzyBinning>. Possible values:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1304 I<FuzzyBinning | FuzzyBinSmoothing>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1305
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1306 In conjunction with values for options B<FuzzifyAtomPairsCount>, B<FuzzificationMode> and
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1307 B<FuzzFactor>, B<FuzzificationMethodology> option is used to fuzzify pharmacophore atom
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1308 pairs count.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1309
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1310 Let:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1311
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1312 Px = Pharmacophore atom type x
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1313 Py = Pharmacophore atom type y
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1314 PPxy = Pharmacophore atom pair between atom type Px and Py
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1315
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1316 PPxyDn = Pharmacophore atom pairs count between atom type Px and Py
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1317 at distance Dn
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1318 PPxyDn-1 = Pharmacophore atom pairs count between atom type Px and Py
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1319 at distance Dn - 1
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1320 PPxyDn+1 = Pharmacophore atom pairs count between atom type Px and Py
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1321 at distance Dn + 1
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1322
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1323 FF = FuzzFactor for FuzzyBinning and FuzzyBinSmoothing
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1324
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1325 Then:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1326
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1327 For I<FuzzyBinning>:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1328
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1329 PPxyDn = PPxyDn (Unchanged)
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1330
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1331 PPxyDn-1 = PPxyDn-1 + PPxyDn * FF
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1332 PPxyDn+1 = PPxyDn+1 + PPxyDn * FF
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1333
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1334 For I<FuzzyBinSmoothing>:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1335
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1336 PPxyDn = PPxyDn - PPxyDn * 2FF for Dmin < Dn < Dmax
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1337 PPxyDn = PPxyDn - PPxyDn * FF for Dn = Dmin or Dmax
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1338
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1339 PPxyDn-1 = PPxyDn-1 + PPxyDn * FF
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1340 PPxyDn+1 = PPxyDn+1 + PPxyDn * FF
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1341
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1342 In both fuzzification schemes, a value of 0 for FF implies no fuzzification of occurrence counts.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1343 A value of 1 during I<FuzzyBinning> corresponds to maximum fuzzification of occurrence counts;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1344 however, a value of 1 during I<FuzzyBinSmoothing> ends up completely distributing the value over
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1345 the previous and next distance bins.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1346
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1347 So for default value of B<FuzzFactor> (FF) 0.15, the occurrence count of pharmacohore atom pairs
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1348 at distance Dn during FuzzyBinning is left unchanged and the counts at distances Dn -1 and Dn + 1
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1349 are incremented by PPxyDn * 0.15.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1350
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1351 And during I<FuzzyBinSmoothing> the occurrence counts at Distance Dn is scaled back using multiplicative
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1352 factor of (1 - 2*0.15) and the occurrence counts at distances Dn -1 and Dn + 1 are incremented by
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1353 PPxyDn * 0.15. In other words, occurrence bin count is smoothed out by distributing it over the
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1354 previous and next distance value.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1355
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1356 =item B<SetFuzzificationMode>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1357
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1358 $TopologicalPharmacophoreAtomPairsFP->SetFuzzificationMode($Value);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1359
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1360 Sets fuzzification mode to use for fuzzification of atom pairs count and returns
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1361 I<TopologicalPharmacophoreAtomPairsFP>. Default value: I<AfterNormalization>. Possible values:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1362 I<BeforeNormalization | AfterNormalization>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1363
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1364 =item B<SetMaxDistance>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1365
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1366 $TopologicalPharmacophoreAtomPairsFP->SetMaxDistance($Value);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1367
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1368 Sets maximum bond distance between atom pairs for generating topological pharmacophore atom
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1369 pairs fingerprints and returns I<TopologicalPharmacophoreAtomPairsFP>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1370
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1371 =item B<SetMinDistance>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1372
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1373 $TopologicalPharmacophoreAtomPairsFP->SetMinDistance($Value);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1374
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1375 Sets minimum bond distance between atom pairs for generating topological pharmacophore atom
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1376 pairs fingerprints and returns I<TopologicalPharmacophoreAtomPairsFP>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1377
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1378 =item B<SetNormalizationMethodology>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1379
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1380 $TopologicalPharmacophoreAtomPairsFP->SetNormalizationMethodology($Value);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1381
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1382 Sets normalization methodology to use for scaling the occurrence count of pharmacophore atom
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1383 pairs within specified distance range and returns I<TopologicalPharmacophoreAtomPairsFP>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1384 Default value: I<None>. Possible values: I<None, ByHeavyAtomsCount or ByAtomTypesCount>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1385
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1386 =item B<SetValuesPrecision>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1387
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1388 $TopologicalPharmacophoreAtomPairsFP->SetValuesPrecision($Value);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1389
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1390 Sets precision of atom pairs count real values which might be generated after normalization
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1391 or fuzzification and returns I<TopologicalPharmacophoreAtomPairsFP>. Default: up to I<2> decimal
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1392 places.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1393
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1394 =item B<StringifyTopologicalPharmacophoreAtomPairsFingerprints>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1395
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1396 $String = $TopologicalPharmacophoreAtomPairsFP->
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1397 StringifyTopologicalPharmacophoreAtomPairsFingerprints();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1398
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1399 Returns a string containing information about I<TopologicalPharmacophoreAtomPairsFingerprints> object.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1400
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1401 =back
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1402
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1403 =head1 AUTHOR
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1404
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1405 Manish Sud <msud@san.rr.com>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1406
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1407 =head1 SEE ALSO
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1408
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1409 Fingerprints.pm, FingerprintsStringUtil.pm, AtomNeighborhoodsFingerprints.pm,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1410 AtomTypesFingerprints.pm, EStateIndiciesFingerprints.pm, ExtendedConnectivityFingerprints.pm,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1411 MACCSKeys.pm, PathLengthFingerprints.pm, TopologicalAtomPairsFingerprints.pm,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1412 TopologicalAtomTripletsFingerprints.pm, TopologicalAtomTorsionsFingerprints.pm,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1413 TopologicalPharmacophoreAtomTripletsFingerprints.pm
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1414
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1415 =head1 COPYRIGHT
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1416
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1417 Copyright (C) 2015 Manish Sud. All rights reserved.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1418
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1419 This file is part of MayaChemTools.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1420
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1421 MayaChemTools is free software; you can redistribute it and/or modify it under
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1422 the terms of the GNU Lesser General Public License as published by the Free
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1423 Software Foundation; either version 3 of the License, or (at your option)
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1424 any later version.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1425
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1426 =cut