annotate mayachemtool/mayachemtools/lib/Fingerprints/TopologicalPharmacophoreAtomTripletsFingerprints.pm @ 0:a4a2ad5a214e draft default tip

Uploaded
author deepakjadmin
date Thu, 05 Nov 2015 02:37:56 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1 package Fingerprints::TopologicalPharmacophoreAtomTripletsFingerprints;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
2 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
3 # $RCSfile: TopologicalPharmacophoreAtomTripletsFingerprints.pm,v $
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
4 # $Date: 2015/02/28 20:48:54 $
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
5 # $Revision: 1.30 $
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
6 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
7 # Author: Manish Sud <msud@san.rr.com>
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
8 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
9 # Copyright (C) 2015 Manish Sud. All rights reserved.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
10 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
11 # This file is part of MayaChemTools.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
12 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
13 # MayaChemTools is free software; you can redistribute it and/or modify it under
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
14 # the terms of the GNU Lesser General Public License as published by the Free
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
15 # Software Foundation; either version 3 of the License, or (at your option) any
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
16 # later version.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
17 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
18 # MayaChemTools is distributed in the hope that it will be useful, but without
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
19 # any warranty; without even the implied warranty of merchantability of fitness
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
20 # for a particular purpose. See the GNU Lesser General Public License for more
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
21 # details.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
22 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
23 # You should have received a copy of the GNU Lesser General Public License
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
24 # along with MayaChemTools; if not, see <http://www.gnu.org/licenses/> or
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
25 # write to the Free Software Foundation Inc., 59 Temple Place, Suite 330,
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
26 # Boston, MA, 02111-1307, USA.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
27 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
28
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
29 use strict;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
30 use Carp;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
31 use Exporter;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
32 use Fingerprints::Fingerprints;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
33 use TextUtil ();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
34 use MathUtil ();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
35 use Molecule;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
36 use AtomTypes::FunctionalClassAtomTypes;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
37
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
38 use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
39
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
40 @ISA = qw(Fingerprints::Fingerprints Exporter);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
41 @EXPORT = qw();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
42 @EXPORT_OK = qw();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
43
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
44 %EXPORT_TAGS = (all => [@EXPORT, @EXPORT_OK]);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
45
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
46 # Setup class variables...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
47 my($ClassName);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
48 _InitializeClass();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
49
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
50 # Overload Perl functions...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
51 use overload '""' => 'StringifyTopologicalPharmacophoreAtomTripletsFingerprints';
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
52
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
53 # Class constructor...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
54 sub new {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
55 my($Class, %NamesAndValues) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
56
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
57 # Initialize object...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
58 my $This = $Class->SUPER::new();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
59 bless $This, ref($Class) || $Class;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
60 $This->_InitializeTopologicalPharmacophoreAtomTripletsFingerprints();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
61
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
62 $This->_InitializeTopologicalPharmacophoreAtomTripletsFingerprintsProperties(%NamesAndValues);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
63
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
64 return $This;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
65 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
66
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
67 # Initialize object data...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
68 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
69 sub _InitializeTopologicalPharmacophoreAtomTripletsFingerprints {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
70 my($This) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
71
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
72 # Type of fingerprint...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
73 $This->{Type} = 'TopologicalPharmacophoreAtomTriplets';
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
74
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
75 # Type of vector...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
76 $This->{VectorType} = 'FingerprintsVector';
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
77
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
78 # AtomTripletsSetSizeToUse...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
79 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
80 # ArbitrarySize - Corrresponds to atom triplets with non-zero count
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
81 # FixedSize - Corresponds to all atom triplets with zero and non-zero count
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
82 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
83 # Possible values: ArbitrarySize or FixedSize. Default: ArbitrarySize
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
84 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
85 $This->{AtomTripletsSetSizeToUse} = '';
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
86
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
87 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
88 # OrderedNumericalValues - For ArbitrarySize value of AtomTripletsSetSizeToUse
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
89 # NumericalValues - For FixedSize value of AtomTripletsSetSizeToUse
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
90 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
91 # Possible values: OrderedNumericalValues or NumericalValues. Default: NumericalValues
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
92 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
93 $This->{FingerprintsVectorType} = '';
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
94
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
95 # Minimum and maximum bond distance between pharmacophore atom pairs corresponding to
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
96 # atom triplets and distance bin size used for binning distances.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
97 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
98 # In order to distribute distance bins of equal size, the last bin is allowed to go past the
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
99 # maximum distance specified by upto distance bin size.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
100 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
101 # The default MinDistance and MaxDistance values of 1 and 10 with DistanceBinSize of
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
102 # 2 [ Ref 70 ] generates the following 5 distance bins: [1, 2] [3, 4] [5, 6] [7, 8] [9 10]
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
103 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
104 $This->{MinDistance} = 1;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
105 $This->{MaxDistance} = 10;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
106
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
107 # Distance bin size used for binning distances...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
108 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
109 $This->{DistanceBinSize} = 2;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
110
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
111 # Determines whether to apply triangle inequality to distances triplets during basis set generation...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
112 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
113 $This->{UseTriangleInequality} = 1;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
114
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
115 # Initialize pharmacophore atom types information...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
116 $This->_InitializeToplogicalPharmacophoreAtomTypesInformation();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
117
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
118 # Pharmacophore types assigned to each heavy atom...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
119 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
120 %{$This->{AssignedAtomTypes}} = ();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
121
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
122 # All pharmacophore atom triplets between minimum and maximum distance...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
123 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
124 %{$This->{AtomTriplets}} = ();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
125 @{$This->{AtomTriplets}{IDs}} = ();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
126 %{$This->{AtomTriplets}{Count}} = ();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
127 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
128
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
129 # Initialize class ...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
130 sub _InitializeClass {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
131 #Class name...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
132 $ClassName = __PACKAGE__;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
133 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
134
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
135 # Initialize object properties....
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
136 sub _InitializeTopologicalPharmacophoreAtomTripletsFingerprintsProperties {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
137 my($This, %NamesAndValues) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
138
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
139 my($Name, $Value, $MethodName);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
140 while (($Name, $Value) = each %NamesAndValues) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
141 $MethodName = "Set${Name}";
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
142 $This->$MethodName($Value);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
143 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
144
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
145 # Make sure molecule object was specified...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
146 if (!exists $NamesAndValues{Molecule}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
147 croak "Error: ${ClassName}->New: Object can't be instantiated without specifying molecule...";
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
148 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
149 $This->_InitializeTopologicalPharmacophoreAtomTripletsFingerprintsVector();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
150
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
151 return $This;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
152 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
153
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
154 # Initialize fingerprints vector...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
155 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
156 sub _InitializeTopologicalPharmacophoreAtomTripletsFingerprintsVector {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
157 my($This) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
158
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
159 if (!$This->{AtomTripletsSetSizeToUse}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
160 $This->{AtomTripletsSetSizeToUse} = 'ArbitrarySize';
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
161 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
162
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
163 # Vector type and type of values...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
164 $This->{VectorType} = 'FingerprintsVector';
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
165
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
166 if ($This->{AtomTripletsSetSizeToUse} =~ /^FixedSize$/i) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
167 $This->{FingerprintsVectorType} = 'OrderedNumericalValues';
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
168 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
169 else {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
170 $This->{FingerprintsVectorType} = 'NumericalValues';
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
171 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
172
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
173 $This->_InitializeFingerprintsVector();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
174 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
175
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
176 # Set atom parits set size to use...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
177 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
178 sub SetAtomTripletsSetSizeToUse {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
179 my($This, $Value) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
180
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
181 if ($This->{AtomTripletsSetSizeToUse}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
182 croak "Error: ${ClassName}->SetAtomTripletsSetSizeToUse: Can't change size: It's already set...";
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
183 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
184
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
185 if ($Value !~ /^(ArbitrarySize|FixedSize)$/i) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
186 croak "Error: ${ClassName}->SetAtomTripletsSetSizeToUse: Unknown AtomTripletsSetSizeToUse value: $Value; Supported values: ArbitrarySize or FixedSize";
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
187 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
188
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
189 $This->{AtomTripletsSetSizeToUse} = $Value;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
190
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
191 return $This;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
192 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
193
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
194 # Initialize topological atom types, generated by AtomTypes::FunctionalClassAtomTypes
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
195 # class, to use for atom triplets fingerprint generation...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
196 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
197 # Let:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
198 # HBD: HydrogenBondDonor
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
199 # HBA: HydrogenBondAcceptor
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
200 # PI : PositivelyIonizable
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
201 # NI : NegativelyIonizable
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
202 # Ar : Aromatic
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
203 # Hal : Halogen
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
204 # H : Hydrophobic
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
205 # RA : RingAtom
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
206 # CA : ChainAtom
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
207 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
208 # Then:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
209 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
210 # Functiononal class atom type specification for an atom corresponds to:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
211 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
212 # Ar.CA.H.HBA.HBD.Hal.NI.PI.RA
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
213 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
214 # Default pharmacophore atom types [ Ref 71 ] to use for atom triplets fingerprint generation
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
215 # are: HBD, HBA, PI, NI, H, Ar
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
216 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
217 # FunctionalAtomTypes are assigned using the following definitions [ Ref 60-61, Ref 65-66 ]:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
218 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
219 # HydrogenBondDonor: NH, NH2, OH
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
220 # HydrogenBondAcceptor: N[!H], O
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
221 # PositivelyIonizable: +, NH2
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
222 # NegativelyIonizable: -, C(=O)OH, S(=O)OH, P(=O)OH
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
223 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
224 sub _InitializeToplogicalPharmacophoreAtomTypesInformation {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
225 my($This) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
226
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
227 # Default pharmacophore atom types to use for atom triplets fingerprint generation
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
228 # are: HBD, HBA, PI, NI, H, Ar
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
229 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
230 @{$This->{AtomTypesToUse}} = ();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
231 @{$This->{AtomTypesToUse}} = sort ('HBD', 'HBA', 'PI', 'NI', 'H', 'Ar');
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
232
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
233 return $This;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
234 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
235
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
236 # Set atom types to use for atom triplets...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
237 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
238 sub SetAtomTypesToUse {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
239 my($This, @Values) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
240 my($FirstValue, $TypeOfFirstValue, $AtomType, $SpecifiedAtomType, @SpecifiedAtomTypes, @AtomTypesToUse);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
241
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
242 if (!@Values) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
243 carp "Warning: ${ClassName}->SetAtomTypesToUse: No values specified...";
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
244 return;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
245 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
246
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
247 $FirstValue = $Values[0];
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
248 $TypeOfFirstValue = ref $FirstValue;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
249
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
250 @SpecifiedAtomTypes = ();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
251 @AtomTypesToUse = ();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
252
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
253 if ($TypeOfFirstValue =~ /^ARRAY/) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
254 push @SpecifiedAtomTypes, @{$FirstValue};
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
255 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
256 else {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
257 push @SpecifiedAtomTypes, @Values;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
258 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
259
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
260 # Make sure specified AtomTypes are valid...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
261 for $SpecifiedAtomType (@SpecifiedAtomTypes) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
262 if (!AtomTypes::FunctionalClassAtomTypes::IsFunctionalClassAvailable($SpecifiedAtomType)) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
263 croak "Error: ${ClassName}->SetAtomTypesToUse: Specified atom type, $SpecifiedAtomType, is not supported...\n ";
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
264 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
265 $AtomType = $SpecifiedAtomType;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
266 push @AtomTypesToUse, $AtomType;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
267 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
268
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
269 # Set atom types to use...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
270 @{$This->{AtomTypesToUse}} = ();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
271 push @{$This->{AtomTypesToUse}}, sort @AtomTypesToUse;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
272
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
273 return $This;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
274 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
275
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
276 # Set minimum distance for pharmacophore atom pairs in atom triplets...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
277 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
278 sub SetMinDistance {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
279 my($This, $Value) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
280
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
281 if (!TextUtil::IsPositiveInteger($Value)) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
282 croak "Error: ${ClassName}->SetMinDistance: MinDistance value, $Value, is not valid: It must be a positive integer...";
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
283 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
284 $This->{MinDistance} = $Value;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
285
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
286 return $This;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
287 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
288
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
289 # Set maximum distance for pharmacophore atom pairs in atom triplets...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
290 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
291 sub SetMaxDistance {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
292 my($This, $Value) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
293
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
294 if (!TextUtil::IsPositiveInteger($Value)) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
295 croak "Error: ${ClassName}->SetMaxDistance: MaxDistance value, $Value, is not valid: It must be a positive integer...";
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
296 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
297 $This->{MaxDistance} = $Value;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
298
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
299 return $This;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
300 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
301
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
302 # Set distance bin size for binning pharmacophore atom pair distances in atom triplets...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
303 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
304 sub SetDistanceBinSize {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
305 my($This, $Value) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
306
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
307 if (!TextUtil::IsPositiveInteger($Value)) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
308 croak "Error: ${ClassName}->SetDistanceBinSize: DistanceBinSize value, $Value, is not valid: It must be a positive integer...";
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
309 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
310 $This->{DistanceBinSize} = $Value;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
311
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
312 return $This;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
313 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
314
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
315 # Generate fingerprints description...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
316 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
317 sub GetDescription {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
318 my($This) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
319
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
320 # Is description explicity set?
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
321 if (exists $This->{Description}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
322 return $This->{Description};
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
323 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
324
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
325 # Generate fingerprints description...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
326
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
327 return "$This->{Type}:$This->{AtomTripletsSetSizeToUse}:MinDistance$This->{MinDistance}:MaxDistance$This->{MaxDistance}";
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
328 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
329
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
330 # Generate topological pharmacophore atom triplets [ Ref 66, Ref 68-71 ] fingerprints...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
331 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
332 # Let:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
333 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
334 # P = Any of the supported pharmacophore atom types
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
335 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
336 # Px = Pharmacophore atom x
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
337 # Py = Pharmacophore atom y
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
338 # Pz = Pharmacophore atom z
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
339 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
340 # Dxy = Distance or lower bound of binned distance between Px and Py
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
341 # Dxz = Distance or lower bound of binned distance between Px and Pz
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
342 # Dyz = Distance or lower bound of binned distance between Py and Pz
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
343 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
344 # Then:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
345 # PxDyz-PyDxz-PzDxy = Pharmacophore atom triplet ID for atoms Px, Py and Pz
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
346 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
347 # For example: H1-H1-H1, H2-HBA-H2 and so on
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
348 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
349 # Methodology:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
350 # . Generate a distance matrix.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
351 # . Using specified minimum, maximum and distance bin size, generate a binned distance
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
352 # matrix from distance matrix. The lower distance bound on the distance bin is used
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
353 # in the binned distance matrix and atom triplet IDs.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
354 # . Assign pharmacophore atom types to all the atoms.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
355 # . Initialize pharmacophore atom triplets basis set for all unique triplets constituting
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
356 # atom pairs binned distances between minimum and maximum distance.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
357 # . Optionally, trinagle inequality is also implied which means:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
358 # . Distance or binned distance between any two pairs in a triplet must be less than the
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
359 # sum of distances or binned distances between other two pairs and greater than the
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
360 # difference of distances between other pairs.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
361 # . Using binned distance matrix and pharmacophore atom types, count occurance of
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
362 # unique atom triplets.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
363 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
364 # Notes:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
365 # . Hydrogen atoms are ignored during the fingerprint generation.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
366 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
367 sub GenerateFingerprints {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
368 my($This) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
369
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
370 if ($This->{MinDistance} > $This->{MaxDistance}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
371 croak "Error: ${ClassName}->GenerateTopologicalPharmacophoreAtomTripletsFingerprints: No fingerpritns generated: MinDistance, $This->{MinDistance}, must be <= MaxDistance, $This->{MaxDistance}...";
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
372 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
373
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
374 # Cache appropriate molecule data...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
375 $This->_SetupMoleculeDataCache();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
376
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
377 # Generate distance matrix...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
378 if (!$This->_SetupDistanceMatrix()) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
379 carp "Warning: ${ClassName}->GenerateFingerprints: Fingerprints generation didn't succeed: Couldn't generate distance matrix...";
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
380 return $This;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
381 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
382
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
383 # Generate binned distance matrix...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
384 $This->_GenerateBinnedDistanceMatrix();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
385
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
386 # Assign pharmacohore atom types to all heavy atoms...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
387 $This->_AssignPharmacophoreAtomTypes();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
388
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
389 # Initialize values of all possible pharmacohore atom triplets...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
390 $This->_InitializePharmacophoreAtomTriplets();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
391
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
392 # Count atom triplets...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
393 $This->_CountPharmacohoreAtomTriplets();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
394
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
395 # Set final fingerprints...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
396 $This->_SetFinalFingerprints();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
397
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
398 # Clear cached molecule data...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
399 $This->_ClearMoleculeDataCache();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
400
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
401 return $This;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
402 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
403
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
404 # Setup distance matrix...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
405 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
406 sub _SetupDistanceMatrix {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
407 my($This) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
408
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
409 $This->{DistanceMatrix} = $This->GetMolecule()->GetDistanceMatrix();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
410
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
411 if (!$This->{DistanceMatrix}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
412 return undef;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
413 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
414
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
415 return $This;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
416 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
417
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
418 # Generate binned distance matrix for distances with in the specified distance ranges...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
419 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
420 sub _GenerateBinnedDistanceMatrix {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
421 my($This) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
422 my($DistanceMatrix, $BinnedDistanceMatrix, $NumOfRows, $NumOfCols, $RowIndex, $ColIndex, $SkipIndexCheck);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
423
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
424 $DistanceMatrix = $This->{DistanceMatrix};
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
425 ($NumOfRows, $NumOfCols) = $DistanceMatrix->GetSize();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
426
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
427 # Initialize binned distance matrix...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
428 $BinnedDistanceMatrix = new Matrix($NumOfRows, $NumOfCols);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
429
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
430 # Setup distance to binned distance map...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
431 my($BinnedDistance, $Distance, %DistanceToBinnedDistance);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
432 %DistanceToBinnedDistance = ();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
433 for ($BinnedDistance = $This->{MinDistance}; $BinnedDistance <= $This->{MaxDistance}; $BinnedDistance += $This->{DistanceBinSize}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
434 for $Distance ($BinnedDistance .. ($BinnedDistance + $This->{DistanceBinSize} - 1)) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
435 $DistanceToBinnedDistance{$Distance} = $BinnedDistance;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
436 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
437 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
438
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
439 # Generate binned distance matrix...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
440 $SkipIndexCheck = 0;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
441 for $RowIndex (0 .. ($NumOfRows - 1) ) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
442 COLINDEX: for $ColIndex (($RowIndex + 1) .. ($NumOfCols - 1) ) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
443 $Distance = $DistanceMatrix->GetValue($RowIndex, $ColIndex, $SkipIndexCheck);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
444 if ($Distance < $This->{MinDistance} || $Distance > $This->{MaxDistance}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
445 next COLINDEX;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
446 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
447 $BinnedDistance = $DistanceToBinnedDistance{$Distance};
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
448 $BinnedDistanceMatrix->SetValue($RowIndex, $ColIndex, $BinnedDistance, $SkipIndexCheck);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
449 $BinnedDistanceMatrix->SetValue($ColIndex, $RowIndex, $BinnedDistance, $SkipIndexCheck);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
450 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
451 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
452
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
453 $This->{BinnedDistanceMatrix} = $BinnedDistanceMatrix;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
454
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
455 return $This;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
456 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
457
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
458 # Assign pharmacohore atom types to all heavy atoms...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
459 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
460 sub _AssignPharmacophoreAtomTypes {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
461 my($This) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
462 my($Atom, $AtomID, $AtomType, $FunctionalClassAtomTypes);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
463
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
464 # Assign topological pharmacophore atom types...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
465 $FunctionalClassAtomTypes = new AtomTypes::FunctionalClassAtomTypes('Molecule' => $This->{Molecule}, 'IgnoreHydrogens' => 1, 'FunctionalClassesToUse' => $This->{AtomTypesToUse});
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
466 $FunctionalClassAtomTypes->AssignAtomTypes();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
467
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
468 %{$This->{AssignedAtomTypes}} = ();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
469
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
470 ATOM: for $Atom (@{$This->{Atoms}}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
471 if ($Atom->IsHydrogen()) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
472 next ATOM;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
473 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
474 $AtomID = $Atom->GetID();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
475
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
476 my(@AtomTypes);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
477 @AtomTypes = ();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
478
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
479 $AtomType = $FunctionalClassAtomTypes->GetAtomType($Atom);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
480 if ($AtomType && $AtomType !~ /^None$/i) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
481 push @AtomTypes, split /\./, $AtomType;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
482 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
483 # Assign phramacophore types list to atom...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
484 $This->{AssignedAtomTypes}{$AtomID} = \@AtomTypes;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
485 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
486 return $This;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
487 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
488
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
489 # Initialize pharmacophore atom triplets basis set for all unique triplets constituting atom pairs
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
490 # binned distances between minimum and maximum distance and optionally applying triangle
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
491 # inequality. The DistanceBinSize determines the size of the distance bins. The lower distance
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
492 # bound, along with specified pharmacophore types, is used during generation of atom triplet
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
493 # IDs.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
494 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
495 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
496 sub _InitializePharmacophoreAtomTriplets {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
497 my($This) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
498 my($AtomType1, $AtomType2, $AtomType3, $BinnedDistance12, $BinnedDistance13, $BinnedDistance23, $AtomTripletID);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
499
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
500 # Initialize atom triplets information...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
501 for ($BinnedDistance12 = $This->{MinDistance}; $BinnedDistance12 <= $This->{MaxDistance}; $BinnedDistance12 += $This->{DistanceBinSize}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
502 for ($BinnedDistance13 = $This->{MinDistance}; $BinnedDistance13 <= $This->{MaxDistance}; $BinnedDistance13 += $This->{DistanceBinSize}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
503 DISTANCE23: for ($BinnedDistance23 = $BinnedDistance12; $BinnedDistance23 <= $This->{MaxDistance}; $BinnedDistance23 += $This->{DistanceBinSize}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
504 if ($This->{UseTriangleInequality} && !$This->_DoDistancesSatisfyTriangleInequality($BinnedDistance12, $BinnedDistance13, $BinnedDistance23)) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
505 next DISTANCE23;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
506 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
507 for $AtomType1 (@{$This->{AtomTypesToUse}}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
508 for $AtomType2 (@{$This->{AtomTypesToUse}}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
509 ATOMTYPE3: for $AtomType3 (@{$This->{AtomTypesToUse}}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
510 $AtomTripletID = $This->_GetAtomTripletID($AtomType1, $BinnedDistance23, $AtomType2, $BinnedDistance13, $AtomType3, $BinnedDistance12);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
511 if (exists $This->{AtomTriplets}{Count}{$AtomTripletID}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
512 next ATOMTYPE3;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
513 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
514 # Unique atom triplets information...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
515 push @{$This->{AtomTriplets}{IDs}}, $AtomTripletID;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
516 $This->{AtomTriplets}{Count}{$AtomTripletID} = 0;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
517 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
518 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
519 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
520 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
521 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
522 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
523 return $This;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
524 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
525
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
526 # Check triangle inequality...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
527 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
528 sub _DoDistancesSatisfyTriangleInequality {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
529 my($This, $Distance1, $Distance2, $Distance3) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
530
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
531 if ( !($Distance1 > abs($Distance2 - $Distance3) && $Distance1 < ($Distance2 + $Distance3)) ) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
532 return 0;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
533 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
534 if ( !($Distance2 > abs($Distance1 - $Distance3) && $Distance2 < ($Distance1 + $Distance3)) ) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
535 return 0;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
536 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
537 if ( !($Distance3 > abs($Distance1 - $Distance2) && $Distance3 < ($Distance1 + $Distance2)) ) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
538 return 0;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
539 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
540 return 1;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
541 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
542
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
543 # Count pharmacophore atom triplets...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
544 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
545 sub _CountPharmacohoreAtomTriplets {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
546 my($This) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
547 my($NumOfAtoms, $AtomIndex1, $AtomIndex2, $AtomIndex3, $AtomID1, $AtomID2, $AtomID3, $AtomType1, $AtomType2, $AtomType3, $BinnedDistance12, $BinnedDistance13, $BinnedDistance23, $SkipIndexCheck, $BinnedDistanceMatrix, $AtomTripletID);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
548
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
549 $NumOfAtoms = @{$This->{Atoms}};
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
550 $BinnedDistanceMatrix = $This->{BinnedDistanceMatrix};
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
551 $SkipIndexCheck = 0;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
552
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
553 ATOMINDEX1: for $AtomIndex1 (0 .. ($NumOfAtoms - 1)) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
554 $AtomID1 = $This->{AtomIndexToID}{$AtomIndex1};
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
555 if ( !((exists($This->{AssignedAtomTypes}{$AtomID1}) && @{$This->{AssignedAtomTypes}{$AtomID1}})) ) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
556 next ATOMINDEX1;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
557 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
558
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
559 ATOMINDEX2: for $AtomIndex2 (($AtomIndex1 + 1) .. ($NumOfAtoms - 1)) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
560 $AtomID2 = $This->{AtomIndexToID}{$AtomIndex2};
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
561 if ( !((exists($This->{AssignedAtomTypes}{$AtomID2}) && @{$This->{AssignedAtomTypes}{$AtomID2}})) ) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
562 next ATOMINDEX2;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
563 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
564 $BinnedDistance12 = $BinnedDistanceMatrix->GetValue($AtomIndex1, $AtomIndex2, $SkipIndexCheck);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
565 if ($BinnedDistance12 == 0) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
566 next ATOMINDEX2;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
567 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
568
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
569 ATOMINDEX3: for $AtomIndex3 (($AtomIndex2 + 1) .. ($NumOfAtoms - 1)) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
570 $AtomID3 = $This->{AtomIndexToID}{$AtomIndex3};
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
571 if ( !((exists($This->{AssignedAtomTypes}{$AtomID3}) && @{$This->{AssignedAtomTypes}{$AtomID3}})) ) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
572 next ATOMINDEX3;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
573 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
574 $BinnedDistance13 = $BinnedDistanceMatrix->GetValue($AtomIndex1, $AtomIndex3, $SkipIndexCheck);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
575 $BinnedDistance23 = $BinnedDistanceMatrix->GetValue($AtomIndex2, $AtomIndex3, $SkipIndexCheck);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
576 if ($BinnedDistance13 == 0 || $BinnedDistance23 == 0) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
577 next ATOMINDEX3;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
578 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
579 if ($This->{UseTriangleInequality} && !$This->_DoDistancesSatisfyTriangleInequality($BinnedDistance12, $BinnedDistance13, $BinnedDistance23)) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
580 next ATOMINDEX3;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
581 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
582
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
583 # Go over possible pharmacohore triplets for the three pharmacophore atoms using the
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
584 # binned distances...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
585 for $AtomType1 (@{$This->{AssignedAtomTypes}{$AtomID1}}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
586 for $AtomType2 (@{$This->{AssignedAtomTypes}{$AtomID2}}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
587 for $AtomType3 (@{$This->{AssignedAtomTypes}{$AtomID3}}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
588 $AtomTripletID = $This->_GetAtomTripletID($AtomType1, $BinnedDistance23, $AtomType2, $BinnedDistance13, $AtomType3, $BinnedDistance12);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
589 $This->{AtomTriplets}{Count}{$AtomTripletID} += 1;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
590 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
591 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
592 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
593 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
594 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
595 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
596 return $This;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
597 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
598
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
599 # Set final fingerpritns vector...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
600 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
601 sub _SetFinalFingerprints {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
602 my($This) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
603 my($UseArbitrarySetSize, $ID, $Value, @IDs, @Values);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
604
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
605 # Mark successful generation of fingerprints...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
606 $This->{FingerprintsGenerated} = 1;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
607
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
608 # Is it an ArbitraySize atom triplets set size?
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
609 $UseArbitrarySetSize = $This->{AtomTripletsSetSizeToUse} =~ /^ArbitrarySize$/i ? 1 : 0;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
610
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
611 # Set atom triplet count values...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
612 @IDs = (); @Values = ();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
613
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
614 if ($UseArbitrarySetSize) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
615 ID: for $ID (@{$This->{AtomTriplets}{IDs}}) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
616 $Value = $This->{AtomTriplets}{Count}{$ID};
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
617 if ($Value == 0) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
618 next ID;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
619 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
620 push @IDs, $ID;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
621 push @Values, $Value;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
622 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
623 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
624 else {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
625 @Values = map { $This->{AtomTriplets}{Count}{$_} } @{$This->{AtomTriplets}{IDs}};
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
626 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
627
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
628 # Set atom triplet IDs for fingerprint vector...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
629 if ($UseArbitrarySetSize) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
630 $This->{FingerprintsVector}->AddValueIDs(\@IDs);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
631 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
632 else {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
633 $This->{FingerprintsVector}->AddValueIDs(\@{$This->{AtomTriplets}{IDs}});
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
634 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
635
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
636 # Set atom triplets count values for fingerprint vector...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
637 $This->{FingerprintsVector}->AddValues(\@Values);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
638
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
639 return $This;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
640 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
641
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
642 # Return an array or reference to an array containing atom triplet IDs...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
643 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
644 sub GetAtomTripletIDs {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
645 my($This) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
646
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
647 return wantarray ? @{$This->{AtomTriplets}{IDs}} : \@{$This->{AtomTriplets}{IDs}};
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
648 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
649
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
650 # Get pharmacophore atom triplet ID corresponding to atom types and distances
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
651 # corresponding to atom triplet...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
652 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
653 sub _GetAtomTripletID {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
654 my($This, $Px, $Dyz, $Py, $Dxz, $Pz, $Dxy) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
655 my($AtomTripletID, @AtomIDs);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
656
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
657 @AtomIDs = ();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
658
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
659 @AtomIDs = sort("${Px}${Dyz}", "${Py}${Dxz}", "${Pz}${Dxy}");
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
660 $AtomTripletID = join "-", @AtomIDs;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
661
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
662 return $AtomTripletID;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
663 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
664
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
665 # Cache appropriate molecule data...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
666 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
667 sub _SetupMoleculeDataCache {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
668 my($This) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
669
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
670 # Get all atoms including hydrogens to correctly map atom indices to atom IDs for
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
671 # usage of distance matrix. The hydrogen atoms are ignored during processing...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
672 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
673 @{$This->{Atoms}} = $This->GetMolecule()->GetAtoms();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
674
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
675 # Get all atom IDs...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
676 my(@AtomIDs);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
677 @AtomIDs = ();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
678 @AtomIDs = map { $_->GetID() } @{$This->{Atoms}};
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
679
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
680 # Set AtomIndex to AtomID hash...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
681 %{$This->{AtomIndexToID}} = ();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
682 @{$This->{AtomIndexToID}}{ (0 .. $#AtomIDs) } = @AtomIDs;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
683
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
684 return $This;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
685 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
686
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
687 # Clear cached molecule data...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
688 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
689 sub _ClearMoleculeDataCache {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
690 my($This) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
691
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
692 @{$This->{Atoms}} = ();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
693
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
694 return $This;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
695 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
696
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
697
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
698 # Return a string containg data for TopologicalPharmacophoreAtomTripletsFingerprints object...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
699 #
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
700 sub StringifyTopologicalPharmacophoreAtomTripletsFingerprints {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
701 my($This) = @_;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
702 my($FingerprintsString, $UseTriangleInequality);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
703
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
704 # Type of fingerprint...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
705 $FingerprintsString = "Fingerprint type: $This->{Type}; AtomTripletsSetSizeToUse: $This->{AtomTripletsSetSizeToUse}";
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
706
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
707 # Distances information...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
708 $FingerprintsString .= "; MinDistance: $This->{MinDistance}; MaxDistance: $This->{MaxDistance}; DistanceBinSize: $This->{DistanceBinSize}; UseTriangleInequality: " . ($This->{UseTriangleInequality} ? "Yes" : "No");
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
709
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
710 # Pharmacophore atom type labels and description...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
711 my($AtomType, @AtomTypes, @AtomTypesOrder, %AvailableAtomTypes);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
712
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
713 @AtomTypesOrder = AtomTypes::FunctionalClassAtomTypes::GetFunctionalClassesOrder();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
714 %AvailableAtomTypes = AtomTypes::FunctionalClassAtomTypes::GetAvailableFunctionalClasses();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
715
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
716 @AtomTypes = ();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
717 for $AtomType (@AtomTypesOrder) {
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
718 push @AtomTypes, "$AtomType: $AvailableAtomTypes{$AtomType}";
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
719 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
720
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
721 $FingerprintsString .= "; AtomTypesToUse: <" . TextUtil::JoinWords(\@{$This->{AtomTypesToUse}}, ", ", 0) . ">";
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
722 $FingerprintsString .= "; AtomTypesOrder: <" . TextUtil::JoinWords(\@AtomTypesOrder, ", ", 0) . ">";
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
723 $FingerprintsString .= "; AvailableAtomTypes: <" . TextUtil::JoinWords(\@AtomTypes, ", ", 0) . ">";
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
724
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
725 # Total number of pharmacophore atom triplets...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
726 $FingerprintsString .= "; NumOfAtomTriplets: " . $This->{FingerprintsVector}->GetNumOfValues();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
727
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
728 # FingerprintsVector...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
729 $FingerprintsString .= "; FingerprintsVector: < $This->{FingerprintsVector} >";
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
730
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
731 return $FingerprintsString;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
732 }
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
733
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
734 1;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
735
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
736 __END__
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
737
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
738 =head1 NAME
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
739
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
740 TopologicalPharmacophoreAtomTripletsFingerprints
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
741
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
742 =head1 SYNOPSIS
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
743
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
744 use Fingerprints::TopologicalPharmacophoreAtomTripletsFingerprints;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
745
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
746 use Fingerprints::TopologicalPharmacophoreAtomTripletsFingerprints qw(:all);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
747
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
748 =head1 DESCRIPTION
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
749
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
750 B<TopologicalPharmacophoreAtomTripletsFingerprints> [ Ref 66, Ref 68-71 ] class provides
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
751 the following methods:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
752
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
753 new, GenerateFingerprints, , GetDescription, GetAtomTripletIDs,
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
754 SetAtomTypesToUse, SetDistanceBinSize, SetMaxDistance, SetMinDistance,
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
755 StringifyTopologicalPharmacophoreAtomTripletsFingerprints
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
756
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
757 B<TopologicalPharmacophoreAtomTripletsFingerprints> is derived from B<Fingerprints> class
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
758 which in turn is derived from B<ObjectProperty> base class that provides methods not explicitly
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
759 defined in B<TopologicalPharmacophoreAtomTripletsFingerprints>, B<Fingerprints> or B<ObjectProperty>
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
760 classes using Perl's AUTOLOAD functionality. These methods are generated on-the-fly for a specified
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
761 object property:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
762
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
763 Set<PropertyName>(<PropertyValue>);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
764 $PropertyValue = Get<PropertyName>();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
765 Delete<PropertyName>();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
766
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
767 Based on the values specified for B<AtomTypesToUse>, pharmacophore atom types are
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
768 assigned to all non-hydrogen atoms in a molecule and a distance matrix is generated.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
769 Using B<MinDistance>, B<MaxDistance>, and B<DistanceBinSize> values, a
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
770 binned distance matrix is generated with lower bound on the distance bin as the distance
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
771 in distance matrix; the lower bound on the distance bin is also used as the distance between
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
772 atom pairs for generation of atom triplet identifiers.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
773
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
774 A pharmacophore atom triplets basis set is generated for all unique atom triplets constituting
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
775 atom pairs binned distances between B<--MinDistance> and B<--MaxDistance>. The value
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
776 of B<--UseTriangleInequality> determines whether the triangle inequality test is applied during
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
777 generation of atom triplets basis set. The lower distance bound, along with specified pharmacophore
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
778 types, is used during generation of atom triplet IDs.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
779
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
780 Let:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
781
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
782 P = Valid pharmacophore atom type
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
783
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
784 Px = Pharmacophore atom x
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
785 Py = Pharmacophore atom y
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
786 Pz = Pharmacophore atom z
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
787
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
788 Dmin = Minimum distance corresponding to number of bonds between two atoms
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
789 Dmax = Maximum distance corresponding to number of bonds between two atoms
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
790 D = Distance corresponding to number of bonds between two atom
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
791
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
792 Bsize = Distance bin size
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
793 Nbins = Number of distance bins
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
794
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
795 Dxy = Distance or lower bound of binned distance between Px and Py
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
796 Dxz = Distance or lower bound of binned distance between Px and Pz
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
797 Dyz = Distance or lower bound of binned distance between Py and Pz
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
798
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
799 Then:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
800
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
801 PxDyz-PyDxz-PzDxy = Pharmacophore atom triplet IDs for atom types Px,
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
802 Py, and Pz
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
803
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
804 For example: H1-H1-H1, H2-HBA-H2 and so on.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
805
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
806 For default values of Dmin = 1 , Dmax = 10 and Bsize = 2, the number of
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
807 distance bins, Nbins = 5, are:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
808
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
809 [1, 2] [3, 4] [5, 6] [7, 8] [9 10]
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
810
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
811 and atom triplet basis set size is 2692.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
812
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
813 Atom triplet basis set size for various values of Dmin, Dmax and Bsize in
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
814 conjunction with usage of triangle inequality is:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
815
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
816 Dmin Dmax Bsize UseTriangleInequality TripletBasisSetSize
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
817 1 10 2 No 4960
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
818 1 10 2 Yes 2692 [ Default ]
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
819 2 12 2 No 8436
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
820 2 12 2 Yes 4494
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
821
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
822
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
823 Using binned distance matrix and pharmacohore atom types, occurrence of unique pharmacohore
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
824 atom triplets is counted.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
825
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
826 The final pharmacophore atom triples count along with atom pair identifiers involving all non-hydrogen
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
827 atoms constitute pharmacophore topological atom triplets fingerprints of the molecule.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
828
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
829 For I<ArbitrarySize> value of B<AtomTripletsSetSizeToUse>, the fingerprint vector correspond to
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
830 only those topological pharmacophore atom triplets which are present and have non-zero count. However,
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
831 for I<FixedSize> value of B<AtomTripletsSetSizeToUse>, the fingerprint vector contains all possible
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
832 valid topological pharmacophore atom triplets with both zero and non-zero count values.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
833
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
834 The current release of MayaChemTools generates the following types of topological pharmacophore
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
835 atom triplets fingerprints vector strings:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
836
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
837 FingerprintsVector;TopologicalPharmacophoreAtomTriplets:ArbitrarySize:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
838 MinDistance1:MaxDistance10;696;NumericalValues;IDsAndValuesString;Ar1-
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
839 Ar1-Ar1 Ar1-Ar1-H1 Ar1-Ar1-HBA1 Ar1-Ar1-HBD1 Ar1-H1-H1 Ar1-H1-HBA1 Ar1
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
840 -H1-HBD1 Ar1-HBA1-HBD1 H1-H1-H1 H1-H1-HBA1 H1-H1-HBD1 H1-HBA1-HBA1 H1-
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
841 HBA1-HBD1 H1-HBA1-NI1 H1-HBD1-NI1 HBA1-HBA1-NI1 HBA1-HBD1-NI1 Ar1-...;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
842 46 106 8 3 83 11 4 1 21 5 3 1 2 2 1 1 1 100 101 18 11 145 132 26 14 23
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
843 28 3 3 5 4 61 45 10 4 16 20 7 5 1 3 4 5 3 1 1 1 1 5 4 2 1 2 2 2 1 1 1
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
844 119 123 24 15 185 202 41 25 22 17 3 5 85 95 18 11 23 17 3 1 1 6 4 ...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
845
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
846 FingerprintsVector;TopologicalPharmacophoreAtomTriplets:FixedSize:MinD
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
847 istance1:MaxDistance10;2692;OrderedNumericalValues;ValuesString;46 106
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
848 8 3 0 0 83 11 4 0 0 0 1 0 0 0 0 0 0 0 0 21 5 3 0 0 1 2 2 0 0 1 0 0 0
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
849 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 101 18 11 0 0 145 132 26
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
850 14 0 0 23 28 3 3 0 0 5 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 45 10 4 0
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
851 0 16 20 7 5 1 0 3 4 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 5 ...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
852
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
853 FingerprintsVector;TopologicalPharmacophoreAtomTriplets:FixedSize:MinD
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
854 istance1:MaxDistance10;2692;OrderedNumericalValues;IDsAndValuesString;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
855 Ar1-Ar1-Ar1 Ar1-Ar1-H1 Ar1-Ar1-HBA1 Ar1-Ar1-HBD1 Ar1-Ar1-NI1 Ar1-Ar1-P
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
856 I1 Ar1-H1-H1 Ar1-H1-HBA1 Ar1-H1-HBD1 Ar1-H1-NI1 Ar1-H1-PI1 Ar1-HBA1-HB
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
857 A1 Ar1-HBA1-HBD1 Ar1-HBA1-NI1 Ar1-HBA1-PI1 Ar1-HBD1-HBD1 Ar1-HBD1-...;
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
858 46 106 8 3 0 0 83 11 4 0 0 0 1 0 0 0 0 0 0 0 0 21 5 3 0 0 1 2 2 0 0 1
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
859 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 101 18 11 0 0 145
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
860 132 26 14 0 0 23 28 3 3 0 0 5 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 ...
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
861
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
862 =head2 METHODS
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
863
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
864 =over 4
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
865
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
866 =item B<new>
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
867
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
868 $TPATFP = new TopologicalPharmacophoreAtomTripletsFingerprints(
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
869 %NamesAndValues);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
870
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
871 Using specified I<TopologicalPharmacophoreAtomTripletsFingerprints> property names and values hash, B<new>
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
872 method creates a new object and returns a reference to newly created B<TopologicalPharmacophoreAtomTripletsFingerprints>
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
873 object. By default, the following properties are initialized:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
874
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
875 Molecule = ''
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
876 Type = 'TopologicalPharmacophoreAtomTriplets'
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
877 MinDistance = 1
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
878 MaxDistance = 10
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
879 DistanceBinSize = 2
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
880 UseTriangleInequality = 1
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
881 AtomTypesToUse = ['HBD', 'HBA', 'PI', 'NI', 'H', 'Ar']
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
882
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
883 Examples:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
884
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
885 $TPATFP = new TopologicalPharmacophoreAtomTripletsFingerprints(
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
886 'Molecule' => $Molecule);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
887
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
888 $TPATFP = new TopologicalPharmacophoreAtomTripletsFingerprints(
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
889 'Molecule' => $Molecule,
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
890 'AtomTripletsSetSizeToUse' => 'ArbitrarySize';
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
891 'MinDistance' => 1,
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
892 'MaxDistance' => 10,
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
893 'DistanceBinSize' => 2,
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
894 'AtomTypesToUse' => ['HBD', 'HBA', 'PI', 'NI', 'H', 'Ar'],
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
895 'UseTriangleInequality' => 1);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
896
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
897 $TPATFP = new TopologicalPharmacophoreAtomTripletsFingerprints(
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
898 'Molecule' => $Molecule,
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
899 'AtomTripletsSetSizeToUse' => 'FixedSize';
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
900 'MinDistance' => 1,
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
901 'MaxDistance' => 10,
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
902 'DistanceBinSize' => 2,
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
903 'AtomTypesToUse' => ['HBD', 'HBA', 'PI', 'NI', 'H', 'Ar'],
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
904 'UseTriangleInequality' => 1);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
905
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
906 $TPATFP->GenerateFingerprints();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
907 print "$TPATFP\n";
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
908
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
909 =item B<GetDescription>
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
910
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
911 $Description = $TopologicalPharmacophoreAtomTripletsFP->GetDescription();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
912
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
913 Returns a string containing description of topological pharmacophore atom triplets fingerprints.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
914
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
915 =item B<GenerateFingerprints>
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
916
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
917 $TopologicalPharmacophoreAtomTripletsFP->GenerateFingerprints();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
918
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
919 Generates topological pharmacophore atom triplets fingerprints and returns
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
920 I<TopologicalPharmacophoreAtomTripletsFP>.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
921
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
922 =item B<GetAtomTripletIDs>
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
923
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
924 $AtomTripletsIDsRef = $TopologicalPharmacophoreATFP->GetAtomTripletIDs();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
925 @AtomTripletIDs = $TopologicalPharmacophoreATFP->GetAtomTripletIDs();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
926
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
927 Returns atom triplet IDs corresponding to atom pairs count values in topological pharmacophore
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
928 atom triplet fingerprints vector as an array or reference to an array.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
929
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
930 =item B<AtomTripletsSetSizeToUse>
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
931
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
932 $TPAFP->AtomTripletsSetSizeToUse($Values);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
933
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
934 Sets pharmacophore atom triplets set size to use for topological pharmacophore fingerprints
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
935 generation and returns I<TopologicalPharmacophoreAtomTripletsFingerprints>.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
936
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
937 Possible values for pharmacophore atom triplets set size are: I<ArbitrarySize, FizedSize>.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
938 Default value: I<ArbitrarySize>.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
939
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
940 For I<ArbitrarySize> value of B<AtomTripletsSetSizeToUse>, the fingerprint vector correspond to
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
941 only those topological pharmacophore atom triplets which are present and have non-zero count. However,
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
942 for I<FixedSize> value of B<AtomTripletsSetSizeToUse>, the fingerprint vector contains all possible
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
943 valid topological pharmacophore atom triplets with both zero and non-zero count values.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
944
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
945 =item B<SetAtomTypesToUse>
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
946
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
947 $TopologicalPharmacophoreAtomTripletsFP->SetAtomTypesToUse($ValuesRef);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
948 $TopologicalPharmacophoreAtomTripletsFP->SetAtomTypesToUse(@Values);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
949
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
950 Sets pharmacophore atom types to use for topological pharmacophore fingerprints
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
951 generation and returns I<TopologicalPharmacophoreAtomTripletsFingerprints>.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
952
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
953 Possible values for pharmacophore atom types are: I<Ar, CA, H, HBA, HBD, Hal, NI, PI, RA>.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
954 Default value [ Ref 71 ] : I<HBD,HBA,PI,NI,H,Ar>.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
955
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
956 The pharmacophore atom types abbreviations correspond to:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
957
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
958 HBD: HydrogenBondDonor
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
959 HBA: HydrogenBondAcceptor
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
960 PI : PositivelyIonizable
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
961 NI : NegativelyIonizable
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
962 Ar : Aromatic
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
963 Hal : Halogen
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
964 H : Hydrophobic
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
965 RA : RingAtom
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
966 CA : ChainAtom
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
967
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
968 I<AtomTypes::FunctionalClassAtomTypes> module is used to assign pharmacophore atom
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
969 types. It uses following definitions [ Ref 60-61, Ref 65-66 ]:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
970
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
971 HydrogenBondDonor: NH, NH2, OH
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
972 HydrogenBondAcceptor: N[!H], O
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
973 PositivelyIonizable: +, NH2
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
974 NegativelyIonizable: -, C(=O)OH, S(=O)OH, P(=O)OH
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
975
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
976
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
977 =item B<SetDistanceBinSize>
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
978
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
979 $TopologicalPharmacophoreAtomTripletsFP->SetDistanceBinSize($Value);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
980
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
981 Sets distance bin size used to bin distances between atom pairs in atom triplets and returns
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
982 I<TopologicalPharmacophoreAtomTriplesFP>.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
983
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
984 For default B<MinDistance> and B<MaxDistance> values of 1 and 10 with B<DistanceBinSize>
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
985 of 2 [ Ref 70 ], the following 5 distance bins are generated:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
986
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
987 [1, 2] [3, 4] [5, 6] [7, 8] [9 10]
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
988
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
989 The lower distance bound on the distance bin is uses to bin the distance between atom pairs in
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
990 atom triplets. So in the previous example, atom pairs with distances 1 and 2 fall in first distance
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
991 bin, atom pairs with distances 3 and 4 fall in second distance bin and so on.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
992
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
993 In order to distribute distance bins of equal size, the last bin is allowed to go past B<MaxDistance>
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
994 by up to distance bin size. For example, B<MinDistance> and B<MaxDistance> values of 2 and 10
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
995 with B<DistanceBinSize> of 2 generates the following 6 distance bins:
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
996
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
997 [2, 3] [4, 5] [6, 7] [8, 9] [10 11]
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
998
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
999
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1000 =item B<SetMaxDistance>
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1001
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1002 $TopologicalPharmacophoreAtomTriplesFP->SetMaxDistance($Value);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1003
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1004 Sets maximum bond distance between atom pairs corresponding to atom triplets for
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1005 generating topological pharmacophore atom triplets fingerprints and returns
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1006 I<TopologicalPharmacophoreAtomTriplesFP>.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1007
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1008 =item B<SetMinDistance>
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1009
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1010 $TopologicalPharmacophoreAtomTriplesFP->SetMinDistance($Value);
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1011
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1012 Sets minimum bond distance between atom pairs corresponding to atom triplets for
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1013 generating topological pharmacophore atom triplets fingerprints and returns
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1014 I<TopologicalPharmacophoreAtomTriplesFP>.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1015
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1016 =item B<StringifyTopologicalPharmacophoreAtomTripletsFingerprints>
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1017
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1018 $String = $TopologicalPharmacophoreAtomTripletsFingerprints->
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1019 StringifyTopologicalPharmacophoreAtomTripletsFingerprints();
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1020
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1021 Returns a string containing information about I<TopologicalPharmacophoreAtomTripletsFingerprints> object.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1022
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1023 =back
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1024
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1025 =head1 AUTHOR
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1026
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1027 Manish Sud <msud@san.rr.com>
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1028
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1029 =head1 SEE ALSO
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1030
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1031 Fingerprints.pm, FingerprintsStringUtil.pm, AtomNeighborhoodsFingerprints.pm,
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1032 AtomTypesFingerprints.pm, EStateIndiciesFingerprints.pm, ExtendedConnectivityFingerprints.pm,
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1033 MACCSKeys.pm, PathLengthFingerprints.pm, TopologicalAtomPairsFingerprints.pm,
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1034 TopologicalAtomTripletsFingerprints.pm, TopologicalAtomTorsionsFingerprints.pm,
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1035 TopologicalPharmacophoreAtomPairsFingerprints.pm,
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1036
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1037 =head1 COPYRIGHT
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1038
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1039 Copyright (C) 2015 Manish Sud. All rights reserved.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1040
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1041 This file is part of MayaChemTools.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1042
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1043 MayaChemTools is free software; you can redistribute it and/or modify it under
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1044 the terms of the GNU Lesser General Public License as published by the Free
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1045 Software Foundation; either version 3 of the License, or (at your option)
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1046 any later version.
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1047
a4a2ad5a214e Uploaded
deepakjadmin
parents:
diff changeset
1048 =cut