annotate lib/Fingerprints/TopologicalAtomTripletsFingerprints.pm @ 3:90ea638ce878 draft default tip

Uploaded
author deepakjadmin
date Wed, 20 Jan 2016 09:11:59 -0500
parents 2abf0d43254d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1 package Fingerprints::TopologicalAtomTripletsFingerprints;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
2 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
3 # $RCSfile: TopologicalAtomTripletsFingerprints.pm,v $
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
4 # $Date: 2015/02/28 20:48:54 $
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
5 # $Revision: 1.15 $
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
6 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
7 # Author: Manish Sud <msud@san.rr.com>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
8 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
9 # Copyright (C) 2015 Manish Sud. All rights reserved.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
10 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
11 # This file is part of MayaChemTools.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
12 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
13 # MayaChemTools is free software; you can redistribute it and/or modify it under
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
14 # the terms of the GNU Lesser General Public License as published by the Free
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
15 # Software Foundation; either version 3 of the License, or (at your option) any
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
16 # later version.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
17 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
18 # MayaChemTools is distributed in the hope that it will be useful, but without
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
19 # any warranty; without even the implied warranty of merchantability of fitness
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
20 # for a particular purpose. See the GNU Lesser General Public License for more
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
21 # details.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
22 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
23 # You should have received a copy of the GNU Lesser General Public License
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
24 # along with MayaChemTools; if not, see <http://www.gnu.org/licenses/> or
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
25 # write to the Free Software Foundation Inc., 59 Temple Place, Suite 330,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
26 # Boston, MA, 02111-1307, USA.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
27 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
28
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
29 use strict;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
30 use Carp;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
31 use Exporter;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
32 use Fingerprints::Fingerprints;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
33 use TextUtil ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
34 use Molecule;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
35 use AtomTypes::AtomicInvariantsAtomTypes;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
36 use AtomTypes::DREIDINGAtomTypes;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
37 use AtomTypes::EStateAtomTypes;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
38 use AtomTypes::FunctionalClassAtomTypes;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
39 use AtomTypes::MMFF94AtomTypes;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
40 use AtomTypes::SLogPAtomTypes;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
41 use AtomTypes::SYBYLAtomTypes;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
42 use AtomTypes::TPSAAtomTypes;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
43 use AtomTypes::UFFAtomTypes;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
44
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
45 use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
46
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
47 @ISA = qw(Fingerprints::Fingerprints Exporter);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
48 @EXPORT = qw();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
49 @EXPORT_OK = qw();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
50
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
51 %EXPORT_TAGS = (all => [@EXPORT, @EXPORT_OK]);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
52
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
53 # Setup class variables...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
54 my($ClassName);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
55 _InitializeClass();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
56
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
57 # Overload Perl functions...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
58 use overload '""' => 'StringifyTopologicalAtomTripletsFingerprints';
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
59
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
60 # Class constructor...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
61 sub new {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
62 my($Class, %NamesAndValues) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
63
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
64 # Initialize object...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
65 my $This = $Class->SUPER::new();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
66 bless $This, ref($Class) || $Class;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
67 $This->_InitializeTopologicalAtomTripletsFingerprints();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
68
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
69 $This->_InitializeTopologicalAtomTripletsFingerprintsProperties(%NamesAndValues);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
70
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
71 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
72 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
73
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
74 # Initialize object data...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
75 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
76 sub _InitializeTopologicalAtomTripletsFingerprints {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
77 my($This) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
78
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
79 # Type of fingerprint...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
80 $This->{Type} = 'TopologicalAtomTriplets';
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
81
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
82 # Type of vector...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
83 $This->{VectorType} = 'FingerprintsVector';
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
84
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
85 # Type of FingerprintsVector...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
86 $This->{FingerprintsVectorType} = 'NumericalValues';
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
87
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
88 # Minimum and maximum bond distance between atom paris...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
89 $This->{MinDistance} = 1;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
90 $This->{MaxDistance} = 10;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
91
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
92 # Determines whether to apply triangle inequality to distance triplets...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
93 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
94 $This->{UseTriangleInequality} = 0;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
95
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
96 # Atom identifier type to use for atom IDs in atom triplets...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
97 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
98 # Currently supported values are: AtomicInvariantsAtomTypes, DREIDINGAtomTypes,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
99 # EStateAtomTypes, FunctionalClassAtomTypes, MMFF94AtomTypes, SLogPAtomTypes,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
100 # SYBYLAtomTypes, TPSAAtomTypes, UFFAtomTypes
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
101 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
102 $This->{AtomIdentifierType} = '';
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
103
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
104 # Atom types assigned to each heavy atom...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
105 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
106 %{$This->{AssignedAtomTypes}} = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
107
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
108 # All atom triplets between minimum and maximum distance...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
109 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
110 @{$This->{AtomTripletsIDs}} = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
111 %{$This->{AtomTripletsCount}} = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
112 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
113
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
114 # Initialize class ...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
115 sub _InitializeClass {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
116 #Class name...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
117 $ClassName = __PACKAGE__;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
118 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
119
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
120 # Initialize object properties....
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
121 sub _InitializeTopologicalAtomTripletsFingerprintsProperties {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
122 my($This, %NamesAndValues) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
123
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
124 my($Name, $Value, $MethodName);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
125 while (($Name, $Value) = each %NamesAndValues) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
126 $MethodName = "Set${Name}";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
127 $This->$MethodName($Value);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
128 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
129
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
130 # Make sure molecule object was specified...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
131 if (!exists $NamesAndValues{Molecule}) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
132 croak "Error: ${ClassName}->New: Object can't be instantiated without specifying molecule...";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
133 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
134 if (!exists $NamesAndValues{AtomIdentifierType}) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
135 croak "Error: ${ClassName}->New: Object can't be instantiated without specifying AtomIdentifierType...";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
136 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
137
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
138 $This->_InitializeFingerprintsVector();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
139
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
140 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
141 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
142
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
143 # Set minimum distance for atom triplets...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
144 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
145 sub SetMinDistance {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
146 my($This, $Value) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
147
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
148 if (!TextUtil::IsPositiveInteger($Value)) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
149 croak "Error: ${ClassName}->SetMinDistance: MinDistance value, $Value, is not valid: It must be a positive integer...";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
150 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
151 $This->{MinDistance} = $Value;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
152
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
153 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
154 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
155
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
156 # Set maximum distance for atom triplets...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
157 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
158 sub SetMaxDistance {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
159 my($This, $Value) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
160
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
161 if (!TextUtil::IsPositiveInteger($Value)) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
162 croak "Error: ${ClassName}->SetMaxDistance: MaxDistance value, $Value, is not valid: It must be a positive integer...";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
163 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
164 $This->{MaxDistance} = $Value;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
165
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
166 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
167 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
168
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
169 # Set atom identifier type..
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
170 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
171 sub SetAtomIdentifierType {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
172 my($This, $IdentifierType) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
173
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
174 if ($IdentifierType !~ /^(AtomicInvariantsAtomTypes|DREIDINGAtomTypes|EStateAtomTypes|FunctionalClassAtomTypes|MMFF94AtomTypes|SLogPAtomTypes|SYBYLAtomTypes|TPSAAtomTypes|UFFAtomTypes)$/i) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
175 croak "Error: ${ClassName}->SetAtomIdentifierType: Specified value, $IdentifierType, for AtomIdentifierType is not vaild. Supported types in current release of MayaChemTools: AtomicInvariantsAtomTypes, DREIDINGAtomTypes, EStateAtomTypes, FunctionalClassAtomTypes, MMFF94AtomTypes, SLogPAtomTypes, SYBYLAtomTypes, TPSAAtomTypes, and UFFAtomTypes.";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
176 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
177
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
178 if ($This->{AtomIdentifierType}) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
179 croak "Error: ${ClassName}->SeAtomIdentifierType: Can't change intial atom identifier type: It's already set...";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
180 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
181
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
182 $This->{AtomIdentifierType} = $IdentifierType;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
183
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
184 # Initialize atom identifier type information...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
185 $This->_InitializeAtomIdentifierTypeInformation();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
186
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
187 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
188 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
189
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
190 # Generate fingerprints description...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
191 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
192 sub GetDescription {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
193 my($This) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
194
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
195 # Is description explicity set?
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
196 if (exists $This->{Description}) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
197 return $This->{Description};
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
198 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
199
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
200 # Generate fingerprints description...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
201
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
202 return "$This->{Type}:$This->{AtomIdentifierType}:MinDistance$This->{MinDistance}:MaxDistance$This->{MaxDistance}";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
203 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
204
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
205 # Generate topological atom triplets fingerprints...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
206 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
207 # Let:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
208 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
209 # AT = Any of the supported atom types
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
210 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
211 # ATx = Atom type for atom x
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
212 # ATy = Atom type for atom y
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
213 # ATz = Atom type for atom z
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
214 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
215 # Dxy = Distance between Px and Py
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
216 # Dxz = Distance between Px and Pz
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
217 # Dyz = Distance between Py and Pz
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
218 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
219 # Then:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
220 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
221 # ATx-Dyz-ATy-Dxz-ATz-Dxy = Atom triplet ID for atom types ATx, ATy and Atz
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
222 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
223 # Methodology:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
224 # . Generate a distance matrix.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
225 # . Assign atom types to all the atoms.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
226 # . Using distance matrix and atom types, count occurrence of unique atom triplets
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
227 # within specified distance range along with optional trinagle inequality
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
228 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
229 # Notes:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
230 # . Hydrogen atoms are ignored during the fingerprint generation.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
231 # . For a molecule containing N atoms with all different atom type, the total number of
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
232 # possible unique atom triplets without applying triangle inquality check corresponds to:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
233 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
234 # Factorial( N ) / ( Factorial( N - 3 ) * Factorial (3) )
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
235 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
236 # However, due to similar atom types assigned to atoms in a molecule for a specific atom
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
237 # typing methodology and specified distance range used during fingerprints generation, the
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
238 # actual number of unique triplets is usually smaller than the theoretical limit.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
239 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
240 sub GenerateFingerprints {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
241 my($This) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
242
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
243 if ($This->{MinDistance} > $This->{MaxDistance}) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
244 croak "Error: ${ClassName}->GenerateTopologicalAtomTripletsFingerprints: No fingerpritns generated: MinDistance, $This->{MinDistance}, must be <= MaxDistance, $This->{MaxDistance}...";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
245 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
246
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
247 # Cache appropriate molecule data...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
248 $This->_SetupMoleculeDataCache();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
249
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
250 # Generate distance matrix...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
251 if (!$This->_SetupDistanceMatrix()) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
252 carp "Warning: ${ClassName}->GenerateFingerprints: $This->{AtomIdentifierType} fingerprints generation didn't succeed: Couldn't generate distance matrix...";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
253 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
254 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
255
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
256 # Assign atom types to all heavy atoms...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
257 if (!$This->_AssignAtomTypes()) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
258 carp "Warning: ${ClassName}->GenerateFingerprints: $This->{AtomIdentifierType} fingerprints generation didn't succeed: Couldn't assign valid $This->{AtomIdentifierType} to all atoms...";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
259 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
260 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
261
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
262 # Intialize values of toplogical atom triplets...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
263 $This->_InitializeToplogicalAtomTriplets();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
264
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
265 # Count atom triplets...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
266 $This->_GenerateAndCountAtomTriplets();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
267
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
268 # Set final fingerprints...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
269 $This->_SetFinalFingerprints();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
270
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
271 # Clear cached molecule data...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
272 $This->_ClearMoleculeDataCache();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
273
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
274 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
275 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
276
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
277 # Setup distance matrix...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
278 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
279 sub _SetupDistanceMatrix {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
280 my($This) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
281
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
282 $This->{DistanceMatrix} = $This->GetMolecule()->GetDistanceMatrix();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
283
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
284 if (!$This->{DistanceMatrix}) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
285 return undef;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
286 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
287
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
288 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
289 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
290
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
291 # Assign appropriate atom types to all heavy atoms...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
292 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
293 sub _AssignAtomTypes {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
294 my($This) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
295 my($SpecifiedAtomTypes, $Atom, $AtomID, $IgnoreHydrogens);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
296
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
297 %{$This->{AssignedAtomTypes}} = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
298 $IgnoreHydrogens = 1;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
299
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
300 $SpecifiedAtomTypes = undef;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
301
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
302 IDENTIFIERTYPE: {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
303 if ($This->{AtomIdentifierType} =~ /^AtomicInvariantsAtomTypes$/i) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
304 $SpecifiedAtomTypes = new AtomTypes::AtomicInvariantsAtomTypes('Molecule' => $This->{Molecule}, 'IgnoreHydrogens' => $IgnoreHydrogens, 'AtomicInvariantsToUse' => $This->{AtomicInvariantsToUse});
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
305 last IDENTIFIERTYPE;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
306 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
307
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
308 if ($This->{AtomIdentifierType} =~ /^DREIDINGAtomTypes$/i) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
309 $SpecifiedAtomTypes = new AtomTypes::DREIDINGAtomTypes('Molecule' => $This->{Molecule}, 'IgnoreHydrogens' => $IgnoreHydrogens);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
310 last IDENTIFIERTYPE;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
311 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
312
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
313 if ($This->{AtomIdentifierType} =~ /^EStateAtomTypes$/i) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
314 $SpecifiedAtomTypes = new AtomTypes::EStateAtomTypes('Molecule' => $This->{Molecule}, 'IgnoreHydrogens' => $IgnoreHydrogens);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
315 last IDENTIFIERTYPE;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
316 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
317
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
318 if ($This->{AtomIdentifierType} =~ /^FunctionalClassAtomTypes$/i) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
319 $SpecifiedAtomTypes = new AtomTypes::FunctionalClassAtomTypes('Molecule' => $This->{Molecule}, 'IgnoreHydrogens' => $IgnoreHydrogens, 'FunctionalClassesToUse' => $This->{FunctionalClassesToUse});
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
320 last IDENTIFIERTYPE;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
321 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
322
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
323 if ($This->{AtomIdentifierType} =~ /^MMFF94AtomTypes$/i) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
324 $SpecifiedAtomTypes = new AtomTypes::MMFF94AtomTypes('Molecule' => $This->{Molecule}, 'IgnoreHydrogens' => $IgnoreHydrogens);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
325 last IDENTIFIERTYPE;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
326 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
327
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
328 if ($This->{AtomIdentifierType} =~ /^SLogPAtomTypes$/i) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
329 $SpecifiedAtomTypes = new AtomTypes::SLogPAtomTypes('Molecule' => $This->{Molecule}, 'IgnoreHydrogens' => $IgnoreHydrogens);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
330 last IDENTIFIERTYPE;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
331 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
332 if ($This->{AtomIdentifierType} =~ /^SYBYLAtomTypes$/i) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
333 $SpecifiedAtomTypes = new AtomTypes::SYBYLAtomTypes('Molecule' => $This->{Molecule}, 'IgnoreHydrogens' => $IgnoreHydrogens);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
334 last IDENTIFIERTYPE;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
335 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
336
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
337 if ($This->{AtomIdentifierType} =~ /^TPSAAtomTypes$/i) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
338 $SpecifiedAtomTypes = new AtomTypes::TPSAAtomTypes('Molecule' => $This->{Molecule}, 'IgnorePhosphorus' => 0, 'IgnoreSulfur' => 0);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
339 last IDENTIFIERTYPE;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
340 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
341
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
342 if ($This->{AtomIdentifierType} =~ /^UFFAtomTypes$/i) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
343 $SpecifiedAtomTypes = new AtomTypes::UFFAtomTypes('Molecule' => $This->{Molecule}, 'IgnoreHydrogens' => $IgnoreHydrogens);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
344 last IDENTIFIERTYPE;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
345 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
346
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
347 croak "Error: ${ClassName}->_AssignAtomTypes: Unknown atom indentifier type $This->{AtomIdentifierType}...";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
348 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
349
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
350 # Assign atom types...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
351 $SpecifiedAtomTypes->AssignAtomTypes();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
352
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
353 # Make sure atom types assignment is successful...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
354 if (!$SpecifiedAtomTypes->IsAtomTypesAssignmentSuccessful()) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
355 return undef;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
356 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
357
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
358 # Collect assigned atom types...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
359 ATOM: for $Atom (@{$This->{Atoms}}) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
360 if ($Atom->IsHydrogen()) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
361 next ATOM;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
362 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
363 $AtomID = $Atom->GetID();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
364 $This->{AssignedAtomTypes}{$AtomID} = $SpecifiedAtomTypes->GetAtomType($Atom);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
365 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
366
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
367 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
368 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
369
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
370 # Initialize topological atom triplets between specified distance range...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
371 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
372 sub _InitializeToplogicalAtomTriplets {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
373 my($This) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
374 my($Distance);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
375
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
376 @{$This->{AtomTripletsIDs}} = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
377 %{$This->{AtomTripletsCount}} = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
378
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
379 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
380 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
381
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
382 # Count atom triplets between mininum and maximum distance at each
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
383 # distance using distance matrix and atom types assiged to each heavy
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
384 # atom.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
385 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
386 sub _GenerateAndCountAtomTriplets {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
387 my($This) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
388 my($NumOfAtoms, $AtomIndex1, $AtomIndex2, $AtomIndex3, $AtomID1, $AtomID2, $AtomID3, $AtomType1, $AtomType2, $AtomType3, $Distance12, $Distance13, $Distance23, $SkipIndexCheck, $DistanceMatrix, $AtomTripletID);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
389
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
390 $NumOfAtoms = @{$This->{Atoms}};
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
391 $DistanceMatrix = $This->{DistanceMatrix};
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
392 $SkipIndexCheck = 0;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
393
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
394 ATOMINDEX1: for $AtomIndex1 (0 .. ($NumOfAtoms - 1)) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
395 $AtomID1 = $This->{AtomIndexToID}{$AtomIndex1};
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
396 if (!exists($This->{AssignedAtomTypes}{$AtomID1})) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
397 next ATOMINDEX1;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
398 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
399 $AtomType1 = $This->{AssignedAtomTypes}{$AtomID1};
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
400
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
401 ATOMINDEX2: for $AtomIndex2 (($AtomIndex1 + 1) .. ($NumOfAtoms - 1)) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
402 $AtomID2 = $This->{AtomIndexToID}{$AtomIndex2};
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
403 if (!exists($This->{AssignedAtomTypes}{$AtomID2})) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
404 next ATOMINDEX2;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
405 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
406 $AtomType2 = $This->{AssignedAtomTypes}{$AtomID2};
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
407
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
408 $Distance12 = $DistanceMatrix->GetValue($AtomIndex1, $AtomIndex2, $SkipIndexCheck);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
409 if ($Distance12 < $This->{MinDistance} || $Distance12 > $This->{MaxDistance}) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
410 next ATOMINDEX2;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
411 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
412
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
413 ATOMINDEX3: for $AtomIndex3 (($AtomIndex2 + 1) .. ($NumOfAtoms - 1)) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
414 $AtomID3 = $This->{AtomIndexToID}{$AtomIndex3};
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
415 if (!exists($This->{AssignedAtomTypes}{$AtomID3})) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
416 next ATOMINDEX3;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
417 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
418 $AtomType3 = $This->{AssignedAtomTypes}{$AtomID3};
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
419
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
420 $Distance13 = $DistanceMatrix->GetValue($AtomIndex1, $AtomIndex3, $SkipIndexCheck);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
421 $Distance23 = $DistanceMatrix->GetValue($AtomIndex2, $AtomIndex3, $SkipIndexCheck);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
422
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
423 if ($Distance13 < $This->{MinDistance} || $Distance13 > $This->{MaxDistance}) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
424 next ATOMINDEX3;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
425 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
426 if ($Distance23 < $This->{MinDistance} || $Distance23 > $This->{MaxDistance}) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
427 next ATOMINDEX3;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
428 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
429 if ($This->{UseTriangleInequality} && !$This->_DoDistancesSatisfyTriangleInequality($Distance12, $Distance13, $Distance23)) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
430 next ATOMINDEX3;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
431 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
432
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
433 $AtomTripletID = $This->_GetAtomTripletID($AtomType1, $Distance23, $AtomType2, $Distance13, $AtomType3, $Distance12);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
434 if (!exists $This->{AtomTripletsCount}{$AtomTripletID}) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
435 $This->{AtomTripletsCount}{$AtomTripletID} = 0;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
436 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
437 $This->{AtomTripletsCount}{$AtomTripletID} += 1;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
438 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
439 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
440 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
441 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
442 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
443
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
444 # Check triangle inequality...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
445 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
446 sub _DoDistancesSatisfyTriangleInequality {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
447 my($This, $Distance1, $Distance2, $Distance3) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
448
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
449 if ( !($Distance1 > abs($Distance2 - $Distance3) && $Distance1 < ($Distance2 + $Distance3)) ) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
450 return 0;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
451 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
452 if ( !($Distance2 > abs($Distance1 - $Distance3) && $Distance2 < ($Distance1 + $Distance3)) ) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
453 return 0;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
454 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
455 if ( !($Distance3 > abs($Distance1 - $Distance2) && $Distance3 < ($Distance1 + $Distance2)) ) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
456 return 0;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
457 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
458 return 1;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
459 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
460
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
461 # Get atom triplet ID corresponding to atom types and distances corresponding to atom triplet...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
462 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
463 sub _GetAtomTripletID {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
464 my($This, $ATx, $Dyz, $ATy, $Dxz, $ATz, $Dxy) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
465 my($AtomTripletID, @AtomIDs);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
466
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
467 @AtomIDs = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
468
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
469 @AtomIDs = sort("${ATx}-D${Dyz}", "${ATy}-D${Dxz}", "${ATz}-D${Dxy}");
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
470 $AtomTripletID = join "-", @AtomIDs;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
471
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
472 return $AtomTripletID;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
473 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
474
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
475 # Set final fingerpritns vector...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
476 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
477 sub _SetFinalFingerprints {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
478 my($This) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
479 my($AtomTripletID, $Value, @Values);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
480
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
481 # Mark successful generation of fingerprints...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
482 $This->{FingerprintsGenerated} = 1;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
483
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
484 @Values = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
485 @{$This->{AtomTripletsIDs}} = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
486
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
487 for $AtomTripletID (sort keys %{$This->{AtomTripletsCount}}) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
488 push @{$This->{AtomTripletsIDs}}, $AtomTripletID;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
489 $Value = $This->{AtomTripletsCount}{$AtomTripletID};
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
490 push @Values, $Value;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
491 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
492
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
493 # Add AtomTripletsIDs and values to fingerprint vector...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
494 $This->{FingerprintsVector}->AddValueIDs(\@{$This->{AtomTripletsIDs}});
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
495 $This->{FingerprintsVector}->AddValues(\@Values);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
496
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
497 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
498 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
499
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
500 # Get atom triplet IDs corresponding to atom triplets count values in fingerprint
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
501 # vector as an array or reference to an array...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
502 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
503 # AtomTripletIDs list differes in molecules and is generated during finalization
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
504 # of fingerprints to make sure the fingerprint vector containing count values
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
505 # matches the atom triplets array.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
506 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
507 sub GetAtomTripletIDs {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
508 my($This) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
509
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
510 return wantarray ? @{$This->{AtomTripletsIDs}} : \@{$This->{AtomTripletsIDs}};
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
511 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
512
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
513 # Cache appropriate molecule data...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
514 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
515 sub _SetupMoleculeDataCache {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
516 my($This) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
517
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
518 # Get all atoms including hydrogens to correctly map atom indices to atom IDs for
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
519 # usage of distance matrix. The hydrogen atoms are ignored during processing...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
520 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
521 @{$This->{Atoms}} = $This->GetMolecule()->GetAtoms();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
522
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
523 # Get all atom IDs...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
524 my(@AtomIDs);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
525 @AtomIDs = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
526 @AtomIDs = map { $_->GetID() } @{$This->{Atoms}};
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
527
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
528 # Set AtomIndex to AtomID hash...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
529 %{$This->{AtomIndexToID}} = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
530 @{$This->{AtomIndexToID}}{ (0 .. $#AtomIDs) } = @AtomIDs;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
531
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
532 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
533 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
534
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
535 # Set atomic invariants to use for atom identifiers...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
536 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
537 sub SetAtomicInvariantsToUse {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
538 my($This, @Values) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
539 my($FirstValue, $TypeOfFirstValue, $AtomicInvariant, $SpecifiedAtomicInvariant, $AtomicInvariantValue, @SpecifiedAtomicInvariants, @AtomicInvariantsToUse);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
540
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
541 if (!@Values) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
542 carp "Warning: ${ClassName}->SetAtomicInvariantsToUse: No values specified...";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
543 return;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
544 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
545
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
546 $FirstValue = $Values[0];
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
547 $TypeOfFirstValue = ref $FirstValue;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
548
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
549 @SpecifiedAtomicInvariants = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
550 @AtomicInvariantsToUse = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
551
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
552 if ($TypeOfFirstValue =~ /^ARRAY/) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
553 push @SpecifiedAtomicInvariants, @{$FirstValue};
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
554 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
555 else {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
556 push @SpecifiedAtomicInvariants, @Values;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
557 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
558
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
559 # Make sure specified AtomicInvariants are valid...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
560 for $SpecifiedAtomicInvariant (@SpecifiedAtomicInvariants) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
561 if (!AtomTypes::AtomicInvariantsAtomTypes::IsAtomicInvariantAvailable($SpecifiedAtomicInvariant)) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
562 croak "Error: ${ClassName}->SetAtomicInvariantsToUse: Specified atomic invariant, $SpecifiedAtomicInvariant, is not supported...\n ";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
563 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
564 $AtomicInvariant = $SpecifiedAtomicInvariant;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
565 push @AtomicInvariantsToUse, $AtomicInvariant;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
566 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
567
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
568 # Set atomic invariants to use...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
569 @{$This->{AtomicInvariantsToUse}} = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
570 push @{$This->{AtomicInvariantsToUse}}, @AtomicInvariantsToUse;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
571
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
572 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
573 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
574
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
575 # Set functional classes to use for atom identifiers...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
576 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
577 sub SetFunctionalClassesToUse {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
578 my($This, @Values) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
579 my($FirstValue, $TypeOfFirstValue, $FunctionalClass, $SpecifiedFunctionalClass, @SpecifiedFunctionalClasses, @FunctionalClassesToUse);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
580
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
581 if (!@Values) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
582 carp "Warning: ${ClassName}->SetFunctionalClassesToUse: No values specified...";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
583 return;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
584 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
585
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
586 if ($This->{AtomIdentifierType} !~ /^FunctionalClassAtomTypes$/i) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
587 carp "Warning: ${ClassName}->SetFunctionalClassesToUse: FunctionalClassesToUse can't be set for InitialAtomIdentifierType of $This->{AtomIdentifierType}...";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
588 return;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
589 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
590
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
591 $FirstValue = $Values[0];
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
592 $TypeOfFirstValue = ref $FirstValue;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
593
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
594 @SpecifiedFunctionalClasses = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
595 @FunctionalClassesToUse = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
596
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
597 if ($TypeOfFirstValue =~ /^ARRAY/) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
598 push @SpecifiedFunctionalClasses, @{$FirstValue};
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
599 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
600 else {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
601 push @SpecifiedFunctionalClasses, @Values;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
602 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
603
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
604 # Make sure specified FunctionalClasses are valid...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
605 for $SpecifiedFunctionalClass (@SpecifiedFunctionalClasses) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
606 if (!AtomTypes::FunctionalClassAtomTypes::IsFunctionalClassAvailable($SpecifiedFunctionalClass)) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
607 croak "Error: ${ClassName}->SetFunctionalClassesToUse: Specified functional class, $SpecifiedFunctionalClass, is not supported...\n ";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
608 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
609 push @FunctionalClassesToUse, $SpecifiedFunctionalClass;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
610 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
611
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
612 # Set functional classes to use...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
613 @{$This->{FunctionalClassesToUse}} = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
614 push @{$This->{FunctionalClassesToUse}}, @FunctionalClassesToUse;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
615
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
616 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
617 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
618
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
619 # Initialize atom indentifier type information...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
620 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
621 # Current supported values:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
622 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
623 # AtomicInvariantsAtomTypes, DREIDINGAtomTypes, EStateAtomTypes, FunctionalClassAtomTypes,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
624 # MMFF94AtomTypes, SLogPAtomTypes, SYBYLAtomTypes, TPSAAtomTypes, UFFAtomTypes
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
625 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
626 sub _InitializeAtomIdentifierTypeInformation {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
627 my($This) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
628
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
629 if ($This->{AtomIdentifierType} =~ /^AtomicInvariantsAtomTypes$/i) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
630 $This->_InitializeAtomicInvariantsAtomTypesInformation();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
631 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
632 elsif ($This->{AtomIdentifierType} =~ /^FunctionalClassAtomTypes$/i) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
633 $This->_InitializeFunctionalClassAtomTypesInformation();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
634 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
635 elsif ($This->{AtomIdentifierType} =~ /^(DREIDINGAtomTypes|EStateAtomTypes|MMFF94AtomTypes|SLogPAtomTypes|SYBYLAtomTypes|TPSAAtomTypes|UFFAtomTypes)$/i) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
636 # Nothing to do for now...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
637 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
638 else {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
639 croak "Error: ${ClassName}->_InitializeAtomIdentifierTypeInformation: Unknown atom indentifier type $This->{AtomIdentifierType}...";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
640 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
641
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
642 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
643 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
644
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
645 # Initialize atomic invariants atom types to use for generating atom IDs in atom triplets...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
646 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
647 # Let:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
648 # AS = Atom symbol corresponding to element symbol
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
649 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
650 # X<n> = Number of non-hydrogen atom neighbors or heavy atoms attached to atom
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
651 # BO<n> = Sum of bond orders to non-hydrogen atom neighbors or heavy atoms attached to atom
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
652 # LBO<n> = Largest bond order of non-hydrogen atom neighbors or heavy atoms attached to atom
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
653 # SB<n> = Number of single bonds to non-hydrogen atom neighbors or heavy atoms attached to atom
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
654 # DB<n> = Number of double bonds to non-hydrogen atom neighbors or heavy atoms attached to atom
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
655 # TB<n> = Number of triple bonds to non-hydrogen atom neighbors or heavy atoms attached to atom
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
656 # H<n> = Number of implicit and explicit hydrogens for atom
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
657 # Ar = Aromatic annotation indicating whether atom is aromatic
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
658 # RA = Ring atom annotation indicating whether atom is a ring
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
659 # FC<+n/-n> = Formal charge assigned to atom
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
660 # MN<n> = Mass number indicating isotope other than most abundant isotope
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
661 # SM<n> = Spin multiplicity of atom. Possible values: 1 (singlet), 2 (doublet) or 3 (triplet)
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
662 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
663 # ATx = Atomic invariants atom type for atom x
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
664 # ATy = Atomic invariants atom type for atom y
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
665 # ATz = Atomic invariants atom type for atom z
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
666 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
667 # Dxy = Distance between Px and Py
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
668 # Dxz = Distance between Px and Pz
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
669 # Dyz = Distance between Py and Pz
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
670 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
671 # Then:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
672 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
673 # Atom triplet AtomID generated by AtomTypes::AtomicInvariantsAtomTypes class corresponds to:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
674 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
675 # AS.X<n>.BO<n>.LBO<n>.<SB><n>.<DB><n>.<TB><n>.H<n>.Ar.RA.FC<+n/-n>.MN<n>.SM<n>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
676 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
677 # Toplogical atom triplet ID between atom IDs ATx, ATy and ATz corresponds to:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
678 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
679 # ATx-Dyz-ATy-Dxz-ATz-Dxy
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
680 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
681 # Except for AS which is a required atomic invariant in atom triplet AtomIDs, all other atomic invariants are
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
682 # optional. Default atomic invariants used for AtomID are: AS, X<n>, BO<n>, H<n>, FC<+n/-n>.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
683 # AtomID specification doesn't include atomic invariants with zero or undefined values.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
684 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
685 # Examples of atom triplet AtomIDs:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
686 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
687 # O.X1.BO1.H1 - Hydroxyl oxygen in carboxylate with attached hydrogen and no explicit charge
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
688 # O.X1.BO1.FC-1 - Hydroxyl ozygen in carboxylate with explicit negative charge
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
689 # O.X1.BO2 - Carbonyl oxygen in carboxylate with double bond to carbon
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
690 # O.X2.BO2 - Hydroxyl ozygen in carboxylate attached to carbonyl carbon and another heavy atom
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
691 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
692 # C.X2.BO3.H1.Ar - Aromatic carbon
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
693 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
694 sub _InitializeAtomicInvariantsAtomTypesInformation {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
695 my($This) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
696
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
697 # Default atomic invariants to use for generating atom triplet atom IDs: AS, X, BO, H, FC
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
698 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
699 @{$This->{AtomicInvariantsToUse}} = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
700 @{$This->{AtomicInvariantsToUse}} = ('AS', 'X', 'BO', 'H', 'FC');
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
701
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
702 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
703 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
704
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
705 # Initialize functional class atom types, generated by AtomTypes::FunctionalClassAtomTypes
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
706 # class, to use for generating atom identifiers...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
707 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
708 # Let:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
709 # HBD: HydrogenBondDonor
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
710 # HBA: HydrogenBondAcceptor
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
711 # PI : PositivelyIonizable
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
712 # NI : NegativelyIonizable
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
713 # Ar : Aromatic
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
714 # Hal : Halogen
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
715 # H : Hydrophobic
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
716 # RA : RingAtom
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
717 # CA : ChainAtom
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
718 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
719 # Then:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
720 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
721 # Functiononal class atom type specification for an atom corresponds to:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
722 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
723 # Ar.CA.H.HBA.HBD.Hal.NI.PI.RA
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
724 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
725 # Default functional classes used are: HBD, HBA, PI, NI, Ar, Hal
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
726 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
727 # FunctionalAtomTypes are assigned using the following definitions [ Ref 60-61, Ref 65-66 ]:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
728 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
729 # HydrogenBondDonor: NH, NH2, OH
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
730 # HydrogenBondAcceptor: N[!H], O
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
731 # PositivelyIonizable: +, NH2
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
732 # NegativelyIonizable: -, C(=O)OH, S(=O)OH, P(=O)OH
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
733 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
734 sub _InitializeFunctionalClassAtomTypesInformation {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
735 my($This) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
736
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
737 # Default functional class atom typess to use for generating atom identifiers
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
738 # are: HBD, HBA, PI, NI, Ar, Hal
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
739 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
740 @{$This->{FunctionalClassesToUse}} = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
741 @{$This->{FunctionalClassesToUse}} = ('HBD', 'HBA', 'PI', 'NI', 'Ar', 'Hal');
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
742
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
743 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
744 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
745
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
746 # Clear cached molecule data...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
747 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
748 sub _ClearMoleculeDataCache {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
749 my($This) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
750
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
751 @{$This->{Atoms}} = ();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
752
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
753 return $This;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
754 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
755
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
756 # Return a string containg data for TopologicalAtomTripletsFingerprints object...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
757 #
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
758 sub StringifyTopologicalAtomTripletsFingerprints {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
759 my($This) = @_;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
760 my($FingerprintsString);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
761
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
762 # Type of fingerprint...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
763 $FingerprintsString = "Fingerprint type: $This->{Type}; AtomIdentifierType: $This->{AtomIdentifierType}";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
764
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
765 # Min and max distance...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
766 $FingerprintsString .= "; MinDistance: $This->{MinDistance}; MaxDistance: $This->{MaxDistance}; UseTriangleInequality: " . ($This->{UseTriangleInequality} ? "Yes" : "No");
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
767
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
768 if ($This->{AtomIdentifierType} =~ /^AtomicInvariantsAtomTypes$/i) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
769 my($AtomicInvariant, @AtomicInvariants, @AtomicInvariantsOrder, %AvailableAtomicInvariants);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
770
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
771 @AtomicInvariantsOrder = AtomTypes::AtomicInvariantsAtomTypes::GetAtomicInvariantsOrder();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
772 %AvailableAtomicInvariants = AtomTypes::AtomicInvariantsAtomTypes::GetAvailableAtomicInvariants();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
773
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
774 for $AtomicInvariant (@AtomicInvariantsOrder) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
775 push @AtomicInvariants, "$AtomicInvariant: $AvailableAtomicInvariants{$AtomicInvariant}";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
776 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
777
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
778 $FingerprintsString .= "; AtomicInvariantsToUse: <" . TextUtil::JoinWords(\@{$This->{AtomicInvariantsToUse}}, ", ", 0) . ">";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
779 $FingerprintsString .= "; AtomicInvariantsOrder: <" . TextUtil::JoinWords(\@AtomicInvariantsOrder, ", ", 0) . ">";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
780 $FingerprintsString .= "; AvailableAtomicInvariants: <" . TextUtil::JoinWords(\@AtomicInvariants, ", ", 0) . ">";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
781 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
782 elsif ($This->{AtomIdentifierType} =~ /^FunctionalClassAtomTypes$/i) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
783 my($FunctionalClass, @FunctionalClasses, @FunctionalClassesOrder, %AvailableFunctionalClasses);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
784
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
785 @FunctionalClassesOrder = AtomTypes::FunctionalClassAtomTypes::GetFunctionalClassesOrder();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
786 %AvailableFunctionalClasses = AtomTypes::FunctionalClassAtomTypes::GetAvailableFunctionalClasses();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
787
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
788 for $FunctionalClass (@FunctionalClassesOrder) {
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
789 push @FunctionalClasses, "$FunctionalClass: $AvailableFunctionalClasses{$FunctionalClass}";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
790 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
791
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
792 $FingerprintsString .= "; FunctionalClassesToUse: <" . TextUtil::JoinWords(\@{$This->{FunctionalClassesToUse}}, ", ", 0) . ">";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
793 $FingerprintsString .= "; FunctionalClassesOrder: <" . TextUtil::JoinWords(\@FunctionalClassesOrder, ", ", 0) . ">";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
794 $FingerprintsString .= "; AvailableFunctionalClasses: <" . TextUtil::JoinWords(\@FunctionalClasses, ", ", 0) . ">";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
795 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
796
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
797 # Total number of atom triplets...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
798 $FingerprintsString .= "; NumOfAtomTriplets: " . $This->{FingerprintsVector}->GetNumOfValues();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
799
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
800 # FingerprintsVector...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
801 $FingerprintsString .= "; FingerprintsVector: < $This->{FingerprintsVector} >";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
802
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
803 return $FingerprintsString;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
804 }
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
805
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
806 1;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
807
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
808 __END__
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
809
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
810 =head1 NAME
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
811
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
812 TopologicalAtomTripletsFingerprints
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
813
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
814 =head1 SYNOPSIS
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
815
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
816 use Fingerprints::TopologicalAtomTripletsFingerprints;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
817
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
818 use Fingerprints::TopologicalAtomTripletsFingerprints qw(:all);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
819
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
820 =head1 DESCRIPTION
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
821
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
822 B<TopologicalAtomTripletsFingerprints> [ Ref 57, Ref 59, Ref 72 ] class provides the following methods:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
823
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
824 new, GenerateFingerprints, GetAtomTripletIDs, GetDescription,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
825 SetAtomIdentifierType, SetAtomicInvariantsToUse, SetFunctionalClassesToUse,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
826 SetMaxDistance, SetMinDistance, StringifyTopologicalAtomTripletsFingerprints
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
827
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
828 B<TopologicalAtomTripletsFingerprints> is derived from B<Fingerprints> class which in turn
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
829 is derived from B<ObjectProperty> base class that provides methods not explicitly defined
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
830 in B<TopologicalAtomTripletsFingerprints>, B<Fingerprints> or B<ObjectProperty> classes using Perl's
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
831 AUTOLOAD functionality. These methods are generated on-the-fly for a specified object property:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
832
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
833 Set<PropertyName>(<PropertyValue>);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
834 $PropertyValue = Get<PropertyName>();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
835 Delete<PropertyName>();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
836
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
837 The current release of MayaChemTools supports generation of B<TopologicalAtomTripletsFingerprints>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
838 corresponding to following B<AtomtomIdentifierTypes>:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
839
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
840 AtomicInvariantsAtomTypes, DREIDINGAtomTypes, EStateAtomTypes,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
841 FunctionalClassAtomTypes, MMFF94AtomTypes, SLogPAtomTypes,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
842 SYBYLAtomTypes, TPSAAtomTypes, UFFAtomTypes
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
843
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
844 Based on the values specified for B<AtomIdentifierType> along with other specified
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
845 parameters such as B<AtomicInvariantsToUse> and B<FunctionalClassesToUse>, initial
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
846 atom types are assigned to all non-hydrogen atoms in a molecule. Using the distance
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
847 matrix for the molecule and initial atom types assigned to non-hydrogen atoms, all unique atom
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
848 triplets within B<MinDistance> and B<MaxDistance> are identified and counted. An atom triplet
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
849 identifier is generated for each unique atom triplet; the format of atom triplet identifier is:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
850
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
851 <ATx>-Dyz-<ATy>-Dxz-<ATz>-Dxy
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
852
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
853 ATx, ATy, ATz: Atom types assigned to atom x, atom y, and atom z
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
854 Dxy: Distance between atom x and atom y
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
855 Dxz: Distance between atom x and atom z
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
856 Dyz: Distance between atom y and atom z
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
857
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
858 where <AT1>-D23 <= <AT2>-D13 <= <AT3>-D12
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
859
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
860 The atom triplet identifiers for all unique atom triplets corresponding to non-hydrogen atoms constitute
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
861 topological atom triplets fingerprints of the molecule.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
862
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
863 The current release of MayaChemTools generates the following types of topological atom triplets
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
864 fingerprints vector strings:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
865
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
866 FingerprintsVector;TopologicalAtomTriplets:AtomicInvariantsAtomTypes:M
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
867 inDistance1:MaxDistance10;3096;NumericalValues;IDsAndValuesString;C.X1
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
868 .BO1.H3-D1-C.X1.BO1.H3-D1-C.X3.BO3.H1-D2 C.X1.BO1.H3-D1-C.X2.BO2.H2-D1
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
869 0-C.X3.BO4-D9 C.X1.BO1.H3-D1-C.X2.BO2.H2-D3-N.X3.BO3-D4 C.X1.BO1.H3-D1
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
870 -C.X2.BO2.H2-D4-C.X2.BO2.H2-D5 C.X1.BO1.H3-D1-C.X2.BO2.H2-D6-C.X3....;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
871 1 2 2 2 2 2 2 2 8 8 4 8 4 4 2 2 2 2 4 2 2 2 4 2 2 2 2 1 2 2 4 4 4 2 2
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
872 2 4 4 4 8 4 4 2 4 4 4 2 4 4 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 8...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
873
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
874 FingerprintsVector;TopologicalAtomTriplets:AtomicInvariantsAtomTypes:M
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
875 inDistance1:MaxDistance10;3096;NumericalValues;IDsAndValuesPairsString
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
876 ;C.X1.BO1.H3-D1-C.X1.BO1.H3-D1-C.X3.BO3.H1-D2 1 C.X1.BO1.H3-D1-C.X2.BO
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
877 2.H2-D10-C.X3.BO4-D9 2 C.X1.BO1.H3-D1-C.X2.BO2.H2-D3-N.X3.BO3-D4 2 C.X
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
878 1.BO1.H3-D1-C.X2.BO2.H2-D4-C.X2.BO2.H2-D5 2 C.X1.BO1.H3-D1-C.X2.BO2.H2
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
879 -D6-C.X3.BO3.H1-D5 2 C.X1.BO1.H3-D1-C.X2.BO2.H2-D6-C.X3.BO3.H1-D7 2...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
880
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
881 FingerprintsVector;TopologicalAtomTriplets:DREIDINGAtomTypes:MinDistan
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
882 ce1:MaxDistance10;2377;NumericalValues;IDsAndValuesString;C_2-D1-C_2-D
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
883 9-C_3-D10 C_2-D1-C_2-D9-C_R-D10 C_2-D1-C_3-D1-C_3-D2 C_2-D1-C_3-D10-C_
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
884 3-D9 C_2-D1-C_3-D2-C_3-D3 C_2-D1-C_3-D2-C_R-D3 C_2-D1-C_3-D3-C_3-D4 C_
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
885 2-D1-C_3-D3-N_R-D4 C_2-D1-C_3-D3-O_3-D2 C_2-D1-C_3-D4-C_3-D5 C_2-D...;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
886 1 1 1 2 1 1 3 1 1 2 2 1 1 1 1 1 1 1 1 2 1 3 4 5 1 1 6 4 2 2 3 1 1 1 2
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
887 2 1 2 1 1 2 2 2 1 2 1 2 1 1 3 3 2 6 4 2 1 1 1 2 2 1 1 1 1 1 1 1 1 1...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
888
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
889 FingerprintsVector;TopologicalAtomTriplets:EStateAtomTypes:MinDistance
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
890 1:MaxDistance10;3298;NumericalValues;IDsAndValuesString;aaCH-D1-aaCH-D
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
891 1-aaCH-D2 aaCH-D1-aaCH-D1-aasC-D2 aaCH-D1-aaCH-D10-aaCH-D9 aaCH-D1-aaC
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
892 H-D10-aasC-D9 aaCH-D1-aaCH-D2-aaCH-D3 aaCH-D1-aaCH-D2-aasC-D1 aaCH-D1-
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
893 aaCH-D2-aasC-D3 aaCH-D1-aaCH-D3-aasC-D2 aaCH-D1-aaCH-D4-aasC-D5 aa...;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
894 6 4 24 4 16 8 8 4 8 8 8 12 10 14 4 16 24 4 12 2 2 4 1 10 2 2 15 2 2 2
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
895 2 2 2 14 4 2 2 2 2 1 2 10 2 2 4 1 2 4 8 3 3 3 4 6 4 2 2 3 3 1 1 1 2 1
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
896 2 2 4 2 3 2 1 2 4 5 3 2 2 1 2 4 3 2 8 12 6 2 2 4 4 7 1 4 2 4 2 2 2 ...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
897
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
898 FingerprintsVector;TopologicalAtomTriplets:FunctionalClassAtomTypes:Mi
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
899 nDistance1:MaxDistance10;2182;NumericalValues;IDsAndValuesString;Ar-D1
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
900 -Ar-D1-Ar-D2 Ar-D1-Ar-D1-Ar.HBA-D2 Ar-D1-Ar-D10-Ar-D9 Ar-D1-Ar-D10-Hal
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
901 -D9 Ar-D1-Ar-D2-Ar-D2 Ar-D1-Ar-D2-Ar-D3 Ar-D1-Ar-D2-Ar.HBA-D1 Ar-D1-Ar
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
902 -D2-Ar.HBA-D2 Ar-D1-Ar-D2-Ar.HBA-D3 Ar-D1-Ar-D2-HBD-D1 Ar-D1-Ar-D2...;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
903 27 1 32 2 2 63 3 2 1 2 1 2 3 1 1 40 3 1 2 2 2 2 4 2 2 47 4 2 2 1 2 1 5
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
904 2 2 51 4 3 1 3 1 9 1 1 50 3 3 4 1 9 50 2 2 3 3 5 45 1 1 1 2 1 2 2 3 3
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
905 4 4 3 2 1 1 3 4 5 5 3 1 2 3 2 3 5 7 2 7 3 7 1 1 2 2 2 2 3 1 4 3 1 2...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
906
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
907 FingerprintsVector;TopologicalAtomTriplets:MMFF94AtomTypes:MinDistance
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
908 1:MaxDistance10;2966;NumericalValues;IDsAndValuesString;C5A-D1-C5A-D1-
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
909 N5-D2 C5A-D1-C5A-D2-C5B-D2 C5A-D1-C5A-D3-CB-D2 C5A-D1-C5A-D3-CR-D2 C5A
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
910 -D1-C5B-D1-C5B-D2 C5A-D1-C5B-D2-C=ON-D1 C5A-D1-C5B-D2-CB-D1 C5A-D1-C5B
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
911 -D3-C=ON-D2 C5A-D1-C5B-D3-CB-D2 C5A-D1-C=ON-D3-NC=O-D2 C5A-D1-C=ON-D3-
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
912 O=CN-D2 C5A-D1-C=ON-D4-NC=O-D3 C5A-D1-C=ON-D4-O=CN-D3 C5A-D1-CB-D1-...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
913
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
914 FingerprintsVector;TopologicalAtomTriplets:SLogPAtomTypes:MinDistance1
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
915 :MaxDistance10;3710;NumericalValues;IDsAndValuesString;C1-D1-C1-D1-C11
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
916 -D2 C1-D1-C1-D1-CS-D2 C1-D1-C1-D10-C5-D9 C1-D1-C1-D3-C10-D2 C1-D1-C1-D
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
917 3-C5-D2 C1-D1-C1-D3-CS-D2 C1-D1-C1-D3-CS-D4 C1-D1-C1-D4-C10-D5 C1-D1-C
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
918 1-D4-C11-D5 C1-D1-C1-D5-C10-D4 C1-D1-C1-D5-C5-D4 C1-D1-C1-D6-C11-D7 C1
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
919 -D1-C1-D6-CS-D5 C1-D1-C1-D6-CS-D7 C1-D1-C1-D8-C11-D9 C1-D1-C1-D8-CS...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
920
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
921 FingerprintsVector;TopologicalAtomTriplets:SYBYLAtomTypes:MinDistance1
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
922 :MaxDistance10;2332;NumericalValues;IDsAndValuesString;C.2-D1-C.2-D9-C
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
923 .3-D10 C.2-D1-C.2-D9-C.ar-D10 C.2-D1-C.3-D1-C.3-D2 C.2-D1-C.3-D10-C.3-
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
924 D9 C.2-D1-C.3-D2-C.3-D3 C.2-D1-C.3-D2-C.ar-D3 C.2-D1-C.3-D3-C.3-D4 C.2
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
925 -D1-C.3-D3-N.ar-D4 C.2-D1-C.3-D3-O.3-D2 C.2-D1-C.3-D4-C.3-D5 C.2-D1-C.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
926 3-D5-C.3-D6 C.2-D1-C.3-D5-O.3-D4 C.2-D1-C.3-D6-C.3-D7 C.2-D1-C.3-D7...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
927
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
928 FingerprintsVector;TopologicalAtomTriplets:TPSAAtomTypes:MinDistance1:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
929 MaxDistance10;1007;NumericalValues;IDsAndValuesString;N21-D1-N7-D3-Non
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
930 e-D4 N21-D1-N7-D5-None-D4 N21-D1-None-D1-None-D2 N21-D1-None-D2-None-D
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
931 2 N21-D1-None-D2-None-D3 N21-D1-None-D3-None-D4 N21-D1-None-D4-None-D5
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
932 N21-D1-None-D4-O3-D3 N21-D1-None-D4-O4-D3 N21-D1-None-D5-None-D6 N21-
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
933 D1-None-D6-None-D7 N21-D1-None-D6-O4-D5 N21-D1-None-D7-None-D8 N21-...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
934
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
935 FingerprintsVector;TopologicalAtomTriplets:UFFAtomTypes:MinDistance1:M
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
936 axDistance10;2377;NumericalValues;IDsAndValuesString;C_2-D1-C_2-D9-C_3
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
937 -D10 C_2-D1-C_2-D9-C_R-D10 C_2-D1-C_3-D1-C_3-D2 C_2-D1-C_3-D10-C_3-D9
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
938 C_2-D1-C_3-D2-C_3-D3 C_2-D1-C_3-D2-C_R-D3 C_2-D1-C_3-D3-C_3-D4 C_2-D1-
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
939 C_3-D3-N_R-D4 C_2-D1-C_3-D3-O_3-D2 C_2-D1-C_3-D4-C_3-D5 C_2-D1-C_3-D5-
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
940 C_3-D6 C_2-D1-C_3-D5-O_3-D4 C_2-D1-C_3-D6-C_3-D7 C_2-D1-C_3-D7-C_3-...
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
941
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
942 =head2 METHODS
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
943
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
944 =over 4
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
945
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
946 =item B<new>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
947
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
948 $NewTopologicalAtomTripletsFingerprints = new TopologicalAtomTripletsFingerprints(
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
949 %NamesAndValues);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
950
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
951 Using specified I<TopologicalAtomTripletsFingerprints> property names and values hash, B<new>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
952 method creates a new object and returns a reference to newly created B<TopologicalAtomTripletsFingerprints>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
953 object. By default, the following properties are initialized:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
954
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
955 Molecule = ''
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
956 Type = 'TopologicalAtomTriplets'
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
957 MinDistance = 1
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
958 MaxDistance = 10
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
959 UseTriangleInequality = 1
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
960 AtomIdentifierType = ''
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
961 AtomicInvariantsToUse = ['AS', 'X', 'BO', 'H', 'FC']
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
962 FunctionalClassesToUse = ['HBD', 'HBA', 'PI', 'NI', 'Ar', 'Hal']
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
963
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
964 Examples:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
965
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
966 $TopologicalAtomTripletsFingerprints = new TopologicalAtomTripletsFingerprints(
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
967 'Molecule' => $Molecule,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
968 'AtomIdentifierType' =>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
969 'AtomicInvariantsAtomTypes');
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
970
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
971 $TopologicalAtomTripletsFingerprints = new TopologicalAtomTripletsFingerprints(
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
972 'Molecule' => $Molecule,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
973 'MinDistance' => 1,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
974 'MaxDistance' => 10,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
975 'AtomIdentifierType' =>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
976 'AtomicInvariantsAtomTypes',
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
977 'AtomicInvariantsToUse' =>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
978 ['AS', 'X', 'BO', 'H', 'FC'] );
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
979
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
980 $TopologicalAtomTripletsFingerprints = new TopologicalAtomTripletsFingerprints(
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
981 'Molecule' => $Molecule,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
982 'AtomIdentifierType' =>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
983 'DREIDINGAtomTypes');
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
984
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
985 $TopologicalAtomTripletsFingerprints = new TopologicalAtomTripletsFingerprints(
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
986 'Molecule' => $Molecule,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
987 'AtomIdentifierType' =>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
988 'MMFF94AtomTypes');
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
989
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
990 $TopologicalAtomTripletsFingerprints = new TopologicalAtomTripletsFingerprints(
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
991 'Molecule' => $Molecule,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
992 'AtomIdentifierType' =>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
993 'TPSAAtomTypes');
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
994
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
995 $TopologicalAtomTripletsFingerprints = new TopologicalAtomTripletsFingerprints(
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
996 'Molecule' => $Molecule,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
997 'MinDistance' => 1,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
998 'MaxDistance' => 10,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
999 'AtomIdentifierType' =>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1000 'FunctionalClassAtomTypes',
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1001 'FunctionalClassesToUse' =>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1002 ['HBD', 'HBA', 'PI', 'NI', 'Ar', 'Hal']);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1003
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1004 $TopologicalAtomTripletsFingerprints->GenerateFingerprints();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1005 print "$TopologicalAtomTripletsFingerprints\n";
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1006
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1007 =item B<GetDescription>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1008
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1009 $Return = $TopologicalAtomTripletsFingerprints->GetDescription();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1010
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1011 Returns a string containing description of topological atom triplets fingerprints.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1012
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1013 =item B<GenerateFingerprints>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1014
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1015 $TopologicalAtomTripletsFingerprints->GenerateFingerprints();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1016
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1017 Generates topological atom triplets fingerprints and returns I<TopologicalAtomTripletsFingerprints>.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1018
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1019 =item B<GetAtomTripletIDs>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1020
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1021 $AtomTripletIDsRef = $TopologicalAtomTripletsFingerprints->GetAtomTripletIDs();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1022 @AtomTripletIDs = $TopologicalAtomTripletsFingerprints->GetAtomTripletIDs();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1023
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1024 Returns atom triplet IDs corresponding to atom triplets count values in topological atom triplets
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1025 fingerprints vector as an array or reference to an array.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1026
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1027 =item B<SetAtomIdentifierType>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1028
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1029 $TopologicalAtomTripletsFingerprints->SetAtomIdentifierType($IdentifierType);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1030
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1031 Sets atom I<IdentifierType> to use during atom triplets fingerprints generation and
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1032 returns I<TopologicalAtomTripletsFingerprints>.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1033
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1034 Possible values: I<AtomicInvariantsAtomTypes, DREIDINGAtomTypes, EStateAtomTypes,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1035 FunctionalClassAtomTypes, MMFF94AtomTypes, SLogPAtomTypes, SYBYLAtomTypes,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1036 TPSAAtomTypes, UFFAtomTypes>.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1037
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1038 =item B<SetAtomicInvariantsToUse>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1039
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1040 $TopologicalAtomTripletsFingerprints->SetAtomicInvariantsToUse($ValuesRef);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1041 $TopologicalAtomTripletsFingerprints->SetAtomicInvariantsToUse(@Values);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1042
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1043 Sets atomic invariants to use during I<AtomicInvariantsAtomTypes> value of I<AtomIdentifierType>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1044 for topological atom triplets fingerprints generation and returns I<TopologicalAtomTripletsFingerprints>.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1045
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1046 Possible values for atomic invariants are: I<AS, X, BO, LBO, SB, DB, TB,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1047 H, Ar, RA, FC, MN, SM>. Default value: I<AS,X,BO,H,FC>.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1048
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1049 The atomic invariants abbreviations correspond to:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1050
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1051 AS = Atom symbol corresponding to element symbol
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1052
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1053 X<n> = Number of non-hydrogen atom neighbors or heavy atoms
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1054 BO<n> = Sum of bond orders to non-hydrogen atom neighbors or heavy atoms
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1055 LBO<n> = Largest bond order of non-hydrogen atom neighbors or heavy atoms
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1056 SB<n> = Number of single bonds to non-hydrogen atom neighbors or heavy atoms
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1057 DB<n> = Number of double bonds to non-hydrogen atom neighbors or heavy atoms
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1058 TB<n> = Number of triple bonds to non-hydrogen atom neighbors or heavy atoms
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1059 H<n> = Number of implicit and explicit hydrogens for atom
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1060 Ar = Aromatic annotation indicating whether atom is aromatic
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1061 RA = Ring atom annotation indicating whether atom is a ring
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1062 FC<+n/-n> = Formal charge assigned to atom
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1063 MN<n> = Mass number indicating isotope other than most abundant isotope
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1064 SM<n> = Spin multiplicity of atom. Possible values: 1 (singlet), 2 (doublet) or
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1065 3 (triplet)
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1066
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1067 Atom type generated by AtomTypes::AtomicInvariantsAtomTypes class corresponds to:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1068
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1069 AS.X<n>.BO<n>.LBO<n>.<SB><n>.<DB><n>.<TB><n>.H<n>.Ar.RA.FC<+n/-n>.MN<n>.SM<n>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1070
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1071 Except for AS which is a required atomic invariant in atom types, all other atomic invariants are
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1072 optional. Atom type specification doesn't include atomic invariants with zero or undefined values.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1073
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1074 In addition to usage of abbreviations for specifying atomic invariants, the following descriptive words
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1075 are also allowed:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1076
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1077 X : NumOfNonHydrogenAtomNeighbors or NumOfHeavyAtomNeighbors
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1078 BO : SumOfBondOrdersToNonHydrogenAtoms or SumOfBondOrdersToHeavyAtoms
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1079 LBO : LargestBondOrderToNonHydrogenAtoms or LargestBondOrderToHeavyAtoms
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1080 SB : NumOfSingleBondsToNonHydrogenAtoms or NumOfSingleBondsToHeavyAtoms
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1081 DB : NumOfDoubleBondsToNonHydrogenAtoms or NumOfDoubleBondsToHeavyAtoms
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1082 TB : NumOfTripleBondsToNonHydrogenAtoms or NumOfTripleBondsToHeavyAtoms
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1083 H : NumOfImplicitAndExplicitHydrogens
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1084 Ar : Aromatic
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1085 RA : RingAtom
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1086 FC : FormalCharge
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1087 MN : MassNumber
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1088 SM : SpinMultiplicity
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1089
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1090 I<AtomTypes::AtomicInvariantsAtomTypes> module is used to assign atomic invariant
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1091 atom types.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1092
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1093 =item B<SetFunctionalClassesToUse>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1094
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1095 $TopologicalTripletsFingerprints->SetFunctionalClassesToUse($ValuesRef);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1096 $TopologicalTripletsFingerprints->SetFunctionalClassesToUse(@Values);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1097
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1098 Sets functional classes invariants to use during I<FunctionalClassAtomTypes> value of I<AtomIdentifierType>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1099 for topological atom triplets fingerprints generation and returns I<TopologicalAtomTripletsFingerprints>.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1100
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1101 Possible values for atom functional classes are: I<Ar, CA, H, HBA, HBD, Hal, NI, PI, RA>.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1102 Default value [ Ref 24 ]: I<HBD,HBA,PI,NI,Ar,Hal>.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1103
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1104 The functional class abbreviations correspond to:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1105
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1106 HBD: HydrogenBondDonor
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1107 HBA: HydrogenBondAcceptor
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1108 PI : PositivelyIonizable
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1109 NI : NegativelyIonizable
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1110 Ar : Aromatic
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1111 Hal : Halogen
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1112 H : Hydrophobic
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1113 RA : RingAtom
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1114 CA : ChainAtom
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1115
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1116 Functional class atom type specification for an atom corresponds to:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1117
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1118 Ar.CA.H.HBA.HBD.Hal.NI.PI.RA or None
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1119
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1120 I<AtomTypes::FunctionalClassAtomTypes> module is used to assign functional class atom
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1121 types. It uses following definitions [ Ref 60-61, Ref 65-66 ]:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1122
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1123 HydrogenBondDonor: NH, NH2, OH
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1124 HydrogenBondAcceptor: N[!H], O
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1125 PositivelyIonizable: +, NH2
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1126 NegativelyIonizable: -, C(=O)OH, S(=O)OH, P(=O)OH
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1127
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1128 =item B<SetMaxDistance>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1129
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1130 $TopologicalAtomTripletsFingerprints->SetMaxDistance($Distance);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1131
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1132 Sets maximum distance to use during topological atom triplets fingerprints generation and
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1133 returns I<TopologicalAtomTripletsFingerprints>.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1134
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1135 =item B<SetMinDistance>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1136
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1137 $TopologicalAtomTripletsFingerprints->SetMinDistance($Distance);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1138
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1139 Sets minimum distance to use during topological atom triplets fingerprints generation and
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1140 returns I<TopologicalAtomTripletsFingerprints>.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1141
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1142 =item B<StringifyTopologicalAtomTripletsFingerprints>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1143
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1144 $String = $TopologicalAtomTripletsFingerprints->
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1145 StringifyTopologicalAtomTripletsFingerprints();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1146
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1147 Returns a string containing information about I<TopologicalAtomTripletsFingerprints> object.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1148
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1149 =back
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1150
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1151 =head1 AUTHOR
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1152
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1153 Manish Sud <msud@san.rr.com>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1154
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1155 =head1 SEE ALSO
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1156
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1157 Fingerprints.pm, FingerprintsStringUtil.pm, AtomNeighborhoodsFingerprints.pm,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1158 AtomTypesFingerprints.pm, EStateIndiciesFingerprints.pm, ExtendedConnectivityFingerprints.pm,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1159 MACCSKeys.pm, PathLengthFingerprints.pm, TopologicalAtomPairsFingerprints.pm,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1160 TopologicalAtomTorsionsFingerprints.pm, TopologicalPharmacophoreAtomPairsFingerprints.pm,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1161 TopologicalPharmacophoreAtomTripletsFingerprints.pm
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1162
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1163 =head1 COPYRIGHT
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1164
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1165 Copyright (C) 2015 Manish Sud. All rights reserved.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1166
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1167 This file is part of MayaChemTools.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1168
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1169 MayaChemTools is free software; you can redistribute it and/or modify it under
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1170 the terms of the GNU Lesser General Public License as published by the Free
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1171 Software Foundation; either version 3 of the License, or (at your option)
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1172 any later version.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1173
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1174 =cut