From 6635e81030453822d30ab84e1f9f8f8c36daa590 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 09:28:22 -0400 Subject: [PATCH 01/22] DRR - Cpptraj: Move integration routines from DataSet_Mesh to DataSet_1D --- src/Action_VelocityAutoCorr.cpp | 5 +---- src/Analysis_Integrate.cpp | 35 +++++++++++++++++---------------- src/Analysis_Integrate.h | 1 - src/Analysis_Rotdif.cpp | 2 +- src/Analysis_TI.cpp | 14 ++++++------- src/Analysis_TI.h | 2 +- src/DataSet_1D.cpp | 32 ++++++++++++++++++++++++++++++ src/DataSet_1D.h | 12 +++++++++++ src/DataSet_Mesh.cpp | 34 ++++++-------------------------- src/DataSet_Mesh.h | 24 ++++++++++++---------- src/cpptrajdepend | 2 +- 11 files changed, 93 insertions(+), 70 deletions(-) diff --git a/src/Action_VelocityAutoCorr.cpp b/src/Action_VelocityAutoCorr.cpp index 954c01eb7d..1e23726a68 100644 --- a/src/Action_VelocityAutoCorr.cpp +++ b/src/Action_VelocityAutoCorr.cpp @@ -1,7 +1,6 @@ #include "Action_VelocityAutoCorr.h" #include "CpptrajStdio.h" #include "ProgressBar.h" -#include "DataSet_Mesh.h" #include "DataSet_double.h" #include "Constants.h" #include "Corr.h" @@ -281,9 +280,7 @@ void Action_VelocityAutoCorr::Print() { // Integration to get diffusion coefficient. VAC_->SetDim(Dimension::X, Dimension(0.0, tstep_, "Time (ps)")); mprintf("\tIntegrating data set %s, step is %f\n", VAC_->legend(), VAC_->Dim(0).Step()); - DataSet_Mesh mesh; - mesh.SetMeshXY( static_cast(*VAC_) ); - double total = mesh.Integrate_Trapezoid(); + double total = Ct.Integrate( DataSet_1D::TRAPEZOID ); const double ANG2_PS_TO_CM2_S = 10.0; // Convert Ang^2/ps to 1E-5 cm^2/s const char* tab = "\t"; if (!diffout_->IsStream()) { diff --git a/src/Analysis_Integrate.cpp b/src/Analysis_Integrate.cpp index ce04aa825d..3eabe4e2ce 100644 --- a/src/Analysis_Integrate.cpp +++ b/src/Analysis_Integrate.cpp @@ -1,7 +1,7 @@ #include "Analysis_Integrate.h" #include "CpptrajStdio.h" -Analysis_Integrate::Analysis_Integrate() : outfile_(0) {} +Analysis_Integrate::Analysis_Integrate() {} void Analysis_Integrate::Help() const { mprintf("\t [ ...] [out ] [name ]\n" @@ -11,7 +11,7 @@ void Analysis_Integrate::Help() const { Analysis::RetType Analysis_Integrate::Setup(ArgList& analyzeArgs, AnalysisSetup& setup, int debugIn) { std::string setname = analyzeArgs.GetStringKey("name"); - outfile_ = setup.DFL().AddDataFile(analyzeArgs.GetStringKey("out"), analyzeArgs); + DataFile* outfile = setup.DFL().AddDataFile(analyzeArgs.GetStringKey("out"), analyzeArgs); // Select datasets from remaining args if (input_dsets_.AddSetsFromArgs( analyzeArgs.RemainingArgs(), setup.DSL() )) { mprinterr("Error: Could not add data sets.\n"); @@ -23,27 +23,29 @@ Analysis::RetType Analysis_Integrate::Setup(ArgList& analyzeArgs, AnalysisSetup& } // Set up output datasets - if (outfile_ != 0) { + if (outfile != 0) { for (Array1D::const_iterator dsIn = input_dsets_.begin(); dsIn != input_dsets_.end(); ++dsIn) { DataSet* ds = setup.DSL().AddSet(DataSet::XYMESH, setname, "Int"); if (ds == 0) return Analysis::ERR; ds->SetLegend( "Int(" + (*dsIn)->Meta().Legend() + ")" ); - outfile_->AddDataSet( ds ); + outfile->AddDataSet( ds ); output_dsets_.push_back( (DataSet_Mesh*)ds ); } } - mprintf(" INTEGRATE: Calculating integral of %zu data sets.\n", + mprintf(" INTEGRATE: Calculating integral for %zu data sets.\n", input_dsets_.size()); - if (outfile_ != 0) { + if (outfile != 0) { if (!setname.empty()) mprintf("\tOutput set name: %s\n", setname.c_str()); - mprintf("\tOutfile name: %s\n", outfile_->DataFilename().base()); + mprintf("\tOutfile name: %s\n", outfile->DataFilename().base()); + } + if (debugIn > 0) { + for (Array1D::const_iterator set = input_dsets_.begin(); set != input_dsets_.end(); ++set) + mprintf("\t%s\n", (*set)->legend()); } - //for (Array1D::const_iterator set = input_dsets_.begin(); set != input_dsets_.end(); ++set) - // mprintf("\t%s\n", (*set)->legend()); return Analysis::OK; } @@ -56,15 +58,14 @@ Analysis::RetType Analysis_Integrate::Analyze() { if ( (*DS)->Size() < 1) mprintf("Warning: Set [%i] \"%s\" has no data.\n", idx, (*DS)->legend()); else { - DataSet_Mesh mesh; - // Set XY mesh - mesh.SetMeshXY( *(*DS) ); - if (outfile_ != 0) - sum = mesh.Integrate_Trapezoid( *(output_dsets_[idx]) ); - else - sum = mesh.Integrate_Trapezoid(); + if (!output_dsets_.empty()) { + sum = (*DS)->Integrate( DataSet_1D::TRAPEZOID, output_dsets_[idx]->SetMeshY() ); + // Set output X values from input X values. + output_dsets_[idx]->SetMeshX( *(*DS) ); + output_dsets_[idx]->SetDim(Dimension::X, (*DS)->Dim(0)); + } else + sum = (*DS)->Integrate( DataSet_1D::TRAPEZOID ); mprintf("\tIntegral of %s is %g\n", (*DS)->legend(), sum); - output_dsets_[idx]->SetDim(Dimension::X, (*DS)->Dim(0)); } } return Analysis::OK; diff --git a/src/Analysis_Integrate.h b/src/Analysis_Integrate.h index c01e235298..d672c55030 100644 --- a/src/Analysis_Integrate.h +++ b/src/Analysis_Integrate.h @@ -12,7 +12,6 @@ class Analysis_Integrate : public Analysis { Analysis::RetType Setup(ArgList&, AnalysisSetup&, int); Analysis::RetType Analyze(); private: - DataFile* outfile_; // FIXME: May not need to be class var Array1D input_dsets_; std::vector output_dsets_; }; diff --git a/src/Analysis_Rotdif.cpp b/src/Analysis_Rotdif.cpp index e34c37bc17..1513fb4baa 100644 --- a/src/Analysis_Rotdif.cpp +++ b/src/Analysis_Rotdif.cpp @@ -1590,7 +1590,7 @@ int Analysis_Rotdif::DetermineDeffs() { // Calculate mesh Y values spline.SetSplinedMeshY(pX, pY); // Integrate - double integral = spline.Integrate_Trapezoid(); + double integral = spline.Integrate( DataSet_1D::TRAPEZOID ); //mprintf("DEBUG: Vec %i integral= %g\n", nvec, integral); // Solve for deff D_eff_.push_back( calcEffectiveDiffusionConst(integral) ); diff --git a/src/Analysis_TI.cpp b/src/Analysis_TI.cpp index c409b2a69e..ed9a65cfc7 100644 --- a/src/Analysis_TI.cpp +++ b/src/Analysis_TI.cpp @@ -272,11 +272,11 @@ int Analysis_TI::SetQuadAndWeights(int nq) { } /** Integrate each curve in the curve_ array using trapezoid method. */ -void Analysis_TI::Integrate_Trapezoid(Darray& sum) const { +void Analysis_TI::IntegrateCurves(Darray& sum) const { // Integrate each curve if not doing quadrature for (unsigned int j = 0; j != curve_.size(); j++) { - DataSet_Mesh const& CR = static_cast( *(curve_[j]) ); - sum[j] = CR.Integrate_Trapezoid(); + DataSet_1D const& CR = static_cast( *(curve_[j]) ); + sum[j] = CR.Integrate(DataSet_1D::TRAPEZOID); } } @@ -356,7 +356,7 @@ int Analysis_TI::Calc_Bootstrap() { sum[j] += (wgt_[idx] * Avgs[j]); } } // END loop over input data sets - if (mode_ == TRAPEZOID) Integrate_Trapezoid(sum); + if (mode_ == TRAPEZOID) IntegrateCurves(sum); // Calculate average DA from individual TI integration values. double DA_avg = 0.0; double DA_sd = 0.0; @@ -421,7 +421,7 @@ int Analysis_TI::Calc_Nskip() { sum[j] += (wgt_[idx] * avg[j]); } } // END loop over input data sets - if (mode_ == TRAPEZOID) Integrate_Trapezoid(sum); + if (mode_ == TRAPEZOID) IntegrateCurves(sum); // Store final TI integration values. DataSet_Mesh& DA = static_cast( *dAout_ ); DA.ModifyDim(Dimension::X).SetLabel("PtsSkipped"); @@ -511,7 +511,7 @@ int Analysis_TI::Calc_Increment() { sum[j] += (wgt_[idx] * avg[j]); } } // END loop over data sets - if (mode_ == TRAPEZOID) Integrate_Trapezoid(sum); + if (mode_ == TRAPEZOID) IntegrateCurves(sum); // Store final integration values DataSet_Mesh& DA = static_cast( *dAout_ ); DA.ModifyDim(Dimension::X).SetLabel("Point"); @@ -536,7 +536,7 @@ int Analysis_TI::Calc_Avg() { if (mode_ == GAUSSIAN_QUAD) sum[0] += (wgt_[idx] * avg_dvdl); } - if (mode_ == TRAPEZOID) Integrate_Trapezoid(sum); + if (mode_ == TRAPEZOID) IntegrateCurves(sum); // Store final integration values dAout_->ModifyDim(Dimension::X).SetLabel("TI"); dAout_->Add(0, &(sum[0])); diff --git a/src/Analysis_TI.h b/src/Analysis_TI.h index 7ac4633035..2af4d6608d 100644 --- a/src/Analysis_TI.h +++ b/src/Analysis_TI.h @@ -20,7 +20,7 @@ class Analysis_TI : public Analysis { typedef std::vector DSarray; int SetQuadAndWeights(int); - void Integrate_Trapezoid(Darray&) const; + void IntegrateCurves(Darray&) const; int Calc_Bootstrap(); int Calc_Nskip(); int Calc_Increment(); diff --git a/src/DataSet_1D.cpp b/src/DataSet_1D.cpp index 41d8377fc9..522231c200 100644 --- a/src/DataSet_1D.cpp +++ b/src/DataSet_1D.cpp @@ -330,3 +330,35 @@ int DataSet_1D::LinearRegression( double& slope, double& intercept, } return 0; } + +// ----- Integration routines -------------------------------------------------- +/* Just integration */ +double DataSet_1D::Integrate(IntegrationType itype) const { + double sum = 0.0; + if (Size() < 2) return 0; + if (itype == TRAPEZOID) { + for (unsigned int i = 1; i != Size(); i++) { + double b_minus_a = Xcrd(i) - Xcrd(i-1); + sum += (b_minus_a * (Dval(i-1) + Dval(i)) * 0.5); + } + } + return sum; +} + +/** Integration with cumulative sum. */ +double DataSet_1D::Integrate(IntegrationType itype, std::vector& sumOut) const { + sumOut.clear(); + double sum = 0.0; + if (Size() < 2) return 0; + sumOut.reserve( Size() ); + sumOut.push_back( 0 ); + if (itype == TRAPEZOID) { + for (unsigned int i = 1; i != Size(); i++) { + double b_minus_a = Xcrd(i) - Xcrd(i-1); + sum += (b_minus_a * (Dval(i-1) + Dval(i)) * 0.5); + sumOut.push_back( sum ); + } + } + return sum; +} + diff --git a/src/DataSet_1D.h b/src/DataSet_1D.h index b4f9ff60dc..50883d3976 100644 --- a/src/DataSet_1D.h +++ b/src/DataSet_1D.h @@ -16,14 +16,26 @@ class DataSet_1D : public DataSet { /// \return Memory address at position cast to void *. virtual const void* VoidPtr(size_t) const = 0; // ------------------------------------------- + /// \return Average over set Y values double Avg() const { return Avg( 0 ); } + /// \return Average over set Y values; calculate standard deviation. double Avg(double& sd) const { return Avg(&sd); } + /// \return Set minimum Y value. double Min() const; + /// \return Set maximum Y value. double Max() const; + /// Calculate cross-correlation to another set. int CrossCorr(DataSet_1D const&, DataSet_1D&, int, bool, bool) const; + /// Calculate auto-correlation double CorrCoeff(DataSet_1D const&) const; /// Calculate linear regression; report slope, intercept, and correlation. int LinearRegression(double&, double&, double&, CpptrajFile*) const; + /// Integration types. + enum IntegrationType { TRAPEZOID = 0 }; + /// \return sum of integration over DataSet. + double Integrate(IntegrationType) const; + /// \return sum of integration over DataSet; compute cumulative sum. + double Integrate(IntegrationType, std::vector&) const; private: double Avg(double*) const; }; diff --git a/src/DataSet_Mesh.cpp b/src/DataSet_Mesh.cpp index 388062ea0b..c4a97e376e 100644 --- a/src/DataSet_Mesh.cpp +++ b/src/DataSet_Mesh.cpp @@ -119,34 +119,12 @@ int DataSet_Mesh::SetMeshXY(DataSet_1D const& dsIn) { return 0; } -// ---------- Integration routines --------------------------------------------- -// DataSet_Mesh::Integrate_Trapezoid() -double DataSet_Mesh::Integrate_Trapezoid( DataSet_Mesh& sumOut ) const { - double sum = 0.0; - int mesh_size = (int)mesh_x_.size(); - if (mesh_size < 2) return 0.0; - // Give output data set the same X mesh - sumOut.mesh_x_ = mesh_x_; - sumOut.mesh_y_.resize( mesh_x_.size() ); - sumOut.mesh_y_[0] = 0.0; - for (int i = 1; i < mesh_size; i++) { - double b_minus_a = (mesh_x_[i] - mesh_x_[i - 1]); - sum += (b_minus_a * (mesh_y_[i - 1] + mesh_y_[i]) * 0.5); - sumOut.mesh_y_[i] = sum; - } - return sum; -} - -// DataSet_Mesh::Integrate_Trapezoid() -double DataSet_Mesh::Integrate_Trapezoid() const { - double sum = 0.0; - int mesh_size = (int)mesh_x_.size(); - if (mesh_size < 2) return 0.0; - for (int i = 1; i < mesh_size; i++) { - double b_minus_a = (mesh_x_[i] - mesh_x_[i - 1]); - sum += (b_minus_a * (mesh_y_[i - 1] + mesh_y_[i]) * 0.5); - } - return sum; +// DataSet_Mesh::SetMeshX() +void DataSet_Mesh::SetMeshX( DataSet_1D const& ds ) { + mesh_x_.clear(); + mesh_x_.reserve( ds.Size() ); + for (unsigned int i = 0; i != ds.Size(); i++) + mesh_x_.push_back( ds.Xcrd(i) ); } // ---------- Cubic Spline Routines -------------------------------------------- diff --git a/src/DataSet_Mesh.h b/src/DataSet_Mesh.h index 814b4d732e..69941e1a12 100644 --- a/src/DataSet_Mesh.h +++ b/src/DataSet_Mesh.h @@ -6,6 +6,8 @@ /// Hold a mesh of X-Y values class DataSet_Mesh : public DataSet_1D { public: + typedef std::vector Darray; + DataSet_Mesh() : DataSet_1D(XYMESH, TextFormat(TextFormat::DOUBLE, 12, 4)) {} /// Construct mesh with preset X values DataSet_Mesh(int,double,double); @@ -35,26 +37,27 @@ class DataSet_Mesh : public DataSet_1D { void SetY(int i, double y) { mesh_y_[i] = y; } /// Calculate mesh X values given size, start, and end values. void CalculateMeshX(int,double,double); + /// Allow direct access to Y values. + Darray& SetMeshY() { return mesh_y_; } + /// Allow direct access to X values. + Darray& SetMeshX() { return mesh_x_; } + /// Set mesh X values from input data set + void SetMeshX( DataSet_1D const& ); /// Set mesh X and Y values from input data set. int SetMeshXY(DataSet_1D const&); // TODO remove /// Set mesh X and Y values from input arrays. - inline int SetMeshXY(std::vector const&, std::vector const&); // TODO remove - // ------------------------------------------- - /// Integrate the mesh, compute cumulative sum - double Integrate_Trapezoid( DataSet_Mesh& ) const; - /// Integrate the mesh - double Integrate_Trapezoid() const; + inline int SetMeshXY(Darray const&, Darray const&); // TODO remove // ------------------------------------------- /// Set mesh with splined values based on input X and Y values. - int SetSplinedMeshY(std::vector const&, std::vector const&); + int SetSplinedMeshY(Darray const&, Darray const&); /// Set mesh with splined values based on input DataSet. int SetSplinedMesh(DataSet_1D const&); // ------------------------------------------- /// Calculate single exponential regression via log and linear regression. int SingleExpRegression(double&, double&, double&, CpptrajFile*); private: - std::vector mesh_x_; - std::vector mesh_y_; + Darray mesh_x_; + Darray mesh_y_; Spline cspline_; ///< Cubic spline coefficients. TODO Split out completely? }; // ----- INLINE FUNCTIONS ------------------------------------------------------ @@ -62,7 +65,8 @@ void DataSet_Mesh::AddXY(double x, double y) { mesh_x_.push_back( x ); mesh_y_.push_back( y ); } -int DataSet_Mesh::SetMeshXY(std::vector const& X, std::vector const& Y) { + +int DataSet_Mesh::SetMeshXY(Darray const& X, Darray const& Y) { if (mesh_x_.size() != mesh_y_.size()) return 1; mesh_x_ = X; mesh_y_ = Y; diff --git a/src/cpptrajdepend b/src/cpptrajdepend index cce298300f..e451d60f14 100644 --- a/src/cpptrajdepend +++ b/src/cpptrajdepend @@ -82,7 +82,7 @@ Action_Translate.o : Action_Translate.cpp Action.h ActionState.h Action_Translat Action_Unstrip.o : Action_Unstrip.cpp Action.h ActionState.h Action_Unstrip.h ArgList.h AssociatedData.h Atom.h AtomExtra.h AtomMask.h BaseIOtype.h Box.h CharMask.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataIO.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h DispatchObject.h FileIO.h FileName.h FileTypes.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h SymbolExporting.h TextFormat.h Timer.h Topology.h Vec3.h Action_Unwrap.o : Action_Unwrap.cpp Action.h ActionState.h Action_Unwrap.h ArgList.h AssociatedData.h Atom.h AtomExtra.h AtomMask.h BaseIOtype.h Box.h CharMask.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataIO.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h DispatchObject.h FileIO.h FileName.h FileTypes.h Frame.h ImageRoutines.h ImageTypes.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h SymbolExporting.h TextFormat.h Timer.h Topology.h Vec3.h Action_Vector.o : Action_Vector.cpp Action.h ActionState.h Action_Vector.h ArgList.h ArrayIterator.h AssociatedData.h Atom.h AtomExtra.h AtomMask.h BaseIOtype.h Box.h CharMask.h ComplexArray.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataIO.h DataSet.h DataSetList.h DataSet_1D.h DataSet_Coords.h DataSet_Coords_REF.h DataSet_Vector.h Dimension.h DispatchObject.h DistRoutines.h FileIO.h FileName.h FileTypes.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h SymbolExporting.h TextFormat.h Timer.h Topology.h Vec3.h -Action_VelocityAutoCorr.o : Action_VelocityAutoCorr.cpp Action.h ActionState.h Action_VelocityAutoCorr.h ArgList.h ArrayIterator.h AssociatedData.h Atom.h AtomExtra.h AtomMask.h BaseIOtype.h Box.h CharMask.h ComplexArray.h Constants.h CoordinateInfo.h Corr.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataIO.h DataSet.h DataSetList.h DataSet_1D.h DataSet_Coords.h DataSet_Coords_REF.h DataSet_Mesh.h DataSet_Vector.h DataSet_double.h Dimension.h DispatchObject.h FileIO.h FileName.h FileTypes.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterTypes.h ProgressBar.h PubFFT.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Spline.h SymbolExporting.h TextFormat.h Timer.h Topology.h Vec3.h +Action_VelocityAutoCorr.o : Action_VelocityAutoCorr.cpp Action.h ActionState.h Action_VelocityAutoCorr.h ArgList.h ArrayIterator.h AssociatedData.h Atom.h AtomExtra.h AtomMask.h BaseIOtype.h Box.h CharMask.h ComplexArray.h Constants.h CoordinateInfo.h Corr.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataIO.h DataSet.h DataSetList.h DataSet_1D.h DataSet_Coords.h DataSet_Coords_REF.h DataSet_Vector.h DataSet_double.h Dimension.h DispatchObject.h FileIO.h FileName.h FileTypes.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterTypes.h ProgressBar.h PubFFT.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h SymbolExporting.h TextFormat.h Timer.h Topology.h Vec3.h Action_Volmap.o : Action_Volmap.cpp Action.h ActionState.h Action_Volmap.h ArgList.h ArrayIterator.h AssociatedData.h Atom.h AtomExtra.h AtomMask.h BaseIOtype.h Box.h CharMask.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataIO.h DataSet.h DataSetList.h DataSet_3D.h DataSet_Coords.h DataSet_Coords_REF.h DataSet_GridFlt.h Dimension.h DispatchObject.h FileIO.h FileName.h FileTypes.h Frame.h Grid.h GridBin.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h SymbolExporting.h TextFormat.h Timer.h Topology.h Vec3.h Action_Volume.o : Action_Volume.cpp Action.h ActionState.h Action_Volume.h ArgList.h AssociatedData.h Atom.h AtomExtra.h AtomMask.h BaseIOtype.h Box.h CharMask.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataIO.h DataSet.h DataSetList.h DataSet_1D.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h DispatchObject.h DistRoutines.h FileIO.h FileName.h FileTypes.h Frame.h ImagedAction.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h SymbolExporting.h TextFormat.h Timer.h Topology.h Vec3.h Action_Watershell.o : Action_Watershell.cpp Action.h ActionState.h Action_Watershell.h ArgList.h AssociatedData.h Atom.h AtomExtra.h AtomMask.h BaseIOtype.h Box.h CharMask.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataIO.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h DispatchObject.h DistRoutines.h FileIO.h FileName.h FileTypes.h Frame.h ImageRoutines.h ImageTypes.h ImagedAction.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h SymbolExporting.h TextFormat.h Timer.h Topology.h Vec3.h From 1ee5fd31b059a6dbd5105d9f651ee74ec89cc0e2 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 09:39:14 -0400 Subject: [PATCH 02/22] DRR - Cpptraj: Use forward declare. --- src/DataSet_1D.cpp | 1 + src/DataSet_1D.h | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/DataSet_1D.cpp b/src/DataSet_1D.cpp index 522231c200..b929c1ca1a 100644 --- a/src/DataSet_1D.cpp +++ b/src/DataSet_1D.cpp @@ -4,6 +4,7 @@ #include "Corr.h" #include "CpptrajStdio.h" #include "Constants.h" // DEGRAD, RADDEG +#include "CpptrajFile.h" // Regression output /** Calculate the average over values in this set (and optionally the * standard deviation). diff --git a/src/DataSet_1D.h b/src/DataSet_1D.h index 50883d3976..0db7fb3449 100644 --- a/src/DataSet_1D.h +++ b/src/DataSet_1D.h @@ -1,7 +1,8 @@ #ifndef INC_DATASET_1D_H #define INC_DATASET_1D_H #include "DataSet.h" -#include "CpptrajFile.h" +// Forward declarations +class CpptrajFile; /// Class that all 1D scalar DataSets will inherit. class DataSet_1D : public DataSet { public: From ee780c25bdbdcb137392f4def2d10ab52d7d53d6 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 10:21:32 -0400 Subject: [PATCH 03/22] DRR - Cpptraj: Add some finite difference calcs --- src/DataSet_1D.cpp | 63 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/src/DataSet_1D.cpp b/src/DataSet_1D.cpp index b929c1ca1a..1bc2a20d6c 100644 --- a/src/DataSet_1D.cpp +++ b/src/DataSet_1D.cpp @@ -1,5 +1,6 @@ // Collection of routines to perform math on 1D datasets. #include // sqrt, fabs +#include // double max #include "DataSet_1D.h" #include "Corr.h" #include "CpptrajStdio.h" @@ -363,3 +364,65 @@ double DataSet_1D::Integrate(IntegrationType itype, std::vector& sumOut) return sum; } +// ----- Finite difference routines -------------------------------------------- +int DataSet_1D::FiniteDifference(DiffType dtype, std::vector& diffOut) const { + int err = 0; + diffOut.clear(); + diffOut.reserve( Size() ); + switch (dtype) { + case FORWARD : err = ForwardDifference(diffOut); break; + case BACKWARD : err = BackwardDifference(diffOut); break; + case CENTRAL : err = CentralDifference(diffOut); break; + } + if (err != 0) { + mprinterr("Error: Infinite slope detected when calculating finite difference of '%s'\n", + legend()); + } + return err; +} + +int DataSet_1D::ForwardDifference(std::vector& diffOut) const { + int err = 0; + for (unsigned int i = 1; i < Size(); i++) { + double xdiff = Xcrd(i-1) - Xcrd(i); + if (xdiff == 0) { + err = 1; + diffOut.push_back( - std::numeric_limits::max() ); + } else { + diffOut.push_back( (Dval(i-1) - Dval(i)) / xdiff ); + } + } + return err; +} + +int DataSet_1D::BackwardDifference(std::vector& diffOut) const { + if (Size() == 0) return 0; + int err = 0; + for (unsigned int i = 0; i < Size()-1; i++) { + double xdiff = Xcrd(i+1) - Xcrd(i); + if (xdiff == 0) { + err = 1; + diffOut.push_back( - std::numeric_limits::max() ); + } else { + diffOut.push_back( (Dval(i+1) - Dval(i)) / xdiff ); + } + } + return err; +} + +int DataSet_1D::CentralDifference(std::vector& diffOut) const { + if (Size() == 0) return 0; + int err = 0; + for (unsigned int i = 1; i < Size()-1; i++) { + double xdiff1 = Xcrd(i ) - Xcrd(i-1); + double xdiff2 = Xcrd(i+1) - Xcrd(i ); + double xdiff = xdiff1 + xdiff2; + if (xdiff == 0) { + err = 1; + diffOut.push_back( - std::numeric_limits::max() ); + } else { + diffOut.push_back( (Dval(i+1) - Dval(i-1)) / xdiff ); + } + } + return err; +} From 8de29a112cd0c9d373d86063875fbea1c11e15ff Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 10:22:05 -0400 Subject: [PATCH 04/22] DRR - Cpptraj: Add functions to header --- src/DataSet_1D.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/DataSet_1D.h b/src/DataSet_1D.h index 0db7fb3449..351a380dd9 100644 --- a/src/DataSet_1D.h +++ b/src/DataSet_1D.h @@ -37,7 +37,14 @@ class DataSet_1D : public DataSet { double Integrate(IntegrationType) const; /// \return sum of integration over DataSet; compute cumulative sum. double Integrate(IntegrationType, std::vector&) const; + /// Finite difference types. + enum DiffType { FORWARD = 0, BACKWARD, CENTRAL }; + /// Calculate finite difference + int FiniteDifference(DiffType, std::vector&) const; private: double Avg(double*) const; + int ForwardDifference(std::vector&) const; + int BackwardDifference(std::vector&) const; + int CentralDifference(std::vector&) const; }; #endif From 9245e1641ab6acede6b7b6bad871fa4906c7ea5f Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 10:22:23 -0400 Subject: [PATCH 05/22] DRR - Cpptraj: Warn when incoming X mesh doesnt have the right size --- src/DataSet_Mesh.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/DataSet_Mesh.cpp b/src/DataSet_Mesh.cpp index c4a97e376e..9febaf135f 100644 --- a/src/DataSet_Mesh.cpp +++ b/src/DataSet_Mesh.cpp @@ -123,6 +123,9 @@ int DataSet_Mesh::SetMeshXY(DataSet_1D const& dsIn) { void DataSet_Mesh::SetMeshX( DataSet_1D const& ds ) { mesh_x_.clear(); mesh_x_.reserve( ds.Size() ); + if (ds.Size() != mesh_y_.size()) + mprintf("Warning: Input set '%s' # x values (%zu) != set '%s' # y values (%zu)\n", + ds.legend(), ds.Size(), legend(), mesh_y_.size()); for (unsigned int i = 0; i != ds.Size(); i++) mesh_x_.push_back( ds.Xcrd(i) ); } From b0b686b85db4dbc9b5b69088572b7110ebfdd955 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 10:23:04 -0400 Subject: [PATCH 06/22] DRR - Cpptraj: Forward declare mesh --- src/Analysis_Integrate.cpp | 1 + src/Analysis_Integrate.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Analysis_Integrate.cpp b/src/Analysis_Integrate.cpp index 3eabe4e2ce..44bf627968 100644 --- a/src/Analysis_Integrate.cpp +++ b/src/Analysis_Integrate.cpp @@ -1,5 +1,6 @@ #include "Analysis_Integrate.h" #include "CpptrajStdio.h" +#include "DataSet_Mesh.h" Analysis_Integrate::Analysis_Integrate() {} diff --git a/src/Analysis_Integrate.h b/src/Analysis_Integrate.h index d672c55030..5ee01a7cf4 100644 --- a/src/Analysis_Integrate.h +++ b/src/Analysis_Integrate.h @@ -2,7 +2,7 @@ #define INC_ANALYSIS_INTEGRATE_H #include "Analysis.h" #include "Array1D.h" -#include "DataSet_Mesh.h" +class DataSet_Mesh; class Analysis_Integrate : public Analysis { public: Analysis_Integrate(); From da109069775c41b0bb0fcf5df94be631504f6741 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 10:23:20 -0400 Subject: [PATCH 07/22] DRR - Cpptraj: Finite difference analysis class --- src/Analysis_Slope.cpp | 76 ++++++++++++++++++++++++++++++++++++++++++ src/Analysis_Slope.h | 20 +++++++++++ 2 files changed, 96 insertions(+) create mode 100644 src/Analysis_Slope.cpp create mode 100644 src/Analysis_Slope.h diff --git a/src/Analysis_Slope.cpp b/src/Analysis_Slope.cpp new file mode 100644 index 0000000000..1a7da6ea15 --- /dev/null +++ b/src/Analysis_Slope.cpp @@ -0,0 +1,76 @@ +#include "Analysis_Slope.h" +#include "CpptrajStdio.h" +#include "DataSet_Mesh.h" + +// Analysis_Slope::Help() +void Analysis_Slope::Help() const { + mprintf("\t [ ...] [out ] [name ]\n" + "\t[type {forward|backward|central}]\n" + " Calculate finite difference (default forward) of given data sets.\n"); +} + +// Analysis_Slope::Setup() +Analysis::RetType Analysis_Slope::Setup(ArgList& analyzeArgs, AnalysisSetup& setup, int debugIn) +{ + std::string setname = analyzeArgs.GetStringKey("name"); + DataFile* outfile = setup.DFL().AddDataFile(analyzeArgs.GetStringKey("out"), analyzeArgs); + std::string dtypestr = analyzeArgs.GetStringKey("type"); + if (!dtypestr.empty()) { + if (dtypestr == "forward" ) diffType_ = DataSet_1D::FORWARD; + else if (dtypestr == "backward") diffType_ = DataSet_1D::BACKWARD; + else if (dtypestr == "central" ) diffType_ = DataSet_1D::CENTRAL; + else { + mprinterr("Error: Unrecognized type: '%s'\n", dtypestr.c_str()); + return Analysis::ERR; + } + } + // Select datasets from remaining args + if (input_dsets_.AddSetsFromArgs( analyzeArgs.RemainingArgs(), setup.DSL() )) { + mprinterr("Error: Could not add data sets.\n"); + return Analysis::ERR; + } + if (input_dsets_.empty()) { + mprinterr("Error: No input data sets.\n"); + return Analysis::ERR; + } + + // Set up output datasets + for (Array1D::const_iterator dsIn = input_dsets_.begin(); + dsIn != input_dsets_.end(); ++dsIn) + { + DataSet* ds = setup.DSL().AddSet(DataSet::XYMESH, setname, "Diff"); + if (ds == 0) return Analysis::ERR; + ds->SetLegend( "Diff(" + (*dsIn)->Meta().Legend() + ")" ); + if (outfile != 0) outfile->AddDataSet( ds ); + output_dsets_.push_back( (DataSet_Mesh*)ds ); + } + + mprintf(" SLOPE: Calculating finite difference for %zu data sets.\n", + input_dsets_.size()); + if (outfile != 0) { + if (!setname.empty()) + mprintf("\tOutput set name: %s\n", setname.c_str()); + mprintf("\tOutfile name: %s\n", outfile->DataFilename().base()); + } + if (debugIn > 0) { + for (Array1D::const_iterator set = input_dsets_.begin(); set != input_dsets_.end(); ++set) + mprintf("\t%s\n", (*set)->legend()); + } + return Analysis::OK; +} + +// Analysis_Slope::Analyze() +Analysis::RetType Analysis_Slope::Analyze() { + for (unsigned int idx = 0; idx != input_dsets_.size(); idx++) { + DataSet_1D const& inSet = *(input_dsets_[idx]); + if (inSet.Size() < 1) { + mprintf("Warning: Set '%s' has no data.\n", inSet.legend()); + } else { + DataSet_Mesh& outSet = static_cast( *(output_dsets_[idx]) ); + inSet.FiniteDifference( diffType_, outSet.SetMeshY() ); + outSet.SetMeshX( inSet ); + outSet.SetDim(Dimension::X, inSet.Dim(0)); + } + } + return Analysis::OK; +} diff --git a/src/Analysis_Slope.h b/src/Analysis_Slope.h new file mode 100644 index 0000000000..24471ed7d2 --- /dev/null +++ b/src/Analysis_Slope.h @@ -0,0 +1,20 @@ +#ifndef INC_ANALYSIS_SLOPE_H +#define INC_ANALYSIS_SLOPE_H +#include "Analysis.h" +#include "Array1D.h" +class DataSet_Mesh; +/// Calculate the slope (finite difference) for input DataSets +class Analysis_Slope : public Analysis { + public: + Analysis_Slope() : diffType_(DataSet_1D::FORWARD) {} + DispatchObject* Alloc() const { return (DispatchObject*)new Analysis_Slope(); } + void Help() const; + + Analysis::RetType Setup(ArgList&, AnalysisSetup&, int); + Analysis::RetType Analyze(); + private: + DataSet_1D::DiffType diffType_; + Array1D input_dsets_; + std::vector output_dsets_; +}; +#endif From 01e756ba54f0e8936cb01af5c0fc4de8a5bedcb7 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 10:42:08 -0400 Subject: [PATCH 08/22] DRR - Cpptraj: Add slope command. Have finite difference routines set X values directly. --- src/Analysis_Slope.cpp | 3 +-- src/Command.cpp | 2 ++ src/DataSet_1D.cpp | 21 +++++++++++++-------- src/DataSet_1D.h | 12 +++++++----- src/cpptrajdepend | 3 ++- src/cpptrajfiles | 1 + 6 files changed, 26 insertions(+), 16 deletions(-) diff --git a/src/Analysis_Slope.cpp b/src/Analysis_Slope.cpp index 1a7da6ea15..172b42224b 100644 --- a/src/Analysis_Slope.cpp +++ b/src/Analysis_Slope.cpp @@ -67,8 +67,7 @@ Analysis::RetType Analysis_Slope::Analyze() { mprintf("Warning: Set '%s' has no data.\n", inSet.legend()); } else { DataSet_Mesh& outSet = static_cast( *(output_dsets_[idx]) ); - inSet.FiniteDifference( diffType_, outSet.SetMeshY() ); - outSet.SetMeshX( inSet ); + inSet.FiniteDifference( diffType_, outSet.SetMeshX(), outSet.SetMeshY() ); outSet.SetDim(Dimension::X, inSet.Dim(0)); } } diff --git a/src/Command.cpp b/src/Command.cpp index e6bafb2193..6d38117975 100644 --- a/src/Command.cpp +++ b/src/Command.cpp @@ -181,6 +181,7 @@ #include "Analysis_TI.h" #include "Analysis_ConstantPHStats.h" #include "Analysis_HausdorffDistance.h" +#include "Analysis_Slope.h" CmdList Command::commands_ = CmdList(); @@ -396,6 +397,7 @@ void Command::Init() { Command::AddCmd( new Analysis_RmsAvgCorr(), Cmd::ANA, 1, "rmsavgcorr" ); Command::AddCmd( new Analysis_Rotdif(), Cmd::ANA, 1, "rotdif" ); Command::AddCmd( new Analysis_RunningAvg(), Cmd::ANA, 1, "runningavg" ); + Command::AddCmd( new Analysis_Slope(), Cmd::ANA, 1, "slope" ); Command::AddCmd( new Analysis_Spline(), Cmd::ANA, 1, "spline" ); Command::AddCmd( new Analysis_Statistics(), Cmd::ANA, 2, "stat", "statistics" ); Command::AddCmd( new Analysis_TI(), Cmd::ANA, 1, "ti" ); diff --git a/src/DataSet_1D.cpp b/src/DataSet_1D.cpp index 1bc2a20d6c..d9b782a7af 100644 --- a/src/DataSet_1D.cpp +++ b/src/DataSet_1D.cpp @@ -348,7 +348,7 @@ double DataSet_1D::Integrate(IntegrationType itype) const { } /** Integration with cumulative sum. */ -double DataSet_1D::Integrate(IntegrationType itype, std::vector& sumOut) const { +double DataSet_1D::Integrate(IntegrationType itype, Darray& sumOut) const { sumOut.clear(); double sum = 0.0; if (Size() < 2) return 0; @@ -365,14 +365,16 @@ double DataSet_1D::Integrate(IntegrationType itype, std::vector& sumOut) } // ----- Finite difference routines -------------------------------------------- -int DataSet_1D::FiniteDifference(DiffType dtype, std::vector& diffOut) const { +int DataSet_1D::FiniteDifference(DiffType dtype, Darray& xOut, Darray& diffOut) const { int err = 0; + xOut.clear(); + xOut.reserve( Size() ); diffOut.clear(); diffOut.reserve( Size() ); switch (dtype) { - case FORWARD : err = ForwardDifference(diffOut); break; - case BACKWARD : err = BackwardDifference(diffOut); break; - case CENTRAL : err = CentralDifference(diffOut); break; + case FORWARD : err = ForwardDifference(xOut, diffOut); break; + case BACKWARD : err = BackwardDifference(xOut, diffOut); break; + case CENTRAL : err = CentralDifference(xOut, diffOut); break; } if (err != 0) { mprinterr("Error: Infinite slope detected when calculating finite difference of '%s'\n", @@ -381,9 +383,10 @@ int DataSet_1D::FiniteDifference(DiffType dtype, std::vector& diffOut) c return err; } -int DataSet_1D::ForwardDifference(std::vector& diffOut) const { +int DataSet_1D::ForwardDifference(Darray& xOut, Darray& diffOut) const { int err = 0; for (unsigned int i = 1; i < Size(); i++) { + xOut.push_back( Xcrd(i-1) ); double xdiff = Xcrd(i-1) - Xcrd(i); if (xdiff == 0) { err = 1; @@ -395,10 +398,11 @@ int DataSet_1D::ForwardDifference(std::vector& diffOut) const { return err; } -int DataSet_1D::BackwardDifference(std::vector& diffOut) const { +int DataSet_1D::BackwardDifference(Darray& xOut, Darray& diffOut) const { if (Size() == 0) return 0; int err = 0; for (unsigned int i = 0; i < Size()-1; i++) { + xOut.push_back( Xcrd(i) ); double xdiff = Xcrd(i+1) - Xcrd(i); if (xdiff == 0) { err = 1; @@ -410,10 +414,11 @@ int DataSet_1D::BackwardDifference(std::vector& diffOut) const { return err; } -int DataSet_1D::CentralDifference(std::vector& diffOut) const { +int DataSet_1D::CentralDifference(Darray& xOut, Darray& diffOut) const { if (Size() == 0) return 0; int err = 0; for (unsigned int i = 1; i < Size()-1; i++) { + xOut.push_back( Xcrd(i) ); double xdiff1 = Xcrd(i ) - Xcrd(i-1); double xdiff2 = Xcrd(i+1) - Xcrd(i ); double xdiff = xdiff1 + xdiff2; diff --git a/src/DataSet_1D.h b/src/DataSet_1D.h index 351a380dd9..d0ab9ef108 100644 --- a/src/DataSet_1D.h +++ b/src/DataSet_1D.h @@ -6,6 +6,8 @@ class CpptrajFile; /// Class that all 1D scalar DataSets will inherit. class DataSet_1D : public DataSet { public: + typedef std::vector Darray; + DataSet_1D() {} DataSet_1D(DataSet::DataType tIn, TextFormat const& fIn) : DataSet(tIn, SCALAR_1D, fIn, 1) {} virtual ~DataSet_1D() {} @@ -36,15 +38,15 @@ class DataSet_1D : public DataSet { /// \return sum of integration over DataSet. double Integrate(IntegrationType) const; /// \return sum of integration over DataSet; compute cumulative sum. - double Integrate(IntegrationType, std::vector&) const; + double Integrate(IntegrationType, Darray&) const; /// Finite difference types. enum DiffType { FORWARD = 0, BACKWARD, CENTRAL }; /// Calculate finite difference - int FiniteDifference(DiffType, std::vector&) const; + int FiniteDifference(DiffType, Darray&, Darray&) const; private: double Avg(double*) const; - int ForwardDifference(std::vector&) const; - int BackwardDifference(std::vector&) const; - int CentralDifference(std::vector&) const; + int ForwardDifference(Darray&, Darray&) const; + int BackwardDifference(Darray&, Darray&) const; + int CentralDifference(Darray&, Darray&) const; }; #endif diff --git a/src/cpptrajdepend b/src/cpptrajdepend index e451d60f14..83f099c656 100644 --- a/src/cpptrajdepend +++ b/src/cpptrajdepend @@ -120,6 +120,7 @@ Analysis_Rms2d.o : Analysis_Rms2d.cpp ActionState.h Analysis.h AnalysisState.h A Analysis_RmsAvgCorr.o : Analysis_RmsAvgCorr.cpp ActionState.h Analysis.h AnalysisState.h Analysis_RmsAvgCorr.h ArgList.h AssociatedData.h Atom.h AtomExtra.h AtomMask.h BaseIOtype.h Box.h CharMask.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataIO.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h DispatchObject.h FileIO.h FileName.h FileTypes.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterTypes.h ProgressBar.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h SymbolExporting.h TextFormat.h Timer.h Topology.h Vec3.h Analysis_Rotdif.o : Analysis_Rotdif.cpp ActionState.h Analysis.h AnalysisState.h Analysis_Rotdif.h ArgList.h ArrayIterator.h AssociatedData.h Atom.h AtomExtra.h AtomMask.h BaseIOtype.h Box.h CharMask.h ComplexArray.h Constants.h CoordinateInfo.h Corr.h CpptrajFile.h CpptrajStdio.h CurveFit.h DataFile.h DataFileList.h DataIO.h DataSet.h DataSetList.h DataSet_1D.h DataSet_Coords.h DataSet_Coords_REF.h DataSet_Mat3x3.h DataSet_Mesh.h DataSet_Vector.h Dimension.h DispatchObject.h FileIO.h FileName.h FileTypes.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterTypes.h ProgressBar.h PubFFT.h Random.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h SimplexMin.h Spline.h StringRoutines.h SymbolExporting.h TextFormat.h Timer.h Topology.h Vec3.h Analysis_RunningAvg.o : Analysis_RunningAvg.cpp ActionState.h Analysis.h AnalysisState.h Analysis_RunningAvg.h ArgList.h Array1D.h AssociatedData.h Atom.h AtomExtra.h AtomMask.h BaseIOtype.h Box.h CharMask.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataIO.h DataSet.h DataSetList.h DataSet_1D.h DataSet_Coords.h DataSet_Coords_REF.h DataSet_Mesh.h Dimension.h DispatchObject.h FileIO.h FileName.h FileTypes.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Spline.h SymbolExporting.h TextFormat.h Timer.h Topology.h Vec3.h +Analysis_Slope.o : Analysis_Slope.cpp ActionState.h Analysis.h AnalysisState.h Analysis_Slope.h ArgList.h Array1D.h AssociatedData.h Atom.h AtomExtra.h AtomMask.h BaseIOtype.h Box.h CharMask.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataIO.h DataSet.h DataSetList.h DataSet_1D.h DataSet_Coords.h DataSet_Coords_REF.h DataSet_Mesh.h Dimension.h DispatchObject.h FileIO.h FileName.h FileTypes.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Spline.h SymbolExporting.h TextFormat.h Timer.h Topology.h Vec3.h Analysis_Spline.o : Analysis_Spline.cpp ActionState.h Analysis.h AnalysisState.h Analysis_Spline.h ArgList.h Array1D.h AssociatedData.h Atom.h AtomExtra.h AtomMask.h BaseIOtype.h Box.h CharMask.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataIO.h DataSet.h DataSetList.h DataSet_1D.h DataSet_Coords.h DataSet_Coords_REF.h DataSet_Mesh.h Dimension.h DispatchObject.h FileIO.h FileName.h FileTypes.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Spline.h SymbolExporting.h TextFormat.h Timer.h Topology.h Vec3.h Analysis_State.o : Analysis_State.cpp ActionState.h Analysis.h AnalysisState.h Analysis_State.h ArgList.h Array1D.h AssociatedData.h Atom.h AtomExtra.h AtomMask.h BaseIOtype.h Box.h CharMask.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataIO.h DataSet.h DataSetList.h DataSet_1D.h DataSet_Coords.h DataSet_Coords_REF.h DataSet_double.h Dimension.h DispatchObject.h FileIO.h FileName.h FileTypes.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h SymbolExporting.h TextFormat.h Timer.h Topology.h Vec3.h Analysis_Statistics.o : Analysis_Statistics.cpp ActionState.h Analysis.h AnalysisState.h Analysis_Statistics.h ArgList.h Array1D.h AssociatedData.h Atom.h AtomExtra.h AtomMask.h BaseIOtype.h Box.h CharMask.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataIO.h DataSet.h DataSetList.h DataSet_1D.h DataSet_Coords.h DataSet_Coords_REF.h DataSet_float.h DataSet_integer.h DataSet_string.h Dimension.h DispatchObject.h FileIO.h FileName.h FileTypes.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h SymbolExporting.h TextFormat.h Timer.h Topology.h Vec3.h @@ -157,7 +158,7 @@ Cluster_ReadInfo.o : Cluster_ReadInfo.cpp ArgList.h ArrayIterator.h AssociatedDa Cmd.o : Cmd.cpp Cmd.h DispatchObject.h CmdInput.o : CmdInput.cpp CmdInput.h StringRoutines.h CmdList.o : CmdList.cpp Cmd.h CmdList.h DispatchObject.h -Command.o : Command.cpp Action.h ActionFrameCounter.h ActionList.h ActionState.h Action_Align.h Action_Angle.h Action_AreaPerMol.h Action_AtomMap.h Action_AtomicCorr.h Action_AtomicFluct.h Action_AutoImage.h Action_Average.h Action_Bounds.h Action_Box.h Action_Center.h Action_Channel.h Action_CheckChirality.h Action_CheckStructure.h Action_Closest.h Action_ClusterDihedral.h Action_Contacts.h Action_CreateCrd.h Action_CreateReservoir.h Action_DNAionTracker.h Action_DSSP.h Action_Density.h Action_Diffusion.h Action_Dihedral.h Action_DihedralRMS.h Action_Dipole.h Action_DistRmsd.h Action_Distance.h Action_Energy.h Action_Esander.h Action_FilterByData.h Action_FixAtomOrder.h Action_FixImagedBonds.h Action_GIST.h Action_Grid.h Action_GridFreeEnergy.h Action_HydrogenBond.h Action_Image.h Action_InfraredSpectrum.h Action_Jcoupling.h Action_LESsplit.h Action_LIE.h Action_LipidOrder.h Action_MakeStructure.h Action_Mask.h Action_Matrix.h Action_MinImage.h Action_Molsurf.h Action_MultiDihedral.h Action_MultiVector.h Action_NAstruct.h Action_NMRrst.h Action_NativeContacts.h Action_OrderParameter.h Action_Outtraj.h Action_PairDist.h Action_Pairwise.h Action_Principal.h Action_Projection.h Action_Pucker.h Action_Radgyr.h Action_Radial.h Action_RandomizeIons.h Action_Remap.h Action_ReplicateCell.h Action_Rmsd.h Action_Rotate.h Action_RunningAvg.h Action_STFC_Diffusion.h Action_Scale.h Action_SetVelocity.h Action_Spam.h Action_Strip.h Action_Surf.h Action_SymmetricRmsd.h Action_Temperature.h Action_Time.h Action_Translate.h Action_Unstrip.h Action_Unwrap.h Action_Vector.h Action_VelocityAutoCorr.h Action_Volmap.h Action_Volume.h Action_Watershell.h Action_XtalSymm.h Analysis.h AnalysisList.h AnalysisState.h Analysis_AmdBias.h Analysis_AutoCorr.h Analysis_Average.h Analysis_Clustering.h Analysis_ConstantPHStats.h Analysis_Corr.h Analysis_CrankShaft.h Analysis_CrdFluct.h Analysis_CrossCorr.h Analysis_CurveFit.h Analysis_Divergence.h Analysis_FFT.h Analysis_HausdorffDistance.h Analysis_Hist.h Analysis_IRED.h Analysis_Integrate.h Analysis_KDE.h Analysis_Lifetime.h Analysis_LowestCurve.h Analysis_Matrix.h Analysis_MeltCurve.h Analysis_Modes.h Analysis_MultiHist.h Analysis_Multicurve.h Analysis_Overlap.h Analysis_PhiPsi.h Analysis_Regression.h Analysis_RemLog.h Analysis_Rms2d.h Analysis_RmsAvgCorr.h Analysis_Rotdif.h Analysis_RunningAvg.h Analysis_Spline.h Analysis_State.h Analysis_Statistics.h Analysis_TI.h Analysis_Timecorr.h Analysis_VectorMath.h Analysis_Wavelet.h ArgList.h Array1D.h ArrayIterator.h AssociatedData.h Atom.h AtomExtra.h AtomMap.h AtomMask.h AxisType.h BaseIOtype.h Box.h BufferedLine.h CharMask.h ClusterDist.h ClusterList.h ClusterMap.h ClusterNode.h ClusterSieve.h Cmd.h CmdInput.h CmdList.h Command.h ComplexArray.h Constraints.h Control.h CoordinateInfo.h Corr.h Cph.h CpptrajFile.h CpptrajState.h CpptrajStdio.h DataFile.h DataFileList.h DataIO.h DataSet.h DataSetList.h DataSet_1D.h DataSet_2D.h DataSet_3D.h DataSet_Cmatrix.h DataSet_Coords.h DataSet_Coords_CRD.h DataSet_Coords_REF.h DataSet_GridFlt.h DataSet_Mat3x3.h DataSet_MatrixDbl.h DataSet_MatrixFlt.h DataSet_Mesh.h DataSet_Modes.h DataSet_RemLog.h DataSet_Vector.h DataSet_double.h DataSet_float.h DataSet_integer.h DataSet_integer_mem.h DataSet_pH.h DataSet_string.h Deprecated.h DihedralSearch.h Dimension.h DispatchObject.h DistRoutines.h Energy.h Energy_Sander.h EnsembleIn.h EnsembleOutList.h Ewald.h Exec.h Exec_Analyze.h Exec_Calc.h Exec_CatCrd.h Exec_Change.h Exec_ClusterMap.h Exec_CombineCoords.h Exec_Commands.h Exec_CompareTop.h Exec_CrdAction.h Exec_CrdOut.h Exec_CreateSet.h Exec_DataFile.h Exec_DataFilter.h Exec_DataSetCmd.h Exec_GenerateAmberRst.h Exec_Help.h Exec_LoadCrd.h Exec_LoadTraj.h Exec_ParallelAnalysis.h Exec_ParmBox.h Exec_ParmSolvent.h Exec_ParmStrip.h Exec_ParmWrite.h Exec_PermuteDihedrals.h Exec_Precision.h Exec_PrintData.h Exec_ReadData.h Exec_ReadEnsembleData.h Exec_ReadInput.h Exec_RotateDihedral.h Exec_RunAnalysis.h Exec_ScaleDihedralK.h Exec_SequenceAlign.h Exec_SortEnsembleData.h Exec_SplitCoords.h Exec_System.h Exec_Top.h Exec_Traj.h Exec_UpdateParameters.h Exec_ViewRst.h FileIO.h FileName.h FileTypes.h Frame.h FramePtrArray.h Grid.h GridAction.h GridBin.h HistBin.h Hungarian.h ImageTypes.h ImagedAction.h InputTrajCommon.h MapAtom.h MaskArray.h MaskToken.h Matrix.h Matrix_3x3.h MetaData.h Molecule.h NameType.h NetcdfFile.h OnlineVarT.h OutputTrajCommon.h PDBfile.h PairList.h Parallel.h ParameterHolders.h ParameterTypes.h PubFFT.h RPNcalc.h Random.h Range.h ReferenceAction.h ReferenceFrame.h RemdReservoirNC.h ReplicaDimArray.h ReplicaInfo.h Residue.h Spline.h StructureCheck.h SymbolExporting.h SymmetricRmsdCalc.h TextFormat.h Timer.h Topology.h TrajFrameCounter.h TrajectoryFile.h Trajin.h TrajinList.h TrajoutList.h Trajout_Single.h VariableArray.h Vec3.h molsurf.h +Command.o : Command.cpp Action.h ActionFrameCounter.h ActionList.h ActionState.h Action_Align.h Action_Angle.h Action_AreaPerMol.h Action_AtomMap.h Action_AtomicCorr.h Action_AtomicFluct.h Action_AutoImage.h Action_Average.h Action_Bounds.h Action_Box.h Action_Center.h Action_Channel.h Action_CheckChirality.h Action_CheckStructure.h Action_Closest.h Action_ClusterDihedral.h Action_Contacts.h Action_CreateCrd.h Action_CreateReservoir.h Action_DNAionTracker.h Action_DSSP.h Action_Density.h Action_Diffusion.h Action_Dihedral.h Action_DihedralRMS.h Action_Dipole.h Action_DistRmsd.h Action_Distance.h Action_Energy.h Action_Esander.h Action_FilterByData.h Action_FixAtomOrder.h Action_FixImagedBonds.h Action_GIST.h Action_Grid.h Action_GridFreeEnergy.h Action_HydrogenBond.h Action_Image.h Action_InfraredSpectrum.h Action_Jcoupling.h Action_LESsplit.h Action_LIE.h Action_LipidOrder.h Action_MakeStructure.h Action_Mask.h Action_Matrix.h Action_MinImage.h Action_Molsurf.h Action_MultiDihedral.h Action_MultiVector.h Action_NAstruct.h Action_NMRrst.h Action_NativeContacts.h Action_OrderParameter.h Action_Outtraj.h Action_PairDist.h Action_Pairwise.h Action_Principal.h Action_Projection.h Action_Pucker.h Action_Radgyr.h Action_Radial.h Action_RandomizeIons.h Action_Remap.h Action_ReplicateCell.h Action_Rmsd.h Action_Rotate.h Action_RunningAvg.h Action_STFC_Diffusion.h Action_Scale.h Action_SetVelocity.h Action_Spam.h Action_Strip.h Action_Surf.h Action_SymmetricRmsd.h Action_Temperature.h Action_Time.h Action_Translate.h Action_Unstrip.h Action_Unwrap.h Action_Vector.h Action_VelocityAutoCorr.h Action_Volmap.h Action_Volume.h Action_Watershell.h Action_XtalSymm.h Analysis.h AnalysisList.h AnalysisState.h Analysis_AmdBias.h Analysis_AutoCorr.h Analysis_Average.h Analysis_Clustering.h Analysis_ConstantPHStats.h Analysis_Corr.h Analysis_CrankShaft.h Analysis_CrdFluct.h Analysis_CrossCorr.h Analysis_CurveFit.h Analysis_Divergence.h Analysis_FFT.h Analysis_HausdorffDistance.h Analysis_Hist.h Analysis_IRED.h Analysis_Integrate.h Analysis_KDE.h Analysis_Lifetime.h Analysis_LowestCurve.h Analysis_Matrix.h Analysis_MeltCurve.h Analysis_Modes.h Analysis_MultiHist.h Analysis_Multicurve.h Analysis_Overlap.h Analysis_PhiPsi.h Analysis_Regression.h Analysis_RemLog.h Analysis_Rms2d.h Analysis_RmsAvgCorr.h Analysis_Rotdif.h Analysis_RunningAvg.h Analysis_Slope.h Analysis_Spline.h Analysis_State.h Analysis_Statistics.h Analysis_TI.h Analysis_Timecorr.h Analysis_VectorMath.h Analysis_Wavelet.h ArgList.h Array1D.h ArrayIterator.h AssociatedData.h Atom.h AtomExtra.h AtomMap.h AtomMask.h AxisType.h BaseIOtype.h Box.h BufferedLine.h CharMask.h ClusterDist.h ClusterList.h ClusterMap.h ClusterNode.h ClusterSieve.h Cmd.h CmdInput.h CmdList.h Command.h ComplexArray.h Constraints.h Control.h CoordinateInfo.h Corr.h Cph.h CpptrajFile.h CpptrajState.h CpptrajStdio.h DataFile.h DataFileList.h DataIO.h DataSet.h DataSetList.h DataSet_1D.h DataSet_2D.h DataSet_3D.h DataSet_Cmatrix.h DataSet_Coords.h DataSet_Coords_CRD.h DataSet_Coords_REF.h DataSet_GridFlt.h DataSet_Mat3x3.h DataSet_MatrixDbl.h DataSet_MatrixFlt.h DataSet_Mesh.h DataSet_Modes.h DataSet_RemLog.h DataSet_Vector.h DataSet_double.h DataSet_float.h DataSet_integer.h DataSet_integer_mem.h DataSet_pH.h DataSet_string.h Deprecated.h DihedralSearch.h Dimension.h DispatchObject.h DistRoutines.h Energy.h Energy_Sander.h EnsembleIn.h EnsembleOutList.h Ewald.h Exec.h Exec_Analyze.h Exec_Calc.h Exec_CatCrd.h Exec_Change.h Exec_ClusterMap.h Exec_CombineCoords.h Exec_Commands.h Exec_CompareTop.h Exec_CrdAction.h Exec_CrdOut.h Exec_CreateSet.h Exec_DataFile.h Exec_DataFilter.h Exec_DataSetCmd.h Exec_GenerateAmberRst.h Exec_Help.h Exec_LoadCrd.h Exec_LoadTraj.h Exec_ParallelAnalysis.h Exec_ParmBox.h Exec_ParmSolvent.h Exec_ParmStrip.h Exec_ParmWrite.h Exec_PermuteDihedrals.h Exec_Precision.h Exec_PrintData.h Exec_ReadData.h Exec_ReadEnsembleData.h Exec_ReadInput.h Exec_RotateDihedral.h Exec_RunAnalysis.h Exec_ScaleDihedralK.h Exec_SequenceAlign.h Exec_SortEnsembleData.h Exec_SplitCoords.h Exec_System.h Exec_Top.h Exec_Traj.h Exec_UpdateParameters.h Exec_ViewRst.h FileIO.h FileName.h FileTypes.h Frame.h FramePtrArray.h Grid.h GridAction.h GridBin.h HistBin.h Hungarian.h ImageTypes.h ImagedAction.h InputTrajCommon.h MapAtom.h MaskArray.h MaskToken.h Matrix.h Matrix_3x3.h MetaData.h Molecule.h NameType.h NetcdfFile.h OnlineVarT.h OutputTrajCommon.h PDBfile.h PairList.h Parallel.h ParameterHolders.h ParameterTypes.h PubFFT.h RPNcalc.h Random.h Range.h ReferenceAction.h ReferenceFrame.h RemdReservoirNC.h ReplicaDimArray.h ReplicaInfo.h Residue.h Spline.h StructureCheck.h SymbolExporting.h SymmetricRmsdCalc.h TextFormat.h Timer.h Topology.h TrajFrameCounter.h TrajectoryFile.h Trajin.h TrajinList.h TrajoutList.h Trajout_Single.h VariableArray.h Vec3.h molsurf.h ComplexArray.o : ComplexArray.cpp ArrayIterator.h ComplexArray.h Constraints.o : Constraints.cpp ArgList.h Atom.h AtomExtra.h AtomMask.h Box.h CharMask.h Constants.h Constraints.h CoordinateInfo.h CpptrajStdio.h FileName.h Frame.h MaskToken.h Matrix_3x3.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReplicaDimArray.h Residue.h SymbolExporting.h Topology.h Vec3.h Control.o : Control.cpp Action.h ActionList.h ActionState.h Analysis.h AnalysisList.h AnalysisState.h ArgList.h AssociatedData.h Atom.h AtomExtra.h AtomMask.h BaseIOtype.h Box.h CharMask.h Control.h CoordinateInfo.h CpptrajFile.h CpptrajState.h CpptrajStdio.h DataFile.h DataFileList.h DataIO.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h DispatchObject.h EnsembleIn.h EnsembleOutList.h FileIO.h FileName.h FileTypes.h Frame.h FramePtrArray.h InputTrajCommon.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h ReplicaInfo.h Residue.h StringRoutines.h SymbolExporting.h TextFormat.h Timer.h Topology.h TrajFrameCounter.h Trajin.h TrajinList.h TrajoutList.h VariableArray.h Vec3.h diff --git a/src/cpptrajfiles b/src/cpptrajfiles index c02caaa64e..a29bf7dfe6 100644 --- a/src/cpptrajfiles +++ b/src/cpptrajfiles @@ -123,6 +123,7 @@ COMMON_SOURCES= \ Analysis_RmsAvgCorr.cpp \ Analysis_Rotdif.cpp \ Analysis_RunningAvg.cpp \ + Analysis_Slope.cpp \ Analysis_Spline.cpp \ Analysis_State.cpp \ Analysis_Statistics.cpp \ From d4393b128e7b20be0f908cf62782cafe4839a6d9 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 10:47:58 -0400 Subject: [PATCH 09/22] DRR - Cpptraj: Add finite difference test --- test/Test_Slope/RunTest.sh | 19 ++ test/Test_Slope/curve.agr.save | 313 +++++++++++++++++++++++++++++++++ 2 files changed, 332 insertions(+) create mode 100755 test/Test_Slope/RunTest.sh create mode 100644 test/Test_Slope/curve.agr.save diff --git a/test/Test_Slope/RunTest.sh b/test/Test_Slope/RunTest.sh new file mode 100755 index 0000000000..0b641d19b6 --- /dev/null +++ b/test/Test_Slope/RunTest.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +. ../MasterTest.sh + +CleanFiles curve.in curve.agr + +INPUT="-i curve.in" + +cat > curve.in < Date: Thu, 12 Sep 2019 10:48:18 -0400 Subject: [PATCH 10/22] DRR - Cpptraj: Have integrate routine with cumulative sum set X values. --- src/Analysis_Integrate.cpp | 4 +--- src/DataSet_1D.cpp | 6 +++++- src/DataSet_1D.h | 2 +- src/DataSet_Mesh.cpp | 11 ----------- src/DataSet_Mesh.h | 2 -- 5 files changed, 7 insertions(+), 18 deletions(-) diff --git a/src/Analysis_Integrate.cpp b/src/Analysis_Integrate.cpp index 44bf627968..824a9e1975 100644 --- a/src/Analysis_Integrate.cpp +++ b/src/Analysis_Integrate.cpp @@ -60,9 +60,7 @@ Analysis::RetType Analysis_Integrate::Analyze() { mprintf("Warning: Set [%i] \"%s\" has no data.\n", idx, (*DS)->legend()); else { if (!output_dsets_.empty()) { - sum = (*DS)->Integrate( DataSet_1D::TRAPEZOID, output_dsets_[idx]->SetMeshY() ); - // Set output X values from input X values. - output_dsets_[idx]->SetMeshX( *(*DS) ); + sum = (*DS)->Integrate( DataSet_1D::TRAPEZOID, output_dsets_[idx]->SetMeshX(), output_dsets_[idx]->SetMeshY() ); output_dsets_[idx]->SetDim(Dimension::X, (*DS)->Dim(0)); } else sum = (*DS)->Integrate( DataSet_1D::TRAPEZOID ); diff --git a/src/DataSet_1D.cpp b/src/DataSet_1D.cpp index d9b782a7af..25e5933cd5 100644 --- a/src/DataSet_1D.cpp +++ b/src/DataSet_1D.cpp @@ -348,14 +348,18 @@ double DataSet_1D::Integrate(IntegrationType itype) const { } /** Integration with cumulative sum. */ -double DataSet_1D::Integrate(IntegrationType itype, Darray& sumOut) const { +double DataSet_1D::Integrate(IntegrationType itype, Darray& xOut, Darray& sumOut) const { + xOut.clear(); sumOut.clear(); double sum = 0.0; if (Size() < 2) return 0; + xOut.reserve( Size() ); + xOut.push_back( Xcrd(0) ); sumOut.reserve( Size() ); sumOut.push_back( 0 ); if (itype == TRAPEZOID) { for (unsigned int i = 1; i != Size(); i++) { + xOut.push_back( Xcrd(i) ); double b_minus_a = Xcrd(i) - Xcrd(i-1); sum += (b_minus_a * (Dval(i-1) + Dval(i)) * 0.5); sumOut.push_back( sum ); diff --git a/src/DataSet_1D.h b/src/DataSet_1D.h index d0ab9ef108..e7f2ec9d7c 100644 --- a/src/DataSet_1D.h +++ b/src/DataSet_1D.h @@ -38,7 +38,7 @@ class DataSet_1D : public DataSet { /// \return sum of integration over DataSet. double Integrate(IntegrationType) const; /// \return sum of integration over DataSet; compute cumulative sum. - double Integrate(IntegrationType, Darray&) const; + double Integrate(IntegrationType, Darray&, Darray&) const; /// Finite difference types. enum DiffType { FORWARD = 0, BACKWARD, CENTRAL }; /// Calculate finite difference diff --git a/src/DataSet_Mesh.cpp b/src/DataSet_Mesh.cpp index 9febaf135f..28494a59f5 100644 --- a/src/DataSet_Mesh.cpp +++ b/src/DataSet_Mesh.cpp @@ -119,17 +119,6 @@ int DataSet_Mesh::SetMeshXY(DataSet_1D const& dsIn) { return 0; } -// DataSet_Mesh::SetMeshX() -void DataSet_Mesh::SetMeshX( DataSet_1D const& ds ) { - mesh_x_.clear(); - mesh_x_.reserve( ds.Size() ); - if (ds.Size() != mesh_y_.size()) - mprintf("Warning: Input set '%s' # x values (%zu) != set '%s' # y values (%zu)\n", - ds.legend(), ds.Size(), legend(), mesh_y_.size()); - for (unsigned int i = 0; i != ds.Size(); i++) - mesh_x_.push_back( ds.Xcrd(i) ); -} - // ---------- Cubic Spline Routines -------------------------------------------- // DataSet_Mesh::SetSplinedMeshY() /** Assumes mesh X values already set with CalculateMeshX. */ diff --git a/src/DataSet_Mesh.h b/src/DataSet_Mesh.h index 69941e1a12..ce94ec4fef 100644 --- a/src/DataSet_Mesh.h +++ b/src/DataSet_Mesh.h @@ -41,8 +41,6 @@ class DataSet_Mesh : public DataSet_1D { Darray& SetMeshY() { return mesh_y_; } /// Allow direct access to X values. Darray& SetMeshX() { return mesh_x_; } - /// Set mesh X values from input data set - void SetMeshX( DataSet_1D const& ); /// Set mesh X and Y values from input data set. int SetMeshXY(DataSet_1D const&); // TODO remove /// Set mesh X and Y values from input arrays. From 36101f58011b8843760e698d1b77f7aac6758be2 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 10:52:18 -0400 Subject: [PATCH 11/22] DRR - Cpptraj: Slight reorganization of loop for clarity --- src/Analysis_Integrate.cpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/Analysis_Integrate.cpp b/src/Analysis_Integrate.cpp index 824a9e1975..4d21bd0025 100644 --- a/src/Analysis_Integrate.cpp +++ b/src/Analysis_Integrate.cpp @@ -52,19 +52,18 @@ Analysis::RetType Analysis_Integrate::Setup(ArgList& analyzeArgs, AnalysisSetup& Analysis::RetType Analysis_Integrate::Analyze() { double sum; - int idx = 0; - for (Array1D::const_iterator DS = input_dsets_.begin(); - DS != input_dsets_.end(); ++DS, ++idx) - { - if ( (*DS)->Size() < 1) - mprintf("Warning: Set [%i] \"%s\" has no data.\n", idx, (*DS)->legend()); - else { + for (unsigned int idx = 0; idx != input_dsets_.size(); idx++) { + DataSet_1D const& inSet = *(input_dsets_[idx]); + if (inSet.Size() < 1) { + mprintf("Warning: Set '%s' has no data.\n", inSet.legend()); + } else { if (!output_dsets_.empty()) { - sum = (*DS)->Integrate( DataSet_1D::TRAPEZOID, output_dsets_[idx]->SetMeshX(), output_dsets_[idx]->SetMeshY() ); - output_dsets_[idx]->SetDim(Dimension::X, (*DS)->Dim(0)); + DataSet_Mesh& outSet = static_cast( *(output_dsets_[idx]) ); + sum = inSet.Integrate( DataSet_1D::TRAPEZOID, outSet.SetMeshX(), outSet.SetMeshY() ); + outSet.SetDim(Dimension::X, inSet.Dim(0)); } else - sum = (*DS)->Integrate( DataSet_1D::TRAPEZOID ); - mprintf("\tIntegral of %s is %g\n", (*DS)->legend(), sum); + sum = inSet.Integrate( DataSet_1D::TRAPEZOID ); + mprintf("\tIntegral of %s is %g\n", inSet.legend(), sum); } } return Analysis::OK; From fa6134fae338acb3e627297136352d7ac8cab3e5 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 11:06:07 -0400 Subject: [PATCH 12/22] DRR - Cpptraj: Save final integral values to a data set; add 'intout' keyword to write that to a file. --- src/Analysis_Integrate.cpp | 21 +++++++++++++++++---- src/Analysis_Integrate.h | 1 + 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/Analysis_Integrate.cpp b/src/Analysis_Integrate.cpp index 4d21bd0025..f95c2cc210 100644 --- a/src/Analysis_Integrate.cpp +++ b/src/Analysis_Integrate.cpp @@ -2,17 +2,21 @@ #include "CpptrajStdio.h" #include "DataSet_Mesh.h" -Analysis_Integrate::Analysis_Integrate() {} +Analysis_Integrate::Analysis_Integrate() : sumSet_(0) {} void Analysis_Integrate::Help() const { - mprintf("\t [ ...] [out ] [name ]\n" - " Integrate given data sets.\n"); + mprintf("\t [ ...] [out ] [intout ]\n" + "\t[name ]\n" + " Integrate given data sets. If 'out' is specified write cumulative\n" + " sum curves to . If 'intout' is specified write final\n" + " integral values for each set to .\n"); } Analysis::RetType Analysis_Integrate::Setup(ArgList& analyzeArgs, AnalysisSetup& setup, int debugIn) { std::string setname = analyzeArgs.GetStringKey("name"); DataFile* outfile = setup.DFL().AddDataFile(analyzeArgs.GetStringKey("out"), analyzeArgs); + DataFile* intfile = setup.DFL().AddDataFile(analyzeArgs.GetStringKey("intout"), analyzeArgs); // Select datasets from remaining args if (input_dsets_.AddSetsFromArgs( analyzeArgs.RemainingArgs(), setup.DSL() )) { mprinterr("Error: Could not add data sets.\n"); @@ -24,11 +28,19 @@ Analysis::RetType Analysis_Integrate::Setup(ArgList& analyzeArgs, AnalysisSetup& } // Set up output datasets + if (setname.empty()) + setname = setup.DSL().GenerateDefaultName("Int"); + sumSet_ = setup.DSL().AddSet(DataSet::DOUBLE, setname); + if (sumSet_ == 0) return Analysis::ERR; + if (intfile != 0) intfile->AddDataSet( sumSet_ ); if (outfile != 0) { + int idx = 0; + MetaData md(setname, "Sum"); for (Array1D::const_iterator dsIn = input_dsets_.begin(); dsIn != input_dsets_.end(); ++dsIn) { - DataSet* ds = setup.DSL().AddSet(DataSet::XYMESH, setname, "Int"); + md.SetIdx(idx++); + DataSet* ds = setup.DSL().AddSet(DataSet::XYMESH, md); if (ds == 0) return Analysis::ERR; ds->SetLegend( "Int(" + (*dsIn)->Meta().Legend() + ")" ); outfile->AddDataSet( ds ); @@ -64,6 +76,7 @@ Analysis::RetType Analysis_Integrate::Analyze() { } else sum = inSet.Integrate( DataSet_1D::TRAPEZOID ); mprintf("\tIntegral of %s is %g\n", inSet.legend(), sum); + sumSet_->Add(idx, &sum); } } return Analysis::OK; diff --git a/src/Analysis_Integrate.h b/src/Analysis_Integrate.h index 5ee01a7cf4..8bb6f83da3 100644 --- a/src/Analysis_Integrate.h +++ b/src/Analysis_Integrate.h @@ -14,5 +14,6 @@ class Analysis_Integrate : public Analysis { private: Array1D input_dsets_; std::vector output_dsets_; + DataSet* sumSet_; ///< Hold final sum for each set }; #endif From ecfe319fd80562cf39d46dd12b732288ac6ff9bb Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 11:06:53 -0400 Subject: [PATCH 13/22] DRR - Cpptraj: Compare final integral value. --- test/Test_Integrate/RunTest.sh | 5 +++-- test/Test_Integrate/int.dat.save | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 test/Test_Integrate/int.dat.save diff --git a/test/Test_Integrate/RunTest.sh b/test/Test_Integrate/RunTest.sh index 0deb611173..729a948543 100755 --- a/test/Test_Integrate/RunTest.sh +++ b/test/Test_Integrate/RunTest.sh @@ -2,13 +2,14 @@ . ../MasterTest.sh -CleanFiles curve.in curve.dat +CleanFiles curve.in curve.dat int.dat INPUT="-i curve.in" cat > curve.in < Date: Thu, 12 Sep 2019 11:07:15 -0400 Subject: [PATCH 14/22] DRR - Cpptraj: Forgot to actually put the test in. --- test/Test_Integrate/RunTest.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/test/Test_Integrate/RunTest.sh b/test/Test_Integrate/RunTest.sh index 729a948543..29fb19da91 100755 --- a/test/Test_Integrate/RunTest.sh +++ b/test/Test_Integrate/RunTest.sh @@ -13,6 +13,7 @@ datafile int.dat prec 16.8 EOF RunCpptraj "Integration test." DoTest curve.dat.save curve.dat +DoTest int.dat.save int.dat EndTest exit 0 From daa1506108e2c35ea37cbcd698f2b4242c711c22 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 11:12:08 -0400 Subject: [PATCH 15/22] DRR - Cpptraj: Better output. --- src/Analysis_Slope.cpp | 7 +++++-- src/Analysis_Slope.h | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Analysis_Slope.cpp b/src/Analysis_Slope.cpp index 172b42224b..27777d0fa2 100644 --- a/src/Analysis_Slope.cpp +++ b/src/Analysis_Slope.cpp @@ -9,6 +9,8 @@ void Analysis_Slope::Help() const { " Calculate finite difference (default forward) of given data sets.\n"); } +const char* Analysis_Slope::dTypeStr_[] = {"forward", "backward", "central"}; + // Analysis_Slope::Setup() Analysis::RetType Analysis_Slope::Setup(ArgList& analyzeArgs, AnalysisSetup& setup, int debugIn) { @@ -45,8 +47,8 @@ Analysis::RetType Analysis_Slope::Setup(ArgList& analyzeArgs, AnalysisSetup& set output_dsets_.push_back( (DataSet_Mesh*)ds ); } - mprintf(" SLOPE: Calculating finite difference for %zu data sets.\n", - input_dsets_.size()); + mprintf(" SLOPE: Calculating %s finite difference for %zu data sets.\n", + dTypeStr_[diffType_], input_dsets_.size()); if (outfile != 0) { if (!setname.empty()) mprintf("\tOutput set name: %s\n", setname.c_str()); @@ -63,6 +65,7 @@ Analysis::RetType Analysis_Slope::Setup(ArgList& analyzeArgs, AnalysisSetup& set Analysis::RetType Analysis_Slope::Analyze() { for (unsigned int idx = 0; idx != input_dsets_.size(); idx++) { DataSet_1D const& inSet = *(input_dsets_[idx]); + mprintf("\t%s\n", inSet.legend()); if (inSet.Size() < 1) { mprintf("Warning: Set '%s' has no data.\n", inSet.legend()); } else { diff --git a/src/Analysis_Slope.h b/src/Analysis_Slope.h index 24471ed7d2..c2a63db6fa 100644 --- a/src/Analysis_Slope.h +++ b/src/Analysis_Slope.h @@ -13,6 +13,8 @@ class Analysis_Slope : public Analysis { Analysis::RetType Setup(ArgList&, AnalysisSetup&, int); Analysis::RetType Analyze(); private: + static const char* dTypeStr_[]; + DataSet_1D::DiffType diffType_; Array1D input_dsets_; std::vector output_dsets_; From 8e582e1787249d964610a84d0a02d0bde245422b Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 11:12:45 -0400 Subject: [PATCH 16/22] DRR - Cpptraj: Revision bump for new slope (finite difference) analysis command and new integrate option 'intout'. --- src/Version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Version.h b/src/Version.h index e1fe5b0f14..dbdde7d237 100644 --- a/src/Version.h +++ b/src/Version.h @@ -12,7 +12,7 @@ * Whenever a number that precedes is incremented, all subsequent * numbers should be reset to 0. */ -#define CPPTRAJ_INTERNAL_VERSION "V4.19.0" +#define CPPTRAJ_INTERNAL_VERSION "V4.19.1" /// PYTRAJ relies on this #define CPPTRAJ_VERSION_STRING CPPTRAJ_INTERNAL_VERSION #endif From a4fe6a603943b86082d8a3458ba2b907b8397222 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 11:14:26 -0400 Subject: [PATCH 17/22] DRR - Cpptraj: Enable slope test --- test/Makefile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/Makefile b/test/Makefile index 15062eae2d..7ffa07e9b1 100644 --- a/test/Makefile +++ b/test/Makefile @@ -456,6 +456,9 @@ test.splitcoords: test.dihedralrms: @-cd Test_DihedralRMS && ./RunTest.sh $(OPT) +test.slope: + @-cd Test_Slope && ./RunTest.sh $(OPT) + # Every test target should go here. COMPLETETESTS=test.general \ test.strip \ @@ -602,7 +605,8 @@ COMPLETETESTS=test.general \ test.xtalsymm \ test.time \ test.splitcoords \ - test.dihedralrms + test.dihedralrms \ + test.slope test.all: $(MAKE) test.complete summary From 23be7676b45aaed22eed75e1100401070acbaa2f Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 11:25:40 -0400 Subject: [PATCH 18/22] DRR - Cpptraj: Simplify help --- src/Analysis_Integrate.cpp | 2 +- src/Analysis_Slope.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Analysis_Integrate.cpp b/src/Analysis_Integrate.cpp index f95c2cc210..47801d1b68 100644 --- a/src/Analysis_Integrate.cpp +++ b/src/Analysis_Integrate.cpp @@ -6,7 +6,7 @@ Analysis_Integrate::Analysis_Integrate() : sumSet_(0) {} void Analysis_Integrate::Help() const { mprintf("\t [ ...] [out ] [intout ]\n" - "\t[name ]\n" + "\t[name ]\n" " Integrate given data sets. If 'out' is specified write cumulative\n" " sum curves to . If 'intout' is specified write final\n" " integral values for each set to .\n"); diff --git a/src/Analysis_Slope.cpp b/src/Analysis_Slope.cpp index 27777d0fa2..62f225e447 100644 --- a/src/Analysis_Slope.cpp +++ b/src/Analysis_Slope.cpp @@ -4,7 +4,7 @@ // Analysis_Slope::Help() void Analysis_Slope::Help() const { - mprintf("\t [ ...] [out ] [name ]\n" + mprintf("\t [ ...] [out ] [name ]\n" "\t[type {forward|backward|central}]\n" " Calculate finite difference (default forward) of given data sets.\n"); } From afdfd8e63a4f154d03ca203154410034f841739c Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 11:27:07 -0400 Subject: [PATCH 19/22] DRR - Cpptraj: Update manual for new slope command and new integrate command option intout (also fix up the integrate command entry in general). --- doc/CpptrajManual.pdf | Bin 803493 -> 805077 bytes doc/cpptraj.lyx | 136 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 134 insertions(+), 2 deletions(-) diff --git a/doc/CpptrajManual.pdf b/doc/CpptrajManual.pdf index f4a3bc090ca708ae9c9e06f1ee0d29c167b9afc6..1a2e5036c08cb5703dec0882f3dad51bad187128 100644 GIT binary patch delta 125037 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 %Cg;}8qphTx4wA7EW= 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

