You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by ka...@apache.org on 2008/04/17 02:43:21 UTC
svn commit: r648907 - in /lucene/mahout/trunk/src:
main/java/org/apache/mahout/matrix/VectorView.java
test/java/org/apache/mahout/matrix/VectorTest.java
Author: kalle
Date: Wed Apr 16 17:43:19 2008
New Revision: 648907
URL: http://svn.apache.org/viewvc?rev=648907&view=rev
Log:
MAHOUT-34
VectorView enumeration did not show correct index if offset was greater than 0.
Added some more tests
Modified:
lucene/mahout/trunk/src/main/java/org/apache/mahout/matrix/VectorView.java
lucene/mahout/trunk/src/test/java/org/apache/mahout/matrix/VectorTest.java
Modified: lucene/mahout/trunk/src/main/java/org/apache/mahout/matrix/VectorView.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/src/main/java/org/apache/mahout/matrix/VectorView.java?rev=648907&r1=648906&r2=648907&view=diff
==============================================================================
--- lucene/mahout/trunk/src/main/java/org/apache/mahout/matrix/VectorView.java (original)
+++ lucene/mahout/trunk/src/main/java/org/apache/mahout/matrix/VectorView.java Wed Apr 16 17:43:19 2008
@@ -132,7 +132,7 @@
public class ViewIterator implements Iterator<Vector.Element> {
private Iterator<Vector.Element> it;
- private Vector.Element el;
+ private Vector.Element el;
public ViewIterator() {
it = vector.iterator();
@@ -142,7 +142,23 @@
private void buffer() {
while (it.hasNext()) {
el = it.next();
- if (isInView(el.index())) return;
+ if (isInView(el.index())) {
+ final Vector.Element decorated = el;
+ el = new Vector.Element() {
+ public double get() {
+ return decorated.get();
+ }
+
+ public int index() {
+ return decorated.index() - offset;
+ }
+
+ public void set(double value) {
+ el.set(value);
+ }
+ };
+ return;
+ }
}
el = null; // No element was found
}
Modified: lucene/mahout/trunk/src/test/java/org/apache/mahout/matrix/VectorTest.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/src/test/java/org/apache/mahout/matrix/VectorTest.java?rev=648907&r1=648906&r2=648907&view=diff
==============================================================================
--- lucene/mahout/trunk/src/test/java/org/apache/mahout/matrix/VectorTest.java (original)
+++ lucene/mahout/trunk/src/test/java/org/apache/mahout/matrix/VectorTest.java Wed Apr 16 17:43:19 2008
@@ -18,6 +18,9 @@
import junit.framework.TestCase;
+import java.util.Map;
+import java.util.LinkedHashMap;
+
public class VectorTest extends TestCase {
@@ -64,5 +67,38 @@
VectorView vecV1 = new VectorView(vec1, 0, 3);
VectorView vecV2 = new VectorView(vec2, 2, 3);
testVectors(vecV1, vecV2);
+ }
+
+ /**
+ * Asserts a vector using enumeration equals a given dense vector
+ */
+ public void testEnumeration(double[] apriori, Vector vector) throws Exception {
+ double[] test = new double[apriori.length];
+ for (Vector.Element e : vector) {
+ test[e.index()] = e.get();
+ }
+
+ for (int i = 0; i<test.length; i++) {
+ assertEquals(apriori[i], test[i]);
+ }
+ }
+
+ public void testEnumeration() throws Exception {
+ double[] apriori = new double[]{0, 1, 2, 3, 4};
+
+ testEnumeration(apriori, new VectorView(new DenseVector(new double[]{-2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}), 2, 5));
+
+ testEnumeration(apriori, new DenseVector(new double[]{0, 1, 2, 3, 4}));
+
+ SparseVector sparse = new SparseVector(5);
+ sparse.set(0, 0);
+ sparse.set(1, 1);
+ sparse.set(2, 2);
+ sparse.set(3, 3);
+ sparse.set(4, 4);
+ testEnumeration(apriori, sparse);
+
+
+
}
}