[ 
https://issues.apache.org/jira/browse/MAHOUT-1227?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13666951#comment-13666951
 ] 

Hudson commented on MAHOUT-1227:
--------------------------------

Integrated in Mahout-Quality #2014 (See 
[https://builds.apache.org/job/Mahout-Quality/2014/])
    Removes Iterable and iterateNonZero() from Vector interface, replaces with 
two Iterable-returning methods fixes MAHOUT-1227 (Revision 1486122)

     Result = SUCCESS
jmannix : 
http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1486122
Files : 
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/als/ALS.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/als/ParallelALSFactorizationJob.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/als/PredictionMapper.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/AggregateAndRecommendReducer.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/UserVectorSplitterMapper.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/preparation/ToItemVectorsMapper.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/ItemSimilarityJob.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/classifier/discriminative/WinnowTrainer.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/classifier/naivebayes/AbstractNaiveBayesClassifier.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/classifier/naivebayes/test/TestNaiveBayesDriver.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/classifier/naivebayes/training/ComplementaryThetaTrainer.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/classifier/naivebayes/training/StandardThetaTrainer.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/classifier/sgd/AbstractOnlineLogisticRegression.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/classifier/sgd/ModelDissector.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/AbstractCluster.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/classify/ClusterClassificationDriver.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/classify/ClusterClassificationMapper.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/GaussianCluster.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/iterator/CIMapper.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/iterator/ClusterIterator.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/lda/cvb/TopicModel.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/minhash/MinHashMapper.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/spectral/common/UnitVectorizerJob.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/spectral/common/VectorMatrixMultiplicationJob.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/spectral/eigencuts/EigencutsAffinityCutsJob.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/spectral/eigencuts/EigencutsDriver.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/common/distance/WeightedEuclideanDistanceMeasure.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/common/distance/WeightedManhattanDistanceMeasure.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/common/mapreduce/TransposeMapper.java
* /mahout/trunk/core/src/main/java/org/apache/mahout/math/VectorWritable.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/MatrixMultiplicationJob.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/TransposeJob.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/cooccurrence/RowSimilarityJob.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/cooccurrence/Vectors.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/cooccurrence/measures/EuclideanDistanceSimilarity.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/cooccurrence/measures/PearsonCorrelationSimilarity.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/stochasticsvd/ABtDenseOutJob.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/stochasticsvd/ABtJob.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/stochasticsvd/BtJob.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/stochasticsvd/Omega.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/stochasticsvd/UpperTriangular.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/stochasticsvd/YtYJob.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/stochasticsvd/qr/QRFirstStep.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/math/neighborhood/HashedVector.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/math/stats/GlobalOnlineAuc.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/vectorizer/pruner/WordsPrunerReducer.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/vectorizer/term/TermDocumentCountMapper.java
* 
/mahout/trunk/core/src/main/java/org/apache/mahout/vectorizer/tfidf/TFIDFPartialVectorReducer.java
* 
/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/hadoop/als/ParallelALSFactorizationJobTest.java
* 
/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/recommender/svd/ALSWRFactorizerTest.java
* 
/mahout/trunk/core/src/test/java/org/apache/mahout/classifier/naivebayes/NaiveBayesTestBase.java
* 
/mahout/trunk/core/src/test/java/org/apache/mahout/classifier/sgd/AdaptiveLogisticRegressionTest.java
* 
/mahout/trunk/core/src/test/java/org/apache/mahout/clustering/minhash/TestMinHashClustering.java
* 
/mahout/trunk/core/src/test/java/org/apache/mahout/clustering/spectral/common/TestAffinityMatrixInputJob.java
* 
/mahout/trunk/core/src/test/java/org/apache/mahout/clustering/spectral/eigencuts/TestEigencutsAffinityCutsJob.java
* /mahout/trunk/core/src/test/java/org/apache/mahout/math/hadoop/MathHelper.java
* 
/mahout/trunk/core/src/test/java/org/apache/mahout/math/hadoop/stochasticsvd/LocalSSVDSolverDenseTest.java
* 
/mahout/trunk/core/src/test/java/org/apache/mahout/math/hadoop/stochasticsvd/LocalSSVDSolverSparseSequentialTest.java
* 
/mahout/trunk/core/src/test/java/org/apache/mahout/vectorizer/encoders/WordLikeValueEncoderTest.java
* 
/mahout/trunk/examples/src/main/java/org/apache/mahout/clustering/minhash/LastfmClusterEvaluator.java
* 
/mahout/trunk/integration/src/main/java/org/apache/mahout/clustering/cdbw/CDbwEvaluator.java
* 
/mahout/trunk/integration/src/main/java/org/apache/mahout/clustering/evaluation/ClusterEvaluator.java
* 
/mahout/trunk/integration/src/main/java/org/apache/mahout/utils/clustering/AbstractClusterWriter.java
* 
/mahout/trunk/integration/src/main/java/org/apache/mahout/utils/vectors/VectorHelper.java
* 
/mahout/trunk/integration/src/test/java/org/apache/mahout/clustering/dirichlet/TestL1ModelClustering.java
* /mahout/trunk/math/src/main/java/org/apache/mahout/math/AbstractVector.java
* /mahout/trunk/math/src/main/java/org/apache/mahout/math/DelegatingVector.java
* /mahout/trunk/math/src/main/java/org/apache/mahout/math/DenseVector.java
* /mahout/trunk/math/src/main/java/org/apache/mahout/math/FileBasedMatrix.java
* 
/mahout/trunk/math/src/main/java/org/apache/mahout/math/FileBasedSparseBinaryMatrix.java
* /mahout/trunk/math/src/main/java/org/apache/mahout/math/NamedVector.java
* 
/mahout/trunk/math/src/main/java/org/apache/mahout/math/PermutedVectorView.java
* 
/mahout/trunk/math/src/main/java/org/apache/mahout/math/RandomAccessSparseVector.java
* 
/mahout/trunk/math/src/main/java/org/apache/mahout/math/SequentialAccessSparseVector.java
* /mahout/trunk/math/src/main/java/org/apache/mahout/math/Vector.java
* 
/mahout/trunk/math/src/main/java/org/apache/mahout/math/VectorBinaryAggregate.java
* 
/mahout/trunk/math/src/main/java/org/apache/mahout/math/VectorBinaryAssign.java
* /mahout/trunk/math/src/main/java/org/apache/mahout/math/VectorView.java
* 
/mahout/trunk/math/src/main/java/org/apache/mahout/math/WeightedVectorComparator.java
* 
/mahout/trunk/math/src/main/java/org/apache/mahout/math/als/AlternatingLeastSquaresSolver.java
* 
/mahout/trunk/math/src/main/java/org/apache/mahout/math/als/ImplicitFeedbackAlternatingLeastSquaresSolver.java
* 
/mahout/trunk/math/src/test/java/org/apache/mahout/math/AbstractVectorTest.java
* /mahout/trunk/math/src/test/java/org/apache/mahout/math/VectorTest.java
* 
/mahout/trunk/math/src/test/java/org/apache/mahout/math/solver/EigenDecompositionTest.java

                
> Vector.iterateNonZero() is super-clumsy to use: add Iterable<Element> 
> allNonZero()
> ----------------------------------------------------------------------------------
>
>                 Key: MAHOUT-1227
>                 URL: https://issues.apache.org/jira/browse/MAHOUT-1227
>             Project: Mahout
>          Issue Type: Improvement
>         Environment: all
>            Reporter: Andy Schlaikjer
>            Assignee: Jake Mannix
>             Fix For: 0.8
>
>         Attachments: MAHOUT-1227-big.diff, MAHOUT-1227.diff
>
>
> Currently, our codebase is littered with the following:
> {code}
> Iterator<Element> it = vector.iterateNonZero();
> while (it.hasNext()) {
>   Element e = it.next();
>   ...
> {code}
> wouldn't it be nice to be able to do:
> {code}
> for (Element e : vector.allNonZero()) {
>   ...
> {code}
> instead?
> I propose adding an Iterable<Element> allNonZero() which allow this syntactic 
> sugar.  To make it symmetric with iterateAll, let's also add 
> Iterable<Element> all(), and implement the simply in AbstractVector.
> The first diff adding this is very non-invasive - new methods added to 
> interface, implemented in the three classes from which all Vector 
> implementations derive (AbstractVector, NamedVector, and DelegatingVector).  
> User code should just work, unless they've implemented their own vector 
> without subclassing one of these three (yikes).
> Next diff, which is more invasive, would remove "extends Iterable<Element>" 
> from Vector, because using the foreach of a Vector itself is very rarely what 
> the caller really means to do (it's the all-iterator, very bad for the more 
> common sparse use case).  To achieve the same effect, the caller chooses 
> between vector.all() and vector.allNonZero(), and then they're being crystal 
> clear what they mean.
> Lastly, I'd propose we make iterateAll() and iterateAllNonZero() protected 
> methods on AbstractVector, so that we are forced to remove all the clumsy 
> places where we do Iterator<Element> it = ... all throughout the codebase.  I 
> suspect there will be very few places left that really want the raw iterator, 
> but if there are any, it can be gotten by calling 
> vector.(all/allNonZero).iterator()
> (feature-request/api fix suggestion idea courtesy of Andy Schlaikjer, 
> formalized as a proposal and posted up here by me, Jake Mannix)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to