annotate mayachemtool/mayachemtools/lib/Fingerprints/Fingerprints.pm @ 0:a4a2ad5a214e draft default tip

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