annotate lib/MolecularDescriptors/MolecularComplexityDescriptors.pm @ 0:4816e4a8ae95 draft default tip

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