annotate lib/Fingerprints/TopologicalAtomTripletsFingerprints.pm @ 0:4816e4a8ae95 draft default tip

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