annotate lib/MolecularDescriptors/MolecularDescriptorsGenerator.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::MolecularDescriptorsGenerator;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
2 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
3 # $RCSfile: MolecularDescriptorsGenerator.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.13 $
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 ObjectProperty;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
34 use TextUtil ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
35 use FileUtil ();
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
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
39 use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
40
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
41 @ISA = qw(ObjectProperty Exporter);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
42 @EXPORT = qw();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
43 @EXPORT_OK = qw(GetAvailableDescriptorClassNames GetAvailableClassAndDescriptorNames GetAvailableDescriptorNames GetAvailableDescriptorNamesForDescriptorClass GetAvailableClassNameForDescriptorName GetRuleOf5DescriptorNames GetRuleOf3DescriptorNames IsDescriptorClassNameAvailable IsDescriptorNameAvailable);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
44
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
45 %EXPORT_TAGS = (all => [@EXPORT, @EXPORT_OK]);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
46
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
47 # Setup class variables...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
48 my($ClassName, %DescriptorsDataMap);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
49 _InitializeClass();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
50
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
51 # Overload Perl functions...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
52 use overload '""' => 'StringifyMolecularDescriptorsGenerator';
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
53
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
54 # Class constructor...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
55 sub new {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
56 my($Class, %NamesAndValues) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
57
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
58 # Initialize object...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
59 my $This = {};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
60 bless $This, ref($Class) || $Class;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
61 $This->_InitializeMolecularDescriptorsGenerator();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
62
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
63 $This->_InitializeMolecularDescriptorsGeneratorProperties(%NamesAndValues);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
64
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
65 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
66 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
67
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
68 # Initialize class ...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
69 sub _InitializeClass {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
70 #Class name...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
71 $ClassName = __PACKAGE__;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
72
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
73 # Load available molecular descriptor classes...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
74 _LoadMolecularDescriptorsData();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
75
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
76 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
77
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
78 # Initialize object data...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
79 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
80 sub _InitializeMolecularDescriptorsGenerator {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
81 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
82
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
83 # Type of desciptors to generate...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
84 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
85 # The current release of MayaChemTools supports generation of four sets of
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
86 # descriptors: All available descriptors, rule of 5 or 3 descriptors or a specified
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
87 # set of descriptors.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
88 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
89 # Possible values: All, RuleOf5, RuleOf3 or Specify
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
90 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
91 # RuleOf5 [ Ref 91 ] descriptor names: MolecularWeight, HydrogenBondDonors, HydrogenBondAcceptors,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
92 # SLogP. RuleOf5 states: MolecularWeight <= 500, HydrogenBondDonors <= 5, HydrogenBondAcceptors <= 10,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
93 # and logP <= 5.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
94 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
95 # RuleOf3 [ Ref 92 ] descriptor names: MolecularWeight, RotatableBonds, HydrogenBondDonors,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
96 # HydrogenBondAcceptors, SLogP, TPSA. RuleOf3 states: MolecularWeight <= 300, RotatableBonds <= 3,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
97 # HydrogenBondDonors <= 3, HydrogenBondAcceptors <= 3, logP <= 3, and TPSA <= 60.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
98 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
99 # For Specify value of Mode, a set of descritor names must be specified using
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
100 # DescriptorNames parameter.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
101 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
102 # Default: All
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
103 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
104 $This->{Mode} = '';
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
105
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
106 # Descriptor names used to generate descriptor values during a specified descriptor
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
107 # generation mode...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
108 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
109 @{$This->{DescriptorNames}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
110
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
111 # Descriptor calculation control parameters for specified descriptor class names...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
112 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
113 # These parameters are passed on to appropriate descriptor classes during
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
114 # instantiations of descriptor class objects.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
115 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
116 %{$This->{DescriptorClassParameters}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
117
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
118 $This->{DescriptorClassesInstantiated} = 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
119
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
120 # Descriptor class names and objects corresponding to specified descriptor names...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
121 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
122 @{$This->{DescriptorClassNames}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
123 %{$This->{DescriptorClassObjects}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
124
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
125 # Descriptor values generated for specified descriptor names...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
126 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
127 @{$This->{DescriptorValues}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
128
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
129 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
130 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
131
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
132 # Initialize object properties...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
133 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
134 sub _InitializeMolecularDescriptorsGeneratorProperties {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
135 my($This, %NamesAndValues) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
136
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
137 my($Name, $Value, $MethodName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
138 while (($Name, $Value) = each %NamesAndValues) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
139 $MethodName = "Set${Name}";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
140 $This->$MethodName($Value);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
141 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
142
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
143 # Set default value for Mode...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
144 if (!$This->{Mode}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
145 $This->{Mode} = 'All';
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
146 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
147
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
148 $This->_CheckAndInitializeDescriptorNames();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
149
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
150 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
151 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
152
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
153 # Set descriptors generation mode......
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
154 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
155 sub SetMode {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
156 my($This, $Value) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
157
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
158 # All - all available descriptors
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
159 # Specify - Specified set of descriptors
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
160
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
161 if ($Value !~ /^(All|RuleOf5|RuleOf3|Specify)$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
162 croak "Error: ${ClassName}->SetMode: Mode value, $Value, is not valid; Supported values: All, RuleOf5, RuleOf3 or Specify...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
163 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
164
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
165 $This->{Mode} = $Value;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
166
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
167 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
168 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
169
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
170 # Set descriptor names to use for generating descriptor values using an array
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
171 # or reference to an array...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
172 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
173 sub SetDescriptorNames {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
174 my($This, @Values) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
175
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
176 if ($This->{Mode} =~ /^All$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
177 croak "Error: ${ClassName}->SetDescriptorNames: Descriptor names cann't be specified during \"All\" value of descsriptors generation \"Mode\"...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
178 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
179
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
180 if (!@Values) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
181 return;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
182 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
183
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
184 my($FirstValue, $TypeOfFirstValue);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
185
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
186 $FirstValue = $Values[0];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
187 $TypeOfFirstValue = ref $FirstValue;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
188
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
189 @{$This->{DescriptorNames}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
190
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
191 if ($TypeOfFirstValue =~ /^ARRAY/) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
192 # Initialize using array refernce...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
193 push @{$This->{DescriptorNames}}, @{$FirstValue};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
194 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
195 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
196 # It's a list of values...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
197 push @{$This->{DescriptorNames}}, @Values;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
198 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
199
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
200 # Make sure specified descriptor names are valid...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
201 $This->_ValidateDescriptorNames();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
202
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
203 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
204 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
205
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
206 # Get descriptor names as an array...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
207 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
208 sub GetDescriptorNames {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
209 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
210
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
211 return wantarray ? @{$This->{DescriptorNames}} : scalar @{$This->{DescriptorNames}};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
212 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
213
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
214 # Get all descriptor values as an array...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
215 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
216 sub GetDescriptorValues {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
217 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
218
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
219 if ($This->{DescriptorsGenerated}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
220 return wantarray ? @{$This->{DescriptorValues}} : scalar @{$This->{DescriptorValues}};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
221 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
222 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
223 my(@DescriptorValues);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
224
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
225 @DescriptorValues = ('None') x scalar @{$This->{DescriptorNames}};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
226
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
227 return wantarray ? @DescriptorValues : scalar @DescriptorValues;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
228 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
229 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
230
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
231 # Get descriptor value for a specified descriptor name...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
232 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
233 sub GetDescriptorValueByName {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
234 my($This, $Name) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
235 my(%NamesAndValues);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
236
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
237 %NamesAndValues = $This->GetDescriptorNamesAndValues();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
238
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
239 return exists $NamesAndValues{$Name} ? $NamesAndValues{$Name} : 'None';
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
240
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
241 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
242
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
243 # Get calculated molecular descriptor names sand values as a hash with names
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
244 # and values as key/value pairs...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
245 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
246 sub GetDescriptorNamesAndValues {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
247 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
248 my(%NamesAndValues);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
249
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
250 %NamesAndValues = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
251 @NamesAndValues{ @{$This->{DescriptorNames}} } = $This->GetDescriptorValues();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
252
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
253 return %NamesAndValues;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
254 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
255
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
256 # Set up descriptor calculation control parameters for a specified descriptor class name...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
257 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
258 # The specified parameter names and values are simply passed on to specified descriptor
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
259 # class during instantiation of descriptor class object without any performing any validation
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
260 # of parameter names and associated values. It's up to the appropriate descriptor class methods
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
261 # to validate these parameters and values.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
262 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
263 # In addition to specified parameter names and values, the parameter hash must also contain
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
264 # descriptor class name as key and value pair with DescriptorClassName as key with class
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
265 # name as value.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
266 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
267 sub SetDescriptorClassParameters {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
268 my($This, %NamesAndValues) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
269 my($DescriptorClassName, $Name, $Value);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
270
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
271 if (!exists $NamesAndValues{DescriptorClassName}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
272 croak "Error: ${ClassName}->_SetDescriptorNameParameters: Can't set descriptor class name paramaters: DescriptorClassName is not specified...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
273 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
274
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
275 $DescriptorClassName = $NamesAndValues{DescriptorClassName};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
276 if (!IsDescriptorClassNameAvailable($DescriptorClassName)) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
277 carp "Warning: ${ClassName}->_SetDescriptorClassParameters: Can't set descriptor class name paramaters: Specified descriptor class name, $DescriptorClassName, is not available...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
278 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
279 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
280
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
281 if (exists $This->{DescriptorClassParameters}{$DescriptorClassName}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
282 carp "Warning: ${ClassName}->SetDescriptorClassParameters: Class name parameters for $DescriptorClassName have already been specified: Replacing previous values...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
283 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
284
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
285 %{$This->{DescriptorClassParameters}{$DescriptorClassName}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
286 NAME: while (($Name, $Value) = each %NamesAndValues) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
287 if ($Name =~ /^DescriptorClassName$/) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
288 next NAME;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
289 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
290 $This->{DescriptorClassParameters}{$DescriptorClassName}{$Name} = $Value;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
291 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
292
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
293 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
294 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
295
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
296 # Get descriptor name parameters as a reference to hash of hashes with hash
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
297 # keys corresponding to class name and class parameter name with hash value
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
298 # as class parameter value...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
299 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
300 sub GetDescriptorClassParameters {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
301 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
302
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
303 return \%{$This->{DescriptorClassParameters}};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
304 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
305
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
306 # Get available descriptor class names as an array.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
307 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
308 # This functionality can be either invoked as a class function or an
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
309 # object method.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
310 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
311 sub GetAvailableDescriptorClassNames {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
312
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
313 return wantarray ? @{$DescriptorsDataMap{ClassNames}} : scalar @{$DescriptorsDataMap{ClassNames}};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
314 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
315
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
316 # Get available descriptors class and descriptors names as a hash containing key/value
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
317 # pairs corresponding to class name and an array of descriptor names available for the
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
318 # class.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
319 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
320 # This functionality can be either invoked as a class function or an
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
321 # object method.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
322 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
323 sub GetAvailableClassAndDescriptorNames {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
324 my($DescriptorClassName, @DescriptorNames, %ClassAndDescriptorNames);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
325
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
326 %ClassAndDescriptorNames = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
327 for $DescriptorClassName (@{$DescriptorsDataMap{ClassNames}}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
328 @{$ClassAndDescriptorNames{$DescriptorClassName}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
329 push @{$ClassAndDescriptorNames{$DescriptorClassName}}, @{$DescriptorsDataMap{ClassToDescriptorNames}{$DescriptorClassName}};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
330 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
331
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
332 return %ClassAndDescriptorNames;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
333 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
334
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
335 # Get available descriptor names as an array.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
336 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
337 # This functionality can be either invoked as a class function or an
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
338 # object method.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
339 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
340 sub GetAvailableDescriptorNames {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
341 my(@DescriptorNames);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
342
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
343 @DescriptorNames = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
344 push @DescriptorNames, map { @{$DescriptorsDataMap{ClassToDescriptorNames}{$_}} } @{$DescriptorsDataMap{ClassNames}};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
345
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
346 return wantarray ? @DescriptorNames : scalar @DescriptorNames;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
347 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
348
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
349 # Is it a valid descriptors class name?
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
350 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
351 # This functionality can be either invoked as a class function or an
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
352 # object method.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
353 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
354 sub IsDescriptorClassNameAvailable {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
355 my($FirstParameter, $SecondParameter) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
356 my($This, $DescriptorClassName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
357
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
358 if ((@_ == 2) && (_IsMolecularDescriptorsGenerator($FirstParameter))) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
359 ($This, $DescriptorClassName) = ($FirstParameter, $SecondParameter);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
360 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
361 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
362 ($DescriptorClassName) = ($FirstParameter);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
363 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
364
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
365 return (exists $DescriptorsDataMap{ClassToDescriptorNames}{$DescriptorClassName}) ? 1 : 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
366 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
367
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
368 # Is it a valid descriptor name?
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
369 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
370 # This functionality can be either invoked as a class function or an
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
371 # object method.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
372 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
373 sub IsDescriptorNameAvailable {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
374 my($FirstParameter, $SecondParameter) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
375 my($This, $DescriptorName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
376
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
377 if ((@_ == 2) && (_IsMolecularDescriptorsGenerator($FirstParameter))) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
378 ($This, $DescriptorName) = ($FirstParameter, $SecondParameter);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
379 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
380 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
381 ($DescriptorName) = ($FirstParameter);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
382 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
383
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
384 return (exists $DescriptorsDataMap{DescriptorToClassName}{$DescriptorName}) ? 1 : 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
385 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
386
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
387 # Get available descriptors names for a descriptor class as an array.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
388 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
389 # This functionality can be either invoked as a class function or an
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
390 # object method.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
391 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
392 sub GetAvailableDescriptorNamesForDescriptorClass {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
393 my($FirstParameter, $SecondParameter) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
394 my($This, $DescriptorClassName, @DescriptorNames);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
395
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
396 if ((@_ == 2) && (_IsMolecularDescriptorsGenerator($FirstParameter))) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
397 ($This, $DescriptorClassName) = ($FirstParameter, $SecondParameter);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
398 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
399 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
400 ($DescriptorClassName) = ($FirstParameter);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
401 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
402
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
403 @DescriptorNames = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
404 if (exists $DescriptorsDataMap{ClassToDescriptorNames}{$DescriptorClassName}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
405 push @DescriptorNames, @{$DescriptorsDataMap{ClassToDescriptorNames}{$DescriptorClassName}};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
406 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
407
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
408 return wantarray ? @DescriptorNames : scalar @DescriptorNames;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
409 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
410
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
411 # Get available descriptors class name for a descriptor name.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
412 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
413 # This functionality can be either invoked as a class function or an
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
414 # object method.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
415 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
416 sub GetAvailableClassNameForDescriptorName {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
417 my($FirstParameter, $SecondParameter) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
418 my($This, $DescriptorClassName, $DescriptorName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
419
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
420 if ((@_ == 2) && (_IsMolecularDescriptorsGenerator($FirstParameter))) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
421 ($This, $DescriptorName) = ($FirstParameter, $SecondParameter);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
422 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
423 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
424 ($DescriptorName) = ($FirstParameter);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
425 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
426
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
427 $DescriptorClassName = '';
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
428 if (exists $DescriptorsDataMap{DescriptorToClassName}{$DescriptorName}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
429 $DescriptorClassName = $DescriptorsDataMap{DescriptorToClassName}{$DescriptorName};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
430 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
431
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
432 return $DescriptorClassName;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
433 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
434
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
435 # Get RuleOf5 descriptor names as an array.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
436 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
437 # This functionality can be either invoked as a class function or an
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
438 # object method.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
439 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
440 sub GetRuleOf5DescriptorNames {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
441 my(@DescriptorNames);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
442
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
443 @DescriptorNames = qw(MolecularWeight HydrogenBondDonors HydrogenBondAcceptors SLogP);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
444
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
445 return wantarray ? @DescriptorNames : scalar @DescriptorNames;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
446 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
447
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
448 # Get RuleOf3 descriptor names as an array.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
449 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
450 # This functionality can be either invoked as a class function or an
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
451 # object method.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
452 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
453 sub GetRuleOf3DescriptorNames {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
454 my(@DescriptorNames);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
455
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
456 @DescriptorNames = qw(MolecularWeight RotatableBonds HydrogenBondDonors HydrogenBondAcceptors SLogP TPSA);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
457
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
458 return wantarray ? @DescriptorNames : scalar @DescriptorNames;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
459 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
460
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
461
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
462 # Set molecule object...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
463 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
464 sub SetMolecule {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
465 my($This, $Molecule) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
466
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
467 $This->{Molecule} = $Molecule;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
468
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
469 # Weaken the reference to disable increment of reference count...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
470 Scalar::Util::weaken($This->{Molecule});
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
471
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
472 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
473 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
474
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
475 # Generate specified molecular descriptors...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
476 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
477 # After instantiating descriptor class objects at first invocation and initialializing
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
478 # descriptor values during subsequent invocations, GenerateDescriptors method
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
479 # provided by each descriptor class is used to calculate descriptor values for
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
480 # specified descriptors.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
481 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
482 sub GenerateDescriptors {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
483 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
484 my($DescriptorClassName, $DescriptorClassObject);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
485
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
486 # Initialize descriptor values...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
487 $This->_InitializeDescriptorValues();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
488
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
489 # Instantiate decriptor classed corresponding to specified descriptors...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
490 if (!$This->{DescriptorClassesInstantiated}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
491 $This->_InstantiateDescriptorClasses();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
492 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
493
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
494 # Check availability of molecule...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
495 if (!$This->{Molecule}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
496 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
497 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
498 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
499
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
500 # Calculate descriptor values...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
501 for $DescriptorClassName (@{$This->{DescriptorClassNames}}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
502 $DescriptorClassObject = $This->{DescriptorClassObjects}{$DescriptorClassName};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
503
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
504 $DescriptorClassObject->SetMolecule($This->{Molecule});
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
505 $DescriptorClassObject->GenerateDescriptors();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
506
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
507 if (!$DescriptorClassObject->IsDescriptorsGenerationSuccessful()) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
508 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
509 }
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 # Initialize descriptor values...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
519 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
520 sub _InitializeDescriptorValues {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
521 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
522
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
523 $This->{DescriptorsGenerated} = 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
524
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
525 @{$This->{DescriptorValues}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
526
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
527 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
528 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
529
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
530 # Setup final descriptor values...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
531 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
532 sub _SetFinalDescriptorValues {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
533 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
534 my($DescriptorName, $DescriptorClassName, $DescriptorClassObject);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
535
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
536 $This->{DescriptorsGenerated} = 1;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
537
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
538 @{$This->{DescriptorValues}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
539
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
540 if ($This->{Mode} =~ /^All$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
541 # Set descriptor values for all available descriptors...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
542 for $DescriptorClassName (@{$This->{DescriptorClassNames}}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
543 $DescriptorClassObject = $This->{DescriptorClassObjects}{$DescriptorClassName};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
544
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
545 push @{$This->{DescriptorValues}}, $DescriptorClassObject->GetDescriptorValues();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
546 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
547 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
548 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
549 # Set descriptor values for a subset of available descriptors...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
550 for $DescriptorName (@{$This->{DescriptorNames}}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
551 $DescriptorClassName = $DescriptorsDataMap{DescriptorToClassName}{$DescriptorName};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
552 $DescriptorClassObject = $This->{DescriptorClassObjects}{$DescriptorClassName};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
553
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
554 push @{$This->{DescriptorValues}}, $DescriptorClassObject->GetDescriptorValueByName($DescriptorName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
555 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
556 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
557
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
558 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
559 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
560
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
561 # Is descriptors generation successful?
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
562 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
563 # Notes:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
564 # . After successful generation of descriptor values by each descriptor class
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
565 # corresponding to specified descriptor names, DescriptorsCalculated to 1;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
566 # otherwise, it's set to 0.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
567 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
568 sub IsDescriptorsGenerationSuccessful {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
569 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
570
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
571 return $This->{DescriptorsGenerated} ? 1 : 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
572 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
573
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
574 # Check and set default descriptor names for generating descriptor values...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
575 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
576 sub _CheckAndInitializeDescriptorNames {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
577 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
578
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
579 if ($This->{Mode} =~ /^(All|RuleOf5|RuleOf3)$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
580 if (@{$This->{DescriptorNames}}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
581 croak "Error: ${ClassName}->_CheckAndInitializeDescriptorNames: Descriptor names can't be specified during \"All, RuleOf5 or RuleOf3\" values of descsriptors generation \"Mode\"...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
582 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
583 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
584
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
585 if ($This->{Mode} =~ /^All$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
586 @{$This->{DescriptorNames}} = GetAvailableDescriptorNames();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
587 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
588 elsif ($This->{Mode} =~ /^RuleOf5$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
589 @{$This->{DescriptorNames}} = GetRuleOf5DescriptorNames();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
590 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
591 elsif ($This->{Mode} =~ /^RuleOf3$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
592 @{$This->{DescriptorNames}} = GetRuleOf3DescriptorNames();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
593 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
594 elsif ($This->{Mode} =~ /^Specify$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
595 if (!@{$This->{DescriptorNames}}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
596 croak "Error: ${ClassName}->_CheckAndInitializeDescriptorNames: DescriptorNames must be specified during Specify value for Mode...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
597 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
598 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
599 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
600 croak "Error: ${ClassName}->_CheckAndInitializeDescriptorNames: Mode value, $This->{Mode}, is not valid...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
601 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
602 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
603
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
604 # Instantiate descriptor classes corresponding to specified descriptor names...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
605 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
606 sub _InstantiateDescriptorClasses {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
607 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
608 my($DescriptorClassName, $DescriptorName, $DescriptorClassPath);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
609
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
610 $This->{DescriptorClassesInstantiated} = 1;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
611
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
612 @{$This->{DescriptorClassNames}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
613 %{$This->{DescriptorClassObjects}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
614
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
615 NAME: for $DescriptorName (@{$This->{DescriptorNames}}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
616 $DescriptorClassName = $DescriptorsDataMap{DescriptorToClassName}{$DescriptorName};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
617
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
618 if (exists $This->{DescriptorClassObjects}{$DescriptorClassName}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
619 next NAME;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
620 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
621 push @{$This->{DescriptorClassNames}}, $DescriptorClassName;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
622
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
623 $DescriptorClassPath = $DescriptorsDataMap{ClassNameToClassPath}{$DescriptorClassName};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
624
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
625 if (exists $This->{DescriptorClassParameters}{$DescriptorClassName}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
626 $This->{DescriptorClassObjects}{$DescriptorClassName} = $DescriptorClassPath->new(%{$This->{DescriptorClassParameters}{$DescriptorClassName}});
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
627 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
628 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
629 $This->{DescriptorClassObjects}{$DescriptorClassName} = $DescriptorClassPath->new();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
630 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
631 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
632
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
633 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
634 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
635
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
636 # Return a string containg data for MolecularDescriptorsGenerator object...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
637 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
638 sub StringifyMolecularDescriptorsGenerator {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
639 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
640 my($TheString, $NamesAndValuesString, $Name, $Value, @NamesAndValuesInfo, %NamesAndValues);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
641
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
642 # Type of MolecularDescriptors...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
643 $TheString = "MolecularDescriptorsGenerator: Mode - $This->{Mode}; SpecifiedDescriptorNames - < @{$This->{DescriptorNames}} >; AvailableMolecularDescriptorClassNames - < @{$DescriptorsDataMap{ClassNames}} >";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
644
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
645 @NamesAndValuesInfo = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
646 %NamesAndValues = $This->GetDescriptorNamesAndValues();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
647
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
648 for $Name (@{$This->{DescriptorNames}}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
649 $Value = $NamesAndValues{$Name};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
650 $Value = (TextUtil::IsEmpty($Value) || $Value =~ /^None$/i) ? 'None' : $Value;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
651 push @NamesAndValuesInfo, "$Name - $Value";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
652 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
653 if (@NamesAndValuesInfo) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
654 $TheString .= "Names - Values: <" . TextUtil::JoinWords(\@NamesAndValuesInfo, ", ", 0) . ">";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
655 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
656 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
657 $TheString .= "Names - Values: < None>";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
658 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
659
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
660 return $TheString;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
661 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
662
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
663 # Is it a MolecularDescriptorsGenerator object?
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
664 sub _IsMolecularDescriptorsGenerator {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
665 my($Object) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
666
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
667 return (Scalar::Util::blessed($Object) && $Object->isa($ClassName)) ? 1 : 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
668 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
669
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
670 # Validate descriptor names for generating descriptor values...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
671 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
672 sub _ValidateDescriptorNames {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
673 my($This) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
674 my($DescriptorName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
675
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
676 for $DescriptorName (@{$This->{DescriptorNames}}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
677 if (!exists $DescriptorsDataMap{DescriptorToClassName}{$DescriptorName}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
678 croak "Error: ${ClassName}->_SetAndValidateDescriptorNames: Specified descriptor name, $DescriptorName, is not valid...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
679 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
680 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
681
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
682 return $This;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
683 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
684
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
685 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
686 # Load available molecular descriptors data...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
687 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
688 # All available molecular descriptors classes are automatically detected in
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
689 # MolecularDescriptors directory under <MayaChemTools>/lib directory and
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
690 # information about available descriptor names is retrieved from each descriptor
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
691 # class using function GetDescriptorNames. The following %DescriptorsDataMap
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
692 # is setup containing all available molecular descriptors data:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
693 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
694 # @{$DescriptorsDataMap{ClassNames}}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
695 # %{$DescriptorsDataMap{ClassNameToPath}}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
696 # %{$DescriptorsDataMap{ClassToDescriptorNames}}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
697 # %{$DescriptorsDataMap{DescriptorToClassName}}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
698 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
699 # GenerateDescriptors method is invoked fo each specified descriptor class
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
700 # object to calculate descriptor values for specified descriptors. After successful
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
701 # calculation of descriptors, GetDescriptorValues or GetDescriptorValueByName
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
702 # methods provided by descriptor objects are used to retrieve calculated
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
703 # descriptor values.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
704 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
705 sub _LoadMolecularDescriptorsData {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
706
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
707 %DescriptorsDataMap = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
708
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
709 _RetrieveAndLoadDescriptorClasses();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
710 _SetupDescriptorsDataMap();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
711 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
712
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
713 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
714 # Retrieve available molecular descriptors classes from MolecularDescriptors directory under
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
715 # <MayaChemTools>/lib directory...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
716 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
717 sub _RetrieveAndLoadDescriptorClasses {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
718 my($DescriptorsDirName, $MayaChemToolsLibDir, $DescriptorsDirPath, $IncludeDirName, $DescriptorClassName, $DescriptorClassPath, $DescriptorsClassFileName, @FileNames, @DescriptorsClassFileNames);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
719
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
720 @{$DescriptorsDataMap{ClassNames}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
721 %{$DescriptorsDataMap{ClassNameToPath}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
722
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
723 $DescriptorsDirName = "MolecularDescriptors";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
724 $MayaChemToolsLibDir = FileUtil::GetMayaChemToolsLibDirName();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
725
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
726 $DescriptorsDirPath = "$MayaChemToolsLibDir/$DescriptorsDirName";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
727
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
728 if (! -d "$DescriptorsDirPath") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
729 croak "Error: ${ClassName}::_RetrieveAndLoadDescriptorClasses: MayaChemTools package molecular descriptors directory, $DescriptorsDirPath, is missing: Possible installation problems...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
730 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
731
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
732 @FileNames = ("$DescriptorsDirPath/*");
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
733 $IncludeDirName = 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
734 @DescriptorsClassFileNames = FileUtil::ExpandFileNames(\@FileNames, "pm", $IncludeDirName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
735
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
736 if (!@DescriptorsClassFileNames) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
737 croak "Error: ${ClassName}::_RetrieveAndLoadDescriptorClasses: MayaChemTools package molecular descriptors directory, $DescriptorsDirPath, doesn't contain any molecular descriptor class: Possible installation problems...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
738 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
739
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
740 FILENAME: for $DescriptorsClassFileName (sort @DescriptorsClassFileNames) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
741 if ($DescriptorsClassFileName !~ /\.pm/) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
742 croak "Error: ${ClassName}::_RetrieveAndLoadDescriptorClasses: MayaChemTools package molecular descriptors directory, $DescriptorsDirPath, contains invalid class file name $DescriptorsClassFileName: Possible installation problems...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
743 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
744
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
745 # Ignore base class and descriptors generator class...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
746 if ($DescriptorsClassFileName =~ /^(MolecularDescriptorsGenerator\.pm|MolecularDescriptors\.pm)$/) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
747 next FILENAME;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
748 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
749
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
750 ($DescriptorClassName) = split /\./, $DescriptorsClassFileName;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
751 $DescriptorClassPath = "${DescriptorsDirName}::${DescriptorClassName}";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
752
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
753 # Load descriptors class...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
754 eval "use $DescriptorClassPath";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
755
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
756 if ($@) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
757 croak "Error: ${ClassName}::_RetrieveAndLoadDescriptorClasses: use $DescriptorClassPath failed: $@ ...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
758 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
759
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
760 push @{$DescriptorsDataMap{ClassNames}}, $DescriptorClassName;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
761
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
762 $DescriptorsDataMap{ClassNameToClassPath}{$DescriptorClassName} = $DescriptorClassPath;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
763 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
764 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
765
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
766 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
767 # Setup descriptors data map using loaded descriptor classes...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
768 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
769 sub _SetupDescriptorsDataMap {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
770 my($DescriptorClassName, $DescriptorName, $DescriptorClassPath, @DescriptorNames);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
771
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
772 # Class to decriptor names map...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
773 %{$DescriptorsDataMap{ClassToDescriptorNames}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
774
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
775 # Descriptor to class name map...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
776 %{$DescriptorsDataMap{DescriptorToClassName}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
777
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
778 for $DescriptorClassName (@{$DescriptorsDataMap{ClassNames}}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
779 $DescriptorClassPath = $DescriptorsDataMap{ClassNameToClassPath}{$DescriptorClassName};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
780
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
781 @DescriptorNames = $DescriptorClassPath->GetDescriptorNames();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
782
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
783 if (!@DescriptorNames) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
784 croak "Error: ${ClassName}::_SetupDescriptorsDataMap: Molecular descriptor class $DescriptorClassName doesn't provide any descriptor names...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
785 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
786
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
787 if (exists $DescriptorsDataMap{ClassToDescriptorNames}{$DescriptorClassName} ) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
788 croak "Error: ${ClassName}::_SetupDescriptorsDataMap: Molecular descriptor class $DescriptorClassName has already been processed...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
789 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
790
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
791 @{$DescriptorsDataMap{ClassToDescriptorNames}{$DescriptorClassName}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
792 @{$DescriptorsDataMap{ClassToDescriptorNames}{$DescriptorClassName}} = @DescriptorNames;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
793
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
794 for $DescriptorName (@DescriptorNames) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
795 if (exists $DescriptorsDataMap{DescriptorToClassName}{$DescriptorName}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
796 croak "Error: ${ClassName}::_SetupDescriptorsDataMap: Molecular descriptor name, $DescriptorName, in class name, $DescriptorClassName, has already been provided by class name $DescriptorsDataMap{DescriptorToClassName}{$DescriptorName}...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
797 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
798
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
799 $DescriptorsDataMap{DescriptorToClassName}{$DescriptorName} = $DescriptorClassName;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
800 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
801 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
802 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
803
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
804 1;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
805
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
806 __END__
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
807
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
808 =head1 NAME
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
809
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
810 MolecularDescriptorsGenerator
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
811
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
812 =head1 SYNOPSIS
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
813
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
814 use MolecularDescriptors::MolecularDescriptorsGenerator;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
815
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
816 use MolecularDescriptors::MolecularDescriptorsGenerator qw(:all);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
817
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
818 =head1 DESCRIPTION
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
819
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
820 B<MolecularDescriptorsGenerator> class provides the following methods:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
821
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
822 new, GenerateDescriptors, GetAvailableClassAndDescriptorNames,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
823 GetAvailableClassNameForDescriptorName, GetAvailableDescriptorClassNames,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
824 GetAvailableDescriptorNames, GetAvailableDescriptorNamesForDescriptorClass,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
825 GetDescriptorClassParameters, GetDescriptorNames, GetDescriptorNamesAndValues,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
826 GetDescriptorValueByName, GetDescriptorValues, GetRuleOf3DescriptorNames,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
827 GetRuleOf5DescriptorNames, IsDescriptorClassNameAvailable,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
828 IsDescriptorNameAvailable, IsDescriptorsGenerationSuccessful,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
829 SetDescriptorClassParameters, SetDescriptorNames, SetMode, SetMolecule,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
830 StringifyMolecularDescriptorsGenerator
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
831
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
832 B<MolecularDescriptorsGenerator> is derived from is derived from B<ObjectProperty>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
833 base class that provides methods not explicitly defined in B<MolecularDescriptorsGenerator>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
834 or B<ObjectProperty> classes using Perl's AUTOLOAD functionality. These methods are
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
835 generated on-the-fly for a specified object property:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
836
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
837 Set<PropertyName>(<PropertyValue>);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
838 $PropertyValue = Get<PropertyName>();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
839 Delete<PropertyName>();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
840
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
841 B<MolecularDescriptorsGenerator> is designed to provide a plug-in environment for
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
842 molecular descriptors development. The molecular descriptor class modules available
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
843 in B<MolecularDescriptors> directory under B<MayaChemTools/lib> directory are
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
844 automatically detected and loaded into the system. The descriptor names provided
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
845 by each descriptor class module through its B<GetDescriptorNames> function are
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
846 retrieved and are made available for calculations of their values for a specified
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
847 molecule.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
848
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
849 Any combination of available descriptor names can be specified during calculation
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
850 of descriptor values using B<GenerateDescriptors> method. The current release of
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
851 MayaChemTools supports generation of four sets of descriptors: All available
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
852 descriptors, rule of 5 or 3 descriptors, or a specified set of descriptor names.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
853
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
854 RuleOf5 [ Ref 91 ] descriptor names are: MolecularWeight, HydrogenBondDonors,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
855 HydrogenBondAcceptors, SLogP. RuleOf5 states: MolecularWeight <= 500,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
856 HydrogenBondDonors <= 5, HydrogenBondAcceptors <= 10, and logP <= 5.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
857
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
858 RuleOf3 [ Ref 92 ] descriptor names are: MolecularWeight, RotatableBonds,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
859 HydrogenBondDonors, HydrogenBondAcceptors, SLogP, TPSA. RuleOf3 states:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
860 MolecularWeight <= 300, RotatableBonds <= 3, HydrogenBondDonors <= 3,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
861 HydrogenBondAcceptors <= 3, logP <= 3, and TPSA <= 60.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
862
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
863 Before calculation of a specified set of descriptors by B<GenerateDescriptors>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
864 method, a set of descriptor calculation control parameters for a specific descriptor
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
865 class name can be set using B<SetDescriptorClassParameters> method. The specified
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
866 control parameter names and values are simply passed on to specified descriptor
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
867 class during instantiation of descriptor class object without performing any validation
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
868 of parameter names and associated values. It's up to the appropriate descriptor class methods
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
869 to validate these parameters and values. In addition to specified parameter names and
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
870 values, the parameter hash must also contain descriptor class name as key and
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
871 value pair with DescriptorClassName as key with class name as value.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
872
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
873 =head2 METHODS
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
874
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
875 =over 4
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
876
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
877 =item B<new>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
878
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
879 $NewMolecularDescriptorsGenerator = new MolecularDescriptors::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
880 MolecularDescriptorsGenerator(
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
881 %NamesAndValues);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
882
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
883 Using specified I<MolecularDescriptorsGenerator> property names and values hash, B<new>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
884 method creates a new object and returns a reference to newly created B<MolecularDescriptorsGenerator>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
885 object. By default, the following properties are initialized:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
886
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
887 Mode = 'All'
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
888 @{$This->{DescriptorNames}} = ()
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
889 %{$This->{DescriptorClassParameters}} = ()
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
890 @{$This->{DescriptorClassNames}} = ()
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
891 %{$This->{DescriptorClassObjects}} = ()
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
892 @{$This->{DescriptorValues}} = ()
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
893
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
894 Examples:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
895
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
896 $MolecularDescriptorsGenerator = new MolecularDescriptors::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
897 MolecularDescriptorsGenerator(
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
898 'Molecule' => $Molecule);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
899
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
900 @DescriptorNames = qw(MolecularWeight HydrogenBondDonors Fsp3Carbons)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
901 $MolecularDescriptorsGenerator = new MolecularDescriptors::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
902 MolecularDescriptorsGenerator(
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
903 'Mode' => 'Specify',
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
904 'DescriptorNames' => \@DescriptorNames);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
905
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
906 $MolecularDescriptorsGenerator->SetDescriptorClassParameters(
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
907 'DescriptorClassName' => 'WeightAndMassDescriptors',
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
908 'WeightPrecision' => 2,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
909 'MassPrecision' => 2);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
910
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
911 $MolecularDescriptorsGenerator->SetDescriptorClassParameters(
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
912 'DescriptorClassName' => 'HydrogenBondsDescriptors',
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
913 'HydrogenBondsType' => 'HBondsType1');
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
914
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
915 $MolecularDescriptorsGenerator->SetMolecule($Molecule);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
916 $MolecularDescriptorsGenerator->GenerateDescriptors();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
917 print "MolecularDescriptorsGenerator: $MolecularDescriptorsGenerator\n";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
918
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
919
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
920 =item B<GenerateDescriptors>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
921
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
922 $MolecularDescriptorsGenerator->GenerateDescriptors();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
923
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
924 Calculates descriptor values for specified descriptors and returns I<MolecularDescriptorsGenerator>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
925
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
926 Descriptor class objects are instantiated only once at first invocation. During
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
927 subsequent calls to B<GenerateDescriptors> method, descriptor values are
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
928 initialized and B<GenerateDescriptors> method provided by descriptor class is
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
929 used to calculate descriptor values for specified descriptors.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
930
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
931 =item B<GetAvailableClassAndDescriptorNames>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
932
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
933 %ClassAndDescriptorNames = $MolecularDescriptorsGenerator->
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
934 GetAvailableClassAndDescriptorNames();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
935 %ClassAndDescriptorNames = MolecularDescriptors::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
936 MolecularDescriptorsGenerator::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
937 GetAvailableClassAndDescriptorNames();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
938
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
939 Returns available descriptors class and descriptors names as a hash containing key
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
940 and value pairs corresponding to class name and an array of descriptor names
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
941 available for the class.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
942
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
943 =item B<GetAvailableClassNameForDescriptorName>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
944
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
945 $DescriptorClassName = $MolecularDescriptorsGenerator->
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
946 GetAvailableClassNameForDescriptorName($DescriptorName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
947
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
948 $DescriptorClassName = MolecularDescriptors::MolecularDescriptorsGenerator::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
949 GetAvailableClassNameForDescriptorName($DescriptorName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
950
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
951 Returns available descriptor class name for a descriptor name.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
952
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
953 =item B<GetAvailableDescriptorClassNames>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
954
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
955 $Return = $MolecularDescriptorsGenerator->GetAvailableDescriptorClassNames();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
956
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
957 @DescriptorClassNames = $MolecularDescriptorsGenerator->
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
958 GetAvailableDescriptorClassNames();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
959 @DescriptorClassNames = MolecularDescriptors::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
960 MolecularDescriptorsGenerator::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
961 GetAvailableDescriptorClassNames();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
962
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
963 Returns available descriptor class names as an array or number of available descriptor
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
964 class names in scalar context.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
965
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
966 =item B<GetAvailableDescriptorNames>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
967
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
968 @DescriptorNames = $MolecularDescriptorsGenerator->
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
969 GetAvailableDescriptorNames();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
970 @DescriptorNames = MolecularDescriptors::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
971 MolecularDescriptorsGenerator::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
972 GetAvailableDescriptorNames();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
973
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
974 Returns available descriptor names as an array or number of available descriptor
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
975 names in scalar context.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
976
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
977 =item B<GetAvailableDescriptorNamesForDescriptorClass>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
978
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
979 @DescriptorNames = $MolecularDescriptorsGenerator->
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
980 GetAvailableDescriptorNamesForDescriptorClass($DescriptorClassName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
981 @DescriptorNames = MolecularDescriptors::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
982 MolecularDescriptorsGenerator::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
983 GetAvailableDescriptorNamesForDescriptorClass($DescriptorClassName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
984
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
985 Returns available descriptors names for a descriptor class as an array or number
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
986 of available descriptor names in scalar context.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
987
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
988 =item B<GetDescriptorClassParameters>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
989
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
990 $DescriptorClassParametersRef = $MolecularDescriptorsGenerator->
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
991 GetDescriptorClassParameters();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
992 $DescriptorClassParametersRef = MolecularDescriptors::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
993 MolecularDescriptorsGenerator::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
994 GetDescriptorClassParameters();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
995
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
996 Returns descriptor name parameters as a reference to hash of hashes with hash
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
997 keys corresponding to class name and class parameter name with hash value
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
998 as class parameter value.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
999
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1000 =item B<GetDescriptorNames>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1001
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1002 @DescriptorNames = $MolecularDescriptorsGenerator->GetDescriptorNames();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1003 @DescriptorNames = MolecularDescriptors::MolecularDescriptorsGenerator::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1004 GetDescriptorNames();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1005
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1006 Returns all available descriptor names as an array or number of available descriptors
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1007 in scalar context.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1008
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1009 =item B<GetDescriptorNamesAndValues>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1010
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1011 %NamesAndValues = $MolecularDescriptorsGenerator->
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1012 GetDescriptorNamesAndValues();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1013
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1014 Returns calculated molecular descriptor names and values as a hash with descriptor
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1015 names and values as hash key and value pairs.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1016
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1017 =item B<GetDescriptorValueByName>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1018
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1019 $Value = $MolecularDescriptorsGenerator->
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1020 GetDescriptorValueByName($Name);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1021
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1022 Returns calculated descriptor values for a specified descriptor name.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1023
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1024 =item B<GetDescriptorValues>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1025
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1026 @DescriptorValues = $MolecularDescriptorsGenerator->GetDescriptorValues();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1027
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1028 Returns all calculated descriptor values as an array corresponding to specified
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1029 descriptor names.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1030
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1031 =item B<GetRuleOf3DescriptorNames>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1032
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1033 @DescriptorNames = $MolecularDescriptorsGenerator->
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1034 GetRuleOf3DescriptorNames();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1035 @DescriptorNames = MolecularDescriptors::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1036 MolecularDescriptorsGenerator::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1037 GetRuleOf3DescriptorNames();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1038
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1039 Returns rule of 3 descriptor names as an array or number of rule of 3 descriptors in scalar
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1040 context.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1041
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1042 RuleOf3 [ Ref 92 ] descriptor names are: MolecularWeight, RotatableBonds,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1043 HydrogenBondDonors, HydrogenBondAcceptors, SLogP, TPSA. RuleOf3 states:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1044 MolecularWeight <= 300, RotatableBonds <= 3, HydrogenBondDonors <= 3,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1045 HydrogenBondAcceptors <= 3, logP <= 3, and TPSA <= 60.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1046
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1047 =item B<GetRuleOf5DescriptorNames>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1048
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1049 @DescriptorNames = $MolecularDescriptorsGenerator->
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1050 GetRuleOf5DescriptorNames();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1051 @DescriptorNames = $MolecularDescriptorsGenerator::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1052 GetRuleOf5DescriptorNames();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1053
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1054 Returns rule of 5 descriptor names as an array or number of rule of 4 descriptors in scalar
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1055 context.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1056
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1057 RuleOf5 [ Ref 91 ] descriptor names are: MolecularWeight, HydrogenBondDonors,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1058 HydrogenBondAcceptors, SLogP. RuleOf5 states: MolecularWeight <= 500,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1059 HydrogenBondDonors <= 5, HydrogenBondAcceptors <= 10, and logP <= 5.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1060
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1061 =item B<IsDescriptorClassNameAvailable>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1062
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1063 $Status = $MolecularDescriptorsGenerator->
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1064 IsDescriptorClassNameAvailable($ClassName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1065 $Status = MolecularDescriptors::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1066 MolecularDescriptorsGenerator::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1067 IsDescriptorClassNameAvailable($ClassName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1068
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1069 Returns 1 or 0 based on whether specified descriptor class name is available.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1070
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1071 =item B<IsDescriptorNameAvailable>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1072
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1073 $Status = $MolecularDescriptorsGenerator->
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1074 IsDescriptorNameAvailable($DescriptorName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1075 $Status = MolecularDescriptors::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1076 MolecularDescriptorsGenerator::
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1077 IsDescriptorNameAvailable($DescriptorName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1078
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1079 Returns 1 or 0 based on whether specified descriptor name is available.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1080
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1081 =item B<IsDescriptorsGenerationSuccessful>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1082
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1083 $Status = $MolecularDescriptorsGenerator->
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1084 IsDescriptorsGenerationSuccessful();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1085
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1086 Returns 1 or 0 based on whether descriptors generation is successful.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1087
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1088 =item B<SetDescriptorClassParameters>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1089
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1090 $MolecularDescriptorsGenerator->SetDescriptorClassParameters(
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1091 %NamesAndValues);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1092
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1093 Sets descriptor calculation control parameters for a specified descriptor class name
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1094 and returns I<MolecularDescriptorsGenerator>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1095
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1096 The specified parameter names and values are simply passed on to specified descriptor
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1097 class during instantiation of descriptor class object without any performing any validation
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1098 of parameter names and associated values. It's up to the appropriate descriptor class methods
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1099 to validate these parameters and values.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1100
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1101 In addition to specified parameter names and values, the parameter hash must also contain
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1102 descriptor class name as key and value pair with DescriptorClassName as key with class
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1103 name as value.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1104
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1105 =item B<SetDescriptorNames>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1106
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1107 $MolecularDescriptorsGenerator->SetDescriptorNames(@Names);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1108 $MolecularDescriptorsGenerator->SetDescriptorNames(\@Names);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1109
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1110 Sets descriptor names to use for generating descriptor values using an array
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1111 or reference to an array and returns I<MolecularDescriptorsGenerator>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1112
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1113 =item B<SetMode>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1114
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1115 $MolecularDescriptorsGenerator->SetMode($Mode);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1116
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1117 Sets descriptors generation mode and returns I<MolecularDescriptorsGenerator>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1118 Possible I<Mode> values: I<All, RuleOf5, RuleOf3, Specify>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1119
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1120 =item B<SetMolecule>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1121
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1122 $MolecularDescriptorsGenerator->SetMolecule($Molecule);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1123
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1124 Sets molecule to use during calculation of molecular descriptors and returns
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1125 I<MolecularDescriptorsGenerator>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1126
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1127 =item B<StringifyMolecularDescriptorsGenerator>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1128
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1129 $String = $MolecularDescriptorsGenerator->StringifyMolecularDescriptorsGenerator();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1130
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1131 Returns a string containing information about I<MolecularDescriptorsGenerator> object.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1132
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1133 =back
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1134
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1135 =head1 AUTHOR
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1136
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1137 Manish Sud <msud@san.rr.com>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1138
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1139 =head1 SEE ALSO
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1140
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1141 MolecularDescriptors.pm
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1142
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1143 =head1 COPYRIGHT
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1144
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1145 Copyright (C) 2015 Manish Sud. All rights reserved.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1146
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1147 This file is part of MayaChemTools.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1148
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1149 MayaChemTools is free software; you can redistribute it and/or modify it under
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1150 the terms of the GNU Lesser General Public License as published by the Free
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1151 Software Foundation; either version 3 of the License, or (at your option)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1152 any later version.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1153
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1154 =cut