annotate lib/Fingerprints/TopologicalAtomTorsionsFingerprints.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::TopologicalAtomTorsionsFingerprints;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
2 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
3 # $RCSfile: TopologicalAtomTorsionsFingerprints.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.26 $
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 '""' => 'StringifyTopologicalAtomTorsionsFingerprints';
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->_InitializeTopologicalAtomTorsionsFingerprints();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
68
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
69 $This->_InitializeTopologicalAtomTorsionsFingerprintsProperties(%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 _InitializeTopologicalAtomTorsionsFingerprints {
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} = 'TopologicalAtomTorsions';
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 # Atom identifier type to use for atom IDs in atom torsions...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
89 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
90 # Currently supported values are: AtomicInvariantsAtomTypes, DREIDINGAtomTypes,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
91 # EStateAtomTypes, FunctionalClassAtomTypes, MMFF94AtomTypes, SLogPAtomTypes,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
92 # SYBYLAtomTypes, TPSAAtomTypes, UFFAtomTypes
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
93 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
94 $This->{AtomIdentifierType} = '';
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
95
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
96 # Atom types assigned to each heavy atom...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
97 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
98 %{$This->{AssignedAtomTypes}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
99
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
100 # Final unique atom torsions...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
101 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
102 @{$This->{AtomTorsionsIDs}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
103 %{$This->{AtomTorsionsCount}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
104 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
105
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
106 # Initialize class ...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
107 sub _InitializeClass {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
108 #Class name...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
109 $ClassName = __PACKAGE__;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
110 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
111
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
112 # Initialize object properties....
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
113 sub _InitializeTopologicalAtomTorsionsFingerprintsProperties {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
114 my($This, %NamesAndValues) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
115
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
116 my($Name, $Value, $MethodName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
117 while (($Name, $Value) = each %NamesAndValues) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
118 $MethodName = "Set${Name}";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
119 $This->$MethodName($Value);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
120 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
121
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
122 # Make sure molecule object was specified...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
123 if (!exists $NamesAndValues{Molecule}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
124 croak "Error: ${ClassName}->New: Object can't be instantiated without specifying molecule...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
125 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
126 if (!exists $NamesAndValues{AtomIdentifierType}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
127 croak "Error: ${ClassName}->New: Object can't be instantiated without specifying AtomIdentifierType...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
128 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
129
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
130 $This->_InitializeFingerprintsVector();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
131
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
132 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
133 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
134
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
135 # Set atom identifier type..
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
136 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
137 sub SetAtomIdentifierType {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
138 my($This, $IdentifierType) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
139
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
140 if ($IdentifierType !~ /^(AtomicInvariantsAtomTypes|DREIDINGAtomTypes|EStateAtomTypes|FunctionalClassAtomTypes|MMFF94AtomTypes|SLogPAtomTypes|SYBYLAtomTypes|TPSAAtomTypes|UFFAtomTypes)$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
141 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
142 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
143
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
144 if ($This->{AtomIdentifierType}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
145 croak "Error: ${ClassName}->SeAtomIdentifierType: Can't change intial atom identifier type: It's already set...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
146 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
147
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
148 $This->{AtomIdentifierType} = $IdentifierType;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
149
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
150 # Initialize atom identifier type information...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
151 $This->_InitializeAtomIdentifierTypeInformation();
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 # Generate fingerprints description...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
157 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
158 sub GetDescription {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
159 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
160
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
161 # Is description explicity set?
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
162 if (exists $This->{Description}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
163 return $This->{Description};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
164 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
165
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
166 # Generate fingerprints description...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
167
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
168 return "$This->{Type}:$This->{AtomIdentifierType}";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
169 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
170
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
171 # Generate topological atom torsions [ Ref 58, Ref 72 ] fingerprints...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
172 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
173 # Methodology:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
174 # . Assign atom types to all the atoms.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
175 # . Generate and count atom torsions.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
176 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
177 # Notes:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
178 # . Hydrogen atoms are ignored during the fingerprint generation.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
179 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
180 sub GenerateFingerprints {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
181 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
182
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
183 # Cache appropriate molecule data...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
184 $This->_SetupMoleculeDataCache();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
185
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
186 # Assign atom types to all heavy atoms...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
187 if (!$This->_AssignAtomTypes()) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
188 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
189 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
190 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
191
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
192 # Count atom torsions...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
193 $This->_GenerateAndCountAtomTorsions();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
194
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
195 # Set final fingerprints...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
196 $This->_SetFinalFingerprints();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
197
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
198 # Clear cached molecule data...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
199 $This->_ClearMoleculeDataCache();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
200
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
201 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
202 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
203
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
204 # Assign appropriate atom types to all heavy atoms...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
205 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
206 sub _AssignAtomTypes {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
207 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
208 my($SpecifiedAtomTypes, $Atom, $AtomID, $IgnoreHydrogens);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
209
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
210 %{$This->{AssignedAtomTypes}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
211 $IgnoreHydrogens = 1;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
212
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
213 $SpecifiedAtomTypes = undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
214
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
215 IDENTIFIERTYPE: {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
216 if ($This->{AtomIdentifierType} =~ /^AtomicInvariantsAtomTypes$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
217 $SpecifiedAtomTypes = new AtomTypes::AtomicInvariantsAtomTypes('Molecule' => $This->{Molecule}, 'IgnoreHydrogens' => $IgnoreHydrogens, 'AtomicInvariantsToUse' => $This->{AtomicInvariantsToUse});
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
218 last IDENTIFIERTYPE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
219 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
220
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
221 if ($This->{AtomIdentifierType} =~ /^DREIDINGAtomTypes$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
222 $SpecifiedAtomTypes = new AtomTypes::DREIDINGAtomTypes('Molecule' => $This->{Molecule}, 'IgnoreHydrogens' => $IgnoreHydrogens);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
223 last IDENTIFIERTYPE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
224 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
225
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
226 if ($This->{AtomIdentifierType} =~ /^EStateAtomTypes$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
227 $SpecifiedAtomTypes = new AtomTypes::EStateAtomTypes('Molecule' => $This->{Molecule}, 'IgnoreHydrogens' => $IgnoreHydrogens);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
228 last IDENTIFIERTYPE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
229 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
230
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
231 if ($This->{AtomIdentifierType} =~ /^FunctionalClassAtomTypes$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
232 $SpecifiedAtomTypes = new AtomTypes::FunctionalClassAtomTypes('Molecule' => $This->{Molecule}, 'IgnoreHydrogens' => $IgnoreHydrogens, 'FunctionalClassesToUse' => $This->{FunctionalClassesToUse});
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
233 last IDENTIFIERTYPE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
234 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
235
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
236 if ($This->{AtomIdentifierType} =~ /^MMFF94AtomTypes$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
237 $SpecifiedAtomTypes = new AtomTypes::MMFF94AtomTypes('Molecule' => $This->{Molecule}, 'IgnoreHydrogens' => $IgnoreHydrogens);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
238 last IDENTIFIERTYPE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
239 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
240
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
241 if ($This->{AtomIdentifierType} =~ /^SLogPAtomTypes$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
242 $SpecifiedAtomTypes = new AtomTypes::SLogPAtomTypes('Molecule' => $This->{Molecule}, 'IgnoreHydrogens' => $IgnoreHydrogens);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
243 last IDENTIFIERTYPE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
244 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
245 if ($This->{AtomIdentifierType} =~ /^SYBYLAtomTypes$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
246 $SpecifiedAtomTypes = new AtomTypes::SYBYLAtomTypes('Molecule' => $This->{Molecule}, 'IgnoreHydrogens' => $IgnoreHydrogens);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
247 last IDENTIFIERTYPE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
248 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
249
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
250 if ($This->{AtomIdentifierType} =~ /^TPSAAtomTypes$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
251 $SpecifiedAtomTypes = new AtomTypes::TPSAAtomTypes('Molecule' => $This->{Molecule}, 'IgnorePhosphorus' => 0, 'IgnoreSulfur' => 0);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
252 last IDENTIFIERTYPE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
253 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
254
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
255 if ($This->{AtomIdentifierType} =~ /^UFFAtomTypes$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
256 $SpecifiedAtomTypes = new AtomTypes::UFFAtomTypes('Molecule' => $This->{Molecule}, 'IgnoreHydrogens' => $IgnoreHydrogens);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
257 last IDENTIFIERTYPE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
258 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
259
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
260 croak "Error: ${ClassName}->_AssignAtomTypes: Unknown atom indentifier type $This->{AtomIdentifierType}...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
261 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
262
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
263 # Assign atom types...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
264 $SpecifiedAtomTypes->AssignAtomTypes();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
265
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
266 # Make sure atom types assignment is successful...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
267 if (!$SpecifiedAtomTypes->IsAtomTypesAssignmentSuccessful()) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
268 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
269 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
270
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
271 # Collect assigned atom types...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
272 ATOM: for $Atom (@{$This->{Atoms}}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
273 if ($Atom->IsHydrogen()) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
274 next ATOM;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
275 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
276 $AtomID = $Atom->GetID();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
277 $This->{AssignedAtomTypes}{$AtomID} = $SpecifiedAtomTypes->GetAtomType($Atom);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
278 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
279
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
280 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
281 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
282
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
283 # Count atom torsions involving non-hydrogen atoms by going over the structurally
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
284 # unique atom torsions...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
285 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
286 sub _GenerateAndCountAtomTorsions {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
287 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
288 my($Atom1, $Atom2, $Atom3, $Atom4, $AtomID1, $AtomID2, $AtomID3, $AtomID4, $AtomTorsionID, @Atom1Neighbors, @Atom2Neighbors, @Atom3Neighbors);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
289
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
290 # Setup a hash to track structurally unique atom torsions by atom IDs...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
291 %{$This->{StructurallyUniqueAtomTorsions}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
292
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
293 ATOM1: for $Atom1 (@{$This->{Atoms}}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
294 if ($Atom1->IsHydrogen()) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
295 next ATOM1;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
296 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
297 $AtomID1 = $Atom1->GetID();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
298 # Go over Atom1 neighbors other than Atom1...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
299 @Atom1Neighbors = $Atom1->GetNeighbors($Atom1);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
300 ATOM2: for $Atom2 (@Atom1Neighbors) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
301 if ($Atom2->IsHydrogen()) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
302 next ATOM2;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
303 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
304 $AtomID2 = $Atom2->GetID();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
305 # Go over Atom2 neighbors other than Atom1 and Atom2...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
306 @Atom2Neighbors = $Atom2->GetNeighbors($Atom1, $Atom2);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
307 ATOM3: for $Atom3 (@Atom2Neighbors) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
308 if ($Atom3->IsHydrogen()) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
309 next ATOM3;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
310 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
311 $AtomID3 = $Atom3->GetID();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
312 @Atom3Neighbors = $Atom3->GetNeighbors($Atom1, $Atom2, $Atom3);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
313 # Go over Atom3 neighbors other than Atom1, Atom2 and Atom3...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
314 ATOM4: for $Atom4 (@Atom3Neighbors) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
315 if ($Atom4->IsHydrogen()) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
316 next ATOM4;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
317 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
318 $AtomID4 = $Atom4->GetID();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
319
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
320 # Is it a structurally unique torsion?
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
321 if (!$This->_IsStructurallyUniqueTorsion($AtomID1, $AtomID2, $AtomID3, $AtomID4)) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
322 next ATOM4;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
323 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
324
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
325 # Track structurally unique torsions...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
326 $AtomTorsionID = $This->_GetAtomTorsionID($AtomID1, $AtomID2, $AtomID3, $AtomID4);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
327 if (exists $This->{AtomTorsionsCount}{$AtomTorsionID}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
328 $This->{AtomTorsionsCount}{$AtomTorsionID} += 1;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
329 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
330 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
331 $This->{AtomTorsionsCount}{$AtomTorsionID} = 1;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
332 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
333 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
334 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
335 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
336 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
337
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
338 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
339 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
340
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
341 # Is it a structurally unique torsions?
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
342 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
343 # Notes:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
344 # . For a torsion to be structurally unique which hasn't already been encountered,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
345 # all the four atoms involved in the torsion must be new atoms. And this can be
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
346 # simply implemented by tracking the torsions using atom IDs and maintaining a
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
347 # hash of already encountered torsions using lexicographically smaller torsion ID
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
348 # consisting of four atom IDs.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
349 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
350 sub _IsStructurallyUniqueTorsion {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
351 my($This, @AtomIDs) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
352 my($TorsionID, $ReverseTorsionID);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
353
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
354 $TorsionID = join "-", @AtomIDs;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
355 $ReverseTorsionID = join "-", reverse @AtomIDs;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
356
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
357 # Use lexicographically smaller string...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
358 if ($ReverseTorsionID lt $TorsionID) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
359 $TorsionID = $ReverseTorsionID;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
360 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
361
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
362 if (exists $This->{StructurallyUniqueAtomTorsions}{$TorsionID}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
363 return 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
364 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
365
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
366 # Keep track...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
367 $This->{StructurallyUniqueAtomTorsions}{$TorsionID} = 1;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
368
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
369 return 1;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
370 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
371
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
372 # Get atom torsion ID corresponding to atom types involved in torsion...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
373 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
374 # Notes:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
375 # . TorsionID corresponds to assigned atom types of all the four torsion atoms
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
376 # concatenated by hyphen.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
377 # . TorsionIDs are generated for both forward and backward sequence of atoms
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
378 # in the torsion and keeping the lexicographically smaller TorsionID to keep TorsionID
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
379 # independent of atom ordering.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
380 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
381 sub _GetAtomTorsionID {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
382 my($This, @AtomIDs) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
383 my($AtomTorsionID, $ReverseAtomTorsionID, @AtomTypes);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
384
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
385 @AtomTypes = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
386 @AtomTypes = map { $This->{AssignedAtomTypes}{$_} } @AtomIDs;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
387
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
388 $AtomTorsionID = join "-", @AtomTypes;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
389 $ReverseAtomTorsionID = join "-", reverse @AtomTypes;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
390
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
391 # Use lexicographically smaller string as ID...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
392 return ($ReverseAtomTorsionID lt $AtomTorsionID) ? $ReverseAtomTorsionID : $AtomTorsionID;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
393 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
394
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
395 # Set final fingerpritns vector...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
396 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
397 sub _SetFinalFingerprints {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
398 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
399 my($AtomTorsionID, $Value, @Values);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
400
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
401 # Mark successful generation of fingerprints...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
402 $This->{FingerprintsGenerated} = 1;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
403
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
404 @Values = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
405 @{$This->{AtomTorsionsIDs}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
406
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
407 for $AtomTorsionID (sort keys %{$This->{AtomTorsionsCount}}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
408 $Value = $This->{AtomTorsionsCount}{$AtomTorsionID};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
409 push @{$This->{AtomTorsionsIDs}}, $AtomTorsionID;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
410 push @Values, $Value;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
411 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
412
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
413 # Add AtomPairsIDs and values to fingerprint vector...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
414 $This->{FingerprintsVector}->AddValueIDs(\@{$This->{AtomTorsionsIDs}});
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
415 $This->{FingerprintsVector}->AddValues(\@Values);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
416
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
417 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
418 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
419
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
420 # Get atom torsions IDs corresponding to atom torsions count values in fingerprint
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
421 # vector as an array or reference to an array...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
422 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
423 # AtomTorsionsIDs list differes in molecules and is generated during finalization
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
424 # of fingerprints to make sure the fingerprint vector containing count values
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
425 # matches the atom torsions array.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
426 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
427 sub GetAtomTorsionsIDs {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
428 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
429
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
430 return wantarray ? @{$This->{AtomTorsionsIDs}} : \@{$This->{AtomTorsionsIDs}};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
431 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
432
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
433 # Cache appropriate molecule data...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
434 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
435 sub _SetupMoleculeDataCache {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
436 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
437
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
438 # Get all atoms including hydrogens. The hydrogen atoms are ignored during processing...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
439 @{$This->{Atoms}} = $This->GetMolecule()->GetAtoms();
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 # Clear cached molecule data...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
445 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
446 sub _ClearMoleculeDataCache {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
447 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
448
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
449 @{$This->{Atoms}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
450
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
451 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
452 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
453
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
454 # Set atomic invariants to use for atom identifiers...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
455 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
456 sub SetAtomicInvariantsToUse {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
457 my($This, @Values) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
458 my($FirstValue, $TypeOfFirstValue, $AtomicInvariant, $SpecifiedAtomicInvariant, $AtomicInvariantValue, @SpecifiedAtomicInvariants, @AtomicInvariantsToUse);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
459
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
460 if (!@Values) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
461 carp "Warning: ${ClassName}->SetAtomicInvariantsToUse: No values specified...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
462 return;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
463 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
464
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
465 $FirstValue = $Values[0];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
466 $TypeOfFirstValue = ref $FirstValue;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
467
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
468 @SpecifiedAtomicInvariants = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
469 @AtomicInvariantsToUse = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
470
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
471 if ($TypeOfFirstValue =~ /^ARRAY/) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
472 push @SpecifiedAtomicInvariants, @{$FirstValue};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
473 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
474 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
475 push @SpecifiedAtomicInvariants, @Values;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
476 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
477
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
478 # Make sure specified AtomicInvariants are valid...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
479 for $SpecifiedAtomicInvariant (@SpecifiedAtomicInvariants) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
480 if (!AtomTypes::AtomicInvariantsAtomTypes::IsAtomicInvariantAvailable($SpecifiedAtomicInvariant)) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
481 croak "Error: ${ClassName}->SetAtomicInvariantsToUse: Specified atomic invariant, $SpecifiedAtomicInvariant, is not supported...\n ";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
482 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
483 $AtomicInvariant = $SpecifiedAtomicInvariant;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
484 push @AtomicInvariantsToUse, $AtomicInvariant;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
485 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
486
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
487 # Set atomic invariants to use...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
488 @{$This->{AtomicInvariantsToUse}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
489 push @{$This->{AtomicInvariantsToUse}}, @AtomicInvariantsToUse;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
490
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
491 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
492 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
493
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
494 # Set functional classes to use for atom identifiers...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
495 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
496 sub SetFunctionalClassesToUse {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
497 my($This, @Values) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
498 my($FirstValue, $TypeOfFirstValue, $FunctionalClass, $SpecifiedFunctionalClass, @SpecifiedFunctionalClasses, @FunctionalClassesToUse);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
499
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
500 if (!@Values) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
501 carp "Warning: ${ClassName}->SetFunctionalClassesToUse: No values specified...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
502 return;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
503 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
504
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
505 if ($This->{AtomIdentifierType} !~ /^FunctionalClassAtomTypes$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
506 carp "Warning: ${ClassName}->SetFunctionalClassesToUse: FunctionalClassesToUse can't be set for InitialAtomIdentifierType of $This->{AtomIdentifierType}...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
507 return;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
508 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
509
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
510 $FirstValue = $Values[0];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
511 $TypeOfFirstValue = ref $FirstValue;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
512
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
513 @SpecifiedFunctionalClasses = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
514 @FunctionalClassesToUse = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
515
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
516 if ($TypeOfFirstValue =~ /^ARRAY/) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
517 push @SpecifiedFunctionalClasses, @{$FirstValue};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
518 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
519 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
520 push @SpecifiedFunctionalClasses, @Values;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
521 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
522
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
523 # Make sure specified FunctionalClasses are valid...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
524 for $SpecifiedFunctionalClass (@SpecifiedFunctionalClasses) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
525 if (!AtomTypes::FunctionalClassAtomTypes::IsFunctionalClassAvailable($SpecifiedFunctionalClass)) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
526 croak "Error: ${ClassName}->SetFunctionalClassesToUse: Specified functional class, $SpecifiedFunctionalClass, is not supported...\n ";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
527 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
528 push @FunctionalClassesToUse, $SpecifiedFunctionalClass;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
529 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
530
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
531 # Set functional classes to use...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
532 @{$This->{FunctionalClassesToUse}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
533 push @{$This->{FunctionalClassesToUse}}, @FunctionalClassesToUse;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
534
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
535 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
536 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
537
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
538 # Initialize atom indentifier type information...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
539 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
540 # Current supported values:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
541 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
542 # AtomicInvariantsAtomTypes, DREIDINGAtomTypes, EStateAtomTypes, FunctionalClassAtomTypes,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
543 # MMFF94AtomTypes, SLogPAtomTypes, SYBYLAtomTypes, TPSAAtomTypes, UFFAtomTypes
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
544 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
545 sub _InitializeAtomIdentifierTypeInformation {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
546 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
547
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
548 if ($This->{AtomIdentifierType} =~ /^AtomicInvariantsAtomTypes$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
549 $This->_InitializeAtomicInvariantsAtomTypesInformation();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
550 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
551 elsif ($This->{AtomIdentifierType} =~ /^FunctionalClassAtomTypes$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
552 $This->_InitializeFunctionalClassAtomTypesInformation();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
553 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
554 elsif ($This->{AtomIdentifierType} =~ /^(DREIDINGAtomTypes|EStateAtomTypes|MMFF94AtomTypes|SLogPAtomTypes|SYBYLAtomTypes|TPSAAtomTypes|UFFAtomTypes)$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
555 # Nothing to do for now...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
556 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
557 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
558 croak "Error: ${ClassName}->_InitializeAtomIdentifierTypeInformation: Unknown atom indentifier type $This->{AtomIdentifierType}...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
559 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
560
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
561 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
562 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
563
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
564 # Initialize atomic invariants to use for generating atom IDs in atom torsions...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
565 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
566 # Let:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
567 # AS = Atom symbol corresponding to element symbol
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
568 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
569 # X<n> = Number of non-hydrogen atom neighbors or heavy atoms attached to atom
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
570 # BO<n> = Sum of bond orders to non-hydrogen atom neighbors or heavy atoms attached to atom
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
571 # LBO<n> = Largest bond order of non-hydrogen atom neighbors or heavy atoms attached to atom
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
572 # SB<n> = Number of single bonds to non-hydrogen atom neighbors or heavy atoms attached to atom
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
573 # DB<n> = Number of double bonds to non-hydrogen atom neighbors or heavy atoms attached to atom
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
574 # TB<n> = Number of triple bonds to non-hydrogen atom neighbors or heavy atoms attached to atom
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
575 # H<n> = Number of implicit and explicit hydrogens for atom
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
576 # Ar = Aromatic annotation indicating whether atom is aromatic
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
577 # RA = Ring atom annotation indicating whether atom is a ring
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
578 # FC<+n/-n> = Formal charge assigned to atom
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
579 # MN<n> = Mass number indicating isotope other than most abundant isotope
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
580 # SM<n> = Spin multiplicity of atom. Possible values: 1 (singlet), 2 (doublet) or 3 (triplet)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
581 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
582 # AtomTypeIDx = Atomic invariants atom type for atom x
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
583 # AtomTypeIDy = Atomic invariants atom type for atom y
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
584 # AtomTypeIDz = Atomic invariants atom type for atom z
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
585 # AtomTypeIDw = Atomic invariants atom type for atom w
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
586 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
587 # Then:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
588 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
589 # Atom torsion AtomID generated by AtomTypes::AtomicInvariantsAtomTypes class corresponds to:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
590 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
591 # 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
592 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
593 # AtomTorsion ID corresponds to:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
594 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
595 # AtomTypeIDx-AtomTypeIDy-AtomTypeIDz-AtomTypeIDw
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
596 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
597 # Except for AS which is a required atomic invariant in atom torsions AtomIDs, all other atomic invariants are
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
598 # optional. Default atomic invariants used for AtomID are: AS, X<n>, BO<n>, H<n>, FC<+n/-n>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
599 # AtomID specification doesn't include atomic invariants with zero or undefined values.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
600 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
601 # Examples of atom torsion AtomIDs in Aspirin using default atomic invariants:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
602 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
603 # C.X1.BO1.H3-C.X3.BO4-O.X2.BO2-C.X3.BO4
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
604 # C.X2.BO3.H1-C.X2.BO3.H1-C.X2.BO3.H1-C.X2.BO3.H1
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
605 # C.X3.BO4-C.X3.BO4-O.X2.BO2-C.X3.BO4
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
606 # C.X3.BO4-O.X2.BO2-C.X3.BO4-O.X1.BO2
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
607 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
608 # Examples of atom torsion AtomIDs in Aspirin using AS, X and BO atomic invariants:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
609 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
610 # C.X1.BO1-C.X3.BO4-O.X2.BO2-C.X3.BO4
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
611 # C.X2.BO3-C.X2.BO3-C.X2.BO3-C.X2.BO3
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
612 # C.X3.BO4-C.X3.BO4-O.X2.BO2-C.X3.BO4
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
613 # C.X3.BO4-O.X2.BO2-C.X3.BO4-O.X1.BO2
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
614 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
615 sub _InitializeAtomicInvariantsAtomTypesInformation {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
616 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
617
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
618 # Default atomic invariants to use for generating atom torsions atom IDs: AS, X, BO, H, FC
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
619 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
620 @{$This->{AtomicInvariantsToUse}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
621 @{$This->{AtomicInvariantsToUse}} = ('AS', 'X', 'BO', 'H', 'FC');
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
622
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
623 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
624 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
625
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
626 # Initialize functional class atom types, generated by AtomTypes::FunctionalClassAtomTypes
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
627 # class, to use for generating atom identifiers...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
628 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
629 # Let:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
630 # HBD: HydrogenBondDonor
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
631 # HBA: HydrogenBondAcceptor
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
632 # PI : PositivelyIonizable
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
633 # NI : NegativelyIonizable
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
634 # Ar : Aromatic
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
635 # Hal : Halogen
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
636 # H : Hydrophobic
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
637 # RA : RingAtom
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
638 # CA : ChainAtom
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
639 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
640 # Then:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
641 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
642 # Functiononal class atom type specification for an atom corresponds to:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
643 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
644 # Ar.CA.H.HBA.HBD.Hal.NI.PI.RA
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
645 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
646 # Default functional classes used are: HBD, HBA, PI, NI, Ar, Hal
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
647 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
648 # FunctionalAtomTypes are assigned using the following definitions [ Ref 60-61, Ref 65-66 ]:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
649 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
650 # HydrogenBondDonor: NH, NH2, OH
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
651 # HydrogenBondAcceptor: N[!H], O
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
652 # PositivelyIonizable: +, NH2
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
653 # NegativelyIonizable: -, C(=O)OH, S(=O)OH, P(=O)OH
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
654 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
655 sub _InitializeFunctionalClassAtomTypesInformation {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
656 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
657
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
658 # Default functional class atom typess to use for generating atom identifiers
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
659 # are: HBD, HBA, PI, NI, Ar, Hal
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
660 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
661 @{$This->{FunctionalClassesToUse}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
662 @{$This->{FunctionalClassesToUse}} = ('HBD', 'HBA', 'PI', 'NI', 'Ar', 'Hal');
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
663
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
664 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
665 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
666
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
667 # Return a string containg data for TopologicalAtomTorsionsFingerprints object...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
668 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
669 sub StringifyTopologicalAtomTorsionsFingerprints {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
670 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
671 my($FingerprintsString);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
672
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
673 # Type of fingerprint...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
674 $FingerprintsString = "Fingerprint type: $This->{Type}; AtomIdentifierType: $This->{AtomIdentifierType}";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
675
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
676 if ($This->{AtomIdentifierType} =~ /^AtomicInvariantsAtomTypes$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
677 my($AtomicInvariant, @AtomicInvariants, @AtomicInvariantsOrder, %AvailableAtomicInvariants);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
678
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
679 @AtomicInvariantsOrder = AtomTypes::AtomicInvariantsAtomTypes::GetAtomicInvariantsOrder();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
680 %AvailableAtomicInvariants = AtomTypes::AtomicInvariantsAtomTypes::GetAvailableAtomicInvariants();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
681
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
682 for $AtomicInvariant (@AtomicInvariantsOrder) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
683 push @AtomicInvariants, "$AtomicInvariant: $AvailableAtomicInvariants{$AtomicInvariant}";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
684 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
685
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
686 $FingerprintsString .= "; AtomicInvariantsToUse: <" . TextUtil::JoinWords(\@{$This->{AtomicInvariantsToUse}}, ", ", 0) . ">";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
687 $FingerprintsString .= "; AtomicInvariantsOrder: <" . TextUtil::JoinWords(\@AtomicInvariantsOrder, ", ", 0) . ">";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
688 $FingerprintsString .= "; AvailableAtomicInvariants: <" . TextUtil::JoinWords(\@AtomicInvariants, ", ", 0) . ">";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
689 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
690 elsif ($This->{AtomIdentifierType} =~ /^FunctionalClassAtomTypes$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
691 my($FunctionalClass, @FunctionalClasses, @FunctionalClassesOrder, %AvailableFunctionalClasses);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
692
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
693 @FunctionalClassesOrder = AtomTypes::FunctionalClassAtomTypes::GetFunctionalClassesOrder();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
694 %AvailableFunctionalClasses = AtomTypes::FunctionalClassAtomTypes::GetAvailableFunctionalClasses();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
695
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
696 for $FunctionalClass (@FunctionalClassesOrder) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
697 push @FunctionalClasses, "$FunctionalClass: $AvailableFunctionalClasses{$FunctionalClass}";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
698 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
699
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
700 $FingerprintsString .= "; FunctionalClassesToUse: <" . TextUtil::JoinWords(\@{$This->{FunctionalClassesToUse}}, ", ", 0) . ">";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
701 $FingerprintsString .= "; FunctionalClassesOrder: <" . TextUtil::JoinWords(\@FunctionalClassesOrder, ", ", 0) . ">";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
702 $FingerprintsString .= "; AvailableFunctionalClasses: <" . TextUtil::JoinWords(\@FunctionalClasses, ", ", 0) . ">";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
703 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
704
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
705 # Total number of atom torsions...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
706 $FingerprintsString .= "; NumOfAtomTorsions: " . $This->{FingerprintsVector}->GetNumOfValues();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
707
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
708 # FingerprintsVector...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
709 $FingerprintsString .= "; FingerprintsVector: < $This->{FingerprintsVector} >";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
710
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
711 return $FingerprintsString;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
712 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
713
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
714 1;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
715
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
716 __END__
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
717
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
718 =head1 NAME
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
719
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
720 TopologicalAtomTorsionsFingerprints
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
721
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
722 =head1 SYNOPSIS
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
723
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
724 use Fingerprints::TopologicalAtomTorsionsFingerprints;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
725
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
726 use Fingerprints::TopologicalAtomTorsionsFingerprints qw(:all);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
727
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
728 =head1 DESCRIPTION
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
729
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
730 B<TopologicalAtomTorsionsFingerprints> class provides the following methods:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
731
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
732 new, GenerateFingerprints, GetAtomTorsionsIDs, GetDescription,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
733 SetAtomIdentifierType, SetAtomicInvariantsToUse, SetFunctionalClassesToUse,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
734 StringifyTopologicalAtomTorsionsFingerprints
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
735
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
736 B<TopologicalAtomTorsionsFingerprints> is derived from B<Fingerprints> class which in turn
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
737 is derived from B<ObjectProperty> base class that provides methods not explicitly defined
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
738 in B<TopologicalAtomTorsionsFingerprints>, B<Fingerprints> or B<ObjectProperty> classes using Perl's
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
739 AUTOLOAD functionality. These methods are generated on-the-fly for a specified object property:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
740
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
741 Set<PropertyName>(<PropertyValue>);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
742 $PropertyValue = Get<PropertyName>();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
743 Delete<PropertyName>();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
744
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
745 The current release of MayaChemTools supports generation of B<TopologicalAtomTorsionsFingerprints>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
746 corresponding to following B<AtomtomIdentifierTypes>:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
747
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
748 AtomicInvariantsAtomTypes, DREIDINGAtomTypes, EStateAtomTypes,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
749 FunctionalClassAtomTypes, MMFF94AtomTypes, SLogPAtomTypes,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
750 SYBYLAtomTypes, TPSAAtomTypes, UFFAtomTypes
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
751
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
752 Based on the values specified for B<AtomIdentifierType> along with other specified
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
753 parameters such as B<AtomicInvariantsToUse> and B<FunctionalClassesToUse>, initial
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
754 atom types are assigned to all non-hydrogen in a molecule. All unique atom torsions
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
755 are identified and an atom torsion identifier is generated; the format of atom torsion identifier is:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
756
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
757 <AtomType1>-<AtomType2>-<AtomType3>-<AtomType4>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
758
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
759 AtomType1, AtomType2, AtomType3, AtomTyp4: Assigned atom types
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
760
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
761 where AtomType1 <= AtomType2 <= AtomType3 <= AtomType4
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
762
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
763 The atom torsion identifiers for all unique atom torsions corresponding to non-hydrogen atoms constitute
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
764 topological atom torsions fingerprints of the molecule.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
765
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
766 The current release of MayaChemTools generates the following types of topological atom torsions
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
767 fingerprints vector strings:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
768
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
769 FingerprintsVector;TopologicalAtomTorsions:AtomicInvariantsAtomTypes;3
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
770 3;NumericalValues;IDsAndValuesString;C.X1.BO1.H3-C.X3.BO3.H1-C.X3.BO4-
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
771 C.X3.BO4 C.X1.BO1.H3-C.X3.BO3.H1-C.X3.BO4-N.X3.BO3 C.X2.BO2.H2-C.X2.BO
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
772 2.H2-C.X3.BO3.H1-C.X2.BO2.H2 C.X2.BO2.H2-C.X2.BO2.H2-C.X3.BO3.H1-O...;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
773 2 2 1 1 2 2 1 1 3 4 4 8 4 2 2 6 2 2 1 2 1 1 2 1 1 2 6 2 4 2 1 3 1
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
774
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
775 FingerprintsVector;TopologicalAtomTorsions:AtomicInvariantsAtomTypes;3
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
776 3;NumericalValues;IDsAndValuesPairsString;C.X1.BO1.H3-C.X3.BO3.H1-C.X3
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
777 .BO4-C.X3.BO4 2 C.X1.BO1.H3-C.X3.BO3.H1-C.X3.BO4-N.X3.BO3 2 C.X2.BO2.H
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
778 2-C.X2.BO2.H2-C.X3.BO3.H1-C.X2.BO2.H2 1 C.X2.BO2.H2-C.X2.BO2.H2-C.X3.B
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
779 O3.H1-O.X1.BO1.H1 1 C.X2.BO2.H2-C.X2.BO2.H2-N.X3.BO3-C.X3.BO4 2 C.X2.B
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
780 O2.H2-C.X3.BO3.H1-C.X2.BO2.H2-C.X3.BO3.H1 2 C.X2.BO2.H2-C.X3.BO3.H1...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
781
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
782 FingerprintsVector;TopologicalAtomTorsions:DREIDINGAtomTypes;27;Numeri
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
783 calValues;IDsAndValuesString;C_2-C_3-C_3-C_3 C_2-C_3-C_3-O_3 C_2-C_R-C
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
784 _R-C_3 C_2-C_R-C_R-C_R C_2-C_R-C_R-N_R C_2-N_3-C_R-C_R C_3-C_3-C_2-O_2
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
785 C_3-C_3-C_2-O_3 C_3-C_3-C_3-C_3 C_3-C_3-C_3-N_R C_3-C_3-C_3-O_3 C_...;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
786 1 1 1 2 1 2 1 1 3 1 3 2 2 2 1 1 1 3 1 2 2 32 2 2 5 3 1
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
787
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
788 FingerprintsVector;TopologicalAtomTorsions:EStateAtomTypes;36;Numerica
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
789 lValues;IDsAndValuesString;aaCH-aaCH-aaCH-aaCH aaCH-aaCH-aaCH-aasC aaC
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
790 H-aaCH-aasC-aaCH aaCH-aaCH-aasC-aasC aaCH-aaCH-aasC-sF aaCH-aaCH-aasC-
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
791 ssNH aaCH-aasC-aasC-aasC aaCH-aasC-aasC-aasN aaCH-aasC-ssNH-dssC a...;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
792 4 4 8 4 2 2 6 2 2 2 4 3 2 1 3 3 2 2 2 1 2 1 1 1 2 1 1 1 1 1 1 1 2 1 1 2
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
793
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
794 FingerprintsVector;TopologicalAtomTorsions:FunctionalClassAtomTypes;26
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
795 ;NumericalValues;IDsAndValuesString;Ar-Ar-Ar-Ar Ar-Ar-Ar-Ar.HBA Ar-Ar-
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
796 Ar-HBD Ar-Ar-Ar-Hal Ar-Ar-Ar-None Ar-Ar-Ar.HBA-Ar Ar-Ar-Ar.HBA-None Ar
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
797 -Ar-HBD-None Ar-Ar-None-HBA Ar-Ar-None-HBD Ar-Ar-None-None Ar-Ar.H...;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
798 32 5 2 2 3 3 3 2 2 2 2 1 2 1 1 1 2 1 1 1 1 3 1 1 1 3
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
799
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
800 FingerprintsVector;TopologicalAtomTorsions:MMFF94AtomTypes;43;Numerica
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
801 lValues;IDsAndValuesString;C5A-C5B-C5B-C5A C5A-C5B-C5B-C=ON C5A-C5B-C5
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
802 B-CB C5A-C5B-C=ON-NC=O C5A-C5B-C=ON-O=CN C5A-C5B-CB-CB C5A-CB-CB-CB C5
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
803 A-N5-C5A-C5B C5A-N5-C5A-CB C5A-N5-C5A-CR C5A-N5-CR-CR C5B-C5A-CB-C...;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
804 1 1 1 1 1 2 2 2 1 1 2 2 2 2 1 1 2 1 1 2 1 2 1 1 1 2 1 1 1 2 18 2 2 1 1
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
805 1 1 2 1 1 3 1 3
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
806
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
807 FingerprintsVector;TopologicalAtomTorsions:SLogPAtomTypes;49;Numerical
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
808 Values;IDsAndValuesPairsString;C1-C10-N11-C20 1 C1-C10-N11-C21 1 C1-C1
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
809 1-C21-C21 2 C1-C11-C21-N11 2 C1-CS-C1-C10 1 C1-CS-C1-C5 1 C1-CS-C1-CS
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
810 2 C10-C1-CS-O2 1 C10-N11-C20-C20 2 C10-N11-C21-C11 1 C10-N11-C21-C21 1
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
811 C11-C21-C21-C20 1 C11-C21-C21-C5 1 C11-C21-N11-C20 1 C14-C18-C18-C20
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
812 2 C18-C14-C18-C18 2 C18-C18-C14-F 2 C18-C18-C18-C18 4 C18-C18-C18-C...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
813
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
814 FingerprintsVector;TopologicalAtomTorsions:SYBYLAtomTypes;26;Numerical
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
815 Values;IDsAndValuesPairsString;C.2-C.3-C.3-C.3 1 C.2-C.3-C.3-O.3 1 C.2
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
816 -C.ar-C.ar-C.3 1 C.2-C.ar-C.ar-C.ar 2 C.2-C.ar-C.ar-N.ar 1 C.2-N.am-C.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
817 ar-C.ar 2 C.3-C.3-C.2-O.co2 2 C.3-C.3-C.3-C.3 3 C.3-C.3-C.3-N.ar 1 C.3
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
818 -C.3-C.3-O.3 3 C.3-C.3-C.ar-C.ar 2 C.3-C.3-C.ar-N.ar 2 C.3-C.3-N.ar-C.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
819 ar 2 C.3-C.ar-C.ar-C.ar 1 C.3-C.ar-N.ar-C.3 1 C.3-C.ar-N.ar-C.ar 1 ...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
820
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
821 FingerprintsVector;TopologicalAtomTorsions:TPSAAtomTypes;8;NumericalVa
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
822 lues;IDsAndValuesPairsString;N21-None-None-None 9 N7-None-None-None 4
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
823 None-N21-None-None 10 None-N7-None-None 3 None-N7-None-O3 1 None-None-
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
824 None-None 44 None-None-None-O3 3 None-None-None-O4 5
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
825
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
826 FingerprintsVector;TopologicalAtomTorsions:UFFAtomTypes;27;NumericalVa
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
827 lues;IDsAndValuesPairsString;C_2-C_3-C_3-C_3 1 C_2-C_3-C_3-O_3 1 C_2-C
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
828 _R-C_R-C_3 1 C_2-C_R-C_R-C_R 2 C_2-C_R-C_R-N_R 1 C_2-N_3-C_R-C_R 2 C_3
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
829 -C_3-C_2-O_2 1 C_3-C_3-C_2-O_3 1 C_3-C_3-C_3-C_3 3 C_3-C_3-C_3-N_R 1 C
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
830 _3-C_3-C_3-O_3 3 C_3-C_3-C_R-C_R 2 C_3-C_3-C_R-N_R 2 C_3-C_3-N_R-C_R 2
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
831 C_3-C_R-C_R-C_R 1 C_3-C_R-N_R-C_3 1 C_3-C_R-N_R-C_R 1 C_3-N_R-C_R-...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
832
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
833 =head2 METHODS
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
834
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
835 =over 4
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
836
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
837 =item B<new>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
838
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
839 $NewTopologicalAtomTorsionsFingerprints = new TopologicalAtomTorsionsFingerprints(
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
840 %NamesAndValues);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
841
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
842 Using specified I<TopologicalAtomTorsionsFingerprints> property names and values hash, B<new>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
843 method creates a new object and returns a reference to newly created B<TopologicalAtomTorsionsFingerprints>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
844 object. By default, the following properties are initialized:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
845
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
846 Molecule = ''
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
847 Type = 'TopologicalAtomTorsions'
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
848 AtomIdentifierType = ''
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
849 AtomicInvariantsToUse = ['AS', 'X', 'BO', 'H', 'FC']
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
850 FunctionalClassesToUse = ['HBD', 'HBA', 'PI', 'NI', 'Ar', 'Hal']
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
851
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
852 Examples:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
853
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
854 $TopologicalAtomTorsionsFingerprints = new TopologicalAtomTorsionsFingerprints(
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
855 'Molecule' => $Molecule,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
856 'AtomIdentifierType' =>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
857 'AtomicInvariantsAtomTypes');
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
858
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
859 $TopologicalAtomTorsionsFingerprints = new TopologicalAtomTorsionsFingerprints(
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
860 'Molecule' => $Molecule,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
861 'AtomIdentifierType' =>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
862 'AtomicInvariantsAtomTypes',
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
863 'AtomicInvariantsToUse' =>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
864 ['AS', 'X', 'BO', 'H', 'FC'] );
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
865
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
866 $TopologicalAtomTorsionsFingerprints = new TopologicalAtomTorsionsFingerprints(
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
867 'Molecule' => $Molecule,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
868 'AtomIdentifierType' =>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
869 'DREIDINGAtomTypes');
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
870
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
871 $TopologicalAtomTorsionsFingerprints = new TopologicalAtomTorsionsFingerprints(
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
872 'Molecule' => $Molecule,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
873 'AtomIdentifierType' =>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
874 'SYBYLAtomTypes');
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
875
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
876 $TopologicalAtomTorsionsFingerprints = new TopologicalAtomTorsionsFingerprints(
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
877 'Molecule' => $Molecule,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
878 'AtomIdentifierType' =>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
879 'SLogPAtomTypes');
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
880
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
881 $TopologicalAtomTorsionsFingerprints = new TopologicalAtomTorsionsFingerprints(
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
882 'Molecule' => $Molecule,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
883 'AtomIdentifierType' =>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
884 'FunctionalClassAtomTypes',
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
885 'FunctionalClassesToUse' =>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
886 ['HBD', 'HBA', 'PI', 'NI', 'Ar', 'Hal'] );
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
887
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
888
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
889 $TopologicalAtomTorsionsFingerprints->GenerateFingerprints();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
890 print "$TopologicalAtomTorsionsFingerprints\n";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
891
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
892 =item B<GetDescription>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
893
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
894 $Description = $TopologicalAtomTorsionsFingerprints->GetDescription();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
895
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
896 Returns a string containing description of topological atom torsions fingerprints.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
897
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
898 =item B<GenerateFingerprints>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
899
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
900 $TopologicalAtomTorsionsFingerprints->GenerateFingerprints();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
901
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
902 Generates topological atom torsions fingerprints and returns I<TopologicalAtomTorsionsFingerprints>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
903
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
904 =item B<GetAtomTorsionsIDs>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
905
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
906 $AtomPairIDsRef = $TopologicalAtomTorsionsFingerprints->GetAtomTorsionsIDs();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
907 @AtomPairIDs = $TopologicalAtomTorsionsFingerprints->GetAtomTorsionsIDs();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
908
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
909 Returns atom torsion IDs corresponding to atom torsion count values in topological atom torsions
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
910 fingerprints vector as an array or reference to an array.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
911
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
912 =item B<SetAtomIdentifierType>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
913
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
914 $TopologicalAtomTorsionsFingerprints->SetAtomIdentifierType($IdentifierType);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
915
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
916 Sets atom I<IdentifierType> to use during atom torsions fingerprints generation and
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
917 returns I<TopologicalAtomTorsionsFingerprints>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
918
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
919 Possible values: I<AtomicInvariantsAtomTypes, DREIDINGAtomTypes, EStateAtomTypes,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
920 FunctionalClassAtomTypes, MMFF94AtomTypes, SLogPAtomTypes, SYBYLAtomTypes,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
921 TPSAAtomTypes, UFFAtomTypes>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
922
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
923 =item B<SetAtomicInvariantsToUse>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
924
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
925 $TopologicalAtomTorsionsFingerprints->SetAtomicInvariantsToUse($ValuesRef);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
926 $TopologicalAtomTorsionsFingerprints->SetAtomicInvariantsToUse(@Values);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
927
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
928 Sets atomic invariants to use during I<AtomicInvariantsAtomTypes> value of I<AtomIdentifierType>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
929 for topological atom torsions fingerprints generation and returns I<TopologicalAtomTorsionsFingerprints>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
930
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
931 Possible values for atomic invariants are: I<AS, X, BO, LBO, SB, DB, TB,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
932 H, Ar, RA, FC, MN, SM>. Default value: I<AS,X,BO,H,FC>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
933
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
934 The atomic invariants abbreviations correspond to:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
935
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
936 AS = Atom symbol corresponding to element symbol
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
937
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
938 X<n> = Number of non-hydrogen atom neighbors or heavy atoms
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
939 BO<n> = Sum of bond orders to non-hydrogen atom neighbors or heavy atoms
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
940 LBO<n> = Largest bond order of non-hydrogen atom neighbors or heavy atoms
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
941 SB<n> = Number of single bonds to non-hydrogen atom neighbors or heavy atoms
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
942 DB<n> = Number of double bonds to non-hydrogen atom neighbors or heavy atoms
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
943 TB<n> = Number of triple bonds to non-hydrogen atom neighbors or heavy atoms
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
944 H<n> = Number of implicit and explicit hydrogens for atom
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
945 Ar = Aromatic annotation indicating whether atom is aromatic
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
946 RA = Ring atom annotation indicating whether atom is a ring
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
947 FC<+n/-n> = Formal charge assigned to atom
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
948 MN<n> = Mass number indicating isotope other than most abundant isotope
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
949 SM<n> = Spin multiplicity of atom. Possible values: 1 (singlet), 2 (doublet) or
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
950 3 (triplet)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
951
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
952 Atom type generated by AtomTypes::AtomicInvariantsAtomTypes class corresponds to:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
953
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
954 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
955
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
956 Except for AS which is a required atomic invariant in atom types, all other atomic invariants are
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
957 optional. Atom type specification doesn't include atomic invariants with zero or undefined values.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
958
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
959 In addition to usage of abbreviations for specifying atomic invariants, the following descriptive words
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
960 are also allowed:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
961
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
962 X : NumOfNonHydrogenAtomNeighbors or NumOfHeavyAtomNeighbors
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
963 BO : SumOfBondOrdersToNonHydrogenAtoms or SumOfBondOrdersToHeavyAtoms
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
964 LBO : LargestBondOrderToNonHydrogenAtoms or LargestBondOrderToHeavyAtoms
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
965 SB : NumOfSingleBondsToNonHydrogenAtoms or NumOfSingleBondsToHeavyAtoms
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
966 DB : NumOfDoubleBondsToNonHydrogenAtoms or NumOfDoubleBondsToHeavyAtoms
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
967 TB : NumOfTripleBondsToNonHydrogenAtoms or NumOfTripleBondsToHeavyAtoms
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
968 H : NumOfImplicitAndExplicitHydrogens
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
969 Ar : Aromatic
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
970 RA : RingAtom
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
971 FC : FormalCharge
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
972 MN : MassNumber
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
973 SM : SpinMultiplicity
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
974
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
975 I<AtomTypes::AtomicInvariantsAtomTypes> module is used to assign atomic invariant
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
976 atom types.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
977
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
978 =item B<SetFunctionalClassesToUse>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
979
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
980 $TopologicalTorsionsFingerprints->SetFunctionalClassesToUse($ValuesRef);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
981 $TopologicalTorsionsFingerprints->SetFunctionalClassesToUse(@Values);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
982
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
983 Sets functional classes invariants to use during I<FunctionalClassAtomTypes> value of I<AtomIdentifierType>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
984 for topological atom torsions fingerprints generation and returns I<TopologicalAtomTorsionsFingerprints>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
985
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
986 Possible values for atom functional classes are: I<Ar, CA, H, HBA, HBD, Hal, NI, PI, RA>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
987 Default value [ Ref 24 ]: I<HBD,HBA,PI,NI,Ar,Hal>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
988
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
989 The functional class abbreviations correspond to:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
990
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
991 HBD: HydrogenBondDonor
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
992 HBA: HydrogenBondAcceptor
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
993 PI : PositivelyIonizable
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
994 NI : NegativelyIonizable
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
995 Ar : Aromatic
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
996 Hal : Halogen
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
997 H : Hydrophobic
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
998 RA : RingAtom
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
999 CA : ChainAtom
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1000
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1001 Functional class atom type specification for an atom corresponds to:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1002
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1003 Ar.CA.H.HBA.HBD.Hal.NI.PI.RA or None
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1004
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1005 I<AtomTypes::FunctionalClassAtomTypes> module is used to assign functional class atom
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1006 types. It uses following definitions [ Ref 60-61, Ref 65-66 ]:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1007
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1008 HydrogenBondDonor: NH, NH2, OH
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1009 HydrogenBondAcceptor: N[!H], O
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1010 PositivelyIonizable: +, NH2
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1011 NegativelyIonizable: -, C(=O)OH, S(=O)OH, P(=O)OH
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1012
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1013 =item B<StringifyTopologicalAtomTorsionsFingerprints>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1014
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1015 $String = $TopologicalAtomTorsionsFingerprints->
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1016 StringifyTopologicalAtomTorsionsFingerprints();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1017
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1018 Returns a string containing information about I<TopologicalAtomTorsionsFingerprints> object.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1019
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1020 =back
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1021
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1022 =head1 AUTHOR
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1023
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1024 Manish Sud <msud@san.rr.com>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1025
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1026 =head1 SEE ALSO
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1027
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1028 Fingerprints.pm, FingerprintsStringUtil.pm, AtomNeighborhoodsFingerprints.pm,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1029 AtomTypesFingerprints.pm, EStateIndiciesFingerprints.pm, ExtendedConnectivityFingerprints.pm,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1030 MACCSKeys.pm, PathLengthFingerprints.pm, TopologicalAtomPairsFingerprints.pm,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1031 TopologicalAtomTripletsFingerprints.pm, TopologicalPharmacophoreAtomPairsFingerprints.pm,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1032 TopologicalPharmacophoreAtomTripletsFingerprints.pm
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1033
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1034 =head1 COPYRIGHT
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1035
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1036 Copyright (C) 2015 Manish Sud. All rights reserved.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1037
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1038 This file is part of MayaChemTools.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1039
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1040 MayaChemTools is free software; you can redistribute it and/or modify it under
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1041 the terms of the GNU Lesser General Public License as published by the Free
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1042 Software Foundation; either version 3 of the License, or (at your option)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1043 any later version.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1044
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1045 =cut