annotate mayachemtool/mayachemtools/lib/MolecularDescriptors/MolecularComplexityDescriptors.pm @ 0:68300206e90d draft default tip

Uploaded
author deepakjadmin
date Thu, 05 Nov 2015 02:41:30 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1 package MolecularDescriptors::MolecularComplexityDescriptors;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
2 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
3 # $RCSfile: MolecularComplexityDescriptors.pm,v $
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
4 # $Date: 2015/02/28 20:49:20 $
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
5 # $Revision: 1.15 $
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
6 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
7 # Author: Manish Sud <msud@san.rr.com>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
8 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
9 # Copyright (C) 2015 Manish Sud. All rights reserved.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
10 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
11 # This file is part of MayaChemTools.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
12 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
13 # MayaChemTools is free software; you can redistribute it and/or modify it under
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
14 # the terms of the GNU Lesser General Public License as published by the Free
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
15 # Software Foundation; either version 3 of the License, or (at your option) any
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
16 # later version.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
17 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
18 # MayaChemTools is distributed in the hope that it will be useful, but without
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
19 # any warranty; without even the implied warranty of merchantability of fitness
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
20 # for a particular purpose. See the GNU Lesser General Public License for more
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
21 # details.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
22 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
23 # You should have received a copy of the GNU Lesser General Public License
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
24 # along with MayaChemTools; if not, see <http://www.gnu.org/licenses/> or
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
25 # write to the Free Software Foundation Inc., 59 Temple Place, Suite 330,
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
26 # Boston, MA, 02111-1307, USA.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
27 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
28
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
29 use strict;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
30 use Carp;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
31 use Exporter;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
32 use Scalar::Util ();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
33 use TextUtil ();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
34 use MathUtil ();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
35 use Atom;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
36 use Molecule;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
37 use MolecularDescriptors::MolecularDescriptors;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
38 use AtomTypes::AtomicInvariantsAtomTypes;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
39 use AtomTypes::FunctionalClassAtomTypes;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
40 use Fingerprints::AtomTypesFingerprints;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
41 use Fingerprints::ExtendedConnectivityFingerprints;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
42 use Fingerprints::MACCSKeys;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
43 use Fingerprints::PathLengthFingerprints;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
44 use Fingerprints::TopologicalAtomPairsFingerprints;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
45 use Fingerprints::TopologicalAtomTripletsFingerprints;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
46 use Fingerprints::TopologicalAtomTorsionsFingerprints;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
47 use Fingerprints::TopologicalPharmacophoreAtomPairsFingerprints;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
48 use Fingerprints::TopologicalPharmacophoreAtomTripletsFingerprints;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
49
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
50 use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
51
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
52 @ISA = qw(MolecularDescriptors::MolecularDescriptors Exporter);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
53 @EXPORT = qw();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
54 @EXPORT_OK = qw(GetDescriptorNames GetMolecularComplexityTypeAbbreviation);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
55
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
56 %EXPORT_TAGS = (all => [@EXPORT, @EXPORT_OK]);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
57
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
58 # Setup class variables...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
59 my($ClassName, @DescriptorNames);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
60 _InitializeClass();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
61
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
62 # Overload Perl functions...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
63 use overload '""' => 'StringifyMolecularComplexityDescriptors';
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
64
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
65 # Class constructor...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
66 sub new {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
67 my($Class, %NamesAndValues) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
68
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
69 # Initialize object...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
70 my $This = $Class->SUPER::new();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
71 bless $This, ref($Class) || $Class;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
72 $This->_InitializeMolecularComplexityDescriptors();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
73
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
74 $This->_InitializeMolecularComplexityDescriptorsProperties(%NamesAndValues);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
75
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
76 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
77 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
78
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
79 # Initialize class ...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
80 sub _InitializeClass {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
81 #Class name...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
82 $ClassName = __PACKAGE__;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
83
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
84 # Descriptor names...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
85 @DescriptorNames = ('MolecularComplexity');
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
86
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
87 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
88
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
89 # Get descriptor names as an array.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
90 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
91 # This functionality can be either invoked as a class function or an
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
92 # object method.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
93 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
94 sub GetDescriptorNames {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
95 return @DescriptorNames;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
96 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
97
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
98 # Initialize object data...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
99 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
100 sub _InitializeMolecularComplexityDescriptors {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
101 my($This) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
102
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
103 # Type of MolecularDescriptor...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
104 $This->{Type} = 'MolecularComplexity';
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
105
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
106 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
107 # The current release of MayaChemTools supports calculation of molecular complexity
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
108 # corresponding to number of bits-set or unique keys [ Ref 117-119 ] in molecular
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
109 # fingerprints. The following types of fingerprints based molecular complexity measures
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
110 # are supported:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
111 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
112 # AtomTypesFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
113 # ExtendedConnectivityFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
114 # MACCSKeys
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
115 # PathLengthFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
116 # TopologicalAtomPairsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
117 # TopologicalAtomTripletsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
118 # TopologicalAtomTorsionsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
119 # TopologicalPharmacophoreAtomPairsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
120 # TopologicalPharmacophoreAtomTripletsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
121 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
122 # Default: MACCSKeys
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
123 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
124 $This->{MolecularComplexityType} = '';
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
125
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
126 # Atom types to use for generating fingerprints...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
127 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
128 # Currently supported values are: AtomicInvariantsAtomTypes, DREIDINGAtomTypes,
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
129 # EStateAtomTypes, FunctionalClassAtomTypes, MMFF94AtomTypes, SLogPAtomTypes,
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
130 # SYBYLAtomTypes, TPSAAtomTypes, UFFAtomTypes
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
131 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
132 # Notes:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
133 # . AtomicInvariantsAtomTypes for all supported MolecularComplexityType except for
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
134 # TopologicalPharmacophoreAtomPairsFingerprints and TopologicalPharmacophoreAtomTripletsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
135 # . This value is not used for MACCSKeys
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
136 # . FunctionalClassAtomTypes is the only valid value during topological pharmacophore fingerprints.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
137 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
138 # . Default values for AtomicInvariantsToUse and FunctionalClassesToUse are set appropriately
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
139 # for different types of fingerprints as shown below.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
140 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
141 # MolecularComplexityType AtomicInvariantsToUse
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
142 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
143 # AtomTypesFingerprints AS, X, BO, H, FC
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
144 # TopologicalAtomPairsFingerprints AS, X, BO, H, FC
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
145 # TopologicalAtomTripletsFingerprints AS, X, BO, H, FC
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
146 # TopologicalAtomTorsionsFingerprints AS, X, BO, H, FC
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
147 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
148 # ExtendedConnectivityFingerprints AS, X, BO, H, FC, MN
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
149 # PathLengthFingerprints AS
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
150 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
151 # Default for FunctionalClassesToUse for all fingerprints is set to:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
152 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
153 # HBD, HBA, PI, NI, Ar, Hal
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
154 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
155 # except for the following two MolecularComplexityType fingerprints:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
156 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
157 # TopologicalPharmacophoreAtomPairsFingerprints HBD, HBA, PI, NI, H
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
158 # TopologicalPharmacophoreAtomTripletsFingerprints HBD, HBA, PI, NI, H, Ar
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
159 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
160 $This->{AtomIdentifierType} = '';
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
161
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
162 # Size of MACCS key set: 166 or 322...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
163 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
164 $This->{MACCSKeysSize} = 166;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
165
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
166 # Atomic neighborhoods radius for extended connectivity fingerprints...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
167 $This->{NeighborhoodRadius} = 2;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
168
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
169 # Minimum and maximum path lengths to use for path length fingerprints...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
170 $This->{MinPathLength} = 1;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
171 $This->{MaxPathLength} = 8;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
172
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
173 # By default bond symbols are included in atom path strings used to generate path length
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
174 # fingerprints... ...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
175 $This->{UseBondSymbols} = 1;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
176
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
177 # Minimum and maximum bond distance between atom pairs during topological
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
178 # atom pairs/triplets fingerprints...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
179 $This->{MinDistance} = 1;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
180 $This->{MaxDistance} = 10;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
181
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
182 # Determines whether to apply triangle inequality to distance triplets...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
183 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
184 # Default for TopologicalAtomTripletsFingerprints: 0
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
185 # Default for TopologicalPharmacophoreAtomTripletsFingerprints: 1
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
186 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
187 $This->{UseTriangleInequality} = '';
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
188
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
189 # Distance bin size used for binning distances during generation of
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
190 # topological pharmacophore atom triplets fingerprints...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
191 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
192 $This->{DistanceBinSize} = 2;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
193
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
194 # Normalization methodology to use for scaling the number of bits-set or unique keys
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
195 # for:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
196 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
197 # ExtendedConnectivityFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
198 # TopologicalPharmacophoreAtomPairsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
199 # TopologicalPharmacophoreAtomTripletsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
200 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
201 # This option is gnored for all other types of fingerprints.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
202 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
203 # Possible values during extended connectivity fingerprints: None or ByHeavyAtomsCount. Default:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
204 # None.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
205 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
206 # Possible values during topological pharmacophore atom pairs and tripletes fingerprints: None,
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
207 # or ByPossibleKeysCount. Default: None. ByPossibleKeysCount corresponds to total number of
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
208 # possible topological pharmacophore atom pairs or triplets in a molecule.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
209 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
210 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
211 $This->{NormalizationMethodology} = 'None';
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
212
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
213 # Intialize descriptor names and values...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
214 $This->_InitializeDescriptorNamesAndValues(@DescriptorNames);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
215
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
216 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
217 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
218
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
219 # Initialize object properties...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
220 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
221 sub _InitializeMolecularComplexityDescriptorsProperties {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
222 my($This, %NamesAndValues) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
223
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
224 my($Name, $Value, $MethodName);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
225 while (($Name, $Value) = each %NamesAndValues) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
226 $MethodName = "Set${Name}";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
227 $This->$MethodName($Value);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
228 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
229
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
230 # Make sure MolecularComplexityType is set...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
231 if (!exists $NamesAndValues{MolecularComplexityType}) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
232 $This->{MolecularComplexityType} = 'MACCSKeys';
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
233 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
234
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
235 # Make sure AtomIdentifierType is set...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
236 if ($This->{MolecularComplexityType} !~ /^MACCSKeys$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
237 if (!exists $NamesAndValues{AtomIdentifierType}) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
238 $This->_InitializeAtomIdentifierType();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
239 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
240 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
241
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
242 # Make sure UseTriangleInequality is set...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
243 if ($This->{MolecularComplexityType} =~ /^(TopologicalAtomTripletsFingerprints|TopologicalPharmacophoreAtomTripletsFingerprints)$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
244 if (!exists $NamesAndValues{UseTriangleInequality}) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
245 $This->{UseTriangleInequality} = ($This->{MolecularComplexityType} =~ /^TopologicalPharmacophoreAtomTripletsFingerprints$/i) ? 1 : 0;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
246 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
247 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
248
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
249 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
250 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
251
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
252 # Initialize atom identifer type...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
253 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
254 sub _InitializeAtomIdentifierType {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
255 my($This) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
256 my($AtomIdentifierType);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
257
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
258 if ($This->{MolecularComplexityType} =~ /^MACCSKeys$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
259 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
260 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
261
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
262 $AtomIdentifierType = ($This->{MolecularComplexityType} =~ /^(TopologicalPharmacophoreAtomPairsFingerprints|TopologicalPharmacophoreAtomTripletsFingerprints)$/i) ? 'FunctionalClassAtomTypes' : 'AtomicInvariantsAtomTypes';
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
263
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
264 $This->SetAtomIdentifierType($AtomIdentifierType);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
265
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
266 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
267 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
268
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
269 # Get abbreviation for specified molecular complexity type or using descriptors object...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
270 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
271 # This functionality can be either invoked as a class function or an
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
272 # object method.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
273 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
274 sub GetMolecularComplexityTypeAbbreviation {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
275 my($FirstParameter) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
276 my($This, $ComplexityType, %ComplexityTypeToAbbrev);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
277
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
278 if (_IsMolecularComplexityDescriptors($FirstParameter)) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
279 $This = $FirstParameter;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
280 $ComplexityType = $This->{MolecularComplexityType};
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
281 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
282 else {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
283 $ComplexityType = $FirstParameter;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
284 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
285
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
286 %ComplexityTypeToAbbrev = (lc 'AtomTypesFingerprints' => 'ATFP', lc 'ExtendedConnectivityFingerprints' => 'ECFP',
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
287 lc 'MACCSKeys' => 'MACCSKeys', lc 'PathLengthFingerprints' => 'PLFP',
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
288 lc 'TopologicalAtomPairsFingerprints' => 'TAPFP', lc 'TopologicalAtomTripletsFingerprints' => 'TATFP',
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
289 lc 'TopologicalAtomTorsionsFingerprints' => 'TATFP',
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
290 lc 'TopologicalPharmacophoreAtomPairsFingerprints' => 'TPAPFP',
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
291 lc 'TopologicalPharmacophoreAtomTripletsFingerprints' => 'TPATFP');
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
292
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
293 return exists $ComplexityTypeToAbbrev{lc $ComplexityType} ? $ComplexityTypeToAbbrev{lc $ComplexityType} : '';
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
294 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
295
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
296 # Set MACCS key set size...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
297 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
298 sub SetMACCSKeysSize {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
299 my($This, $Value) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
300
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
301 if (!TextUtil::IsPositiveInteger($Value)) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
302 croak "Error: ${ClassName}->SetMACCSKeysSize: Size value, $Value, is not valid: It must be a positive integer...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
303 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
304 if ($Value !~ /^(166|322)/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
305 croak "Error: ${ClassName}->SetMACCSKeysSize: The current release of MayaChemTools doesn't support MDL MACCS $Value keys...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
306 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
307 $This->{MACCSKeysSize} = $Value;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
308
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
309 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
310 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
311
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
312 # Set minimum path length...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
313 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
314 sub SetMinPathLength {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
315 my($This, $Value) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
316
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
317 if (!TextUtil::IsPositiveInteger($Value)) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
318 croak "Error: ${ClassName}->SetMinPathLength: MinPathLength value, $Value, is not valid: It must be a positive integer...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
319 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
320 $This->{MinPathLength} = $Value;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
321
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
322 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
323 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
324
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
325 # Set maximum path length...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
326 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
327 sub SetMaxPathLength {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
328 my($This, $Value) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
329
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
330 if (!TextUtil::IsPositiveInteger($Value)) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
331 croak "Error: ${ClassName}->SetMaxPathLength: MaxPathLength value, $Value, is not valid: It must be a positive integer...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
332 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
333 $This->{MaxPathLength} = $Value;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
334
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
335 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
336 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
337
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
338 # Set minimum bond distance between atom pairs during topological and topological
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
339 # pharmacophore atom pairs/triplets fingerprints...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
340 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
341 sub SetMinDistance {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
342 my($This, $Value) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
343
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
344 if (!TextUtil::IsPositiveInteger($Value)) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
345 croak "Error: ${ClassName}->SetMinDistance: MinDistance value, $Value, is not valid: It must be a positive integer...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
346 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
347 $This->{MinDistance} = $Value;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
348
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
349 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
350 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
351
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
352 # Set maximum bond distance between atom pairs during topological and topological
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
353 # pharmacophore atom pairs/triplets fingerprints...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
354 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
355 sub SetMaxDistance {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
356 my($This, $Value) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
357
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
358 if (!TextUtil::IsPositiveInteger($Value)) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
359 croak "Error: ${ClassName}->SetMaxDistance: MaxDistance value, $Value, is not valid: It must be a positive integer...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
360 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
361 $This->{MaxDistance} = $Value;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
362
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
363 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
364 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
365
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
366 # Set atom neighborhood radius...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
367 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
368 sub SetNeighborhoodRadius {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
369 my($This, $Value) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
370
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
371 if (!TextUtil::IsInteger($Value)) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
372 croak "Error: ${ClassName}->SetNeighborhoodRadius: NeighborhoodRadius value, $Value, is not valid: It must be an integer...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
373 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
374
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
375 if ($Value < 0 ) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
376 croak "Error: ${ClassName}->SetNeighborhoodRadius: NeighborhoodRadius value, $Value, is not valid: It must be >= 0...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
377 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
378 $This->{NeighborhoodRadius} = $Value;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
379
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
380 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
381 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
382
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
383 # Set molecular complexity type...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
384 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
385 sub SetMolecularComplexityType {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
386 my($This, $Value) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
387
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
388 if ($Value !~ /^(AtomTypesFingerprints|ExtendedConnectivityFingerprints|MACCSKeys|PathLengthFingerprints|TopologicalAtomPairsFingerprints|TopologicalAtomTripletsFingerprints|TopologicalAtomTorsionsFingerprints|TopologicalPharmacophoreAtomPairsFingerprints|TopologicalPharmacophoreAtomTripletsFingerprints)$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
389 croak "Error: ${ClassName}->SetMolecularComplexityType: MolecularComplexityType value, $Value, is not valid. Supported values: AtomTypesFingerprints, ExtendedConnectivityFingerprints, MACCSKeys, PathLengthFingerprints, TopologicalAtomPairsFingerprints, TopologicalAtomTripletsFingerprints, TopologicalAtomTorsionsFingerprints, TopologicalPharmacophoreAtomPairsFingerprints, or TopologicalPharmacophoreAtomTripletsFingerprints...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
390 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
391
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
392 $This->{MolecularComplexityType} = $Value;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
393
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
394 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
395 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
396
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
397 # Set distance bin size for binning pharmacophore atom pair distances in atom triplets...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
398 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
399 sub SetDistanceBinSize {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
400 my($This, $Value) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
401
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
402 if (!TextUtil::IsPositiveInteger($Value)) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
403 croak "Error: ${ClassName}->SetDistanceBinSize: DistanceBinSize value, $Value, is not valid: It must be a positive integer...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
404 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
405 $This->{DistanceBinSize} = $Value;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
406
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
407 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
408 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
409
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
410 # Set normalization methodology to use for scaling the number of bits-set or unique keys
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
411 # in fingerprints...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
412 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
413 sub SetNormalizationMethodology {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
414 my($This, $Value) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
415
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
416 if ($Value !~ /^(ByHeavyAtomsCount|ByPossibleKeysCount|None)$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
417 croak "Error: ${ClassName}->SetNormalizationMethodology: NormalizationMethodology value, $Value, is not valid. Supported values: None, ByHeavyAtomsCount or ByPossibleKeysCount...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
418 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
419
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
420 if ($This->{MolecularComplexityType}) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
421 if ($This->{MolecularComplexityType} !~ /^(ExtendedConnectivityFingerprints|TopologicalPharmacophoreAtomPairsFingerprints|TopologicalPharmacophoreAtomTripletsFingerprints)$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
422 croak "Error: ${ClassName}->SetNormalizationMethodology: Normalization is not supported for MolecularComplexityType: $This->{MolecularComplexityType}. Valid MolecularComplexityType values: ExtendedConnectivityFingerprints, TopologicalPharmacophoreAtomPairsFingerprints, or TopologicalPharmacophoreAtomTripletsFingerprints...\n";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
423 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
424
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
425 if ($This->{MolecularComplexityType} =~ /^ExtendedConnectivityFingerprints$/i && $Value !~ /^(ByHeavyAtomsCount|None)$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
426 croak "Error: ${ClassName}->SetNormalizationMethodology: NormalizationMethodology value, $Value, is not valid for MolecularComplexityType: $This->{MolecularComplexityType}. Supported values: None or ByHeavyAtomsCount...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
427 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
428
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
429 if ($This->{MolecularComplexityType} =~ /^(TopologicalPharmacophoreAtomPairsFingerprints|TopologicalPharmacophoreAtomTripletsFingerprints)$/i && $Value !~ /^(ByPossibleKeysCount|None)$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
430 croak "Error: ${ClassName}->SetNormalizationMethodology: NormalizationMethodology value, $Value, is not valid for MolecularComplexityType: $This->{MolecularComplexityType}. Supported values: None or ByPossibleKeysCount...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
431 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
432 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
433
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
434 $This->{NormalizationMethodology} = $Value;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
435
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
436 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
437 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
438
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
439 # Set intial atom identifier type..
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
440 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
441 sub SetAtomIdentifierType {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
442 my($This, $IdentifierType) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
443
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
444 if ($IdentifierType !~ /^(AtomicInvariantsAtomTypes|FunctionalClassAtomTypes|DREIDINGAtomTypes|EStateAtomTypes|MMFF94AtomTypes|SLogPAtomTypes|SYBYLAtomTypes|TPSAAtomTypes|UFFAtomTypes)$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
445 croak "Error: ${ClassName}->SetAtomIdentifierType: Specified value, $IdentifierType, for AtomIdentifierType is not vaild. Supported types in current release of MayaChemTools: AtomicInvariantsAtomTypes, FunctionalClassAtomTypes, DREIDINGAtomTypes, EStateAtomTypes, MMFF94AtomTypes, SLogPAtomTypes, SYBYLAtomTypes, TPSAAtomTypes and UFFAtomTypes.";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
446 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
447
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
448 # FunctionalClassAtomTypes is the only valid atom identifier type for pharmacophore fingerprints...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
449 if ($This->{MolecularComplexityType} =~ /^(TopologicalPharmacophoreAtomPairsFingerprints|TopologicalPharmacophoreAtomTripletsFingerprints)$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
450 if ($IdentifierType !~ /^FunctionalClassAtomTypes$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
451 croak "Error: ${ClassName}->SetAtomIdentifierType: Specified value, $IdentifierType, for AtomIdentifierType is not vaild. Supported type for $This->{MolecularComplexityType} complexity type: FunctionalClassAtomTypes.";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
452 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
453 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
454
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
455 if ($This->{AtomIdentifierType}) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
456 croak "Error: ${ClassName}->SetAtomIdentifierType: Can't change intial atom identifier type: It's already set...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
457 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
458
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
459 $This->{AtomIdentifierType} = $IdentifierType;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
460
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
461 # Initialize identifier type information...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
462 $This->_InitializeAtomIdentifierTypeInformation();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
463
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
464 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
465 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
466
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
467 # Calculate molecular complexity [ Ref 117-119 ] of a molecule using its fingerprints.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
468 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
469 # The current release of MayaChemTools supports calculation of molecular complexity
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
470 # corresponding to the number of bits-set or unique keys in molecular fingerprints. The
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
471 # following types of fingerprints based molecular complexity measures are supported:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
472 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
473 # AtomTypesFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
474 # ExtendedConnectivityFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
475 # MACCSKeys
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
476 # PathLengthFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
477 # TopologicalAtomPairsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
478 # TopologicalAtomTripletsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
479 # TopologicalAtomTorsionsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
480 # TopologicalPharmacophoreAtomPairsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
481 # TopologicalPharmacophoreAtomTripletsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
482 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
483 # After the molecular complexity value has been calculated, it can also be normalized by
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
484 # by scaling the number of bits-set or unique keys for following types of fingerprints:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
485 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
486 # ExtendedConnectivityFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
487 # TopologicalPharmacophoreAtomPairsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
488 # TopologicalPharmacophoreAtomTripletsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
489 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
490 # Two types of normalization methodologies are supported: by heavy atoms count for
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
491 # extended connectivity fingerprints; by possible keys count for topological pharmacophore
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
492 # atom pairs and triplets fingerprints.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
493 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
494 sub GenerateDescriptors {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
495 my($This) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
496
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
497 # Initialize descriptor values...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
498 $This->_InitializeDescriptorValues();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
499
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
500 # Check availability of molecule...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
501 if (!$This->{Molecule}) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
502 carp "Warning: ${ClassName}->GenerateDescriptors: $This->{Type} molecular descriptors generation didn't succeed: Molecule data is not available: Molecule object hasn't been set...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
503 return undef;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
504 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
505
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
506 # Calculate descriptor values...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
507 if (!$This->_CalculateDescriptorValues()) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
508 carp "Warning: ${ClassName}->GenerateDescriptors: $This->{Type} molecular descriptors generation didn't succeed: Couldn't calculate MolecularComplexity values corresponding to assigned MolecularComplexity atom types...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
509 return undef;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
510 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
511
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
512 # Set final descriptor values...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
513 $This->_SetFinalDescriptorValues();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
514
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
515 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
516 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
517
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
518 # Calculate molecular complexity value...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
519 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
520 sub _CalculateDescriptorValues {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
521 my($This) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
522 my($FingerprintsObject, $MethodName);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
523
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
524 # Setup fingerprints object and generate fingerprints...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
525 $MethodName = "_Setup" . $This->{MolecularComplexityType};
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
526 $FingerprintsObject = $This->$MethodName();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
527
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
528 $FingerprintsObject->GenerateFingerprints();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
529
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
530 # Make sure atom types fingerprints generation is successful...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
531 if (!$FingerprintsObject->IsFingerprintsGenerationSuccessful()) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
532 return undef;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
533 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
534
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
535 if (!$This->_CalculateMolecularComplexity($FingerprintsObject)) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
536 return undef;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
537 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
538
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
539 # Normalize molecular complexity...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
540 if ($This->{NormalizationMethodology} !~ /^None$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
541 if (!$This->_NormalizeMolecularComplexity($FingerprintsObject)) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
542 return undef;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
543 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
544 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
545
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
546 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
547 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
548
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
549 # Setup atom types fingerprints...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
550 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
551 sub _SetupAtomTypesFingerprints {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
552 my($This) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
553 my($FingerprintsObject);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
554
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
555 $FingerprintsObject = new Fingerprints::AtomTypesFingerprints('Molecule' => $This->{Molecule}, 'Type' => 'AtomTypesCount', 'AtomIdentifierType' => $This->{AtomIdentifierType}, 'IgnoreHydrogens' => 1);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
556 $This->_SetAtomIdentifierTypeValuesToUse($FingerprintsObject);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
557
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
558 return $FingerprintsObject;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
559 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
560
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
561 # Setup extended connectivity fingerprints...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
562 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
563 sub _SetupExtendedConnectivityFingerprints {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
564 my($This) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
565 my($FingerprintsObject);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
566
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
567 $FingerprintsObject = new Fingerprints::ExtendedConnectivityFingerprints('Molecule' => $This->{Molecule}, 'Type' => 'ExtendedConnectivity', 'NeighborhoodRadius' => $This->{NeighborhoodRadius}, 'AtomIdentifierType' => $This->{AtomIdentifierType});
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
568 $This->_SetAtomIdentifierTypeValuesToUse($FingerprintsObject);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
569
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
570 return $FingerprintsObject;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
571 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
572
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
573 # Setup MACCS keys...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
574 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
575 sub _SetupMACCSKeys {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
576 my($This) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
577 my($FingerprintsObject);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
578
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
579 $FingerprintsObject = new Fingerprints::MACCSKeys('Molecule' => $This->{Molecule}, 'Type' => 'MACCSKeyBits', 'Size' => $This->{MACCSKeysSize});
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
580
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
581 return $FingerprintsObject;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
582 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
583
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
584 # Set up path length fingerprints...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
585 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
586 sub _SetupPathLengthFingerprints {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
587 my($This) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
588 my($FingerprintsObject);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
589
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
590 $FingerprintsObject = new Fingerprints::PathLengthFingerprints('Molecule' => $This->{Molecule}, 'Type' => 'PathLengthCount', 'AtomIdentifierType' => $This->{AtomIdentifierType}, 'MinLength' => $This->{MinPathLength}, 'MaxLength' => $This->{MaxPathLength}, 'AllowRings' => 1, 'AllowSharedBonds' => 1, 'UseBondSymbols' => $This->{UseBondSymbols}, 'UseUniquePaths' => 1);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
591 $This->_SetAtomIdentifierTypeValuesToUse($FingerprintsObject);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
592
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
593 return $FingerprintsObject;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
594 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
595
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
596 # Setup topological atom pairs fingerprints...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
597 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
598 sub _SetupTopologicalAtomPairsFingerprints {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
599 my($This) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
600 my($FingerprintsObject);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
601
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
602 $FingerprintsObject = new Fingerprints::TopologicalAtomPairsFingerprints('Molecule' => $This->{Molecule}, 'MinDistance' => $This->{MinDistance}, 'MaxDistance' => $This->{MaxDistance}, 'AtomIdentifierType' => $This->{AtomIdentifierType});
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
603 $This->_SetAtomIdentifierTypeValuesToUse($FingerprintsObject);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
604
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
605 return $FingerprintsObject;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
606 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
607
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
608 # Setup topological atom triplets fingerprints...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
609 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
610 sub _SetupTopologicalAtomTripletsFingerprints {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
611 my($This) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
612 my($FingerprintsObject);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
613
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
614 $FingerprintsObject = new Fingerprints::TopologicalAtomTripletsFingerprints('Molecule' => $This->{Molecule}, 'MinDistance' => $This->{MinDistance}, 'MaxDistance' => $This->{MaxDistance}, 'UseTriangleInequality' => $This->{UseTriangleInequality}, 'AtomIdentifierType' => $This->{AtomIdentifierType});
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
615 $This->_SetAtomIdentifierTypeValuesToUse($FingerprintsObject);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
616
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
617 return $FingerprintsObject;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
618 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
619
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
620 # Setup topological atom torsions fingerprints...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
621 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
622 sub _SetupTopologicalAtomTorsionsFingerprints {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
623 my($This) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
624 my($FingerprintsObject);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
625
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
626 $FingerprintsObject = new Fingerprints::TopologicalAtomTorsionsFingerprints('Molecule' => $This->{Molecule}, 'AtomIdentifierType' => $This->{AtomIdentifierType});
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
627
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
628 $This->_SetAtomIdentifierTypeValuesToUse($FingerprintsObject);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
629
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
630 return $FingerprintsObject;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
631 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
632
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
633 # Setup TopologicalPharmacophoreAtomPairsFingerprints...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
634 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
635 sub _SetupTopologicalPharmacophoreAtomPairsFingerprints {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
636 my($This) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
637 my($FingerprintsObject, $AtomPairsSetSizeToUse);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
638
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
639 # Use fixed size to get total number of possible keys for normalization...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
640 $AtomPairsSetSizeToUse = ($This->{NormalizationMethodology} =~ /^ByPossibleKeysCount$/i) ? 'FixedSize' : 'ArbitrarySize';
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
641
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
642 $FingerprintsObject = new Fingerprints::TopologicalPharmacophoreAtomPairsFingerprints('Molecule' => $This->{Molecule}, 'AtomPairsSetSizeToUse' => $AtomPairsSetSizeToUse, 'MinDistance' => $This->{MinDistance}, 'MaxDistance' => $This->{MaxDistance}, 'AtomTypesToUse' => \@{$This->{FunctionalClassesToUse}}, 'NormalizationMethodology' => 'None', 'ValuesPrecision' => 2);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
643
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
644 return $FingerprintsObject;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
645 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
646
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
647 # Setup TopologicalPharmacophoreAtomTripletsFingerprints...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
648 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
649 sub _SetupTopologicalPharmacophoreAtomTripletsFingerprints {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
650 my($This) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
651 my($FingerprintsObject, $AtomTripletsSetSizeToUse);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
652
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
653 # Use fixed size to get total number of possible keys for normalization...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
654 $AtomTripletsSetSizeToUse = ($This->{NormalizationMethodology} =~ /^ByPossibleKeysCount$/i) ? 'FixedSize' : 'ArbitrarySize';
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
655
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
656 $FingerprintsObject = new Fingerprints::TopologicalPharmacophoreAtomTripletsFingerprints('Molecule' => $This->{Molecule}, 'AtomTripletsSetSizeToUse' => $AtomTripletsSetSizeToUse, 'MinDistance' => $This->{MinDistance}, 'MaxDistance' => $This->{MaxDistance}, 'DistanceBinSize' => $This->{DistanceBinSize}, 'UseTriangleInequality' => $This->{UseTriangleInequality}, 'AtomTypesToUse' => \@{$This->{FunctionalClassesToUse}});
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
657
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
658 return $FingerprintsObject;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
659 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
660
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
661 # Normalize molecular complexity value...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
662 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
663 sub _NormalizeMolecularComplexity {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
664 my($This, $FingerprintsObject) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
665
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
666 if ($This->{MolecularComplexityType} =~ /^ExtendedConnectivityFingerprints$/i && $This->{NormalizationMethodology} =~ /^ByHeavyAtomsCount$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
667 return $This->_NormalizeMolecularComplexityByHeavyAtomsCount($FingerprintsObject);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
668 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
669 elsif ($This->{MolecularComplexityType} =~ /^(TopologicalPharmacophoreAtomPairsFingerprints|TopologicalPharmacophoreAtomTripletsFingerprints)$/i && $This->{NormalizationMethodology} =~ /^ByPossibleKeysCount$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
670 return $This->_NormalizeMolecularComplexityByPossibleKeysCount($FingerprintsObject);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
671 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
672 else {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
673 warn "Warning: ${ClassName}->_NormalizeMolecularComplexity: NormalizationMethodology value, $This->{NormalizationMethodology}, is not valid. Supported values: ByHeavyAtomsCount or ByPossibleKeysCount...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
674 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
675 return undef;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
676 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
677
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
678 # Normalize molecular complexity value by heavy atom count...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
679 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
680 sub _NormalizeMolecularComplexityByHeavyAtomsCount {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
681 my($This, $FingerprintsObject) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
682 my($NumOfHeavyAtoms, $NormalizedComplexity);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
683
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
684 $NumOfHeavyAtoms = $This->{Molecule}->GetNumOfHeavyAtoms();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
685 if (!$NumOfHeavyAtoms) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
686 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
687 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
688
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
689 $NormalizedComplexity = $This->{MolecularComplexity} / $NumOfHeavyAtoms;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
690 $This->{MolecularComplexity} = MathUtil::round($NormalizedComplexity, 2) + 0;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
691
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
692 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
693 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
694
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
695 # Normalize molecular complexity value by possible keys count...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
696 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
697 sub _NormalizeMolecularComplexityByPossibleKeysCount {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
698 my($This, $FingerprintsObject) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
699 my($NumOfPossibleKeys, $NormalizedComplexity);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
700
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
701 $NumOfPossibleKeys = $FingerprintsObject->GetFingerprintsVector()->GetNumOfValues();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
702 if (!$NumOfPossibleKeys) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
703 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
704 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
705
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
706 $NormalizedComplexity = $This->{MolecularComplexity} / $NumOfPossibleKeys;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
707 $This->{MolecularComplexity} = MathUtil::round($NormalizedComplexity, 2) + 0;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
708
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
709 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
710 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
711
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
712 # Calculate molecular complexity value using fingerprints objects...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
713 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
714 sub _CalculateMolecularComplexity {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
715 my($This, $FingerprintsObject) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
716
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
717 if ($FingerprintsObject->GetVectorType() =~ /^FingerprintsBitVector$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
718 return $This->_CalculateMolecularComplexityUsingFingerprintsBitVector($FingerprintsObject->GetFingerprintsBitVector());
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
719 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
720 elsif ($FingerprintsObject->GetVectorType() =~ /^FingerprintsVector$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
721 return $This->_CalculateMolecularComplexityUsingFingerprintsVector($FingerprintsObject->GetFingerprintsVector());
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
722 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
723 else {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
724 warn "Warning: ${ClassName}->_CalculateMolecularComplexity: Fingerprints vector type is not valid. Supported values: FingerprintsBitVector or FingerprintsVector...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
725 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
726
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
727 return undef;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
728 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
729
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
730 # Calculate molecular complexity value using fingerprints vector...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
731 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
732 sub _CalculateMolecularComplexityUsingFingerprintsVector {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
733 my($This, $FingerprintsVector) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
734
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
735 $This->{MolecularComplexity} = ($FingerprintsVector->GetType() =~ /^(OrderedNumericalValues|NumericalValues)$/i) ? $FingerprintsVector->GetNumOfNonZeroValues() : $FingerprintsVector->GetNumOfValues();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
736
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
737 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
738 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
739
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
740 # Calculate molecular complexity value using fingerprints vector...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
741 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
742 sub _CalculateMolecularComplexityUsingFingerprintsBitVector {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
743 my($This, $FingerprintsBitVector) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
744
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
745 $This->{MolecularComplexity} = $FingerprintsBitVector->GetNumOfSetBits();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
746
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
747 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
748 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
749
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
750 # Setup final descriptor values...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
751 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
752 sub _SetFinalDescriptorValues {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
753 my($This) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
754
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
755 $This->{DescriptorsGenerated} = 1;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
756
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
757 $This->SetDescriptorValues($This->{MolecularComplexity});
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
758
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
759 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
760 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
761
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
762 # Set atom identifier type to use for generating fingerprints...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
763 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
764 sub _SetAtomIdentifierTypeValuesToUse {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
765 my($This, $FingerprintsObject) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
766
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
767 if ($This->{AtomIdentifierType} =~ /^AtomicInvariantsAtomTypes$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
768 $FingerprintsObject->SetAtomicInvariantsToUse(\@{$This->{AtomicInvariantsToUse}});
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
769 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
770 elsif ($This->{AtomIdentifierType} =~ /^FunctionalClassAtomTypes$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
771 $FingerprintsObject->SetFunctionalClassesToUse(\@{$This->{FunctionalClassesToUse}});
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
772 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
773 elsif ($This->{AtomIdentifierType} =~ /^(DREIDINGAtomTypes|EStateAtomTypes|MMFF94AtomTypes|SLogPAtomTypes|SYBYLAtomTypes|TPSAAtomTypes|UFFAtomTypes)$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
774 # Nothing to do for now...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
775 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
776 else {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
777 croak "Error: The value specified, $This->{AtomIdentifierType}, for option \"-a, --AtomIdentifierType\" is not valid. Supported atom identifier types in current release of MayaChemTools: AtomicInvariantsAtomTypes, DREIDINGAtomTypes, EStateAtomTypes, FunctionalClassAtomTypes, MMFF94AtomTypes, SLogPAtomTypes, SYBYLAtomTypes, TPSAAtomTypes, UFFAtomTypes\n";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
778 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
779 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
780
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
781 # Initialize atom indentifier type information...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
782 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
783 # Current supported values:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
784 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
785 # AtomicInvariantsAtomTypes, FunctionalClassAtomTypes, DREIDINGAtomTypes, EStateAtomTypes,
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
786 # MMFF94AtomTypes, SLogPAtomTypes, SYBYLAtomTypes, TPSAAtomTypes, UFFAtomTypes
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
787 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
788 sub _InitializeAtomIdentifierTypeInformation {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
789 my($This) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
790
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
791 IDENTIFIERTYPE: {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
792 if ($This->{AtomIdentifierType} =~ /^AtomicInvariantsAtomTypes$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
793 $This->_InitializeAtomicInvariantsAtomTypesInformation();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
794 last IDENTIFIERTYPE;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
795 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
796 if ($This->{AtomIdentifierType} =~ /^FunctionalClassAtomTypes$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
797 $This->_InitializeFunctionalClassAtomTypesInformation();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
798 last IDENTIFIERTYPE;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
799 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
800 if ($This->{AtomIdentifierType} =~ /^(DREIDINGAtomTypes|EStateAtomTypes|MMFF94AtomTypes|SLogPAtomTypes|SYBYLAtomTypes|TPSAAtomTypes|UFFAtomTypes)$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
801 # Nothing to do for now...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
802 last IDENTIFIERTYPE;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
803 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
804 carp "Warning: ${ClassName}->_InitializeAtomIdentifierTypeInformation: Unknown atom indentifier type $This->{AtomIdentifierType}...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
805 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
806 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
807 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
808
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
809 # Initialize atomic invariants atom types, generated by AtomTypes::AtomicInvariantsAtomTypes
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
810 # class, to use for generating initial atom identifiers...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
811 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
812 # Let:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
813 # AS = Atom symbol corresponding to element symbol
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
814 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
815 # X<n> = Number of non-hydrogen atom neighbors or heavy atoms attached to atom
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
816 # BO<n> = Sum of bond orders to non-hydrogen atom neighbors or heavy atoms attached to atom
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
817 # LBO<n> = Largest bond order of non-hydrogen atom neighbors or heavy atoms attached to atom
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
818 # SB<n> = Number of single bonds to non-hydrogen atom neighbors or heavy atoms attached to atom
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
819 # DB<n> = Number of double bonds to non-hydrogen atom neighbors or heavy atoms attached to atom
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
820 # TB<n> = Number of triple bonds to non-hydrogen atom neighbors or heavy atoms attached to atom
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
821 # H<n> = Number of implicit and explicit hydrogens for atom
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
822 # Ar = Aromatic annotation indicating whether atom is aromatic
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
823 # RA = Ring atom annotation indicating whether atom is a ring
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
824 # FC<+n/-n> = Formal charge assigned to atom
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
825 # MN<n> = Mass number indicating isotope other than most abundant isotope
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
826 # SM<n> = Spin multiplicity of atom. Possible values: 1 (singlet), 2 (doublet) or 3 (triplet)
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
827 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
828 # Then:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
829 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
830 # Atom type generated by AtomTypes::AtomicInvariantsAtomTypes class corresponds to:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
831 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
832 # AS.X<n>.BO<n>.LBO<n>.<SB><n>.<DB><n>.<TB><n>.H<n>.Ar.RA.FC<+n/-n>.MN<n>.SM<n>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
833 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
834 # Except for AS which is a required atomic invariant in atom types, all other atomic invariants are
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
835 # optional.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
836 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
837 # Default atomic invariants used for generating inital atom identifiers are [ Ref 24 ]:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
838 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
839 # AS, X<n>, BO<n>, H<n>, FC<+n/-n>, MN<n>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
840 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
841 # In addition to usage of abbreviations for specifying atomic invariants, the following descriptive words
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
842 # are also allowed:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
843 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
844 # X : NumOfNonHydrogenAtomNeighbors or NumOfHeavyAtomNeighbors
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
845 # BO : SumOfBondOrdersToNonHydrogenAtoms or SumOfBondOrdersToHeavyAtoms
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
846 # LBO : LargestBondOrderToNonHydrogenAtoms or LargestBondOrderToHeavyAtoms
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
847 # SB : NumOfSingleBondsToNonHydrogenAtoms or NumOfSingleBondsToHeavyAtoms
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
848 # DB : NumOfDoubleBondsToNonHydrogenAtoms or NumOfDoubleBondsToHeavyAtoms
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
849 # TB : NumOfTripleBondsToNonHydrogenAtoms or NumOfTripleBondsToHeavyAtoms
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
850 # H : NumOfImplicitAndExplicitHydrogens
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
851 # Ar : Aromatic
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
852 # RA : RingAtom
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
853 # FC : FormalCharge
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
854 # MN : MassNumber
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
855 # SM : SpinMultiplicity
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
856 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
857 sub _InitializeAtomicInvariantsAtomTypesInformation {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
858 my($This) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
859
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
860 @{$This->{AtomicInvariantsToUse}} = ();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
861
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
862 if ($This->{MolecularComplexityType} =~ /^(AtomTypesFingerprints|TopologicalAtomPairsFingerprints|TopologicalAtomTripletsFingerprints|TopologicalAtomTorsionsFingerprints)$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
863 @{$This->{AtomicInvariantsToUse}} = ('AS', 'X', 'BO', 'H', 'FC');
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
864 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
865 elsif ($This->{MolecularComplexityType} =~ /^ExtendedConnectivityFingerprints$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
866 @{$This->{AtomicInvariantsToUse}} = ('AS', 'X', 'BO', 'H', 'FC', 'MN');
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
867 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
868 elsif ($This->{MolecularComplexityType} =~ /^PathLengthFingerprints$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
869 @{$This->{AtomicInvariantsToUse}} = ('AS');
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
870 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
871
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
872 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
873 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
874
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
875 # Initialize functional class atom types, generated by AtomTypes::FunctionalClassAtomTypes
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
876 # class, to use for generating initial atom identifiers...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
877 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
878 # Let:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
879 # HBD: HydrogenBondDonor
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
880 # HBA: HydrogenBondAcceptor
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
881 # PI : PositivelyIonizable
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
882 # NI : NegativelyIonizable
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
883 # Ar : Aromatic
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
884 # Hal : Halogen
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
885 # H : Hydrophobic
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
886 # RA : RingAtom
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
887 # CA : ChainAtom
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
888 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
889 # Then:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
890 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
891 # Functiononal class atom type specification for an atom corresponds to:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
892 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
893 # Ar.CA.H.HBA.HBD.Hal.NI.PI.RA
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
894 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
895 # Default functional classes used are: HBD, HBA, PI, NI, Ar, Hal
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
896 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
897 # FunctionalAtomTypes are assigned using the following definitions [ Ref 60-61, Ref 65-66 ]:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
898 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
899 # HydrogenBondDonor: NH, NH2, OH
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
900 # HydrogenBondAcceptor: N[!H], O
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
901 # PositivelyIonizable: +, NH2
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
902 # NegativelyIonizable: -, C(=O)OH, S(=O)OH, P(=O)OH
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
903 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
904 sub _InitializeFunctionalClassAtomTypesInformation {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
905 my($This) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
906
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
907 @{$This->{FunctionalClassesToUse}} = ();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
908
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
909 if ($This->{MolecularComplexityType} =~ /^(AtomTypesFingerprints|ExtendedConnectivityFingerprints|PathLengthFingerprints|TopologicalAtomPairsFingerprints|TopologicalAtomTripletsFingerprints|TopologicalAtomTorsionsFingerprints)$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
910 @{$This->{FunctionalClassesToUse}} = ('HBD', 'HBA', 'PI', 'NI', 'Ar', 'Hal');
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
911 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
912 elsif ($This->{MolecularComplexityType} =~ /^TopologicalPharmacophoreAtomPairsFingerprints$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
913 @{$This->{FunctionalClassesToUse}} = ('HBD', 'HBA', 'PI', 'NI', 'H');
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
914 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
915 elsif ($This->{MolecularComplexityType} =~ /^TopologicalPharmacophoreAtomTripletsFingerprints$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
916 @{$This->{FunctionalClassesToUse}} = ('HBD', 'HBA', 'PI', 'NI', 'H', 'Ar');
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
917 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
918
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
919 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
920 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
921
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
922 # Set atomic invariants to use for generation of intial atom indentifiers...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
923 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
924 sub SetAtomicInvariantsToUse {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
925 my($This, @Values) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
926 my($FirstValue, $TypeOfFirstValue, $AtomicInvariant, $SpecifiedAtomicInvariant, @SpecifiedAtomicInvariants, @AtomicInvariantsToUse);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
927
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
928 if (!@Values) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
929 carp "Warning: ${ClassName}->SetAtomicInvariantsToUse: No values specified...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
930 return;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
931 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
932
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
933 if ($This->{AtomIdentifierType} !~ /^AtomicInvariantsAtomTypes$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
934 carp "Warning: ${ClassName}->SetAtomicInvariantsToUse: AtomicInvariantsToUse can't be set for InitialAtomIdentifierType of $This->{AtomIdentifierType}...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
935 return;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
936 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
937
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
938 $FirstValue = $Values[0];
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
939 $TypeOfFirstValue = ref $FirstValue;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
940
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
941 @SpecifiedAtomicInvariants = ();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
942 @AtomicInvariantsToUse = ();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
943
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
944 if ($TypeOfFirstValue =~ /^ARRAY/) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
945 push @SpecifiedAtomicInvariants, @{$FirstValue};
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
946 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
947 else {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
948 push @SpecifiedAtomicInvariants, @Values;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
949 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
950
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
951 # Make sure specified AtomicInvariants are valid...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
952 for $SpecifiedAtomicInvariant (@SpecifiedAtomicInvariants) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
953 if (!AtomTypes::AtomicInvariantsAtomTypes::IsAtomicInvariantAvailable($SpecifiedAtomicInvariant)) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
954 croak "Error: ${ClassName}->SetAtomicInvariantsToUse: Specified atomic invariant, $SpecifiedAtomicInvariant, is not supported...\n ";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
955 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
956 $AtomicInvariant = $SpecifiedAtomicInvariant;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
957 push @AtomicInvariantsToUse, $AtomicInvariant;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
958 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
959
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
960 # Set atomic invariants to use...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
961 @{$This->{AtomicInvariantsToUse}} = ();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
962 push @{$This->{AtomicInvariantsToUse}}, @AtomicInvariantsToUse;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
963
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
964 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
965 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
966
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
967 # Set functional classes to use for generation of intial atom indentifiers...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
968 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
969 sub SetFunctionalClassesToUse {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
970 my($This, @Values) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
971 my($FirstValue, $TypeOfFirstValue, $FunctionalClass, $SpecifiedFunctionalClass, @SpecifiedFunctionalClasses, @FunctionalClassesToUse);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
972
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
973 if (!@Values) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
974 carp "Warning: ${ClassName}->SetFunctionalClassesToUse: No values specified...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
975 return;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
976 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
977
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
978 if ($This->{AtomIdentifierType} !~ /^FunctionalClassAtomTypes$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
979 carp "Warning: ${ClassName}->SetFunctionalClassesToUse: FunctionalClassesToUse can't be set for InitialAtomIdentifierType of $This->{AtomIdentifierType}...";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
980 return;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
981 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
982
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
983 $FirstValue = $Values[0];
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
984 $TypeOfFirstValue = ref $FirstValue;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
985
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
986 @SpecifiedFunctionalClasses = ();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
987 @FunctionalClassesToUse = ();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
988
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
989 if ($TypeOfFirstValue =~ /^ARRAY/) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
990 push @SpecifiedFunctionalClasses, @{$FirstValue};
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
991 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
992 else {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
993 push @SpecifiedFunctionalClasses, @Values;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
994 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
995
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
996 # Make sure specified FunctionalClasses are valid...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
997 for $SpecifiedFunctionalClass (@SpecifiedFunctionalClasses) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
998 if (!AtomTypes::FunctionalClassAtomTypes::IsFunctionalClassAvailable($SpecifiedFunctionalClass)) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
999 croak "Error: ${ClassName}->SetFunctionalClassesToUse: Specified functional class, $SpecifiedFunctionalClass, is not supported...\n ";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1000 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1001 push @FunctionalClassesToUse, $SpecifiedFunctionalClass;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1002 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1003
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1004 # Set functional classes to use...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1005 @{$This->{FunctionalClassesToUse}} = ();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1006 push @{$This->{FunctionalClassesToUse}}, @FunctionalClassesToUse;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1007
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1008 return $This;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1009 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1010
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1011 # Return a string containg data for MolecularComplexityDescriptors object...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1012 #
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1013 sub StringifyMolecularComplexityDescriptors {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1014 my($This) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1015 my($ComplexityDescriptorsString, $Nothing);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1016
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1017 $ComplexityDescriptorsString = "MolecularDescriptorType: $This->{Type}; MolecularComplexityType: $This->{MolecularComplexityType}; " . $This->_StringifyDescriptorNamesAndValues();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1018
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1019 # Setup fingerprints specific information...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1020 if ($This->{MolecularComplexityType} =~ /^MACCSKeys$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1021 $ComplexityDescriptorsString .= "; MACCSKeysSize = $This->{MACCSKeysSize}";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1022 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1023 elsif ($This->{MolecularComplexityType} =~ /^ExtendedConnectivityFingerprints$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1024 $ComplexityDescriptorsString .= "; NeighborhoodRadius = $This->{NeighborhoodRadius}; NormalizationMethodology = $This->{NormalizationMethodology}";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1025 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1026 elsif ($This->{MolecularComplexityType} =~ /^PathLengthFingerprints$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1027 $ComplexityDescriptorsString .= "; MinPathLength = $This->{MinPathLength}; MaxPathLength = $This->{MaxPathLength}; UseBondSymbols: " . ($This->{UseBondSymbols} ? "Yes" : "No");
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1028 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1029 elsif ($This->{MolecularComplexityType} =~ /^TopologicalAtomPairsFingerprints$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1030 $ComplexityDescriptorsString .= "; MinDistance = $This->{MinDistance}; MaxDistance = $This->{MaxDistance}";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1031 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1032 elsif ($This->{MolecularComplexityType} =~ /^TopologicalAtomTripletsFingerprints$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1033 $ComplexityDescriptorsString .= "; MinDistance = $This->{MinDistance}; MaxDistance = $This->{MaxDistance}; UseTriangleInequality: " . ($This->{UseTriangleInequality} ? "Yes" : "No");
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1034 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1035 elsif ($This->{MolecularComplexityType} =~ /^TopologicalAtomTorsionsFingerprints$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1036 $ComplexityDescriptorsString .= "; MinDistance = $This->{MinDistance}; MaxDistance = $This->{MaxDistance}";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1037 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1038 elsif ($This->{MolecularComplexityType} =~ /^TopologicalPharmacophoreAtomPairsFingerprints$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1039 $ComplexityDescriptorsString .= "; MinDistance = $This->{MinDistance}; MaxDistance = $This->{MaxDistance}; NormalizationMethodology = $This->{NormalizationMethodology}";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1040 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1041 elsif ($This->{MolecularComplexityType} =~ /^TopologicalPharmacophoreAtomTripletsFingerprints$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1042 $ComplexityDescriptorsString .= "; MinDistance = $This->{MinDistance}; MaxDistance = $This->{MaxDistance}; NormalizationMethodology = $This->{NormalizationMethodology}; DistanceBinSize: $This->{DistanceBinSize}; UseTriangleInequality: " . ($This->{UseTriangleInequality} ? "Yes" : "No");
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1043 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1044
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1045 # Setup atom identifier information...
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1046 if ($This->{MolecularComplexityType} =~ /^(AtomTypesFingerprints|ExtendedConnectivityFingerprints|PathLengthFingerprints|TopologicalAtomPairsFingerprints|TopologicalAtomTripletsFingerprints|TopologicalAtomTorsionsFingerprints|TopologicalPharmacophoreAtomPairsFingerprints|TopologicalPharmacophoreAtomTripletsFingerprints)$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1047 $ComplexityDescriptorsString .= "; AtomIdentifierType = $This->{AtomIdentifierType}";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1048
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1049 if ($This->{AtomIdentifierType} =~ /^AtomicInvariantsAtomTypes$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1050 my($AtomicInvariant, @AtomicInvariants, @AtomicInvariantsOrder, %AvailableAtomicInvariants);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1051
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1052 @AtomicInvariantsOrder = AtomTypes::AtomicInvariantsAtomTypes::GetAtomicInvariantsOrder();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1053 %AvailableAtomicInvariants = AtomTypes::AtomicInvariantsAtomTypes::GetAvailableAtomicInvariants();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1054
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1055 for $AtomicInvariant (@AtomicInvariantsOrder) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1056 push @AtomicInvariants, "$AtomicInvariant: $AvailableAtomicInvariants{$AtomicInvariant}";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1057 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1058
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1059 $ComplexityDescriptorsString .= "; AtomicInvariantsToUse: <" . TextUtil::JoinWords(\@{$This->{AtomicInvariantsToUse}}, ", ", 0) . ">";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1060 $ComplexityDescriptorsString .= "; AtomicInvariantsOrder: <" . TextUtil::JoinWords(\@AtomicInvariantsOrder, ", ", 0) . ">";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1061 $ComplexityDescriptorsString .= "; AvailableAtomicInvariants: <" . TextUtil::JoinWords(\@AtomicInvariants, ", ", 0) . ">";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1062 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1063 elsif ($This->{AtomIdentifierType} =~ /^FunctionalClassAtomTypes$/i) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1064 my($FunctionalClass, @FunctionalClasses, @FunctionalClassesOrder, %AvailableFunctionalClasses);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1065
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1066 @FunctionalClassesOrder = AtomTypes::FunctionalClassAtomTypes::GetFunctionalClassesOrder();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1067 %AvailableFunctionalClasses = AtomTypes::FunctionalClassAtomTypes::GetAvailableFunctionalClasses();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1068
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1069 for $FunctionalClass (@FunctionalClassesOrder) {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1070 push @FunctionalClasses, "$FunctionalClass: $AvailableFunctionalClasses{$FunctionalClass}";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1071 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1072
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1073 $ComplexityDescriptorsString .= "; FunctionalClassesToUse: <" . TextUtil::JoinWords(\@{$This->{FunctionalClassesToUse}}, ", ", 0) . ">";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1074 $ComplexityDescriptorsString .= "; FunctionalClassesOrder: <" . TextUtil::JoinWords(\@FunctionalClassesOrder, ", ", 0) . ">";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1075 $ComplexityDescriptorsString .= "; AvailableFunctionalClasses: <" . TextUtil::JoinWords(\@FunctionalClasses, ", ", 0) . ">";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1076 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1077 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1078 return $ComplexityDescriptorsString;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1079 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1080
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1081 # Is it a MolecularComplexityDescriptors object?
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1082 sub _IsMolecularComplexityDescriptors {
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1083 my($Object) = @_;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1084
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1085 return (Scalar::Util::blessed($Object) && $Object->isa($ClassName)) ? 1 : 0;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1086 }
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1087
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1088 1;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1089
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1090 __END__
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1091
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1092 =head1 NAME
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1093
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1094 MolecularComplexityDescriptors
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1095
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1096 =head1 SYNOPSIS
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1097
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1098 use MolecularDescriptors::MolecularComplexityDescriptors;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1099
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1100 use MolecularDescriptors::MolecularComplexityDescriptors qw(:all);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1101
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1102 =head1 DESCRIPTION
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1103
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1104 B<MolecularComplexityDescriptors> class provides the following methods:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1105
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1106 new, GenerateDescriptors, GetDescriptorNames,
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1107 GetMolecularComplexityTypeAbbreviation, MACCSKeysSize, SetAtomIdentifierType,
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1108 SetAtomicInvariantsToUse, SetDistanceBinSize, SetFunctionalClassesToUse,
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1109 SetMaxDistance, SetMaxPathLength, SetMinDistance, SetMinPathLength,
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1110 SetMolecularComplexityType, SetNeighborhoodRadius, SetNormalizationMethodology,
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1111 StringifyMolecularComplexityDescriptors
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1112
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1113 B<MolecularComplexityDescriptors> is derived from B<MolecularDescriptors> class which in turn
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1114 is derived from B<ObjectProperty> base class that provides methods not explicitly defined
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1115 in B<MolecularComplexityDescriptors>, B<MolecularDescriptors> or B<ObjectProperty> classes using Perl's
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1116 AUTOLOAD functionality. These methods are generated on-the-fly for a specified object property:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1117
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1118 Set<PropertyName>(<PropertyValue>);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1119 $PropertyValue = Get<PropertyName>();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1120 Delete<PropertyName>();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1121
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1122 The current release of MayaChemTools supports calculation of molecular complexity using
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1123 I<MolecularComplexityType> parameter corresponding to number of bits-set or unique
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1124 keys [ Ref 117-119 ] in molecular fingerprints. The valid values for I<MolecularComplexityType>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1125 are:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1126
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1127 AtomTypesFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1128 ExtendedConnectivityFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1129 MACCSKeys
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1130 PathLengthFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1131 TopologicalAtomPairsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1132 TopologicalAtomTripletsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1133 TopologicalAtomTorsionsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1134 TopologicalPharmacophoreAtomPairsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1135 TopologicalPharmacophoreAtomTripletsFingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1136
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1137 Default value for I<MolecularComplexityType>: I<MACCSKeys>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1138
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1139 I<AtomIdentifierType> parameter name corresponds to atom types used during generation of
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1140 fingerprints. The valid values for I<AtomIdentifierType> are: I<AtomicInvariantsAtomTypes,
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1141 DREIDINGAtomTypes, EStateAtomTypes, FunctionalClassAtomTypes, MMFF94AtomTypes,
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1142 SLogPAtomTypes, SYBYLAtomTypes, TPSAAtomTypes, UFFAtomTypes>. I<AtomicInvariantsAtomTypes>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1143 is not supported for following values of I<MolecularComplexityType>: I<MACCSKeys,
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1144 TopologicalPharmacophoreAtomPairsFingerprints, TopologicalPharmacophoreAtomTripletsFingerprints>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1145 I<FunctionalClassAtomTypes> is the only valid value of I<AtomIdentifierType> for topological
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1146 pharmacophore fingerprints.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1147
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1148 Default value for I<AtomIdentifierType>: I<AtomicInvariantsAtomTypes> for all fingerprints;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1149 I<FunctionalClassAtomTypes> for topological pharmacophore fingerprints.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1150
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1151 I<AtomicInvariantsToUse> parameter name and values are used during I<AtomicInvariantsAtomTypes>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1152 value of parameter I<AtomIdentifierType>. It's a list of space separated valid atomic invariant atom types.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1153
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1154 Possible values for atomic invariants are: I<AS, X, BO, LBO, SB, DB, TB, H, Ar, RA, FC, MN, SM>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1155 Default value for I<AtomicInvariantsToUse> parameter are set differently for different fingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1156 using I<MolecularComplexityType> parameter as shown below:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1157
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1158 MolecularComplexityType AtomicInvariantsToUse
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1159
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1160 AtomTypesFingerprints AS X BO H FC
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1161 TopologicalAtomPairsFingerprints AS X BO H FC
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1162 TopologicalAtomTripletsFingerprints AS X BO H FC
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1163 TopologicalAtomTorsionsFingerprints AS X BO H FC
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1164
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1165 ExtendedConnectivityFingerprints AS X BO H FC MN
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1166 PathLengthFingerprints AS
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1167
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1168 I<FunctionalClassesToUse> parameter name and values are used during I<FunctionalClassAtomTypes>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1169 value of parameter I<AtomIdentifierType>. It's a list of space separated valid atomic invariant atom types.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1170
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1171 Possible values for atom functional classes are: I<Ar, CA, H, HBA, HBD, Hal, NI, PI, RA>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1172
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1173 Default value for I<FunctionalClassesToUse> parameter is set to:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1174
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1175 HBD HBA PI NI Ar Hal
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1176
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1177 for all fingerprints except for the following two I<MolecularComplexityType> fingerints:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1178
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1179 MolecularComplexityType FunctionalClassesToUse
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1180
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1181 TopologicalPharmacophoreAtomPairsFingerprints HBD HBA P, NI H
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1182 TopologicalPharmacophoreAtomTripletsFingerprints HBD HBA PI NI H Ar
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1183
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1184 I<MACCSKeysSize> parameter name is only used during I<MACCSKeys> value of
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1185 I<MolecularComplexityType> and corresponds to size of MACCS key set. Possible
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1186 values: I<166 or 322>. Default value: I<166>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1187
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1188 I<NeighborhoodRadius> parameter name is only used during I<ExtendedConnectivityFingerprints>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1189 value of I<MolecularComplexityType> and corresponds to atomic neighborhoods radius for
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1190 generating extended connectivity fingerprints. Possible values: positive integer. Default value:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1191 I<2>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1192
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1193 I<MinPathLength> and I<MaxPathLength> parameters are only used during I<PathLengthFingerprints>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1194 value of I<MolecularComplexityType> and correspond to minimum and maximum path lengths to use
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1195 for generating path length fingerprints. Possible values: positive integers. Default value: I<MinPathLength - 1>;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1196 I<MaxPathLength - 8>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1197
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1198 I<UseBondSymbols> parameter is only used during I<PathLengthFingerprints> value of
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1199 I<MolecularComplexityType> and indicates whether bond symbols are included in atom path
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1200 strings used to generate path length fingerprints. Possible value: I<Yes or No>. Default value:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1201 I<Yes>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1202
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1203 I<MinDistance> and I<MaxDistance> parameters are only used during I<TopologicalAtomPairsFingerprints>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1204 and I<TopologicalAtomTripletsFingerprints> values of I<MolecularComplexityType> and correspond to
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1205 minimum and maximum bond distance between atom pairs during topological pharmacophore fingerprints.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1206 Possible values: positive integers. Default value: I<MinDistance - 1>; I<MaxDistance - 10>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1207
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1208 I<UseTriangleInequality> parameter is used during these values for I<MolecularComplexityType>:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1209 I<TopologicalAtomTripletsFingerprints> and I<TopologicalPharmacophoreAtomTripletsFingerprints>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1210 Possible values: I<Yes or No>. It determines wheter to apply triangle inequality to distance triplets.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1211 Default value: I<TopologicalAtomTripletsFingerprints - No>;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1212 I<TopologicalPharmacophoreAtomTripletsFingerprints - Yes>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1213
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1214 I<DistanceBinSize> parameter is used during I<TopologicalPharmacophoreAtomTripletsFingerprints>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1215 value of I<MolecularComplexityType> and corresponds to distance bin size used for binning
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1216 distances during generation of topological pharmacophore atom triplets fingerprints. Possible
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1217 value: positive integer. Default value: I<2>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1218
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1219 I<NormalizationMethodology> is only used for these values for I<MolecularComplexityType>:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1220 I<ExtendedConnectivityFingerprints>, I<TopologicalPharmacophoreAtomPairsFingerprints>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1221 and I<TopologicalPharmacophoreAtomTripletsFingerprints>. It corresponds to normalization
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1222 methodology to use for scaling the number of bits-set or unique keys during generation of
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1223 fingerprints. Possible values during I<ExtendedConnectivityFingerprints>: I<None or
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1224 ByHeavyAtomsCount>; Default value: I<None>. Possible values during topological
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1225 pharmacophore atom pairs and triplets fingerprints: I<None or ByPossibleKeysCount>;
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1226 Default value: I<None>. I<ByPossibleKeysCount> corresponds to total number of
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1227 possible topological pharmacophore atom pairs or triplets in a molecule.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1228
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1229 =head2 METHODS
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1230
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1231 =over 4
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1232
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1233 =item B<new>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1234
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1235 $NewMolecularComplexityDescriptors = new MolecularDescriptors::
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1236 MolecularComplexityDescriptors(
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1237 %NamesAndValues);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1238
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1239 Using specified I<MolecularComplexityDescriptors> property names and values hash, B<new>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1240 method creates a new object and returns a reference to newly created B<MolecularComplexityDescriptors>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1241 object. By default, the following properties are initialized:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1242
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1243 Molecule = ''
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1244 Type = 'MolecularComplexity'
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1245 MolecularComplexityType = 'MACCSKeys'
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1246 AtomIdentifierType = ''
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1247 MACCSKeysSize = 166
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1248 NeighborhoodRadius = 2
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1249 MinPathLength = 1
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1250 MaxPathLength = 8
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1251 UseBondSymbols = 1
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1252 MinDistance = 1
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1253 MaxDistance = 10
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1254 UseTriangleInequality = ''
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1255 DistanceBinSize = 2
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1256 NormalizationMethodology = 'None'
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1257 @DescriptorNames = ('MolecularComplexity')
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1258 @DescriptorValues = ('None')
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1259
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1260 Examples:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1261
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1262 $MolecularComplexityDescriptors = new MolecularDescriptors::
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1263 MolecularComplexityDescriptors(
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1264 'Molecule' => $Molecule);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1265
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1266 $MolecularComplexityDescriptors = new MolecularDescriptors::
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1267 MolecularComplexityDescriptors();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1268
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1269 $MolecularComplexityDescriptors->SetMolecule($Molecule);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1270 $MolecularComplexityDescriptors->GenerateDescriptors();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1271 print "MolecularComplexityDescriptors: $MolecularComplexityDescriptors\n";
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1272
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1273
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1274 =item B<GenerateDescriptors>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1275
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1276 $MolecularComplexityDescriptors->GenerateDescriptors();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1277
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1278 Calculates MolecularComplexity value for a molecule and returns I<MolecularComplexityDescriptors>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1279
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1280 =item B<GetDescriptorNames>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1281
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1282 @DescriptorNames = $MolecularComplexityDescriptors->GetDescriptorNames();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1283 @DescriptorNames = MolecularDescriptors::MolecularComplexityDescriptors::
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1284 GetDescriptorNames();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1285
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1286 Returns all available descriptor names as an array.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1287
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1288 =item B<GetMolecularComplexityTypeAbbreviation>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1289
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1290 $Abbrev = $MolecularComplexityDescriptors->
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1291 GetMolecularComplexityTypeAbbreviation();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1292 $Abbrev = MolecularDescriptors::MolecularComplexityDescriptors::
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1293 GetMolecularComplexityTypeAbbreviation($ComplexityType);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1294
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1295 Returns abbreviation for a specified molecular complexity type or corresponding to
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1296 I<MolecularComplexityDescriptors> object.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1297
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1298 =item B<SetMACCSKeysSize>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1299
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1300 $MolecularComplexityDescriptors->MACCSKeysSize($Size);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1301
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1302 Sets MACCS keys size and returns I<MolecularComplexityDescriptors>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1303
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1304 =item B<SetAtomIdentifierType>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1305
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1306 $MolecularComplexityDescriptors->SetAtomIdentifierType($IdentifierType);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1307
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1308 Sets atom I<IdentifierType> to use during fingerprints generation corresponding to
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1309 I<MolecularComplexityType> and returns I<MolecularComplexityDescriptors>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1310
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1311 Possible values: I<AtomicInvariantsAtomTypes, DREIDINGAtomTypes, EStateAtomTypes,
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1312 FunctionalClassAtomTypes, MMFF94AtomTypes, SLogPAtomTypes, SYBYLAtomTypes,
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1313 TPSAAtomTypes, UFFAtomTypes>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1314
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1315 =item B<SetAtomicInvariantsToUse>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1316
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1317 $MolecularComplexityDescriptors->SetAtomicInvariantsToUse($ValuesRef);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1318 $MolecularComplexityDescriptors->SetAtomicInvariantsToUse(@Values);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1319
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1320 Sets atomic invariants to use during I<AtomicInvariantsAtomTypes> value of I<AtomIdentifierType>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1321 for fingerprints generation and returns I<MolecularComplexityDescriptors>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1322
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1323 Possible values for atomic invariants are: I<AS, X, BO, LBO, SB, DB, TB,
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1324 H, Ar, RA, FC, MN, SM>. Default value [ Ref 24 ]: I<AS,X,BO,H,FC,MN>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1325
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1326 The atomic invariants abbreviations correspond to:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1327
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1328 AS = Atom symbol corresponding to element symbol
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1329
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1330 X<n> = Number of non-hydrogen atom neighbors or heavy atoms
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1331 BO<n> = Sum of bond orders to non-hydrogen atom neighbors or heavy atoms
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1332 LBO<n> = Largest bond order of non-hydrogen atom neighbors or heavy atoms
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1333 SB<n> = Number of single bonds to non-hydrogen atom neighbors or heavy atoms
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1334 DB<n> = Number of double bonds to non-hydrogen atom neighbors or heavy atoms
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1335 TB<n> = Number of triple bonds to non-hydrogen atom neighbors or heavy atoms
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1336 H<n> = Number of implicit and explicit hydrogens for atom
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1337 Ar = Aromatic annotation indicating whether atom is aromatic
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1338 RA = Ring atom annotation indicating whether atom is a ring
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1339 FC<+n/-n> = Formal charge assigned to atom
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1340 MN<n> = Mass number indicating isotope other than most abundant isotope
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1341 SM<n> = Spin multiplicity of atom. Possible values: 1 (singlet), 2 (doublet) or
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1342 3 (triplet)
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1343
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1344 Atom type generated by AtomTypes::AtomicInvariantsAtomTypes class corresponds to:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1345
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1346 AS.X<n>.BO<n>.LBO<n>.<SB><n>.<DB><n>.<TB><n>.H<n>.Ar.RA.FC<+n/-n>.MN<n>.SM<n>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1347
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1348 Except for AS which is a required atomic invariant in atom types, all other atomic invariants are
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1349 optional. Atom type specification doesn't include atomic invariants with zero or undefined values.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1350
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1351 In addition to usage of abbreviations for specifying atomic invariants, the following descriptive words
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1352 are also allowed:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1353
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1354 X : NumOfNonHydrogenAtomNeighbors or NumOfHeavyAtomNeighbors
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1355 BO : SumOfBondOrdersToNonHydrogenAtoms or SumOfBondOrdersToHeavyAtoms
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1356 LBO : LargestBondOrderToNonHydrogenAtoms or LargestBondOrderToHeavyAtoms
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1357 SB : NumOfSingleBondsToNonHydrogenAtoms or NumOfSingleBondsToHeavyAtoms
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1358 DB : NumOfDoubleBondsToNonHydrogenAtoms or NumOfDoubleBondsToHeavyAtoms
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1359 TB : NumOfTripleBondsToNonHydrogenAtoms or NumOfTripleBondsToHeavyAtoms
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1360 H : NumOfImplicitAndExplicitHydrogens
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1361 Ar : Aromatic
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1362 RA : RingAtom
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1363 FC : FormalCharge
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1364 MN : MassNumber
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1365 SM : SpinMultiplicity
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1366
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1367 I<AtomTypes::AtomicInvariantsAtomTypes> module is used to assign atomic invariant
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1368 atom types.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1369
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1370 =item B<SetDistanceBinSize>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1371
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1372 $MolecularComplexityDescriptors->SetDistanceBinSize($BinSize);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1373
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1374 Sets distance bin size used to bin distances between atom pairs in atom triplets for
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1375 topological pharmacophore atom triplets fingerprints generation and returns
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1376 I<MolecularComplexityDescriptors>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1377
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1378 =item B<SetFunctionalClassesToUse>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1379
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1380 $MolecularComplexityDescriptors->SetFunctionalClassesToUse($ValuesRef);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1381 $MolecularComplexityDescriptors->SetFunctionalClassesToUse(@Values);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1382
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1383 Sets functional classes invariants to use during I<FunctionalClassAtomTypes> value of I<AtomIdentifierType>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1384 for fingerprints generation and returns I<MolecularComplexityDescriptors>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1385
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1386 Possible values for atom functional classes are: I<Ar, CA, H, HBA, HBD, Hal, NI, PI, RA>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1387 Default value [ Ref 24 ]: I<HBD,HBA,PI,NI,Ar,Hal>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1388
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1389 The functional class abbreviations correspond to:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1390
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1391 HBD: HydrogenBondDonor
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1392 HBA: HydrogenBondAcceptor
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1393 PI : PositivelyIonizable
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1394 NI : NegativelyIonizable
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1395 Ar : Aromatic
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1396 Hal : Halogen
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1397 H : Hydrophobic
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1398 RA : RingAtom
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1399 CA : ChainAtom
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1400
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1401 Functional class atom type specification for an atom corresponds to:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1402
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1403 Ar.CA.H.HBA.HBD.Hal.NI.PI.RA or None
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1404
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1405 I<AtomTypes::FunctionalClassAtomTypes> module is used to assign functional class atom
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1406 types. It uses following definitions [ Ref 60-61, Ref 65-66 ]:
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1407
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1408 HydrogenBondDonor: NH, NH2, OH
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1409 HydrogenBondAcceptor: N[!H], O
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1410 PositivelyIonizable: +, NH2
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1411 NegativelyIonizable: -, C(=O)OH, S(=O)OH, P(=O)OH
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1412
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1413 =item B<SetMaxDistance>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1414
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1415 $MolecularComplexityDescriptors->SetMaxDistance($MaxDistance);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1416
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1417 Sets maximum distance to use during topological atom pairs and triplets fingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1418 generation and returns I<MolecularComplexityDescriptors>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1419
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1420 =item B<SetMaxPathLength>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1421
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1422 $MolecularComplexityDescriptors->SetMaxPathLength($Length);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1423
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1424 Sets maximum path length to use during path length fingerprints generation and returns
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1425 I<MolecularComplexityDescriptors>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1426
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1427 =item B<SetMinDistance>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1428
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1429 $MolecularComplexityDescriptors->SetMinDistance($MinDistance);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1430
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1431 Sets minimum distance to use during topological atom pairs and triplets fingerprints
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1432 generation and returns I<MolecularComplexityDescriptors>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1433
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1434 =item B<SetMinPathLength>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1435
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1436 $MolecularComplexityDescriptors->SetMinPathLength($MinPathLength);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1437
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1438 Sets minimum path length to use during path length fingerprints generation and returns
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1439 I<MolecularComplexityDescriptors>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1440
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1441 =item B<SetMolecularComplexityType>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1442
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1443 $MolecularComplexityDescriptors->SetMolecularComplexityType($ComplexityType);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1444
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1445 Sets molecular complexity type to use for calculating its value and returns
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1446 I<MolecularComplexityDescriptors>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1447
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1448 =item B<SetNeighborhoodRadius>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1449
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1450 $MolecularComplexityDescriptors->SetNeighborhoodRadius($Radius);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1451
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1452 Sets neighborhood radius to use during extended connectivity fingerprints generation and
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1453 returns I<MolecularComplexityDescriptors>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1454
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1455 =item B<SetNormalizationMethodology>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1456
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1457 $MolecularComplexityDescriptors->SetNormalizationMethodology($Methodology);
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1458
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1459 Sets normalization methodology to use during calculation of molecular complexity
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1460 corresponding to extended connectivity, topological pharmacophore atom pairs and
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1461 tripletes fingerprints returns I<MolecularComplexityDescriptors>.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1462
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1463 =item B<StringifyMolecularComplexityDescriptors>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1464
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1465 $String = $MolecularComplexityDescriptors->
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1466 StringifyMolecularComplexityDescriptors();
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1467
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1468 Returns a string containing information about I<MolecularComplexityDescriptors> object.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1469
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1470 =back
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1471
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1472 =head1 AUTHOR
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1473
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1474 Manish Sud <msud@san.rr.com>
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1475
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1476 =head1 SEE ALSO
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1477
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1478 MolecularDescriptors.pm, MolecularDescriptorsGenerator.pm
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1479
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1480 =head1 COPYRIGHT
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1481
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1482 Copyright (C) 2015 Manish Sud. All rights reserved.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1483
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1484 This file is part of MayaChemTools.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1485
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1486 MayaChemTools is free software; you can redistribute it and/or modify it under
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1487 the terms of the GNU Lesser General Public License as published by the Free
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1488 Software Foundation; either version 3 of the License, or (at your option)
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1489 any later version.
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1490
68300206e90d Uploaded
deepakjadmin
parents:
diff changeset
1491 =cut