named_vector 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/lib/named_vector.rb +37 -8
- data/specs/initialization.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NTIyYTE5Y2VlODc2OTY2Y2I4Yjc3YjhmY2FjNzA5MjhjMGI4OWJkMw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MmMxMGI2ZDg0MmYyMWU3NzJhM2FmMjNkODI2NTliY2Y2NjI3MTM2Yw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YmY3NDRhYjY5MWZjOWNmYzMyNTkwZjIyMjA0M2FiNDI4NzJjYWUwNjM0YTQ1
|
10
|
+
ZTZkODQ4YjJlY2VmMmIwMDIxNTYxZmZiN2U2ZGU5MTYxN2JiYzlmMjQwZDFm
|
11
|
+
MjM1MDNkN2EzYWM1NDk2ZTA2ZGZjYjQ2MTZlNDE2ODBkZTczNjk=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YmUzMDczMjZjOTNlNzU2ZmJlNDRjOTA1MzRkNDM5NzA1MWVlZDQzYjQzYjBj
|
14
|
+
MGZiZmY1NDkxNWRjMzJlOTgyZGI5N2Q0NTlmZDRhNGI1MDdmOGE2MDMyOWRk
|
15
|
+
MDM1Mzc2OTA3MzRhMjFiYzI3MmJlZDY3YzE0ZTJhYmYxZTllZTY=
|
data/lib/named_vector.rb
CHANGED
@@ -141,6 +141,27 @@ class NamedVector
|
|
141
141
|
norm
|
142
142
|
end
|
143
143
|
|
144
|
+
def eql?(other)
|
145
|
+
false unless other.keys == @keys
|
146
|
+
all_keys = other.keys.merge(@keys)
|
147
|
+
all_keys.each do |key|
|
148
|
+
if other[key] != self[key] then return false end
|
149
|
+
end
|
150
|
+
true
|
151
|
+
end
|
152
|
+
|
153
|
+
def to_s
|
154
|
+
"<#NamedVector @keys=\"#{@keys.inspect}\", @vector=\"#{@vector.inspect}\">"
|
155
|
+
end
|
156
|
+
|
157
|
+
def to_a
|
158
|
+
@vector.to_a
|
159
|
+
end
|
160
|
+
|
161
|
+
alias :to_ary :to_a
|
162
|
+
|
163
|
+
alias :== :eql?
|
164
|
+
|
144
165
|
# the Euclidean norm of a vector
|
145
166
|
def norm
|
146
167
|
Math.sqrt(squared_norm)
|
@@ -150,21 +171,29 @@ class NamedVector
|
|
150
171
|
def normalize
|
151
172
|
current_norm = norm
|
152
173
|
if current_norm > 0 then self*(1.0/current_norm) end
|
174
|
+
self
|
153
175
|
end
|
154
176
|
|
155
|
-
# Mongo
|
156
|
-
|
157
|
-
|
177
|
+
# Mongo retrieval
|
178
|
+
# @param doc [BSON::OrderedHash] the mongo document to retrieve the vector from.
|
179
|
+
def self.to_mongo(hash)
|
180
|
+
if hash.is_a?(Hash) then hash
|
181
|
+
else
|
182
|
+
{"keys"=> hash.keys.to_a, "dimensions" => hash.keys.map {|i| hash[i]}}
|
183
|
+
end
|
158
184
|
end
|
159
185
|
|
160
|
-
# Mongo
|
186
|
+
# Mongo conversion
|
161
187
|
# @param doc [BSON::OrderedHash] the mongo document to retrieve the vector from.
|
162
188
|
def self.from_mongo(doc)
|
163
|
-
|
164
|
-
|
165
|
-
hash
|
189
|
+
if doc.is_a?(self) then doc
|
190
|
+
else
|
191
|
+
hash = {}
|
192
|
+
doc["keys"].each_with_index do |k, index|
|
193
|
+
hash[k] = doc["dimensions"][index]
|
194
|
+
end
|
195
|
+
NamedVector.new(hash)
|
166
196
|
end
|
167
|
-
self.new hash
|
168
197
|
end
|
169
198
|
|
170
199
|
private :new_dimension
|
data/specs/initialization.rb
CHANGED