annotate mayachemtools/docs/modules/txt/PseudoHeap.txt @ 9:ab29fa5c8c1f draft default tip

Uploaded
author deepakjadmin
date Thu, 15 Dec 2016 14:18:03 -0500
parents 73ae111cf86f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1 NAME
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
2 PseudoHeap
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
3
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
4 SYNOPSIS
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
5 use PseudoHeap;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
6
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
7 use PseudoHeap qw(:all);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
8
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
9 DESCRIPTION
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
10 PseudoHeap class provides the following methods:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
11
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
12 new, AddKeyValuePair, AddKeyValuePairs, DeleteKey, DeleteKeys,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
13 DeleteMaxKey, DeleteMinKey, GetCurrentSize, GetKeyType, GetKeyValues,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
14 GetKeys, GetMaxKey, GetMaxSize, GetMinKey, GetSortedKeys, GetType,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
15 SetKeyType, SetMaxSize, SetType, StringifyPseudoHeap
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
16
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
17 PseudoHeap is designed to support tracking of a specific number of
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
18 largest or smallest key/value pairs with numeric or alphanumeric keys
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
19 along with corresponding scalar or reference values.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
20
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
21 Although PseudoHeap is conceptually similar to a heap, it lacks number
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
22 of key properties of a traditional heap data structure: no concept of
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
23 root, parent and child nodes; no ordering of keys in any particular
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
24 order; no specific location greatest or smallest key.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
25
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
26 The keys are simply stored in a hash with each key pointing to an array
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
27 containing specified values. The min/max keys are updated during
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
28 addition and deletion of key/value pairs; these can be retrieved by
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
29 accessing corresponding hash.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
30
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
31 Addition and deletion of key/value is also straightforward using hashes.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
32 However, min/max keys need to be identified which is done using Perl
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
33 sort function on the keys.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
34
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
35 FUNCTIONS
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
36 new
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
37 $NewPseudoHeap = new PseudoHeap(%NamesAndValues);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
38
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
39 Using specified parameters *NamesAndValues* names and values hash,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
40 new method creates a new object and returns a reference to a newly
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
41 created NewPseudoHeap object. By default, the following property
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
42 names are initialized:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
43
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
44 Type = undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
45 KeyType = undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
46 MaxSize = 10;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
47
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
48 Examples:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
49
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
50 $NewPseudoHeap = new PseudoHeap(
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
51 'Type' => 'KeepTopN',
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
52 'KeyType' => 'Numeric');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
53
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
54 $NewPseudoHeap = new PseudoHeap(
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
55 'Type' => 'KeepTopN',
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
56 'KeyType' => 'AlphaNumeric',
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
57 'MaxSize' => '20');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
58
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
59 $NewPseudoHeap = new PseudoHeap(
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
60 'Type' => 'KeepBottomN',
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
61 'KeyType' => 'AlphaNumeric',
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
62 'MaxSize' => '20');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
63
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
64 AddKeyValuePair
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
65 $PseudoHeap->AddKeyValuePair($Key, $Value);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
66
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
67 Add specified *Key* and *Value* pair to pseudo heap using a new or
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
68 an existing key and returns PseudoHeap.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
69
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
70 AddKeyValuePairs
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
71 $PseudoHeap->AddKeyValuePairs(@KeyValuePairs);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
72
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
73 Adds multiple key and value pairs specified in array *KeyValuePairs*
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
74 to pseudo heap using a new or existing keys and returns PseudoHeap.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
75
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
76 DeleteKey
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
77 $PseudoHeap->DeleteKey($Key);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
78
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
79 Deletes a specified *Key* from pseudo heap and returns PseudoHeap.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
80
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
81 DeleteKeys
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
82 $PseudoHeap->DeleteKeys(@Keys);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
83
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
84 Deletes a specified *Keys* from pseudo heap and returns PseudoHeap.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
85
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
86 DeleteMaxKey
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
87 $PseudoHeap->DeleteMaxKey();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
88
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
89 Deletes a *MaxKey* along with its associated values from pseudo heap
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
90 and returns PseudoHeap.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
91
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
92 DeleteMinKey
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
93 $PseudoHeap->DeleteMinKey();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
94
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
95 Deletes a *MinKey* along with its associated values from pseudo heap
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
96 and returns PseudoHeap.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
97
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
98 GetCurrentSize
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
99 $Size = $PseudoHeap->GetCurrentSize();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
100
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
101 Returns current *Size* of pseudo heap corresponding to number to
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
102 keys in heap.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
103
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
104 GetKeyType
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
105 $KeyType = $PseudoHeap->GetKeyType();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
106
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
107 Returns *KeyType* of pseudo heap. Possible KeyType values: *Numeric
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
108 or Alphanumeric*.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
109
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
110 GetKeyValues
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
111 @Values = $PseudoHeap->GetKeyValues($Key);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
112 $NumOfValues = $PseudoHeap->GetKeyValues($Key);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
113
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
114 Returns an array containing Values associated with a specified *Key*
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
115 in pseudo heap. In scalar context, it returns number of values
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
116 associated with a key.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
117
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
118 GetKeys
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
119 @Keys = $PseudoHeap->GetKeys();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
120 $NumOfKeys = $PseudoHeap->GetKeys();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
121
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
122 Returns an array containing all Keys in pseudo heap. In scalar
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
123 context, it returns total number of keys.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
124
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
125 GetMaxKey
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
126 $MaxKey = $PseudoHeap->GetMaxKey();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
127
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
128 Returns *MaxKey* present in pseudo heap.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
129
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
130 GetMaxSize
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
131 $MaxSize = $PseudoHeap->GetMaxSize();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
132
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
133 Returns *MaxSize* of pseudo heap.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
134
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
135 GetMinKey
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
136 $MinKey = $PseudoHeap->GetMinKey();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
137
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
138 Returns *MinKey* present in pseudo heap.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
139
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
140 GetSortedKeys
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
141 @Keys = $PseudoHeap->GetSortedKeys();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
142 $NumOfKeys = $PseudoHeap->GetSortedKeys();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
143
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
144 Returns an array containing all sorted Keys in pseudo heap. In
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
145 scalar context, it retruns total number of keys.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
146
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
147 Keys are sorted based on values of Type and KeyType for pseudo heap:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
148
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
149 Type KeyType SortOrder SortOperator
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
150 KeepTopN Numeric Descending <=>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
151 KeepTopN Alphanumeric Descending cmp
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
152 KeepBottomN Numeric Ascending <=>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
153 KeepBottomN Alphanumeric Ascending cmp
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
154
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
155 GetType
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
156 $Type = $PseudoHeap->GetType();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
157
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
158 Returns *Type* of pseudo heap.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
159
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
160 SetKeyType
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
161 $PseudoHeap->SetKeyType($KeyType);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
162
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
163 Sets *KeyType* of pseudo heap and returns PseudoHeap.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
164
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
165 SetMaxSize
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
166 $PseudoHeap->SetMaxSize($MaxSize);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
167
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
168 Sets *MaxSize* of pseudo heap and returns PseudoHeap.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
169
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
170 SetType
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
171 $PseudoHeap->SetType($Type);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
172
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
173 Sets *Type* of pseudo heap and returns PseudoHeap.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
174
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
175 StringifyPseudoHeap
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
176 $PseudoHeapString = $PseudoHeap->StringifyPseudoHeap();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
177
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
178 Returns a string containing information about *PseudoHeap* object
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
179
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
180 AUTHOR
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
181 Manish Sud <msud@san.rr.com>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
182
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
183 COPYRIGHT
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
184 Copyright (C) 2015 Manish Sud. All rights reserved.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
185
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
186 This file is part of MayaChemTools.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
187
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
188 MayaChemTools is free software; you can redistribute it and/or modify it
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
189 under the terms of the GNU Lesser General Public License as published by
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
190 the Free Software Foundation; either version 3 of the License, or (at
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
191 your option) any later version.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
192