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);
+
+
+
   }
 }