From 9ab6f051800fd486453ee1aed126940a17978c8b Mon Sep 17 00:00:00 2001 From: Gareth Tribello <gareth.tribello@gmail.com> Date: Tue, 7 Jul 2015 16:19:57 +0100 Subject: [PATCH] Fixed bug that breaks travis-ci I also fixed made the data collecting class is aware if we are calculating a distance. If it knows that we are trying to calculate a distnace it returns something with which it can calculate a distance and not the position stored by COLLECT_FRAMES. I am not sure this is necessary and if it will be ever used but I guess it is better to be safe than sorry --- src/analysis/AnalysisBase.h | 6 +++--- src/analysis/AnalysisWithDataCollection.cpp | 6 +++--- src/analysis/AnalysisWithDataCollection.h | 2 +- src/analysis/EuclideanDissimilarityMatrix.cpp | 2 +- src/analysis/LandmarkSelectionBase.h | 6 +++--- src/analysis/OutputColvarFile.cpp | 4 ++-- src/analysis/OutputPDBFile.cpp | 4 ++-- src/analysis/ReadDissimilarityMatrix.cpp | 6 +++--- src/dimred/DimensionalityReductionBase.cpp | 4 ++-- src/dimred/DimensionalityReductionBase.h | 2 +- src/dimred/ProjectNonLandmarkPoints.cpp | 6 +++--- src/reference/ReferenceConfiguration.cpp | 2 +- 12 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/analysis/AnalysisBase.h b/src/analysis/AnalysisBase.h index 9208463ae..3b3b35f9e 100644 --- a/src/analysis/AnalysisBase.h +++ b/src/analysis/AnalysisBase.h @@ -84,7 +84,7 @@ public: /// Get the ith data point virtual void getDataPoint( const unsigned& idata, std::vector<double>& point, double& weight ) const ; /// Get a reference configuration (in dimensionality reduction this returns the projection) - virtual ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata ); + virtual ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata, const bool& calcdist ); /// This actually performs the analysis virtual void performAnalysis()=0; /// These overwrite things from inherited classes (this is a bit of a fudge) @@ -164,8 +164,8 @@ void AnalysisBase::getDataPoint( const unsigned& idata, std::vector<double>& poi } inline -ReferenceConfiguration* AnalysisBase::getReferenceConfiguration( const unsigned& idata ){ - return mydata->getReferenceConfiguration( idata ); +ReferenceConfiguration* AnalysisBase::getReferenceConfiguration( const unsigned& idata, const bool& calcdist ){ + return mydata->getReferenceConfiguration( idata, calcdist ); } } diff --git a/src/analysis/AnalysisWithDataCollection.cpp b/src/analysis/AnalysisWithDataCollection.cpp index 361f88ccf..d3e2baa60 100644 --- a/src/analysis/AnalysisWithDataCollection.cpp +++ b/src/analysis/AnalysisWithDataCollection.cpp @@ -289,13 +289,13 @@ void AnalysisWithDataCollection::getDataPoint( const unsigned& idat, std::vector } } -ReferenceConfiguration* AnalysisWithDataCollection::getReferenceConfiguration( const unsigned& idat ){ +ReferenceConfiguration* AnalysisWithDataCollection::getReferenceConfiguration( const unsigned& idat, const bool& calcdist ){ if( !mydata ){ plumed_dbg_assert( idat<data.size() ); - if( myframes ) return myframes->getReferenceConfiguration( idat ); + if( !calcdist && myframes ) return myframes->getReferenceConfiguration( idat, false ); return data[idat]; } - return AnalysisBase::getReferenceConfiguration( idat ); + return AnalysisBase::getReferenceConfiguration( idat, calcdist ); } void AnalysisWithDataCollection::update(){ diff --git a/src/analysis/AnalysisWithDataCollection.h b/src/analysis/AnalysisWithDataCollection.h index 8697ea147..6bde3447f 100644 --- a/src/analysis/AnalysisWithDataCollection.h +++ b/src/analysis/AnalysisWithDataCollection.h @@ -99,7 +99,7 @@ public: /// Get the ith data point virtual void getDataPoint( const unsigned& idata, std::vector<double>& point, double& weight ) const ; /// Get a reference configuration (in dimensionality reduction this returns the projection) - virtual ReferenceConfiguration* getReferenceConfiguration( const unsigned& idat ); + virtual ReferenceConfiguration* getReferenceConfiguration( const unsigned& idat, const bool& calcdist ); /// This ensures that the energy is stored if we are reweighting void prepare(); /// This stores the data and calls the analysis to be performed diff --git a/src/analysis/EuclideanDissimilarityMatrix.cpp b/src/analysis/EuclideanDissimilarityMatrix.cpp index 5594bb347..60a5903e5 100644 --- a/src/analysis/EuclideanDissimilarityMatrix.cpp +++ b/src/analysis/EuclideanDissimilarityMatrix.cpp @@ -74,7 +74,7 @@ double EuclideanDissimilarityMatrix::getDissimilarity( const unsigned& iframe, c if( dissimilarities(iframe,jframe)>0. ){ return dissimilarities(iframe,jframe); } if( iframe!=jframe ){ ReferenceConfiguration* myref1; ReferenceConfiguration* myref2; - if( mydata ){ myref1=AnalysisBase::getReferenceConfiguration(iframe); myref2=AnalysisBase::getReferenceConfiguration(jframe); } + 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 ); diff --git a/src/analysis/LandmarkSelectionBase.h b/src/analysis/LandmarkSelectionBase.h index 61da3a215..801c39ee1 100644 --- a/src/analysis/LandmarkSelectionBase.h +++ b/src/analysis/LandmarkSelectionBase.h @@ -53,7 +53,7 @@ public: /// Get the ith data point void getDataPoint( const unsigned& idata, std::vector<double>& point, double& weight ) const ; /// Get a reference configuration - ReferenceConfiguration* getReferenceConfiguration( const unsigned& idat ); + ReferenceConfiguration* getReferenceConfiguration( const unsigned& idat, const bool& calcdist ); /// Select landmark configurations void performAnalysis(); virtual void selectLandmarks()=0; @@ -84,8 +84,8 @@ void LandmarkSelectionBase::getDataPoint( const unsigned& idata, std::vector<dou } inline -ReferenceConfiguration* LandmarkSelectionBase::getReferenceConfiguration( const unsigned& idat ){ - return AnalysisBase::getReferenceConfiguration( landmark_indices[idat] ); +ReferenceConfiguration* LandmarkSelectionBase::getReferenceConfiguration( const unsigned& idat, const bool& calcdist ){ + return AnalysisBase::getReferenceConfiguration( landmark_indices[idat], calcdist ); } inline diff --git a/src/analysis/OutputColvarFile.cpp b/src/analysis/OutputColvarFile.cpp index fe56fc3d0..c29577981 100644 --- a/src/analysis/OutputColvarFile.cpp +++ b/src/analysis/OutputColvarFile.cpp @@ -88,12 +88,12 @@ void OutputColvarFile::performAnalysis(){ gfile.fmtField(fmt+" "); gfile.open( filename.c_str() ); - ReferenceConfiguration* myp = getReferenceConfiguration(0); + ReferenceConfiguration* myp = getReferenceConfiguration(0,false); if( myp->getNumberOfProperties()==0 ) plumed_assert( !dynamic_cast<ReferenceAtoms*>( myp ) ); // Print embedding coordinates for(unsigned i=0;i<getNumberOfDataPoints();++i){ - ReferenceConfiguration* mypoint=getReferenceConfiguration(i); + ReferenceConfiguration* mypoint=getReferenceConfiguration(i,false); for(unsigned j=0;j<mypoint->getNumberOfProperties();++j){ gfile.printField( mypoint->getPropertyName(j), mypoint->getPropertyValue(j) ); } diff --git a/src/analysis/OutputPDBFile.cpp b/src/analysis/OutputPDBFile.cpp index 5cdc83e52..0783b0fc2 100644 --- a/src/analysis/OutputPDBFile.cpp +++ b/src/analysis/OutputPDBFile.cpp @@ -81,8 +81,8 @@ void OutputPDBFile::performAnalysis(){ for(unsigned j=0;j<getNumberOfDataPoints();++j){ afile.printf("DESCRIPTION: analysis data from calculation done at time %f \n",getLabel().c_str(),getTime() ); afile.printf(descr.c_str(),getWeight(j) ); - if( plumed.getAtoms().usingNaturalUnits() ) getReferenceConfiguration(j)->print( 1.0, afile, fmt ); - else getReferenceConfiguration(j)->print( plumed.getAtoms().getUnits().getLength()/0.1, afile, fmt ); + if( plumed.getAtoms().usingNaturalUnits() ) getReferenceConfiguration(j,false)->print( 1.0, afile, fmt ); + else getReferenceConfiguration(j,false)->print( plumed.getAtoms().getUnits().getLength()/0.1, afile, fmt ); } afile.close(); } diff --git a/src/analysis/ReadDissimilarityMatrix.cpp b/src/analysis/ReadDissimilarityMatrix.cpp index b590488ed..3f78848c3 100644 --- a/src/analysis/ReadDissimilarityMatrix.cpp +++ b/src/analysis/ReadDissimilarityMatrix.cpp @@ -49,7 +49,7 @@ public: ReadDissimilarityMatrix( const ActionOptions& ao ); unsigned getNumberOfDataPoints() const ; /// This gives an error as if we read in the matrix we dont have the coordinates - ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata ); + ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata, const bool& calcdist ); /// This gives an error as if we read in the matrix we dont have the coordinates void getDataPoint( const unsigned& idata, std::vector<double>& point, double& weight ) const ; /// Tell everyone we have dissimilarities @@ -142,8 +142,8 @@ double ReadDissimilarityMatrix::getDissimilarity( const unsigned& iframe, const return dissimilarities( iframe, jframe ); } -ReferenceConfiguration* ReadDissimilarityMatrix::getReferenceConfiguration( const unsigned& idata ){ - if( mydata ) return AnalysisBase::getReferenceConfiguration( idata ); +ReferenceConfiguration* ReadDissimilarityMatrix::getReferenceConfiguration( const unsigned& idata, const bool& calcdist ){ + if( mydata ) return AnalysisBase::getReferenceConfiguration( idata, calcdist ); plumed_merror("cannot get reference configurations from read in dissimilarity matrix"); return NULL; } diff --git a/src/dimred/DimensionalityReductionBase.cpp b/src/dimred/DimensionalityReductionBase.cpp index aee9e3424..0861b2d27 100644 --- a/src/dimred/DimensionalityReductionBase.cpp +++ b/src/dimred/DimensionalityReductionBase.cpp @@ -52,8 +52,8 @@ dimredbase(NULL) log.printf(" projecting in %d dimensional space \n",nlow); } -ReferenceConfiguration* DimensionalityReductionBase::getReferenceConfiguration( const unsigned& idat ){ - ReferenceConfiguration* myref = mydata->getReferenceConfiguration( idat ); std::string num; myref->clearAllProperties(); +ReferenceConfiguration* DimensionalityReductionBase::getReferenceConfiguration( const unsigned& idat, const bool& calcdist ){ + ReferenceConfiguration* myref = mydata->getReferenceConfiguration( idat, calcdist ); std::string num; myref->clearAllProperties(); for(unsigned i=0;i<nlow;++i){ Tools::convert(i+1,num); myref->attachProperty( getLabel() + "." + num, projections(idat,i) ); } return myref; } diff --git a/src/dimred/DimensionalityReductionBase.h b/src/dimred/DimensionalityReductionBase.h index 49fee7c3d..1046c3053 100644 --- a/src/dimred/DimensionalityReductionBase.h +++ b/src/dimred/DimensionalityReductionBase.h @@ -47,7 +47,7 @@ public: /// Get the ith data point (this returns the projection) void getDataPoint( const unsigned& idata, std::vector<double>& point, double& weight ) const ; /// Get a reference configuration (this returns the projection) - ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata ); + ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata, const bool& calcdist ); /// Actually perform the analysis void performAnalysis(); /// Calculate the projections of points diff --git a/src/dimred/ProjectNonLandmarkPoints.cpp b/src/dimred/ProjectNonLandmarkPoints.cpp index 7838a8880..c0bcc3959 100644 --- a/src/dimred/ProjectNonLandmarkPoints.cpp +++ b/src/dimred/ProjectNonLandmarkPoints.cpp @@ -56,7 +56,7 @@ public: /// Get the ith data point (this returns the projection) void getDataPoint( const unsigned& idat, std::vector<double>& point ); /// Get a reference configuration (this returns the projection) - ReferenceConfiguration* getReferenceConfiguration( const unsigned& idat ); + ReferenceConfiguration* getReferenceConfiguration( const unsigned& idat, const bool& calcdist ); /// This does nothing -- projections are calculated when getDataPoint and getReferenceConfiguration are called void performAnalysis(){} /// This just calls calculate stress in the underlying projection object @@ -104,9 +104,9 @@ void ProjectNonLandmarkPoints::generateProjection( const unsigned& idat, std::ve myminimiser.minimise( cgtol, point, &ProjectNonLandmarkPoints::calculateStress ); } -ReferenceConfiguration* ProjectNonLandmarkPoints::getReferenceConfiguration( const unsigned& idat ){ +ReferenceConfiguration* ProjectNonLandmarkPoints::getReferenceConfiguration( const unsigned& idat, const bool& calcdist ){ std::vector<double> pp(nlow); generateProjection( idat, pp ); std::string num; - ReferenceConfiguration* myref = mydata->getReferenceConfiguration( idat ); myref->clearAllProperties(); + ReferenceConfiguration* myref = mydata->getReferenceConfiguration( idat, calcdist ); myref->clearAllProperties(); for(unsigned i=0;i<nlow;++i){ Tools::convert(i+1,num); myref->attachProperty( getLabel() + "." + num, pp[i] ); } return myref; } diff --git a/src/reference/ReferenceConfiguration.cpp b/src/reference/ReferenceConfiguration.cpp index 5b91c3d0f..288aafe15 100644 --- a/src/reference/ReferenceConfiguration.cpp +++ b/src/reference/ReferenceConfiguration.cpp @@ -149,7 +149,7 @@ void ReferenceConfiguration::attachProperty( const std::string& name, const doub } double property_distance( ReferenceConfiguration* ref1, ReferenceConfiguration* ref2, const bool& squared ){ - plumed_dbg_assert( ref1->property_values.size()>0 && ref2->propert_values.size()==ref1->property_values.size() ); + plumed_dbg_assert( ref1->property_values.size()>0 && ref2->property_values.size()==ref1->property_values.size() ); unsigned nprop=ref1->property_values.size(); double dist=0; for(unsigned i=0;i<nprop;++i){ double tmp=ref1->property_values[i]-ref2->property_values[i]; dist+=tmp*tmp; } if(squared) return dist; -- GitLab