org.apache.mahout.math
Class SequentialAccessSparseVector

java.lang.Object
  extended by org.apache.mahout.math.AbstractVector
      extended by org.apache.mahout.math.SequentialAccessSparseVector
All Implemented Interfaces:
java.lang.Cloneable, Vector

public class SequentialAccessSparseVector
extends AbstractVector

Implements vector that only stores non-zero doubles as a pair of parallel arrays (OrderedIntDoubleMapping), one int[], one double[]. If there are k non-zero elements in the vector, this implementation has O(log(k)) random-access read performance, and O(k) random-access write performance, which is far below that of the hashmap based RandomAccessSparseVector. This class is primarily used for operations where the all the elements will be accessed in a read-only fashion sequentially: methods which operate not via get() or set(), but via iterateNonZero(), such as (but not limited to) :

Note that the Vector passed to these above methods may (and currently, are) be used in a random access fashion, so for example, calling SequentialAccessSparseVector.dot(SequentialAccessSparseVector) is slow. TODO: this need not be the case - both are ordered, so this should be very fast if implmented in this class

OrderedIntDoubleMapping


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.apache.mahout.math.Vector
Vector.Element
 
Field Summary
protected  org.apache.mahout.math.OrderedIntDoubleMapping values
           
 
Fields inherited from class org.apache.mahout.math.AbstractVector
lengthSquared, size
 
Constructor Summary
SequentialAccessSparseVector()
          For serialization purposes only.
SequentialAccessSparseVector(int cardinality)
           
SequentialAccessSparseVector(int cardinality, int size)
           
SequentialAccessSparseVector(SequentialAccessSparseVector other)
           
SequentialAccessSparseVector(SequentialAccessSparseVector other, boolean shallowCopy)
           
SequentialAccessSparseVector(java.lang.String name, int cardinality)
           
SequentialAccessSparseVector(java.lang.String name, int cardinality, int size)
           
SequentialAccessSparseVector(Vector other)
           
 
Method Summary
 SequentialAccessSparseVector clone()
          Return a copy of the recipient
 double dot(Vector x)
          Return the dot product of the recipient and the argument
 boolean equals(java.lang.Object o)
          Indicate whether the two objects are the same or not.
 Vector.Element getElement(int index)
          Return an object of Vector.Element representing an element of this Vector.
 int getNumNondefaultElements()
          Return the number of values in the recipient
 double getQuick(int index)
          Return the value at the given index, without checking bounds
 java.util.Iterator<Vector.Element> iterateAll()
          Iterates over all elements

* NOTE: Implementations may choose to reuse the Element returned for performance reasons, so if you need a copy of it, you should call Vector.getElement(int) for the given index

 java.util.Iterator<Vector.Element> iterateNonZero()
          Iterates over all non-zero elements.
 SequentialAccessSparseVector like()
          Return an empty matrix of the same underlying class as the receiver
 Vector like(int newCardinality)
          Return an empty matrix of the same underlying class as the receiver and of the given cardinality
protected  Matrix matrixLike(int rows, int columns)
          Subclasses must override to return an appropriately sparse or dense result
 void setQuick(int index, double value)
          Set the value at the given index, without checking bounds
 
Methods inherited from class org.apache.mahout.math.AbstractVector
addTo, aggregate, aggregate, asFormatString, assign, assign, assign, assign, assign, assign, cross, decodeVector, divide, dotSelf, equivalent, get, get, getDistanceSquared, getLabelBindings, getLengthSquared, getName, hashCode, maxValue, maxValueIndex, minus, norm, normalize, normalize, plus, plus, set, set, set, setLabelBindings, setName, size, strictEquivalence, times, times, viewPart, zSum
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

values

protected org.apache.mahout.math.OrderedIntDoubleMapping values
Constructor Detail

SequentialAccessSparseVector

public SequentialAccessSparseVector()
For serialization purposes only.


SequentialAccessSparseVector

public SequentialAccessSparseVector(int cardinality,
                                    int size)

SequentialAccessSparseVector

public SequentialAccessSparseVector(java.lang.String name,
                                    int cardinality,
                                    int size)

SequentialAccessSparseVector

public SequentialAccessSparseVector(java.lang.String name,
                                    int cardinality)

SequentialAccessSparseVector

public SequentialAccessSparseVector(int cardinality)

SequentialAccessSparseVector

public SequentialAccessSparseVector(Vector other)

SequentialAccessSparseVector

public SequentialAccessSparseVector(SequentialAccessSparseVector other,
                                    boolean shallowCopy)

SequentialAccessSparseVector

public SequentialAccessSparseVector(SequentialAccessSparseVector other)
Method Detail

matrixLike

protected Matrix matrixLike(int rows,
                            int columns)
Description copied from class: AbstractVector
Subclasses must override to return an appropriately sparse or dense result

Specified by:
matrixLike in class AbstractVector
Parameters:
rows - the row cardinality
columns - the column cardinality
Returns:
a Matrix

clone

public SequentialAccessSparseVector clone()
Description copied from interface: Vector
Return a copy of the recipient

Specified by:
clone in interface Vector
Overrides:
clone in class AbstractVector
Returns:
a new Vector

getQuick

public double getQuick(int index)
Description copied from interface: Vector
Return the value at the given index, without checking bounds

Parameters:
index - an int index
Returns:
the double at the index

setQuick

public void setQuick(int index,
                     double value)
Description copied from interface: Vector
Set the value at the given index, without checking bounds

Parameters:
index - an int index into the receiver
value - a double value to set

getNumNondefaultElements

public int getNumNondefaultElements()
Description copied from interface: Vector
Return the number of values in the recipient

Returns:
an int

like

public SequentialAccessSparseVector like()
Description copied from interface: Vector
Return an empty matrix of the same underlying class as the receiver

Returns:
a Vector

like

public Vector like(int newCardinality)
Description copied from interface: Vector
Return an empty matrix of the same underlying class as the receiver and of the given cardinality

Parameters:
newCardinality - an int specifying the desired cardinality
Returns:
a Vector

iterateNonZero

public java.util.Iterator<Vector.Element> iterateNonZero()
Description copied from interface: Vector
Iterates over all non-zero elements.

NOTE: Implementations may choose to reuse the Element returned for performance reasons, so if you need a copy of it, you should call Vector.getElement(int) for the given index

Returns:
An Iterator over all non-zero elements

iterateAll

public java.util.Iterator<Vector.Element> iterateAll()
Description copied from interface: Vector
Iterates over all elements

* NOTE: Implementations may choose to reuse the Element returned for performance reasons, so if you need a copy of it, you should call Vector.getElement(int) for the given index

Returns:
An Iterator over all elements

equals

public boolean equals(java.lang.Object o)
Indicate whether the two objects are the same or not. Two Vectors can be equal even if the underlying implementation is not equal.

Overrides:
equals in class java.lang.Object
Parameters:
o - The object to compare
Returns:
true if the objects have the same cell values and same name, false otherwise.

* @see AbstractVector#strictEquivalence(Vector, Vector)

See Also:
AbstractVector.equivalent(Vector, Vector)

getElement

public Vector.Element getElement(int index)
Description copied from interface: Vector
Return an object of Vector.Element representing an element of this Vector. Useful when designing new iterator types.

Parameters:
index - Index of the Vector.Element required
Returns:
The Vector.Element Object

dot

public double dot(Vector x)
Description copied from interface: Vector
Return the dot product of the recipient and the argument

Specified by:
dot in interface Vector
Overrides:
dot in class AbstractVector
Parameters:
x - a Vector
Returns:
a new Vector


Copyright © 2008-2010 The Apache Software Foundation. All Rights Reserved.