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

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