diff --git a/src/analysis/AnalysisBase.cpp b/src/analysis/AnalysisBase.cpp index c2e1186f51e243b0d2a6b90237a994c4fb9621c7..afce106b2e939bde6e640f09fd339cc0f9384228 100644 --- a/src/analysis/AnalysisBase.cpp +++ b/src/analysis/AnalysisBase.cpp @@ -32,7 +32,7 @@ void AnalysisBase::registerKeywords( Keywords& keys ){ ActionPilot::registerKeywords( keys ); ActionAtomistic::registerKeywords( keys ); ActionWithArguments::registerKeywords( keys ); - ActionWithVessel::registerKeywords( keys ); keys.remove("TOL"); keys.remove("LOWMEM"); keys.reset_style("TIMINGS","hidden"); keys.isAnalysis(); + ActionWithVessel::registerKeywords( keys ); keys.remove("TOL"); keys.reset_style("TIMINGS","hidden"); keys.isAnalysis(); keys.add("atoms-2","USE_OUTPUT_DATA_FROM","use the ouput of the analysis performed by this object as input to your new analysis object"); } diff --git a/src/analysis/EuclideanDissimilarityMatrix.cpp b/src/analysis/EuclideanDissimilarityMatrix.cpp index 4ce620338cc3f5b09fed121bae9051416978cbcd..2d7b85dbe1d10f6813109d4d3c37323caba6fdbf 100644 --- a/src/analysis/EuclideanDissimilarityMatrix.cpp +++ b/src/analysis/EuclideanDissimilarityMatrix.cpp @@ -37,7 +37,6 @@ namespace analysis { class EuclideanDissimilarityMatrix : public AnalysisWithDataCollection { private: - bool lowmem; Matrix<double> dissimilarities; public: static void registerKeywords( Keywords& keys ); @@ -57,27 +56,24 @@ PLUMED_REGISTER_ACTION(EuclideanDissimilarityMatrix,"EUCLIDEAN_DISSIMILARITIES") void EuclideanDissimilarityMatrix::registerKeywords( Keywords& keys ){ AnalysisWithDataCollection::registerKeywords( keys ); keys.reset_style("METRIC","atoms-1"); keys.use("FRAMES"); - keys.addFlag("LOWMEM",false,"lower the memory requirements of the calculation"); } EuclideanDissimilarityMatrix::EuclideanDissimilarityMatrix( const ActionOptions& ao ): Action(ao), AnalysisWithDataCollection(ao) { - parseFlag("LOWMEM",lowmem); - if( lowmem ) log.printf(" lowering memory requirements \n"); } void EuclideanDissimilarityMatrix::performAnalysis(){ // Resize dissimilarities matrix and set all elements to zero - if( !lowmem ){ + if( !usingLowMem() ){ dissimilarities.resize( getNumberOfDataPoints(), getNumberOfDataPoints() ); dissimilarities=0; } } double EuclideanDissimilarityMatrix::getDissimilarity( const unsigned& iframe, const unsigned& jframe ){ plumed_dbg_assert( iframe<getNumberOfDataPoints() && jframe<getNumberOfDataPoints() ); - if( !lowmem ){ + if( !usingLowMem() ){ if( dissimilarities(iframe,jframe)>0. ){ return dissimilarities(iframe,jframe); } } if( iframe!=jframe ){ @@ -85,9 +81,11 @@ double EuclideanDissimilarityMatrix::getDissimilarity( const unsigned& iframe, c if( mydata ){ myref1=AnalysisBase::getReferenceConfiguration(iframe,true); myref2=AnalysisBase::getReferenceConfiguration(jframe,true); } else { myref1 = data[iframe]; myref2 = data[jframe]; } if( myref1->getNumberOfProperties()>0 ){ - dissimilarities(iframe,jframe) = dissimilarities(jframe,iframe) = property_distance( myref1, myref2, true ); + if( !usingLowMem() ) dissimilarities(iframe,jframe) = dissimilarities(jframe,iframe) = property_distance( myref1, myref2, true ); + else return property_distance( myref1, myref2, true ); } else { - dissimilarities(iframe,jframe) = dissimilarities(jframe,iframe) = distance( getPbc(), getArguments(), myref1, myref2, true ); + if( !usingLowMem() ) dissimilarities(iframe,jframe) = dissimilarities(jframe,iframe) = distance( getPbc(), getArguments(), myref1, myref2, true ); + else return distance( getPbc(), getArguments(), myref1, myref2, true ); } return dissimilarities(iframe,jframe); } diff --git a/src/dimred/DimensionalityReductionBase.cpp b/src/dimred/DimensionalityReductionBase.cpp index 0861b2d272a43c417101204ce062121b8c32f7ac..ec7c165c9ff33e4562ff6f334c829ba6898592c9 100644 --- a/src/dimred/DimensionalityReductionBase.cpp +++ b/src/dimred/DimensionalityReductionBase.cpp @@ -64,6 +64,7 @@ void DimensionalityReductionBase::getDataPoint( const unsigned& idata, std::vect } void DimensionalityReductionBase::performAnalysis(){ + log.printf("Generating projections required by action %s \n",getLabel().c_str() ); // Resize the tempory array (this is used for out of sample) dtargets.resize( getNumberOfDataPoints() ); // Resize the projections array @@ -84,6 +85,7 @@ void DimensionalityReductionBase::performAnalysis(){ } // This calculates the projections of the points calculateProjections( targets, projections ); + log.printf("Generated projections required by action %s \n",getLabel().c_str() ); } double DimensionalityReductionBase::calculateStress( const std::vector<double>& p, std::vector<double>& d ){