@tfdatdDGAkksq*sV~R4h>8ua}?fs zZm;!l?s3cQ=Ndt`qFEfTQfV0&@LA8V!VaJv%~{oKC5RhZ(1$gnJK@I*`cx7Ja&s)< zKBL$703Pv6nNY{d+lqBUG#VwgiF*3=IbesE4PV25y6#lD)3qaTTl%syk?uE-lxH=& zvaFW(bw%e3#})>-Ys%qJyUD|vyYA9@6Hy3dS08&Q7N)9~alS0SmSc@0Fx@C+KFfE< z%r59|W4iJ4S!GWDcN05>dAiDptP>`~!PVEA>4X<3<}_9=zL-V#VWS)4y~)i?#ZQa) zVlbZOz^>2Y>K|K}i@ZcSAA&kTX{c>VWwa%VYQsw@^J7^YP+c-> z&R%H4)EVRAm0xkB+@T@f28j!1ii&dmd64)ZOB`-pCuNGWLekM)cJiDh7#RT)tX&rI zBe-JtXdy4gBSQkY9WP=2(fB=TGj>r7wi5C1gk)#h>9}>HyTR5nKyNR_FE5K!{oR9e zGeR6Q2wGN-S*j|O!^5ZWfL~%~e)!J@A92e1x#bFmw#(1(QTDlFXT!P&zh_|Q|ir5bH}pZGAf$jWJ$4N=YRtB z;%{TYGeHr?qF_0B;MO~Xq9M*nP{(eM(Sfjgp7%&>mt~&RZ@I8}Wwas(C+ja1xa9E! z_1$GVJ2bJEx33ZYDXk$7u&d-ZBmBqHk6&D~?$<9+LGFh69jJg1+BejI(#dVU3`N~! zIc%kbLm860xcRixQeoE_lK@$o=sUG4RG4IDsgqv2*MjzZ~3Iu-s_gtGsbIb z7Lw*t)sn?TmsEdqKrem@4Yp_em19vKOh#wt9(yZm2Vf-<{2{>l`4rrTAkrl@FeLA1 z-LM{Wdb+9k4FRe$Ar|vL;R#z>0xL9nqlC5>)PH&ZVie@2({TadD_3VKrz%GzG&U|Ys48Q{ zOYye*LZbB(!f+VhrgOoZhkYWmrVUVwF@Z&UjQD%1n1Yn(3!4}cuLTx@V@yr=()01Y z2k3!Tm4}f)!UjA|R5%DE*CPN3eqp9ac}DayeiUsUgp!|jy#&VZ;xbU>VZOX-T=HM; zws0yV9nDbX)>8GvI+5BGQh2o$G*Y9o=KbjBCE2I>GBR4C980`zg-Vfxicd-(b8$Ll zoJ)m->=ZwvDL6D`ta+?(ZdYXHcz3F$mF!K`f?v#lT7}jDMl#k6Wq7;zs<_C`X89=! zPfF628E3w*@+r1^(JR@uPpFwN#cnXue8o>u@^m=1ZU{NiuD&9*U^M6}?!?z?Tb%I+ z^$wvb^r1J0+w@SArnlALbf#ExLE~%wWkYJ{wnFYJBaA}H+LWM|{aq;C+IQI_XoOuc z?gW%T@)0V2D9sy@d(^Jj?QpMFIW+@g8~M7h!+N)Xece*9SWz+FJ#J*G;&K=)Suo@m z)IkGg%?IpvFZfDwM^i?0(E1Efzmg1n1|D|<4uji?C!T4m*DsD_4AKf zh27n*kGIbob5Ncl&C(w^fBoL~%?XMADa|Zm*wqy!3MBR*x-|q* z8WJL0u^|3)kAOT>0(v6|`SpMjU-Tol1sGj#8dQb4 zj*sIFF%3y6;Q`+O_BQVWgIJT2rq&o3p^PXd%Ne9*iKB$4WiQR~&-5|M7-B{e)`c1P zLj@g4qodJ5BE&t2c7eAXxaQr0Y{h!t5Jhpi3Z5`+e${VFcSF`J1i9?#z1a+PvbmTj zR+(8kD^6x-NHD6CjoiaEAk$i1l~SHP@xc~3tt%e5gSq!22V+K^{hslXB1@r+m^`}V z{kGAdY-Fna-oBoy7==12=qX5A!9~>k8YHd+1s2@5`>#+-auezzw|_GrlqTW z4o1bLq^dolAp8g$D$qO7=KgwZ?QLX*;L0GXMY|6Pu?A*fCD-_<#D5T z$LHsrSzNQT0ayx(L_c6ku}%$d2P%Khe4U;M(H4G;yH6Qa%HA! zWry-coWLK$U*bszCT=Egl^k(Ww9>RIj{D2psJi4Oek5;|9tl$X`5#dW&3cJhR-(Pk z{|)jI{bgQg)=SO)H~2x`+fg;or54DZm8e8wi%`u{Xkb!`u-~(cTYl1?LVOd(id<9| zWFgw+=%h!;jDZaH%Lk}CZS+8~Z5Qzeq1^`Kqzc!1p^V*xMz*8ftcxn6{~Y}}53^*Z zOksZqAtf#O#he{&BFw8qik+S1H;>aDdArC*Z%z^kr6b5<1{>LKU0j(Cpyu}zEu4{u z6{L6AdqQ!dLX&CfMU(}nn2&hw{MwZi$oxG@=P_N>I`XMH?gfy$=pIHruTeU1JFx}C zLbSb@`h5+_#NY1DCTOxJz#Qy@7GWMSPs0Rf%?&UG`LL`OANMDrT!(_2u=W^&8LzF? zN2H5xR2x>r&wM~flf5y2se-zhpCHq?N4cM~yV{EK*6Ihd@z`j73*EeN??RN#10-aP z6n5e}_Zmq>lnih#wa?CIPX|!Kir-foKdNp{Zy?eb7*u(b9$$yqAyxAlgHTCl#OdTD zF0;J0BOyZ}^=fN;OhsqqCJBd-JCwxbB~o8{Au z8*I!AUDgve1EM_UF{5j&O0LcT(Gnh~quw-QT3X9*i54DD0ntM?l2Xh&$;RrMnq~jd z2sTM3IG@i0YeP5BpM_!O<3-x(A2_yRAl*+ILUonq=qUFeQQaJpgZM5OlCzfPvRC}5 zdgMk1V!%0qV^mUm{o4`>pXXeThMU)`sXDeaZBkA6HY}+%v_5w|FJ-|{R*QK(CDE`W zW9~N={bf7Uv>F*PI`}gC#0xE3%#kZYu#9oXoI*dzZ_o4E8?wT2Ti@nQ_4vTo=D{tV z4ej0d(W-IIG=h@#5+i)0V!5W27ASH-pCIvoGh|vBe)?>AARTA-^C3foxcS(=R+8bf z^h~0(c*Gop{sU2bBHXuM!ny_DZGoAJp5 z4C2z?Wd`bG)|+O$i`|)B!lqiv5j3cUcv;HfDAEewGN<2Snfv8p$MdHB9_J!uLoYwO z#Dni$bWFRLS)*8ii6v6a`L7S%3a!`4PJ-T@((%Bb^7;Zqmy) zc5jJ;1+N*Z8P*YdV_|a6bCWc1oAA42_h#%23%~mHd*6ykvB$G%CE>&0Nb?)e=4kg{ zCLQoE2Aqb$NW<=dq-&J7HG%}Nr;)5fVKfdpdqSt7X8a2e6@22L(?~a9&>C-pzG2dg zU12aA!DGe$rQ*b(HR>hVKm$0_0$rie8aJ|#Apc8v6@KNzruBvYGb>~G&#XXIEo7Q9 z84P+u<1c6c_kSx^8jCvdAW~5NnP2Q$iHK>V8pvKfE|k?sE^pR;iO59tQ% z)|UOX$%)+ap?SAvK<&bPcVo+-jS|f1)o?^xa74&!4gE4UKy*FX4;T&B@;sz z6M@#EDOa=d0{ercg`|H2C%Ho^zk3k)K4g>p1>GWtv)M>~1%tx;iT{h_y(XB_hT= z7*@eB$}L|bt~swUVPi9dLQqxOjj>jN!!4-H#}F(3F}b< zNi!Hhfvzo1PsP$Az9%%@lTm=idTKmIrUVL4Bx=_JZzLQkEdt17cdP?qsZ0&vL`OFf z1QbTxU0m5Mce`K-DePA`>izj30%qQN(|C03Vesj1`@cQ>e7;&o+tT)jH*IgXsO3-P zOYnMpblxH#-;5^w^LBEvl9SVZvlXNmkk{;e3Mn_%<;xlkaNDFB#1!oIXGK!nJ%Pwd zYf&`g1Z8WWvRmu!+3^GVb@sSp)%bp0Y`NdA7&>lqY43b}%;GXJe(ThBq{Z9%yZf55 zlwNmU>{K~&dae?!a{W=Ri~VZ(`}FoOd{WuTTmqVfT>NM4>;bn?{>&qUkh44-fy0j6 z3~BHOs60{3mncDB3)J){SlS>Mn-F2}tR}Fw11sxN@$#}o-)r}4>uaIAE8@DJ{4=7l7`=M{ErGS`mMYKMjN$z^Sw=g)EQ09P&_VmfIj^3CqF-6*2f@j?bsDS0dHL*T za&B0gvc6BH%!qR#{Bx$8o)0$Mm+;A!YxSE=IhYL%*|G|7AYaEUO2-VuN=!g4n=CqR zbRy>1R9-sVD21D-N(8O%g6)U-py<}w62DGq!j|4J)=I)w8Jd7?hUq<$U6&@3VBIT4 zR52--%oG)MeYOSxA(ZJ03I!s*@+pz>065<@+wB#4B;56hl!J_cG3a4ib!UY&Jy)}V zoTQ7S_!1T{6Jyjj|9qaiCq#Wx2tN(&piM6FkQI4!K3Ryt557avx1bxD882QYJYb2L zC?1yzWWjPr$2}rTs6jAhS0V0mLOHiekWiNX|Ufl zbP)~A-sqejJ!JMvWwfwtak9u%ap3WLK?4Yy+i>>>=@-vH+CI42yyYWv?8Zh`TeU3awnw zeKQhK1FOp?c8t^GxB~-HolLJc4l4{R8R84rvaRO=AsBLHi>1(n!63jOqlb#sCg_qY zi$fu-hW=R6_+q_2`sz;$x`~&;RbSigfAO>~*r}t7B4KqxOt6_YbRWo!s4s6WlF!b> z_T`PXs7uTp4cz=M{*5}$uB;V*sEZP{2GT+aT|INQlqs{@RYyAlc;Dr2d zIaTWzJfI9BjRXz`vo#DA@C@kS37ev~^HWYfRCKQckl{VLZPQwJAl%)4)6hrA<|ecAkbQU z{*^a@rkM->(=!wU_{06@1V(GURRnNA{+AwV<<I3W`K{@_=AfvYi z*#a;j!PwbYk^q>LNIV>z|GV;wg^S~VZoHh#0Ej?}aQsA7Y(O@+G+2`mN~w_UAk?t3 zYGIt&8f*5;>K_F2!uPectrSE7Ez0uN!8b3q>|(znv+R2oF*5P*B$7P$csXipFV2pL zP&<>Fc%yVu$oVXAY>lXKY0V()d-I^$pnJyhy$JVPY@&jJF2-dXGc={5Icz{NDenT3 zrZEtCT5UBzUc31GahT$&Z?60-`OaL~8h}>5@b7^IP&}8{K9!*|wR#B53(_{DW6z!B>FmaRO>LZ@TKJ);?C39MXib>*l za+oJYy8)T}WcfSo>kuR`b^I6v?28Dw2w(`oZ|%8K{vpV+GB0|TN*bI6)XIFE-4pzJ z(J;OH_W(q8?DecOd^d1@-e=;L*cwPdNi_c|U(;Br)!&3BNPaNbX3qjr$o?AV5QRlE zbY6*#Hwcf$^7?~d>zX)y7_~p?%?g%`BG|6#^06G-P(`u9I26E-RK6wchSg%xSb_Kz z&Q3hGZsX^_FRDq~E)Wo%qAu7l3Y3M1Sg4=J&Dy9%*8+P)paFcAiHii-ezFGaUPd;s zeSxIdW+8ALqO=9k#6{_Sgkse7NKudxDA+MWMah+ZdyQ&u>*O#|qD}t~Q*RyB*7`jU zH$ZTAD=x*|-K{u9i#vtlElZAjEy#j+G;5XCZmgdB|JI;xYOT)A7&32E|q^o1p89fw-DdIk3=UGHk|x6Mqu z-Wd4c_mG?894|tu&@~wsS`I9Z4wt)+IE6M>(YFvG_q(0`!skaH=KxNF49(fUFHbQ? zqGKJb1K6UB&iqmQQg6nF&f`-7`*+YwPRFlh>alc}g)D1sOFc=1324>IaT)Z<3fcSFYA>mIDzm^Zy6k+2pS+x>GU5?yqA zDoK{R-#%UTJ!Pg|eTwN9z4~RZ=*iOBOwAtyhjZ?{xIdH?j8_i1gaHa1bSW_tLGvE_*CgEEg+x&nS=brOt zg3!U~P6U3`E2NGjK00&DH{-ypUx8Y13uM9?ioUuU?P-PKdnJBXuCqakzS1WzyIaZT z%ddG0LsM|wkLw_J{qqN=M=I(bdGGD%V@I?D<4aWP3ay4_kCl5+u zU|+H?l6O_or^sUxljqXCNdT>v3Ry%wsSf4LzDm1-2c*P&sycb)bnc^MSmE}9kb zHttPD_cYj*v8O9hOGM*eji{RswBBnx^eWZA+Fql#pEFpX@B}DogYA)Sk>GK5zYI}wZ zh39=$4Z7ogdYPdTte$rmpTDF_CBq3PpMHa}*4PJkcfjBRc);7ONVt#+XMh0`INccv z!lb?cLU=GV7l8|r4+2=igC(L6@gP0nfIN6`WjORz&se}26xjKY2_SyS0B?A(RWcNP zkuw2M`pxq%N<%<-fHwrN1`ia96G{QzNdM#55VATz4g%P976At`)dEO{2e-9Aw|aL2 zL=pa_*pSg706!u)C=rVEafAS7h}85ybpq!b5*}n|5di+@1bJ+5co6pu00;rV{vUL6 zbNnB4^K$$P-Jk|NWk*sz)b{hLshV~hn#6pXF2s0@CYC7}i9{)VY6N;cT#1nN9&+)g z^XCs$uyHznCQei^8V`3BsL07_T}U;{S)0=G1r;8Yz8NpG_Nm*c=I@$dj>JYS$+&9_ zCBRu@DD)MLJsA8LXvvpW;W2G$AuT}blF3XS#;fqa`V3;}XJt3-`&Ot+WySo0-=OdAmSCjt)$ zIADH?SD8=!%YKqwzQp8RK;K%K)AH~9Uk91a)Lw<-GQ(EZB#6?>39>Q{wB3Qo2xc%m zr1^T8!MmWPXoS&^%VBiR%m8kLR-2{Zs7PZhJ|ts#SEq#EDk;tt~~nU z^aQ$N5!5-29cy56k)Vbc&dvrMsr+P zTwN`La@SVFB9Ui@zmKE)QKx*Krcr^?U?%@ANw5x~LzmUaU*vKB6LtD#F^@}1qQO>O zLDpj=R+VTcgfX;ev|$ugnW*aURQmk%U#k4?e&&@*JL>UbjXTvYNCgR#3c~5xr=EjG zWCBdTKer;l@Cy#DO><1nU0(RrEt@q)wQ7!@c-Py*mWM$g?DXY(C`8mTf5GuaH6vXzKXu z6;or}NJ2g=_c+}I4NCtc;v^06I*sfud6=XAoyB5Crn!8Mnn=$Mtt;Rb-6oD3ov<04vD48*W}n0E^pfGh@YU6>`Swm z0se)pq}4raV%+7$+^I|A-$G35NbJJalzzC6sECK4w`&9@|8w#lOD{ z;Y>FU>-7twDbqe;|4w7PNC-sFE*gv~)TA0lqD>rQNGQ~?qq$rFu_`W1-xR7iC;Y@G zP`G#b5V|hf!R4A~Avt^K%%2b9V#}`O@mcCLFgEIbiM9~rC}!DOkX){mKW(a9sKzRf za<)<|7Wkxctc4P}Z_a`<&9B#fn=?CQ!{v|YPL-hsr+>+Zb zX!|j%g>K*bk^KrZ;hZ&6PT`5+xd&XdofDNgDCiYhdY>a(;n7GOGpGqFbG?%Dbr*A! zzi=idmgi1(`B(+gogPd|7qa+?Gc+e)VQ1|-eSF%w$XySIo44I0YyBw6If$Nq>&5As zCUHR6rsPx4r07f~xcxAFX0$G)iH}i$|1ejBc-x}tpSt@eZmji*8Z7fXq#;g5TDgPt zsXkYf_d90($cwSDz|trvm`A>Hqhnz}a^v+-!p5=y%Gjg-GK|;ntI*lT8fmgU4zG$a zL5D8R1p6(6RTJ97U_&aBQxu(J3C3FlV-&UfN7L5eNzWJxa#Et`#Xx>|8Q64s}i zA2$|3`u7&#9C{CZ%k>QqfdDpogTfmo0!#}K`~nYUpc|+#HSpkJR2aM@#WyC%Bo55Tf9x4j zK@9T<56&k-#D%m_!u$b(6UU*j+)NL{ivTX9hrxruvBBsAq4GACJ0c!f?ik1j$>xTU z0fLRWVQ?UK0x;(&;2i-Ne8{s5%n{0e(0i{A^AQDXCJ2RZT|*dc6tJ`*bZxf{OcD^l z_pgo(fzs(IAlR%8dRk>S7!AaK1#n26A501&46ney!Z^e*6vi3hzc+TGVTci-d%GVI z@E}E*F!>0uJOcdxBhdW+hr&G2t)s9^Af-4GK2)f7{d>vCLV-pGNf&Mib`{?SO0}d` zWzf9|Wu{CFPhjQW{KZD@pdFKCB47L=Q-TblNUF{_T!yHSrmcJ}j~|9(0E`U#_|G$2 z{91DAA7MgBPf?^(?Bla+e5F_id0PczgnPveDU-fWf6~Oc#LNvZFsq)?{2Yx5`i9w> zX4ZgJk15SB5nM}T#DbP;=U5{bu0J>k zAN7|KRz9kbrj}*`yW%u{?r&^b18xAqgtCM4uv!j4TA+BtjR%3`d)n)6zkA6XN4a~ zlZ-vK^xW$b1$*dN;o)_ut0b{V&Ms&R2r6Qeiq zE33h6f(TW$=LWL3vY1wVU|HTLUpSTXIBL8CNovY#R0<- zjzji48@TnmZ?p$hRbcW>*01YDnVnGlJs^mxf}921MuFb+wxH4NPW-w@CEePlmiC&g z+zO%0PQ5ke^GY$+uiC51zW1v;vxoO=smAM;T`1Li^*=pzfB)sNlB(wB;$tEtZv5_$ zmq1KR+-Kgq0w|zv3ue{6L%zTehoB6x#y9>^M>eE@NQja#FT;-VZtZsOn3}wI0r9z@ zhd9^wa=4MQ_L4S&_>?am=jX9kSPjdRttLY(GrR0x@6LK1d|z*`=QryfqxNr$``tCk zHpW5OZ=4`+qScV)YpiVP3Q=2GTME@BeC#?o^`V{b6gO=WcMIbneIw@gm~Yz$XT4}v z0Y*mNS1$$IwNi5Laa!HQJY2Qo^7+(=R|{1?$b^@O5_ZOc`u=K1kgEF8&rruu2dusg zQRlAX8HIexw-!kw=)IqE_#GQY?|wy<9Z%pq(et|VFVMh^!Q4@0)0)LWGlj>c=qZi3aM#R|DSgVQGsl(TJ&ATX(Zh!E ziFnY>lLbAU;0=vqh=fqt>O9oQA1f3`yTlHO_1#T4s$w)wRv71ZyhlnRRVhlUb&(uV zBwGD0+^x!zewQ_J=~e9VMD}AQR+Dq8^z(hz$Yzk{iok#k{{}-0^_3s=Xu{_TgV^ow zlVcy2kC0-oR&1M7RNuLN9IePoHPE=lw#nr-xd)XlAPG(}pf458=6(?XjB%i~co4fW z&WAHhEilv6uxdM|C+4*IdmqB$M&WBsE1`S16%lIKN6 z4{CRA9QUyX#Z$ww506?FR|Saxy>rLH+I50^j*acHuUW49nuLDhD_;>fkwUXpKB<-% z^2ABzv3q_Po1VQ1Uq`B*nP4#^^NA|?LsHLj?>@$ofAp4paF2;1`IU1 z`xgcRM8S1vL~r2zixevi9oYl}O94RDI`0~dDgXg~VXKq>_sAVVh(1m}bTv|k01DrPRtydp}}vZ!d}vv78&R9&E4hv-eetE2)$p*^H{GaDx$7Q?VcEM4b@{*11p1lmZxC zYpZlDFEtDQe&wBf{HQ(a^4tt*P?^^JUUfWfNNE`%J8Hyw={rO+8Z!gHXB90}D#HFq zW#F#ncU_b@8mu}HI&~@J>xj>vE>_EOaa=CnUG_vpjx^IqDGS{$zgXoeOj(CZ4O04E z`Y6Ez_-6P)m@Vlt^Zp*-wAJ_l37s?DY+gLuimU}Udpz!!X!{d&lmJ`mUK}o(UI`m# z4NN<8%{odmCbc@N=+R{wgK`&kB+Z1pa&3KuQWdGFFYvn{Ne;(6ZH6>#X*ob%48rCq^E>J{9|_I2h;L?HY0^$Y@TujVS~;5Z*e*g z{Nx|RkU(FR7$!uHV4JVOFYnkYaib@RSI54oOJS;yH47l9nqVj*&utT+NW3V$%O+mN zvxru}i^i-5*(hi;3voz>QBIX5C4IVo&FNgM^!4^{U#@KN^dxUQeHtwL)2Y2)HabNjPXRI^Uz7xDs~*M)Yknx4ta2`3Zs8pWSGAeJ9LmYEh-go-D9U`xX%+MKPI zx;Q_+oU|AR{6)(|@!tJFb%K@gr&Tp)A_r4NIZg5%mG=k#mgWs!9hI04iKZM+yJ%GG z^Q!1*K>Cs~ZEZ!IhtBXCQY#a$Z#&ILH%CWa@cBYupS$DckCwB)PuB}s80rDOm(M=) z?P2tP{(w#^916!#V6Qz~Jzbl>-j{UV&pz$W_m_=ZFJ9=ZO{Bd0y&6R_))*st8_ePX zVPEs`xjytu-=bq@!MW3E?jJRXYh-!NkL5NY} zpFX zR(pMFUW=)vY=|S=w%E7Zqa??|V9?@c2-Wc+d6urS8A2Sz-5 z(BMzPqx#i_?=k>#`@%(dHL?<Q$FMPFQWsN7~JD__wUY>uM{`2}V(SPp>-dbf#ePm#$1aefsrFI%(=33ufm9VQu1*_>5; zwPjc8q*X<)b1q>lzr&T*VyG&I_iB2>3rlSqF01(~xCa$mp>%2XAo?DEyb~5iw==q_ zW;+S-=jt~yHoq<10r|$o+SLo2J$qoGt!$X89Zt2zPLYUYSJA2_)3I)JRCBPb;26`2 zrAUW!nTn|^LZy!Gjxi@(9JLYj4DfF}A;<@BT-XoKkyUr&)NWcfcCzVC-VKJ&i=fZ; zkUyDXi+|qZy#mkNtMtJ&1aP>}%3%5tYe?XVEhw(m9mD1!fkWV+$FjMBbwdGb z-as+<@(orQ8NB`mivv+dh8sZuiy%XFXm)J4R3O+H8_M`s2;j1T;C=$=t1<84;1T|@ zhe3*I;N*dzccKt8jt`|z=s|F8R-SFBSkJ(|@TrlJ$@wk>; zCQ>J%xl_A9K2l$zqNS#i@ET-flh^RSMMvK6jPY2p{E2ZfPA%38s-H{g4L?>ipc!5_ z7>=k{t*@%g&cl!&ZvRfiEhI>Imh)A57)H+}Ax%#l+-@DdeF;-a4AmgTD(Ea7;wIV^lvzdj8_po0EOT`tHK- zp!H2?$~-X~YZFz=TKb(G4J(o{%!YVZ6cdXPKTm&@bV2awHymu5FLi+yB~)wQh zwhWYkJfppG_u)at-JG6mUB2<#oap8Vxxc?_fpQZfRr7l%h6WpAJYd^}Z2qtw+FVTa z4fe2(2ni1k1R)}qtTyjJtPrA^N5lo?^d{`jdz&2nxSFP#h$0%s^*Ge-I+@vBUphJ# zP1768X!@cDBDRzZUlJ&Sz0jMOLp#KZQgl1ySZ60w44FF~Z*Hio@0;)7`HfkxB7MKa zgA76mnMGjLV;V~|QDC2V2YDRNx)M%)lBe>Try8Zry?ti;1H`w$-hE3pKmfXbC$F2J zr!;HHy>m+4k8B1~iqClvZS^GnXb6^+mMl+3{Z>!?juNa-m!L)!OkB*VbCXCj1SA#w zMuJJ~`+Jm)TkFdJId=8PdJ$vRhcYDgGtjv(Dcro2b|Mgs0bIgyPDWT8pA@%BML&q% zgZLmSdu=czEcPZ3S9sx)GE|gYS4r2gpO9ggGYIoKt}wR8-#TVm4^aCQRoGZLz+EV< zXTE@&De$Z0C(afk*{`z4*ya{|-o4O%T#XC601C|dDK6>gVM*TVZAN;>k3cxiM^F)7 zg{i7KCteN7(GJ;$-}+fK-7b+_cr@Bkb1pJQ`#zRZShU%im;MOK>DqC`MbN`3!=$K^ zErDEefnvON-|V;PH#PHTH&OwbKGE(^M4QL58QT`eU#mxodo)}a3rSLF;Zu}SM!A<| z(&7MYqI!&mD$RbGu%{`H)qIiIuAnDQ%9=C>%Iv78s9yekR%>e<)v6y(wJl)@X*DhA zY0qg1gh_=ovzK0(t}kCKG${uvy2tGq3+)+~%#@RDp(z<4*z$%w^PGwXM6$iLJ;uDd zD@_xUIV@gn-WWV!l>&|#Q_xcT+#9*Jc>%Dby*Xj%+B1&pUC67Qo^3U%0Ezr`;T%O^ z`BC+?Z(=Ag<;FhA!1}a&3fCcv$KsOzoky4f?KRPqU*q&T9NXN=`ez2E=gUdQWf z;iw}M%N))gQWPf?5BFiU{^S$ke{p^zx_a3R1kkk~Ezl>vPtsFfgSXw5;C|q2XwOKF zLH>|K{Rs}cVFcb}^h%Y6s29ZYvQz7Kza|c1=)Rvz_!B-u7PJ2DK3zk8iXYnuC1IC{ zEo+Ljj_-MtP~~<_M3G<{f8~!RuV9y&NbL%P8+RIF?n$shh&-|QGHoP9iD;h$YM|^m z5?wTZ6`@#_Cv|IK3RW%in}r9`8=HTGus$BnXxQnZ?8NH%v7V10%`PYt{=9Nd5R*{V zD8;<*lXD`t1II{welz05WGzUbzegeQ{@mNF@RA>UWlNrRYd=P8UTHh!sfBP1h3`3m zIrRfeFggk|!)cRUHno=Ju|zsam&(=gu(ei|HIsq{)`@)$81|F0l`!o}HKo}&`;oR` z=ND2)52!#hF(Jb%s256jQ~KgE>q|FInL zL;b!`#+DR$g$g2LjPg;V!o;=Fv^U6&%N@>hi0`FKr#tIqZ8OR}syde&7rZSW+(^Hq z2{%+C*2otPC^XU{C9zJ6{64Ja+>N*m&cB@a5|V}~ZSdoJGyYI@6{o$61}*YW{_x=Y zpYnRSff)tm%F~!dB^qjU(`3TQesjF1gG!%R!l-N+wv0h8GOJS(iV~~22@0#h#CTVd zZ$ycoSAW%fQi(3sSPj1HE(Io_!k0M!Y1IW#&zkQDmLHNc8++EM~}D&&HLcxzO;E^ZR46oOFzq@BlZNn>0LNJf%kYK{gTIMgd{~1SWoK5 zq^`Wf^Re4=(hAnvKNKn!xeBy6n7Rwqd|53tMgtQ++A*k642}^NxT*~t4alM2d!0*hd>omc5_uDbiC(C(4DgMWfZgvjNFQZjq!H|*8 zlSClT0tDJ|G`oB}EdC~iXEl-fPEYR1u5Ke;E^h1!c}bG9!AFO<9ld*I0mk;Ua*`=+ z&_vDv0P`^SD{pc?>GWWJ*2+3Nb3du7a_mYEbUiuIMt-*3+DYQq6fn!28pq*Qx3O+R zSNasSuR1<{;PL#c+16Ff;km=Rz2(*AI?nsd&gl9WOhEYC2gShx3$p|{pvK5?YW13T zuvCO+a2;=@bd9U<7jvqrqw$&D-`4r3xc;lr@jLgrir!{|QODFxR`P;ibfc2cDt5j- z5M@~(8g_ZO9M%eNAklP!C4KyJe(=*AbLWQeDk1-Vl1`bSd1veEy-%x8d&{F%cg7$- zBYyXDCyS_F(R@hb%f-Q+VcqM=__3AecOEUK^9s|(Xz4BBn6zIwDKm8_gBk0A(U$;& z_U3ioRP>4x=AS{yVieBdC5G7KoOp>wATS4r$kCtwprZJw?e?om>eEieVxi^|711-* z0uv&(1L`F=$HvC%?R}%S=N|gGoJDS|lND17V+}+Xg$%PpNk^BdeDo-}_}u$iD_CRk z^<{T-6AyF#`L3#E+Pmu;!al2_idq!`9DtbNXP8v>6J}L+84G&X`>Ry&6m_ zE`er7$SMPGnHCIpIg(qd>wdh0K4$?=bbz_fIqm(x#|zhiXe(tj>^NhI6KS3DGcgeX z65$;5j6ugL&sM8v-&xZB@c{Mr2?G<}g}aw$`oc?p-&c{vo7Ugud{S;nZ@|8?tr9h?02y~0{&j9|7rp!S8Nci>^;hLv>(?x5c=O2srm!P# zrr707GUR96t#}&^?3bA?W&+&c83I5tq#~(C@s+S_?Armhatq}W*O-9*b_XkbEN7(LURb45D^@hWB%;b#Z|!mVm_TyO z`pb+VQ+ReFJr3A+1`R`*k2EeKbC0vbBhE9~DOt_$LpNVnMjhV5YNtKdEjh2_SK|$F z?*=^sDy6ds%8%rSY2o@)0MJ?}*|7r4j{)xzuD=|B9uYtyGQK)#UYLR}dBp}2I&!gY z6}@Fw(Uhsl$1vXeAH`hC;k?fR>3Dx+>@u!*n84Xc*Fc;J>ZUoougelxrDDUlUMk@$ zA5BucP_-{-HO=z`G|e#!B`L6_0KxWDG6tJ4iM?h|PIfn`dmnht2tXwguP4Yk%{L+} zr@{00$)+<5NuLVoNj+Om_{R%|KVuzlM}EX$cBUqs#_L$^rZbeZeqV|TbCm^+l7L-__s2V5y zUG$ADh%wJLRaEUUc9MDWkH2qU8v=s+0otzU1;Tf$<^~b3BGH6}Qrx1J-yrg?D8q=O zMShLMv!%3U>o%=dt2DG+T%V}wx|s;H?-eL$k4FLk6hcCar~1GT zWSs)-#y=-+C>xGgOvh%;d9k~{r9aY~Hv1Igp>90(bA{147LIfhw>_d={^0Plv@jov zdJq?K@>8?lx{5wrQsd9s@w*5$B`2F)Vo`8j6ZUNs^T82WS{R>9(*PyU%PgI-G%c)R zw1ZSo*41C0)Ew>~luaXZU3f#e{zT*yyf-*+XaR{uZ&WG`a9dM3S+Bu5^BB{k@H`3V zRhI|17I?N`$W`GN;t0duRoG6Ld2fa*o?@+ITI3S5INM43`(t0Lxp0)8&5$B%H=cdt z-l1g|{AL#_rbxKEnG0&mT~wqic)U~^%1-dz6TH327RRK&$+ITDm`U+;{uDeTbJ1D% zzrzvnQ?Fw8R~WLbuo{`> z7bB4K{pOUuJ4HNJ+c;fiFF1eJhW~+KGYTnf7Z9^(C(}Fsp;jcBN}2c(OKZMC`B6D z5MN^GzgOH|ZX8h~Kj9zjyE;)sYU5Z9?`g25`j&Xu*n{)_{*ncS_|H6CC-wS0t&_1^ z<-If-Ze;(GnNp6zg<6z9PxD~YK>mSf9OcWG`}EKeGTm%)&34nA665y8 z@CF+{Qc|PVqp>}dUyIPB8~}fmm->zg8>t6FI54th=)jG$DtBOcIH&UQ!&ndQID9o7 z-h)q24{%1!EX9sax-G9xzBV1OSQV${>*BlWr%iIe?R|4qbNThR)Huc(N#IM%*%Onf zpvM~OQ=G08&WplOz?$h6=NTzcOwM0m_pUzDzu)CQhLbGleKPqO&K|0yfx8x#;8?(FO8r^-Pc4ApX6L#G-I7v?*qO4*m6J5;6Z zYT(57yyFkr;3EDJd$!tLn=b-F3d8W-mh(vP(<#z-bj=y7^uqlnqfISo#4I3QVj06m zqK^*58+AMWc+rK8r!|U6msCrIdoVC2RH3q;yNr{+DRaW(wc5TLl&wNG*Ak!fk|&KR z(E=CxkEem7YQF6jCc-H>71ub zksI?P%)cJO@ZeYE0#?eW7bJ^67oKX6F8+)_ZU{ALo!g;-PqL~YY9K|703MCJ4mvPMoKRU8TNw>6STvY{S zS%jT|w}fSoN!Js0)Noj2?@MEDOOKT^pi;{v345&5hT6)gD2C9lB)Jja z50BK|<$S~9X(_AQnd#**G!t4$i(ORi@r3kKkd3ibvawCl-=CjnestjcI7rZRP`zC3 zSmpBNoPM-FrPXs%IVWut*yLhx50}`7xxA6*ZsuHDSP z%%(io9+pj#A3m`A3gvtxH+_5Dv2&o%vj1!GWY%G1RKIb3W!*m`xoFU$n2qw>nSMm01JTRdGo-G1^7xchn;!0F%gxjns# z7n-*>+ooIlv`}f zx?wo}clJ-e-=$B7kB~7@<6k>T(r{{YQG>KgB9-36HbOg4ywAJAfPmai4D!P=cX{gC z#L`DIP=P94}La_9l}=U3wej&36#l6Z-nC+x;2H8dYS@> zgtocMc7;1saeSM(E4V#|4Kl!>{P3%_tNE|&ggN#t z1s2EE711j`wj%T`SsUqHzE$ZK#RKo*AMa!_)~uK8_IjIb@BGXiLZUl`yfX#Zae?N9 zyqU<{S|c3Z1CX;Rv_j9&-GcY@vz5DhUTwSb>rYA`baUAmtq_7T{U)ENOWOAzbU7Ry3(Q-^1%z^!!UE-fSQMrp@QR{^sztDvy(Z~@R&;Jc_bj)&E1+{kgD-D@@)%`S_wk7-^ zxQ>?v8i18v%xVi&mZ8(UC7k|?czL6ndeGZ<&9YP)9qD|bQ1h8$2aKwN`M{heZSm(4 zJ=#~$pvoHMOY})sBzpbdpatdy7$y;9L4DdH`qyNyw*FM^gCIEpGc*x7=0O9)1cwNg zN2^@(6;tWYC{~`S`1c0}}mM$)dI6ZjD9hKJ44vhxgu!_*ACN)^&s5 z!r1(+o^ypQEsBGDWNg6f8i0uJOOeIx1#10BtR3!QK(pufd<1u|65i#1 z%=A<7R&S+N*pTK}nlI zWI~o9g|^33yUxL1;C9Gp*}j=oMGJ?c`>@=zYB38_b$5itRco7YR>f-;s8P1(VX>ue zhlt^2yn&VSep=(~_gvKh`ALg`C-E%mtEqBU0=t4wbxnfnFdSMJ{S%Iap#kFjV{-YIAu%!m&4FNiCLk^(j~&Q@0KU3L z!UHP=0T>}@{J&tYPNT{(HqLleTV|zBgyrPdi4?zGLq3(;3V*gP(TXbIDqGU+r~88>X0UC|^sUdc z8$u{<3P(#p8m3x1@#Wcz=iM5$elBU%?zerX?)`RJ3^MIRD4!96BJZ=rC=H>?kBE$)$VgUdUtv7Ci`*-p?dXm>?2E} zdh+N4IdC1I*Sk^X?T5T@ML4{!!w6iZlU(3mt)BT}=5w))`+f;L`ONZ>=>tUYrIN#@ zv`Cy_uctG$#m7p8d$V?V5!0-b@A+G9Xqz?V8ykxj3kk@ebu5sV!sLsbM_t3PlzslO zXB1J7rJsRofNEq4@k08^PbaRbUWXy~ZCQNxN*m>!2gYro92yLcQl_P_51Q4^vcPA2 zrDhT?EVrMp7TzUn+cjL1cmbWd58RiFHhHQNG7R%mIfw(cwd`8D z`yjQVD<14WDz{H8uCi59v@cRpz_~nVj*HGAg9zap)Re;8Wmr9PKCw|w)rW&gAs_&! zeD2nNm)|%a^z!>G3T%Xhk(YzuN&;D7Q9qDmJzgI4Z`wxGs{B`S3j9~7d&&UgfnZY^ zAU@>15)gs_MpA<2eGfH&?kM2tC+LBkjet7vU_&DyE*R>bW`ZDC0w>_1U0}+;P-Xtl z7oaFSc;O553Knqzru@SMBsQRz`JorE3CiWYpogjr1TrFmvjd?^E+T+F{|h>S;($vC z;F=UDA-4wuV-UdFVCVw093WK3=ivD->I@YSm>{o}KqdrmS}~9bYKZo~f#U@~6$4R0 z(-HX}6uYRzS(h4ZP~a2-jqtsf?4v!Vp+;w*{98x3xv#13KxX}vS4fZ`oiFvUGaZQ*{dBfTs(J8N4*{KGR3RD^dEDX(8!H`6 zAxya-Wja%}M3Kl?L`K5W0zwB4T}mU+>I7kFDdS#ZGY)PGRWuOypfCeo`U8EPPB1mz z?5E$UBfJ_froLsE17DJ)ygtI{TtsmBsdyzy4!m1Y*pUQ&Eo%6CoL_z_B>=fY`S@oA z|3pWl_#M5rbRlAv6uUCqFmy^59wvTNed2D3WgezwENU7jJR*t4)JF?#ChpKN5U4Pi z%RrQIuRcY}f6-xNgreUNXalIBYJH zY$3$~hWYXo{5#RS>@H0h=fHw?8N3e=FPfpE)L5jJKk+z>Qrmu%BsNT`AT((M+=T|> z?+Rm@dqvVDC9D$@_~T5TLA4bhcK9kE|Hg@_^PTV*SR5l^Z3z24-2_~oEYCvyGfbGP zNutK78O1o#7?gp>eKaWx63Yj zbFJLu)NGwSL(HKQ)I?MciG!8XPm#I4+wS!jdfR_G$dS1=bANXBUS%cN;1lB&<6&bf z$w~{?i9mZ_sEQS%jYgIOS{=vEFh$xkr;8AAl<@zPL9TtSjjr%`cDCL7-mOZ9FFQYO z-&g7jnYC8itsPQ%gv}>i_9`2MWrPFDiMhuglpNAigZP*8ApIu7wm^>0T)Gc3*3h3g z8%w$pVfTyw_GvLv7AEni=}e=hV!2dNsSi50S_YoL_kCS7^mR{+FHR7T;zbix0_~X_ z;x#vZu1}>=bl?%i0qPVy1qXZGUdizgkrUS6#8k`HZ+vZ z+p|~JApQc48m*(fr~3{;TFr{#7Cb+H`*-He?{WL=_`D}8V7_&5aLe=3FUbPvD$+HXBFOX>Y~w5V2!4eP?E}~I zm5+*7(Nd7pjiRZ*v#LE6`0uh7PR3qI67|TWGhI(YE4uErLQ0~ps-m-dr-NUeQ z>cXOsqX#M*SC96bFg4=sTG<*3Twy&pc>6=zDjMp-`?%?nN{golk;KS0zN(DuZ=CKk zH}6d)jpnhS-cNPJ0?La2#sc49K}mgwWIJ4{AcUwv_9)-96!S}e`XQrj3s0|R^yCAx ziqS5myF8tpXT9|7@RcM45lRfpk7SB(NL(^xA7W%TSI@mdSY6O#|ERt+HE#Z;e+CFI z&IYQi``SF8x^PZ0O!#z2J-j^3PB^pw3^(@ancVH!{5wUPeycrt7Kdm|aD(*l&1JwS zp1(g}=Du9+XRT~+P9Cr`BN8sSy%I_y#0skocdeUyyw%cw7Xq3m5c6XiD(=K=6Yiv@S+ahgbS{s4Rv6AN&8snt1=u zR*eDDppt<`isM?Kkz$!dsH-}>PY+HO)^Qty;*qN zx{ER;aO9KZ#9mAo=!pPDi-|Z9ruZa=w8_S%Fet{bFs$dGGg(cqol>HSmH3e2{{zuL zF25~>#x*F3|G+`j=NAjD6>n(BDfu*-p}Q1F8yc-of7n7McI{e1W^wfxo=Zy$v|y}I z|At9KT!C`HM6N+GOCwj&FtJhphWSj~!Um10+uD43=xD`_XujqKSt5ao1_`b{)a@xi zsbT3<%m+0nti|;kB&0)NP^g%UC>vUh98bdl>o`~gm{gzvGjReML;#m_btB9I zlfwiPe}Q!dCcv0W?PB1ers^$x6Nioxs8A<|QbDUg1!YXv7&uXaGIK&HSt!Z+uN(@M z1r4=01Oy0cbqtB&e^k{#hMQZ(`iK^4%PxmWt5u&5^hxR% zz=tF`O&|;{>+@NV>wxDL_aCa>>R5q)5%v)P?S5+W5Nn;>BY5+xhzB-Rd$Nh2?K=4#V>O>g#1VUf?I!_x_*1SNP$>=hb5Q z8oF0!mlvKE)W-Vx=R$?Z#Gd9bbGecc7et6-POm--v8zF?61Z0)%yI?>by^$j+Z|ze_p;m z%Dv{fz^3qx2e3u2SI0pxI(L7A@NR7YIvEL_rCsQB3UoShe_MR&MmHNC z<6U?x&xglo0z8|-&k~-2>euQM;E}1>Wb95kcZrl}XNi6~owUTe`=8lf_dnuja7dgY zqaUOgU{z$KDjY@VvHdU8Ky~A1^wCbbC45`?Tf`B3T>5)3;q9UFrz8Ummf23~Hxd(_ z^jpUvx1Cl$gk!7Fxi#ekN&w){|8+MaI$VfneHR1n9(-)Fn+a;mxf0G1cpUkc8lM>o3 zSN&>n5+!#RO#JM;j@rNyL?%;u)lgks9Soa#48>gYYEV$%> z1>5{&$!(w8XOV;?3FJy_rG}!|J&QjSaYVq)-Lp!XQ0;9B-yTUU`k`o?H0r{rSw~7| z#lFlo&OPq0E9X1Je?T59WAj+ujew$4z#cdrR}}pI^fm5g;oj((4amTI2aSF2xCP{H zgxth$e|5TPl)WC1P;wepUUKP9N{V0+L!p5}ukd3P288lcs?M!yCxbk8BMM@m_|qlo zVShOloYrK-ZDrb@F zK8cVFY$Vm@=M9;Xq-7wHG7dQPxje>^3=|ep=4X-XhrGSz40kKf6{U4&WNfhF{o21j z78y0tPGCr#!e5;d7(>$iI*7;4&8m@&<^htcP9d zKUr{M4hm&%mn2^X5|{H(1{AkSUk2F*m%xV!6}LEM23Q6GIG52(2^6=bYzAZrmon-F z6t^9A2J;01GC7xla|jc+C42^&2A9I42@|){f(Awhm(ltK7Pl^n22TfJ3IobeO`#Q`BJ4)La8JM?o0UqTR=*c zmU0(Z`s|#BBg0n4GM|!wb8Xq1>dcR=dn?A6+aAwW@J{UVj~)v|rr&01m&#S(f{u@W zUg)*(i|TKEn^!k_*)=I1|5oRCG#}~6>xyXGrg8AVEKXuN1b~|WG+@F*ahGQ`UX3Wy zFM7Ri#D9qDyNhoUxwS^|Y9k*mvb;5@%Vl*~f3optGSQfb=rx>HXgky+K^QwL?Ugp5 zYddko{c4RN?sm02*)*f@!Mmox??c>wWzbbfP2B6IG}dIzP94q{ zN=i#Hkn3nPLU{2QG6{9HewlX4=={sbHtqZH_uDRo1?ki_$JFc70(hgQS2I z0|3cXL9*l}L{ca87+e}eB!Co07iG5MF3*Wb!dWbL1%!dJ736#pAT#u?30#nIJmJo0 z*SU(IN=2x_>=9E4A% z`MiFj*Rn>zhh7m0!luiW3L@(34v6~Ov^1)vtX@<*BuKrVXpAtc&B0QnZQqDe(gX64 zz;7=|+$Wn0`FyvIplR(9it9cXBRgjNg1o=!4%UvT$(s?g&@06Gx9X;U?HW~H%65Pv z6Z^C;I*Y)JLP|VeqC^%m8oEb9Wk!e4IFTz@3RN1b^?E5aV-MOZH?(~}l+-(3z7;^Y ztih+Fa;o@R)n%R*2E1DTg>2QV3}fO4$<(tUfla>UQj~03GId*(xd+kY@LBIWq)k~@ z`R+aheN89o{y13J6BJl~*b^4O;t`3G*nqXoP0hX*-K{WQL2W-OCl0kK-i8jx84om0 z0panK*Fb=W#lO>aOS`1o*s@C=$V8XkrC;*0FNab$jjIZniulGvLc)Ay_63DiQ>TEv9WF0q=RgKvr|xRo7{jgZrxqI zY%MC9Sc?P2f_aRO8MuM%X_0?J^=VNobS@i&rwBd~&T$z?>f__yF;DbsVkDMr^6T0x5WtuEDKKxOI|_EPP1u>o}X`D7z50Bahsdm zxHjWLujci`sOuEAw0zG`EY z;bvCNG&)H@;^?H)+7Yp}n5sL2Xpbp#W=Ui$-3grJf8ztw6vgkFH~D8)$Oz{!3-}3%;~2-+ z#Gf2_y?yjQUHS*qm*JNN6ag`pG4co$0x>a@Ve%<|#aLgD+cpw^&!;eO50wuwBa#v& z6-ALtnr&0yaz(Na1(F<2Ytg$}*pe&Bo1~xqW;i2>^77mieYh8UI3hW}8O}d4Ufr(Z z)sIi&v;P;@Po7c6MKWE{D2pX#7y_5y#2)G~Trx5w_gk@f5oq+U_z+78XLO z{tQa>e?s}@U#~90%wtjH)1kubzXpW2BOr2rf#l`kL!8C~{K${r{(1>hk&8mA5tFx$ zp`DuTY{3aAz;li_j(@$3l!XLL_VWI#fhv(3GXcF114UF0Yyx0$(9z%lX=hU(@UttK z`Z%S`M3#X`l?1>!iTY)&^2mbfhxJA)9ld`0>WBA?G+xP7hj5X2`{NUsF4aN{;C!Ti zb!AiTzw~uaBQz=gA3OU{x2Jypg~pZr5bLC|)hvvt2L}T+;2qEay|w3GXfBH zfCDrWMan7Y)Yr}JdXuC&vh}TP4qzx)U13}xb6f7Wr+qmf1|09Y_JC9p4R>vCiMfD- zj8FA&N3%*|jGEEto2o8v4<)9mZ$hAdw(a3iHkE+mDO7ZQhkE52&Jx6&4)}ZHP}+_@ zv^)G)3w!00z2E}?%w~H5qrYoUd!7bBwz%gV4F?jZP+YbYw{|YX5(Bs&Sx_tKSrGI| zk~sRuX`m_Fw!^dpyAJ4)H4x+pY6>;pV@F3RF)55tVU`n>fhZb+$!Hd-fU;44!X^Z@ zKRO6)Q@Qik1}3BYu5-Zw&vktr){{92{6g7wVfg`P$9X7dvf z6n5ZCtTW6UbuN6J3t#5~b$0*Xp({G&U<;?;_p}Kau!zd4aW-X7z5i`khgpsBT5<(>*6bd#88kV z7lH)N5ft%e5g3r&KuIe1_3vm82kw#IY6y$;g4;^Y9~mgpxC)ewnFLsfyX%LMTXz+a zF7;-U-6d7F-!1Rt5{Kh|_k%t5#2kG<`aTdtDRL(Hwt{GstWw~@5sj+TUWMw8p8IX`=GO=xy8>L zt#$OK-rw5(X&{6%E%G@ee+IpEnn(X^_vmtPo-b-7X`Sy*MnblKn%YK{ry)1Vgv_Tl zj-g~KBLZ6mSrmn9vqB=EGgAV52z(|Ld7){WSD(wnac}*CJ6G5QPJ%cukH?{dqHmJu zJ^&33mJ6M8JN3E=Wj7_X%0~EG+;E+OV}MNthd7Z--<`a3Yies8^NQxH(YEUL6?D5JlM|ey=2{89p_ggIWK$ni zgJ%@59sE>(A@9JBBp)Yx*PGn9c78pU7Z_8mHnWN8Jh<^TW6=QCGC9MiDLJF>#WH%m z<0V|}HwpBSX|ilsj%5eE!(h8W03^BJ8nw>-t8wO1!%U>fpshx^AnTpAz2v-&VSw(9#HIZ8Labpprei6P>N(I)OMST-cPuNHMFWo1COv#G7ML zTg>8rWCjAp1cBV~>WK8D2TsB(FJ7HOx2@87G+KqN<8FL+%%oc39pdOo#HAFcCm+%C z`@!<5<$t`Es04~+wtUF=8$EseV0SeNN7|Va2@*5EJoO=!9=r#XhnW7Kr}R%n$8pRb zuH`qI=h>sRd1$Q=%fxE}TQZF2@-ZIy$AHX#IQ20ing1uWJYdY(hNJHwjjt_u@VE33 z^0sZw+==A`UHEGGJcq+8)i87N0*x3s1OzuL1Y zU=Th=FZjMH zqD1rD&v!nC!8Qnkk1s-czP)_$>Vt>_&RLNpQE<5lxDYH$^B_$!7KtRdEQ6~Bj~LI- zmz+n*;-*yRUoU_6GTigkhbRvUR-}JXYUM;RE5a;Tijav|pcs2}nHU+bOF7714Hx)& zwUS2oqAB;f9IojvtNq1S+HS{zK5lfS{O3m2US8jTh}!NN>w+j`1y6$|dWPz+YTeNP z&B}|Z<(>NqGVWj_UR>Fieo#BwwM&0!rJLRvYL@={rc(+n2oIFsRHeS1m|K5a@hWm5 zxTzkzG%Iw}NtJa;TV}Ot?a8(u{R4WywyPxxDRn<|dS#W2gKnu< z;AMI zBn9o@WC*qkSOWF;ge67B1W%4xV#^L!riFjhBoa3Z4fG=zg#CEJnv8!lp8B|a){U;m zno_Ty$O@gEtF}##s^#4isuLC!xmPXko}(Ji&Qv3$fNp}6Q_5q;lZUQz0A>$9p&1X( zG$UwX%Ohx=(kxhRMgwX7bF5d2TDskM@B1f=KpFEo^bq+y&1PhTsrUI8S*^#)v^2GW zIZdtJDBG#s_TKHZ4{3kF#jf4iqfhoNX`BU%@OsiO7OU;6!)n+vE7#Yj@w2cx#AB}j z{&<=*9w&2X`ZQM6O0I8~e}JQURk;ip%T%{j&6+~d-nt!werld2nzewn7sn8gP|qSB zOkqUl0fr2&Ujy#?7)+pY#Mmx*n1nNoFazO;DnHrqPnt}e%)Wnq2V)U&{~2KGiVG$s zB*sokvy7}0_V;`9a-Jm-vncXe`djUl-d>Y!*T!dv%C?jBqxtgY^E=9=VM`)B$mObS z`$zEkP_aiK^))ht5>BG&xbelr+7G*g@{qR{X~C`*`>tCM>+OA)ZsZ_$Oiv^a~|aj)itUjNvi4fU_ajDA7~!89oaZ1 zo2ERXjOF=+W)?&dCCpqrLG?D)1s(;E~jUIor$1^_D(ZEKxs%@(KIA&H&@?@R<$ zGkkyCV2SrWIOQ>Q5$%?xwu8g*Zfho)Afe_IMs_lzlo0ZH-T zMIRVrr$=9$vz&X{^`_g7waK`hHURr}&|q5N74ByD)>|BUkr_9|!3BQHZlzrNjUMJ(383=3`kO~3iF`Lg@ae^b4@^5Zc{KV(r5!j>WS5iV@D(wFNxqklu} zmd2kw>E#uTvqqJ0l&@P@<+v8CYn}_%D0DUbr>aQL zh3f3XMUGT5-Q}fjFBOneN8K`5gxA;aEn8LHnOD3i`Sx0;d6w&gqm>yRk(MLne_#~_ zjrMxRhP_+g;7to=_Kb3ujTC^nse~s=+xl>kqZlMh0;{vi2+wG%)g8_rQIqGfP!4M9 z>c+C&==NN6Elr$q4ysc$Y6*W!3cAHf-dP10CXA}0m_@>ADx^1h#-5K(q4C||kCAv? z6?cp1B9C$DJ8&P)ZTFyMfC7Zrbv($AR$_M%D=UF+((>*MzDB}rbb5_x#)AOkXuX#U36*@h6ouC z{|&|=&&XFBU8UN2L|xM8y3sdzeQqalgd#)0{9vve^3Ip&rL&#{qx!Qaf5fsYMG!l^ zs7C~MvTPcV&aDd)C+!?cce*h;%d5OPT5rqd-j-W^Ny+>;nF723d9=FfE(X&*Xd^!b z4or(4lP@#QW1~SU%_8t1VxFHk;J=NTCZnvYHa~za554|Od^rWgja=T1bPzccj=WW-=m+qt}%Wp%l-H^{Bh9itdf6-sCbS<++C~qkF zWt2Rgm#!LiQbk+ED`?Ppg;Ck-x=RO zAiAHHfO%6$eSTleVgjne*kStnT<%@carI%JcF~JQg035ym<{D>K6vxBz2Edfl+bcW zakE-+RC?ON&e+Off1=N{%j>Fl=E0GN{5aUw^E2g4R-a1sbP{H4C;<+&US z3V9}OCUTN%{RA0>2@}R5o-QPlv+lFu1oC5qMD^csIZi~3LrG&L^>$pFTNVwB|6oy2 zf%!a~CZtECrECK;XXS@V>uCugfwHBq|Noq@Wn#VYKN~sdf9&|Rol9U@T|idrOPD@} zrj!Rq?GF^~(=ul)yCJH%hU-b8XAYg(r$;&;0cv!>cXg+1>s37vjE1I^^f~S&Ni;F| zXEJl4N!Z99bjasti~%J6E~_?#&^H8GRnA)Q`rA1V`#tt z5V%s{MRLUHshlc*(rSBl{4N8=i#pCgnJ;j|kBL zD#vk4f06kZb>0}$rgfurIBBh`Abs0A_7&Z9Dz|i8mq=UKm5`0W7PTk#W!uZmbZr|g zI1(nd+{6(yZeWcfim`dju*JbuvPc-9uYqyhnb2gghcU{StVN8&T?Fdoef@meZ)5_o z`0#+W2*EV6X%)RWN992lWy+!n@>^Q+-;4?qv2HXWLNewYY#k@ zJe=;di=Ov?U3;wLo3D3UK()>O?#umu-+eS{c9@G5OcOrlhra6Ss{es0XKa}~R%z-9 z_vIkx_0{keXD+H=&j^8a&*MW^^*{nk1D?CtsyvOgQ!r6+k%|QN*RF1kcUzk{Ji#VK zbm+=U#Tb$cP9E>lG%C+m0r3nZRd*@^HZ7hHwB1vG-Fu2*PMO4a+bk=hU+PC>33*3! zIDoD-xe1+KGap67@}p}c3;tPRi9(6-WQSVQ4CCLeMiL8unIEoWbp_vC)5MrzhG8_RC>EI*T;0tJW@9cF07kBZGs9&h?=} z!SsxOB{hZdTs6nx)H992P18J5GM1zpu%MavbCM<`C73H-;Y$PUpJ66nX%;Baz=sO1 zlES_2Pr}!w{8nG^M%T+4|DInU)`q2`EnNmcJ_2ACHDW~6AQ}){R~{=SSl>pYa1-QL zXHgwjC}ykZesaP;nNZCjjrU;8J08sZl%BDF{}S>Tw0C;7jIZ{;hV&x^uR&U1!9x00 zP;Ju>-E}uGSn~SkL?@G*AlwA6`9{D8rhA52M}ekkyGwb0 zuHjX_6O;H^%QQ;f$wXhT1Eb{86L@BP@TWCa!%^%ES<=Dj3AX(@lyy^y1HAU+(QpAz zSn4L#aXft!Ow81>PIFs zJm|?si}%@T8y87FXAU)4yL{AS?J{`+M8gyGJR=pxMS#KKcVuJ;f2DZKL=6RhMx0%n zbJh1Nx}_5nr`mcoY1$t4T8sNOHd!F6g^T_HMsR(*`g3AzMQWuB_O-Yk9-U;SA$f4l zEexi;T-dGJOw7e%UULSc++EM*P%$QKrSQs#nMOIr5IX?wfQUHSF<$fz4tN4r!ZA%Y z@#4ZoZ-_R3!4QoG*P4ek2{zk*iZ;l?Jk+;rr?T;(H1Rz#`2e-KKanpj ztOy1sqiGZ-dMM$ofV>u2b?0ZMy7txKdgeLhV=%Ujd_~4qa_pDw$?3s(q@1KMs{}8dvAhMxgzmS6Gv%1LGat_`W(rWLfb~ZmMf@|Aag5MU{#?Ht9l~_v zb}Xbh%C2TCm|N4y7;iwk0477sCkloDI6fgkmqsIb3Ybuk!AXB8XNm-d%{iUdc0$QZ>yH(OA(%;`lq3)+GYo65VV;7SJyWjGy9<-m)?W3+>8h~Wci zACMfXCvRSam*hvjZW#L><+!^JAHchTosZcZl1UQxc0HfQGS%xMru$OKj&{xXkO?Ai z!k73;981ZYhLSh+B`?icc#NgGI+J>laJ5hg3B@IxggSnIW^*fb40S=$!iyBAq6EWO zu2w?C*(gjfAL#ml0jU+SQr~eWB6agpwV0JP0PZ9|9ZzGR=15v~V9;FZ;Qq2lxf*1; zvgzwkecJ>w-mWVDkj4fV$vDdUXlbI50Z1bSv7!Bd=|ZZa-}|sb$wSZ(K4t2XCdVjh ziC}$Gul6i|ICC(e(}L5fS45aQQ{$V!lpTg7^~JmbB15Xs=NhZzHB2#(}#Hw)OI}kh33gd4B_@C>(m0O8AM4l44^fy;OU zx*oh1Qn2|z)?W{&KzS*LSJltHL^TkZbGg_*e#0%Xs(lZe%T*Yptbdj0k_?K(?a4esTC zrvEhO%xlywbA^iY!rd^36(9TELi;C1-0BnK0#$WD>r*qt&6?`CST|Bjo@KkaLO=%1 z+}!x~m4_%|JMulh?Mp`DOq^xe)MsLwgM+LMtvx`om$1??qW*(*R(u$&quauRuqh)S zFI}NDa9X}T`7&-6CWcCmnR5&+!nLk{AbY)@{nx5n!xDe^KO>DwV%YDsp{B5E7HSH! z7GdabmG;^(!5CT!-|~P-2rX9Ing5sX!5ZT^nnOxPo@lNZWHZMFImJ1NP-gioAjl8W zP_j@V+=jNKG%;#Snfw`M}9PjW$hgM90*0qYzH%h?AV~>c4(0xGE}=V4R$e4lJzCDt0BBdi#N} zYwYUtG0prDtoM^RnYI>IJ67CpFlx%ZQHvH0VkT?>G!wQ_!u<`I7k0`ThNxS^C+z$R zM){UbNG&$t1!Che@ZSZsfw`*f8W3P8xc-$%4Ze%>mMVNF+dN1;J(pfP zUr0{@QI_*X7)4%LY_usVja=xh`j$mIf95w$%VJusP|uFJP8%^_L}}vP%(KXILQh4# zrt6-VZ+f%u%{elO_p!#EeqT0*cR_chEM0W`ZPCWnV*Ysl7x=i4QslAoqpEbh)@y;A zZ*D?4avVg1SY&y?q96WI)xOjh^F=Hr*c=Al67&aNQ?KEhg=4RQQ?)9;cVGi(e?ElQ zec#*!+32bu61ks(X_*MKjPKj4wt~BY*n9u^{b#|f^wLvqm{xr)>XCH4IwiJSlC3E9 z>6*U~O(tkhtQFotOOf~X7Mb%;=kLz%Sg6x&fv<>k-;cSjDSM-Lcwi~iw&m3?GK|O& z>5C}NtThQ+qrPoNw*x2Egd@AOe{YN0DAQDRUy+W*M2U6jH4C4$eSOAc;q2?Q^>wEK z0YsU`>26lKvw~*lc3blPt6rI={myI31#GKp-72F;(PDC~j5-x;u;|pXHTbh`5vt5s z;Naz&L$7KI#Q{Jklv{kET*rq>VjKqfl^^WGEFX{F8}HmL@c=x!Vfat-e}3UW8Nj{L zg7TdzSA9ug2*c1Tnwkj*{f^m9+f+zJkSCCza1H!&p1`gv9+{_GmKt*0Drh$R?TR1v zD(U+yyJ;2NbMZTA1r;ny!)H10=iTj5P{1FGhJ!SQ=bNt0x~Urr>5ISrxIgUUo?5Lm z%I(cqz;QhtWQj1{J6$NGrljFzH%zE z%x0zxL;%s25^>VZLkYDP3Z3o@mGTf_`a9wGMHtyCS~gEk&4Bhjxd`cQGxE|V2@78_ z^UxW+xBEyUG_GtsF4rBYGrkjs6>X&DgbpT}>98Sy7!y%ZLf19E_sC=l^I3X|X z1+a=DWABgJ#^P{ED)P{}jUG{pXfTj2npa19Cece0I1U?h{RK+AbKP)_G0QiMMW)E7UD%3p*ji9{GkXVncLc51^@Tev1Q2FOvy8OpeqjkPyT zY(@CHSN%ycOoIsJC;?PibMI(&J82!4TDH#S8t>sH;#7Zvf9fRSB>ZWEiqZ^*Qu-Vw zP-ZcM@JpSa#bDERB*Ohksn__)F^6dyMQL;ZxAxrO3K~bTjG-Vx7&js1x~WQX(BN3Q zC$a$Q2YY$k4?c9AX03%POPET+BpwgWz!fzG6-gRKi0ZUmqA56`#IJE8Li(r!^RAVn z)|+tRVanm8f1QRH1?=?+U}tB6gbW5F9fC1-AaSMdiaYqT7-2V8t?ln>WD-2VFe;?u zQNjIr0D@wWQVf6t`^BmL=G)E|51mcg&Q|I2fAljuPBUlc&QQb`p|WNI%+(q zp>mA}84wxL&1Q@{4%F2z$G7xZb_5wmps2UVBsNDff6wmm2!|UMUbx8c!bLEr<29^> zh0yrdEy!^?TN#8iPKGFWwrNWEgLP)L;_Kn^fZ&7P6WHNW3lA1$xu?3WugKge_bIbs zu`BRT8Pma{Go1OrP&aH<-4zFO@L1Il3fGu>MB|9CaSgVuM z+~6jGG}(>1HXjk_s4yJ^nkD%C_>|3wv%a?4rUiN?u_VKg2LEbB48@uuou?D25BIPB z1tS9wUYFsQ1{9aiwgwdeHJ6bX0V;o`SW9o*HW0q&S1iy&WFTTB>akK<_>iUv8o+4L zxwZ2TZV+c??8(H7w#+MMT`3&+O@;}h5SapctO#0`8Wr~Ksd{QZA$l>L4A z7AKn&r7@1>aX3V&x81mbhk`KBr`1eub|X0KOHuWic*x;wr{rz*kg=|Npyi%6x1@Ry z@_k3HSuY;CnwRZYy{#cN)vF)WVGWUjH9gfYFXVST7l4nK(%_9Bp*R7Hw9ne2iyhq? zaae(%K87~Ac}p9qARoT$7^i=BU64$$&IsyiR7&gZ zp>rW0I299jCyqoAlXQOEFRdt9W3Vl(QO^ZHD31aa&tK_xAHB$XM;qD^VUBJ&?Q`aW ztQ5Vb(vN!(^OZ7pMcakYp&3n+J9Q93r&WG;_0({^elQB*W7*{Nvyp%J?o`LeLt$h! z#dA$XZIu;FrAAG}fVGjS3BR$Shou2a+8->;Z!^$uM9q4EJ-j8KM+x$IR3_7El3}Np ztMPp#ATrD4`O|3p2&vLnLpbuXWtCY=aSESG6~yLfP`>Cb()D%%gMT_c$Wv~xtrdjO zvmmno$u@nm?f+PaT_v zzCP}w7ev50iyd>)0_uwb_@XxacJ{l8pX923)H=rQ&lh_Am-+o*eu*Uz!33#P+~%1; zNp@vJ835bP94CSq6iL=GZuIe%W@VuWlbX{T28B?WFiE;Y$MAn}G3f9UgNjy_OY%Jm zNrIp#4I*!(G|6bKX;J8kQ59L}b*4z96O@;vu}RFjylf!BjU%@9#Fa_&0Y!~SjN&a` zAY$?SV2h*!o?59eg{y{6^$-nY=qR%ez?49)Wbyxj)g+rL^kc9}S_(&8WzD;?^rf8# z<3w-in=yk7$t5UE!g*+l&enhWu$SCIcix)^F1lXjuIM}Z z^gL9<(=o?k>I+~_TaU$HQpZ$c3b&@Darvj7bkr6z%n}Boj^&16m5)KPXi+;V?&uVj zNiiy3D+XrU-7g2efdbTwhqRWJL^PfEKXnFE?n+0H1hS*U0y}naJO-Q(o^8`1Wq$4G zZOM9G8N+`egH)$;E!$a!+MD4^Gmo33DA_J@;%tN_C&DBkjDw^9Pfvu4o$^eMyUJ7h zC5J}P6@6i|Bt(AXFVkcXSykGa z8UjB|<)BCnoLqCeCVIVA(-kGTBFHdx-l*q-^p$@YI|Zl)$fDV8#Y0grcqDHHN@(V` zYo%t^md54nNU3*MrR_rerfm75n2NHqtR3s0ziG!@)kQn{si#eLKSgw{Kb=4O2hjtW zyQP=mmj)Dg}Kpz1se^}dY+c*$?&sP}Ohsr?Ah`MXL$ip_9-7dBW(6~U8 zG!KkK+iE3I(8W%G{rDYTEjf-{2icc~l*yShhlex6+LPtPp8R=Y@BICJesXr{;z^9+ zzzHVv#RU5i3POJp_#tv!e=<)ech(*2+Ud-VTM;|;Z zZW`K_q@ao)J{+e8+cpY(f5XjH*H)a}Ar)X$1q=3&3|DXLd%vpMjFl?J1*_%YU0ajy zJW4pNcfXEBWDl%K^kd+?82Qd#?A#?y6UK|wD$5cMR@_#kE)=nRD3y2C zlI8ioe4dpleN?~yGS0eV$H=p>Mm}d1%h~c7PQWj@jzZ)`?oeA@f1_4?vwb_I3nJ7i z4b+Vq&IJQ~>p3GSO<@l{UR=QHbQXBlcR0yKF?AhFUqm?Ug0u&uhGS&M{>X6&k(lEW zCdWZ)lP{tyNb^HMAJq_E2b> zyY&y-P_3z|&dMaKBu33a0m0MKtYG{&As0v*LI;J>PHJ3}yxU2`M$sm9upNzXpZr?a zPsfW_2TmS$m>`b_n21p1Ihu*TvgK+>1qYQ?⏼Pk&De_`l7dc>AB--|6thiA!a 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 diff --git a/doc/cpptraj.lyx b/doc/cpptraj.lyx index 18cc1c59e1..15b0c9cd9a 100644 --- a/doc/cpptraj.lyx +++ b/doc/cpptraj.lyx @@ -38804,11 +38804,79 @@ integrate \end_layout \begin_layout LyX-Code -integrate [ ...] [out ] [name ] +integrate [ ...] [out ] [intout ] +\end_layout + +\begin_layout LyX-Code + [name ] +\end_layout + +\begin_deeper +\begin_layout Description + +\begin_inset space ~ +\end_inset + +[ +\begin_inset space ~ +\end_inset + +...] Data set(s) to integrate. +\end_layout + +\begin_layout Description +[out +\begin_inset space ~ +\end_inset + +] If specified, write cumulative sum curves to . +\end_layout + +\begin_layout Description +[intout +\begin_inset space ~ +\end_inset + +] If specified, write final integral values to . +\end_layout + +\begin_layout Description +[name +\begin_inset space ~ +\end_inset + +] Output data set(s) name. \end_layout +\begin_layout Standard +DataSets Created: +\end_layout + +\begin_layout Description + Final integral values, 1 for each input data set (indexed from 0). +\end_layout + +\begin_layout Description +[Sum]: Cumulative sum curves if +\series bold +out +\series default + was specified, 1 for each input data set (indexed from 0). +\end_layout + +\end_deeper \begin_layout Standard Integrate specified data set(s) using trapezoid integration. + If +\series bold +'out' +\series default + is specified write cumulative sum curves to . + If +\series bold +'intout' +\series default + is specified write final integral values for each set to . \end_layout \begin_layout Subsection @@ -42251,6 +42319,70 @@ Calculate running average over windows of given size for data in selected data set(s). \end_layout +\begin_layout Subsection +slope +\end_layout + +\begin_layout LyX-Code +slope [ ...] [out ] [name ] +\end_layout + +\begin_layout LyX-Code + [type {forward|backward|central}] +\end_layout + +\begin_deeper +\begin_layout Description + +\begin_inset space ~ +\end_inset + +[ +\begin_inset space ~ +\end_inset + +...] Data set(s) to calculate finite difference for. +\end_layout + +\begin_layout Description +[out +\begin_inset space ~ +\end_inset + +] File to write finite difference curves to. +\end_layout + +\begin_layout Description +[name +\begin_inset space ~ +\end_inset + +] Output data set(s) name. +\end_layout + +\begin_layout Description +[type +\begin_inset space ~ +\end_inset + +{forward|backward|central}] Specify type of finite difference to calculate + (default forward). +\end_layout + +\begin_layout Standard +DataSets generated: +\end_layout + +\begin_layout Description +: Output finite difference curves for each input data set (indexed + from 0). +\end_layout + +\end_deeper +\begin_layout Standard +Calculate finite differences for each input data set. +\end_layout + \begin_layout Subsection spline \end_layout @@ -42310,7 +42442,7 @@ spline [ ...] [out ] [meshsize | meshfactor ] \end_deeper \begin_layout Standard -Cubic spline the given data sets. +Apply cubic splines to the given input data sets to create new data sets. \end_layout \begin_layout Subsection From ba4034a231067663ec508e7222ca3a146f122be0 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 15:35:42 -0400 Subject: [PATCH 20/22] DRR - Cpptraj: Remove sources to try to fix travis builds. Try to add parallel netcdf to MPI build. --- .travis.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index d04fa93211..2ebe79a97c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,16 +3,13 @@ dist: trusty sudo: false addons: apt: - sources: - - ubuntu-toolchain-r-test - - george-edison55-precise-backports packages: - gfortran - libbz2-dev - libblas-dev - liblapack-dev - - libarpack2-dev - libnetcdf-dev + - libpnetcdf-dev - libfftw3-dev - netcdf-bin - clang @@ -27,7 +24,7 @@ matrix: - { os: linux, env: COMPILER=gnu USE_CMAKE=0 BUILD_FLAGS="-nonetcdf" BUILD_TYPE=install TEST_TYPE=test.showerrors } - { os: linux, compiler: clang, env: COMPILER=clang USE_CMAKE=0 BUILD_TYPE=install TEST_TYPE=test.showerrors } - { os: linux, env: COMPILER=gnu USE_CMAKE=0 BUILD_FLAGS="-openmp" OPT=openmp OMP_NUM_THREADS=4 BUILD_TYPE=install TEST_TYPE=test.showerrors } - - { os: linux, env: COMPILER=gnu USE_CMAKE=0 BUILD_FLAGS="-mpi" DO_PARALLEL="mpiexec -n 2" BUILD_TYPE=install TEST_TYPE=test.showerrors } + - { os: linux, env: COMPILER=gnu USE_CMAKE=0 BUILD_FLAGS="-mpi -lpnetcdf" DO_PARALLEL="mpiexec -n 2" BUILD_TYPE=install TEST_TYPE=test.showerrors } - { os: osx, compiler: clang, env: COMPILER=clang USE_CMAKE=0 BUILD_FLAGS="-macAccelerate --with-fftw3=/usr/local --with-netcdf=/usr/local -noarpack" BUILD_TYPE=install TEST_TYPE=test.showerrors } - { os: linux, env: COMPILER=gnu USE_CMAKE=0 BUILD_FLAGS="-openmp -shared -fftw3" OPT=openmp OMP_NUM_THREADS=1 BUILD_TYPE=libcpptraj TEST_TYPE=test.libcpptraj } - { os: linux, env: COMPILER=GNU USE_CMAKE=1 BUILD_FLAGS="-DOPENMP=TRUE" OMP_NUM_THREADS=4 OPT=openmp TEST_TYPE=test.showerrors} From 62a9ba7db14f48fd545c3e97dd0dcb14015fbf3d Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 15:41:38 -0400 Subject: [PATCH 21/22] DRR - Cpptraj: Need to have the ubuntu-toolchain ppa in there. --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 2ebe79a97c..63729db364 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,8 @@ language: cpp dist: trusty sudo: false addons: + sources: + - ubuntu-toolchain-r-test apt: packages: - gfortran From 2d58723996a89d05559219e5ab6515b6f2aa7ebc Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Thu, 12 Sep 2019 15:47:39 -0400 Subject: [PATCH 22/22] DRR - Cpptraj: Turns out pnetcdf not part of the toolchain --- .travis.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 63729db364..54f966f570 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,7 +11,6 @@ addons: - libblas-dev - liblapack-dev - libnetcdf-dev - - libpnetcdf-dev - libfftw3-dev - netcdf-bin - clang @@ -26,7 +25,7 @@ matrix: - { os: linux, env: COMPILER=gnu USE_CMAKE=0 BUILD_FLAGS="-nonetcdf" BUILD_TYPE=install TEST_TYPE=test.showerrors } - { os: linux, compiler: clang, env: COMPILER=clang USE_CMAKE=0 BUILD_TYPE=install TEST_TYPE=test.showerrors } - { os: linux, env: COMPILER=gnu USE_CMAKE=0 BUILD_FLAGS="-openmp" OPT=openmp OMP_NUM_THREADS=4 BUILD_TYPE=install TEST_TYPE=test.showerrors } - - { os: linux, env: COMPILER=gnu USE_CMAKE=0 BUILD_FLAGS="-mpi -lpnetcdf" DO_PARALLEL="mpiexec -n 2" BUILD_TYPE=install TEST_TYPE=test.showerrors } + - { os: linux, env: COMPILER=gnu USE_CMAKE=0 BUILD_FLAGS="-mpi" DO_PARALLEL="mpiexec -n 2" BUILD_TYPE=install TEST_TYPE=test.showerrors } - { os: osx, compiler: clang, env: COMPILER=clang USE_CMAKE=0 BUILD_FLAGS="-macAccelerate --with-fftw3=/usr/local --with-netcdf=/usr/local -noarpack" BUILD_TYPE=install TEST_TYPE=test.showerrors } - { os: linux, env: COMPILER=gnu USE_CMAKE=0 BUILD_FLAGS="-openmp -shared -fftw3" OPT=openmp OMP_NUM_THREADS=1 BUILD_TYPE=libcpptraj TEST_TYPE=test.libcpptraj } - { os: linux, env: COMPILER=GNU USE_CMAKE=1 BUILD_FLAGS="-DOPENMP=TRUE" OMP_NUM_THREADS=4 OPT=openmp TEST_TYPE=test.showerrors}