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