annotate mayachemtools/lib/Fingerprints/Fingerprints.pm @ 0:73ae111cf86f draft

Uploaded
author deepakjadmin
date Wed, 20 Jan 2016 11:55:01 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1 package Fingerprints::Fingerprints;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
2 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
3 # $RCSfile: Fingerprints.pm,v $
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
4 # $Date: 2015/02/28 20:48:54 $
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
5 # $Revision: 1.33 $
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
6 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
7 # Author: Manish Sud <msud@san.rr.com>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
8 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
9 # Copyright (C) 2015 Manish Sud. All rights reserved.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
10 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
11 # This file is part of MayaChemTools.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
12 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
13 # MayaChemTools is free software; you can redistribute it and/or modify it under
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
14 # the terms of the GNU Lesser General Public License as published by the Free
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
15 # Software Foundation; either version 3 of the License, or (at your option) any
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
16 # later version.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
17 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
18 # MayaChemTools is distributed in the hope that it will be useful, but without
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
19 # any warranty; without even the implied warranty of merchantability of fitness
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
20 # for a particular purpose. See the GNU Lesser General Public License for more
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
21 # details.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
22 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
23 # You should have received a copy of the GNU Lesser General Public License
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
24 # along with MayaChemTools; if not, see <http://www.gnu.org/licenses/> or
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
25 # write to the Free Software Foundation Inc., 59 Temple Place, Suite 330,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
26 # Boston, MA, 02111-1307, USA.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
27 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
28
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
29 use strict;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
30 use Carp;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
31 use Exporter;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
32 use Scalar::Util ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
33 use ObjectProperty;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
34 use MathUtil ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
35 use TextUtil ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
36 use Fingerprints::FingerprintsBitVector;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
37 use Fingerprints::FingerprintsVector;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
38
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
39 use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
40
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
41 @ISA = qw(ObjectProperty Exporter);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
42 @EXPORT = qw();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
43 @EXPORT_OK = qw();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
44
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
45 %EXPORT_TAGS = (all => [@EXPORT, @EXPORT_OK]);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
46
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
47 # Setup class variables...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
48 my($ClassName);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
49 _InitializeClass();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
50
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
51 # Class constructor...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
52 sub new {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
53 my($Class, %NamesAndValues) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
54
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
55 # Initialize object...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
56 my $This = {};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
57 bless $This, ref($Class) || $Class;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
58 $This->_InitializeFingerprints();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
59
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
60 $This->_InitializeFingerprintsProperties(%NamesAndValues);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
61
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
62 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
63 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
64
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
65 # Initialize object data...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
66 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
67 sub _InitializeFingerprints {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
68 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
69
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
70 # Molecule object...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
71 $This->{Molecule} = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
72
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
73 # Type of fingerprints...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
74 $This->{Type} = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
75
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
76 # Type of fingerprints vector: FingerprintsBitVector or FingerprintsVector...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
77 $This->{VectorType} = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
78
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
79 # Marks successful generation of fingerprints...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
80 $This->{FingerprintsGenerated} = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
81
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
82 # Initialize values for FingerprintsBitVector...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
83 _InitializeClassValuesForFingerprintsBitVector();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
84
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
85 # Initialize values for FingerprintsVector...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
86 _InitializeClassValuesForFingerprintsVector();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
87 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
88
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
89 # Initialize class ...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
90 sub _InitializeClass {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
91 #Class name...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
92 $ClassName = __PACKAGE__;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
93 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
94
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
95 # Initialize class values specific to FingerprintsBitVector...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
96 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
97 sub _InitializeClassValuesForFingerprintsBitVector {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
98 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
99
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
100 # Size of FingerprintsBitVector...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
101 $This->{Size} = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
102
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
103 # Min/Max sizes used for folding FingerprintsBitVector...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
104 $This->{MinSize} = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
105 $This->{MaxSize} = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
106
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
107 # FingerprintsBitVector...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
108 $This->{FingerprintsBitVector} = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
109 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
110
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
111 # Initialize class values specific to FingerprintsVector...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
112 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
113 sub _InitializeClassValuesForFingerprintsVector {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
114 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
115
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
116 # Types of FingerprintsVector values: OrderedNumericalValues, NumericalValues or AlphaNumericalValues.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
117 $This->{FingerprintsVectorType} = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
118
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
119 # Fingerprints vector...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
120 $This->{FingerprintsVector} = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
121 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
122
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
123 # Initialize object properties....
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
124 sub _InitializeFingerprintsProperties {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
125 my($This, %NamesAndValues) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
126
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
127 my($Name, $Value, $MethodName);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
128 while (($Name, $Value) = each %NamesAndValues) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
129 $MethodName = "Set${Name}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
130 $This->$MethodName($Value);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
131 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
132
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
133 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
134 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
135
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
136 # Set molecule object and make sure it's not already set...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
137 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
138 sub SetMolecule {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
139 my($This, $Molecule) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
140
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
141 if ($This->{Molecule}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
142 croak "Error: ${ClassName}->SetMolecule: Can't change molecule object: It's already set...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
143 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
144 $This->{Molecule} = $Molecule;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
145
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
146 # Weaken the reference to disable increment of reference count...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
147 Scalar::Util::weaken($This->{Molecule});
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
148
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
149 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
150 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
151
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
152 # Set type and make sure it's not already set...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
153 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
154 sub SetType {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
155 my($This, $Type) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
156
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
157 if ($This->{Type}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
158 croak "Error: ${ClassName}->SetType: Can't change fingerprint type: It's already set...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
159 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
160 $This->{Type} = $Type;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
161
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
162 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
163 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
164
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
165 # Is fingerprints generation successful?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
166 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
167 # Notes:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
168 # . The specific fingerprints generation class sets the value of FingerprinsGenerated
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
169 # to 1 after the successful generation of fingerprints; otherwise, it's set to 0.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
170 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
171 sub IsFingerprintsGenerationSuccessful {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
172 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
173
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
174 return $This->{FingerprintsGenerated} ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
175 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
176
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
177 # Set vector type and make sure it's not already set...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
178 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
179 sub SetVectorType {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
180 my($This, $VectorType) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
181
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
182 if ($This->{VectorType}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
183 croak "Error: ${ClassName}->SetVectorType: Can't change fingerprint vector type: It's already set...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
184 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
185 if ($VectorType !~ /^(FingerprintsBitVector|FingerprintsVector)$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
186 croak "Error: ${ClassName}->SetVectorType: Specified value, $VectorType, for Type is not vaild. Supported types in current release of MayaChemTools: FingerprintsBitVector and FingerprintsVector...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
187 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
188 $This->{VectorType} = $VectorType;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
189
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
190 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
191 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
192
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
193 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
194 # Methods/functions for FingerprintsBitVector...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
195 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
196
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
197 # Initialize fingerprint bit vector...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
198 sub _InitializeFingerprintsBitVector {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
199 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
200
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
201 if ($This->{VectorType} !~ /^FingerprintsBitVector$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
202 croak "Error: ${ClassName}->_InitializeFingerprintsBitVector: Can't initialize fingerprints bit vector: VectorType must be FingerprintsBitVector...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
203 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
204
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
205 if ($This->{Size}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
206 $This->{FingerprintsBitVector} = new Fingerprints::FingerprintsBitVector($This->{Size});
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
207 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
208 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
209 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
210
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
211 # Set size...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
212 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
213 sub SetSize {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
214 my($This, $Size) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
215
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
216 if ($This->{MinSize} && $Size < $This->{MinSize}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
217 croak "Error: ${ClassName}->SetSize: Fingerprint size value, $Size, is not valid : It must be >= $This->{MinSize}...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
218 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
219 if ($This->{MaxSize} && $Size > $This->{MaxSize}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
220 croak "Error: ${ClassName}->SetSize: Fingerprint size value, $Size, is not valid: It must be <= $This->{MaxSize}...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
221 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
222
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
223 $This->{Size} = $Size;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
224
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
225 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
226 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
227
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
228 # Set FingerprintsBitVector object and make sure it's not already set...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
229 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
230 sub SetFingerprintsBitVector {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
231 my($This, $FingerprintsBitVector) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
232
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
233 if ($This->{FingerprintsBitVector}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
234 croak "Error: ${ClassName}->SetFingerprintsBitVector: Can't change FingerprintsBitVector object: It's already set...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
235 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
236 $This->{FingerprintsBitVector} = $FingerprintsBitVector;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
237
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
238 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
239 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
240
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
241 # Fold fingerprints by recursively reducing its size by half untill bit density is greater than or equal to
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
242 # specified bit density...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
243 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
244 sub FoldFingerprintsByBitDensity {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
245 my($This, $BitDensity) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
246
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
247 if (!($BitDensity >= 0 && $BitDensity <= 1)) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
248 croak "Error: ${ClassName}->FoldFingerprintsByBitDensity: Specified bit density, $BitDensity, is not valid: It must be > 0 && <= 1 ...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
249 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
250
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
251 return $This->_FoldFingerprintsBitVector('ByDensity', $BitDensity);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
252 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
253
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
254 # Fold fingerprints by recursively reducing its size by half untill size is less than or equal to
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
255 # specified size...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
256 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
257 sub FoldFingerprintsBySize {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
258 my($This, $Size, $CheckSizeValue) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
259
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
260 if (!defined $CheckSizeValue) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
261 $CheckSizeValue = 1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
262 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
263
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
264 if ($CheckSizeValue) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
265 if (!TextUtil::IsPositiveInteger($Size)) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
266 croak "Error: ${ClassName}->FoldFingerprintsBySize: Specified size, $Size, is not valid: It must be a positive integer";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
267 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
268 if (!($Size >= $This->{MinSize} && $Size < $This->{Size})) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
269 croak "Error: ${ClassName}->FoldFingerprintsBySize: Specified size, $Size, is not valid: It must be greater than or equal to minimum size of $This->{MinSize} and less than current size of $This->{Size}...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
270 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
271 if (!TextUtil::IsNumberPowerOfNumber($Size, 2)) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
272 croak "Error: ${ClassName}->FoldFingerprintsBySize: Specified size value, $Size, must be power of 2...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
273 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
274 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
275
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
276 return $This->_FoldFingerprintsBitVector('BySize', $Size);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
277 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
278
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
279 # Fold fingerprints bit vector using specified size of bit density...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
280 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
281 sub _FoldFingerprintsBitVector {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
282 my($This, $Mode, $Value) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
283
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
284 if (!$This->{FingerprintsBitVector}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
285 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
286 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
287 my($FingerprintsBitVector, $FoldedFingerprintsBitVector);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
288
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
289 $FoldedFingerprintsBitVector = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
290 $FingerprintsBitVector = $This->{FingerprintsBitVector};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
291 MODE: {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
292 if ($Mode =~ /^BySize$/i) { $FoldedFingerprintsBitVector = $FingerprintsBitVector->FoldFingerprintsBitVectorBySize($Value); last MODE; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
293 if ($Mode =~ /^ByDensity$/i) { $FoldedFingerprintsBitVector = $FingerprintsBitVector->FoldFingerprintsBitVectorByDensity($Value); last MODE; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
294 $FoldedFingerprintsBitVector = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
295 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
296 if ($FoldedFingerprintsBitVector) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
297 $This->{FingerprintsBitVector} = $FoldedFingerprintsBitVector;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
298 $This->{Size} = $FoldedFingerprintsBitVector->GetSize();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
299 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
300 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
301 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
302
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
303 # Get fingerprints as a binary ascii string containing 0s and 1s...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
304 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
305 sub GetFingerprintBitsAsBinaryString {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
306 my($This, $BitOrder) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
307
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
308 return $This->_GetFingerprintBitsAsString('Binary', $BitOrder);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
309 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
310
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
311 # Get fingerprints as a hexadecimal string...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
312 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
313 sub GetFingerprintBitsAsHexadecimalString {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
314 my($This, $BitOrder) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
315
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
316 return $This->_GetFingerprintBitsAsString('Hexadecimal', $BitOrder);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
317 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
318
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
319 # Get fingerprints as a raw binary string containing packed bit values for each
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
320 # byte...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
321 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
322 sub GetFingerprintBitsAsRawBinaryString {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
323 my($This, $BitOrder) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
324
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
325 return $This->_GetFingerprintBitsAsString('RawBinary', $BitOrder);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
326 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
327
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
328 # Get fingerprint bits as a string...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
329 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
330 sub _GetFingerprintBitsAsString {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
331 my($This, $Format) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
332
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
333 if (!$This->{FingerprintsBitVector}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
334 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
335 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
336 FORMAT : {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
337 if ($Format =~ /^(Binary|Bin|BinaryString)$/i) { return $This->{FingerprintsBitVector}->GetBitsAsBinaryString(); last FORMAT; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
338 if ($Format =~ /^(Hexadecimal|Hex|HexadecimalString)$/i) { return $This->{FingerprintsBitVector}->GetBitsAsHexadecimalString(); last FORMAT; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
339 if ($Format =~ /^(RawBinary|RawBin|RawBinaryString)$/i) { return $This->{FingerprintsBitVector}->GetBitsAsRawBinaryString(); last FORMAT; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
340 croak "Error: ${ClassName}->_GetFingerprintBitsAsString: Specified bit vector string format, $Format, is not supported. Value values: Binary, Bin, BinaryString, Hexdecimal, Hex, HexadecimalString, RawBinary, RawBin, RawBinaryString...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
341 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
342 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
343 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
344
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
345 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
346 # Methods/functions for FingerprintsVector...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
347 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
348
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
349 # Initialize fingerprint vector...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
350 sub _InitializeFingerprintsVector {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
351 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
352
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
353 if ($This->{VectorType} !~ /^FingerprintsVector$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
354 croak "Error: ${ClassName}->_InitializeFingerprintsVector: Can't initialize fingerprints vector: VectorType must be FingerprintsVector...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
355 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
356
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
357 if ($This->{FingerprintsVectorType}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
358 $This->{FingerprintsVector} = new Fingerprints::FingerprintsVector('Type' => $This->{FingerprintsVectorType});
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
359 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
360 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
361 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
362
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
363 # Set FingerprintsVector object and make sure it's not already set...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
364 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
365 sub SetFingerprintsVector {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
366 my($This, $FingerprintsVector) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
367
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
368 if ($This->{FingerprintsVector}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
369 croak "Error: ${ClassName}->SetFingerprintsVector: Can't change FingerprintsVector object: It's already set...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
370 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
371 $This->{FingerprintsVector} = $FingerprintsVector;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
372
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
373 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
374 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
375
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
376 # Types of FingerprintsVector values: OrderedNumericalValues, NumericalValues or AlphaNumericalValues.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
377 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
378 sub SetFingerprintsVectorType {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
379 my($This, $FingerprintsVectorType) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
380
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
381 if ($This->{FingerprintsVectorType}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
382 croak "Error: ${ClassName}->SetFingerprintsVector: Can't change FingerprintsVectorType: It's already set...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
383 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
384 if ($FingerprintsVectorType !~ /^(OrderedNumericalValues|NumericalValues|AlphaNumericalValues)$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
385 croak "Error: ${ClassName}->SetFingerprintsVectorType: Specified value, $FingerprintsVectorType, for Type is not vaild. Supported types in current release of MayaChemTools: OrderedNumericalValues, NumericalValues or AlphaNumericalValues";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
386 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
387 $This->{FingerprintsVectorType} = $FingerprintsVectorType;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
388
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
389 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
390 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
391
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
392 # Get fingerprints vector values as an array or reference to an array...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
393 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
394 sub GetFingerprintsVectorValues {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
395 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
396
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
397 if (!$This->{FingerprintsVector}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
398 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
399 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
400 return $This->{FingerprintsVector}->GetValues();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
401 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
402
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
403 # Get fingerprints vector value IDs as an array or reference to an array...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
404 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
405 sub GetFingerprintsVectorValueIDs {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
406 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
407
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
408 if (!$This->{FingerprintsVector}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
409 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
410 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
411 return $This->{FingerprintsVector}->GetValueIDs();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
412 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
413
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
414 1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
415
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
416 __END__
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
417
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
418 =head1 NAME
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
419
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
420 Fingerprints - Fingerprints class
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
421
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
422 =head1 SYNOPSIS
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
423
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
424 use Fingerprints::Fingerprints;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
425
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
426 use Fingerprints::Fingerprints qw(:all);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
427
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
428 =head1 DESCRIPTION
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
429
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
430 B<Fingerprints> class provides the following methods:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
431
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
432 new, FoldFingerprintsByBitDensity, FoldFingerprintsBySize,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
433 GetFingerprintBitsAsBinaryString, GetFingerprintBitsAsHexadecimalString,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
434 GetFingerprintBitsAsRawBinaryString, GetFingerprintsVectorValueIDs,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
435 GetFingerprintsVectorValues, IsFingerprintsGenerationSuccessful,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
436 SetFingerprintsBitVector, SetFingerprintsVector, SetFingerprintsVectorType,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
437 SetMolecule, SetSize, SetType, SetVectorType
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
438
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
439 B<Fingerprints> class is used as a base class for various specific fingerprint classes such as
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
440 B<AtomNeighborhoodsFingerprints>, B<AtomTypesFingerprints>, B<EStateIndiciesFingerprints>,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
441 B<PathLengthFingerprints>, B<ExtendedConnectivityFingerprints>, B<MACCSKeys> and so on.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
442 It implements functionality common to fingerprint classes.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
443
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
444 B<Fingerprints> class is derived from B<ObjectProperty> base class which provides methods not
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
445 explicitly defined in B<Fingerprints> or B<ObjectProperty> classes using Perl's AUTOLOAD functionality.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
446 These methods are generated on-the-fly for a specified object property:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
447
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
448 Set<PropertyName>(<PropertyValue>);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
449 $PropertyValue = Get<PropertyName>();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
450 Delete<PropertyName>();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
451
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
452 B<Fingerprints> class uses B<FingerprintsBitVector> class to provide bits manipulation functionality.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
453
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
454 =head2 METHODS
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
455
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
456 =over 4
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
457
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
458 =item B<new>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
459
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
460 $NewFingerprints = new Fingerprints(%NamesAndValues);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
461
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
462 Using specified I<Fingerprints> property names and values hash, B<new> method creates a new object
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
463 and returns a reference to newly created B<Fingerprints> object. By default, following properties are
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
464 initialized:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
465
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
466 Molecule = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
467 Type = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
468 VectorType = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
469 Size = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
470 MinSize = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
471 MaxSize = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
472 FingerprintsBitVector = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
473 FingerprintsVectorType = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
474 FingerprintsVector = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
475
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
476 =item B<FoldFingerprintsByBitDensity>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
477
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
478 $Fingerprints->FoldFingerprintsByBitDensity($BitDensity);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
479
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
480 Folds fingerprints by recursively reducing its size by half until bit density is greater than or equal to
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
481 specified I<BitDensity> and returns I<Fingerprints>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
482
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
483 =item B<FoldFingerprintsBySize>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
484
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
485 $Fingerprints->FoldFingerprintsBySize($Size, [$CheckSizeValue]);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
486
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
487 Fold fingerprints by recursively reducing its size by half until size is less than or equal to specified
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
488 I<Size> and returns I<Fingerprints>. By default, value I<Size> is checked to make sure it's:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
489
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
490 >= MinSize and < Size and IsPowerOfTwo
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
491
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
492 =item B<GetFingerprintBitsAsBinaryString>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
493
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
494 $BinaryASCIIString =
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
495 $Fingerprints->GetFingerprintBitsAsBinaryString();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
496
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
497 Returns fingerprints as a binary ASCII string containing 0s and 1s.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
498
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
499 =item B<GetFingerprintBitsAsHexadecimalString>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
500
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
501 $HexadecimalString =
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
502 $Fingerprints->GetFingerprintBitsAsHexadecimalString();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
503
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
504 Returns fingerprints as a hexadecimal string
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
505
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
506 =item B<GetFingerprintBitsAsRawBinaryString>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
507
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
508 $RawBinaryString =
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
509 $Fingerprints->GetFingerprintBitsAsRawBinaryString();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
510
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
511 Returns fingerprints as a raw binary string containing packed bit values for each byte.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
512
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
513 =item B<GetFingerprintsVectorValueIDs>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
514
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
515 $ValueIDsRef = $Fingerprints->GetFingerprintsVectorValueIDs();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
516 @ValueIDs = $Fingerprints->GetFingerprintsVectorValueIDs();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
517
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
518 Returns fingerprints vector value IDs as an array or reference to an array.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
519
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
520 =item B<GetFingerprintsVectorValues>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
521
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
522 $ValuesRef = $Fingerprints->GetFingerprintsVectorValues();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
523 @Values = $Fingerprints->GetFingerprintsVectorValues();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
524
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
525 Returns fingerprints vector values as an array or reference to an array.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
526
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
527 =item B<IsFingerprintsGenerationSuccessful>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
528
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
529 $Return = $Fingerprints->IsFingerprintsGenerationSuccessful();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
530
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
531 Returns 1 or 0 based on whether fingerprints were successfully generated.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
532
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
533 =item B<SetFingerprintsBitVector>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
534
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
535 $Fingerprints->SetFingerprintsBitVector($FingerprintsBitVector);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
536
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
537 Sets I<FingerprintsBitVector> object for I<Fingerprints> and returns I<Fingerprints>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
538
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
539 =item B<SetFingerprintsVector>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
540
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
541 $Fingerprints->SetFingerprintsVector();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
542
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
543 Sets I<FingerprintsVector> object for I<Fingerprints> and returns I<Fingerprints>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
544
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
545 =item B<SetFingerprintsVectorType>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
546
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
547 $Fingerprints->SetFingerprintsVectorType($VectorType);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
548
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
549 Sets I<FingerprintsVector> type for I<Fingerprints> and returns I<Fingerprints>. Possible
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
550 I<VectorType> values: I<OrderedNumericalValues, NumericalValues or AlphaNumericalValues>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
551
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
552 =item B<SetMolecule>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
553
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
554 $Fingerprints->SetMolecule($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
555
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
556 Sets I<Molecule> object for I<Fingerprints> and returns I<Fingerprints>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
557
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
558 =item B<SetSize>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
559
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
560 $Fingerprints->SetSize($Size);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
561
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
562 Sets I<Size> of fingerprints and returns I<Fingerprints>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
563
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
564 =item B<SetType>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
565
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
566 $Fingerprints->SetType($Type);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
567
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
568 Sets I<Type> of fingerprints and returns I<Fingerprints>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
569
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
570 =item B<SetVectorType>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
571
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
572 $Fingerprints->SetVectorType($Type);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
573
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
574 Sets I<Type> of fingerprints vector and returns I<Fingerprints>. Possible I<Type> values:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
575 I<FingerprintsBitVector or FingerprintsVector>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
576
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
577 =back
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
578
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
579 =head1 AUTHOR
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
580
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
581 Manish Sud <msud@san.rr.com>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
582
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
583 =head1 SEE ALSO
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
584
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
585 FingerprintsStringUtil.pm, AtomNeighborhoodsFingerprints.pm, AtomTypesFingerprints.pm,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
586 EStateIndiciesFingerprints.pm, ExtendedConnectivityFingerprints.pm, MACCSKeys.pm,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
587 PathLengthFingerprints.pm, TopologicalAtomPairsFingerprints.pm, TopologicalAtomTripletsFingerprints.pm,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
588 TopologicalAtomTorsionsFingerprints.pm, TopologicalPharmacophoreAtomPairsFingerprints.pm,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
589 TopologicalPharmacophoreAtomTripletsFingerprints.pm
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
590
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
591 =head1 COPYRIGHT
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
592
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
593 Copyright (C) 2015 Manish Sud. All rights reserved.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
594
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
595 This file is part of MayaChemTools.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
596
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
597 MayaChemTools is free software; you can redistribute it and/or modify it under
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
598 the terms of the GNU Lesser General Public License as published by the Free
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
599 Software Foundation; either version 3 of the License, or (at your option)
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
600 any later version.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
601
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
602 =cut