From 1ae2f3a844afec0b2d3677d841df2def94b2eac3 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Tue, 25 Nov 2025 13:43:31 -0500 Subject: [PATCH 01/15] Identify unique/matching X dimensions. --- src/DataIO.cpp | 113 ++++++++++++++++++++++++++++++++++++----- src/DataIO.h | 3 +- src/DataIO_Gnuplot.cpp | 3 +- src/DataIO_Std.cpp | 3 +- src/cpptrajdepend | 4 +- 5 files changed, 107 insertions(+), 19 deletions(-) diff --git a/src/DataIO.cpp b/src/DataIO.cpp index 91eda95dd8..10aa5d0d95 100644 --- a/src/DataIO.cpp +++ b/src/DataIO.cpp @@ -1,5 +1,7 @@ #include "DataIO.h" +#include "Constants.h" #include "CpptrajStdio.h" +#include "DataSet_1D.h" #include "DataSet_MatrixDbl.h" // CONSTRUCTOR @@ -37,6 +39,8 @@ bool DataIO::CheckValidFor( DataSet const& dataIn ) const { return false; } +/** \return 1 if any set in the given array does not have the given number of dimensions, 0 otherwise. + */ int DataIO::CheckAllDims(DataSetList const& array, unsigned int tgtDim) { for (DataSetList::const_iterator set = array.begin(); set != array.end(); ++set) { @@ -48,24 +52,105 @@ int DataIO::CheckAllDims(DataSetList const& array, unsigned int tgtDim) { } return 0; } +/* +/// \return true if floating point values are equivalent. Used to check X values. +static inline bool FEQ(double v1, double v2) { + double delta = v1 - v2; + if (delta < 0.0) delta = -delta; + return (delta < Constants::SMALL); +} + +/// \return true if floating point values are not equivalent. Used to check X values. +static inline bool FNE(double v1, double v2) { + double delta = v1 - v2; + if (delta < 0.0) delta = -delta; + return (delta > Constants::SMALL); +}*/ + +/// \return X coordinate of given set. +static inline double xCoordVal(DataSet const& set, unsigned int idx) { + if (set.Group() == DataSet::SCALAR_1D) { + DataSet_1D const& s1 = static_cast( set ); + return s1.Xcrd(idx); + } else + return set.Dim(0).Coord(idx); +} -int DataIO::CheckXDimension(DataSetList const& array) { +/** Check if X dimension of 2 given sets matches. */ +bool DataIO::xDimMatch(DataSet const& ref, DataSet const& set) { + if (set.Type() == DataSet::XYMESH) { + // Need to explicitly check X values + DataSet_1D const& s1 = static_cast( set ); + for (unsigned int idx = 0; idx != set.Size(); idx++) { + double x0val = xCoordVal(ref, idx); + double xval = s1.Xcrd(idx); + if (FNE( x0val, xval )) { + mprinterr("Error: X coordinate of %s (%f) != %s (%f) at index %u\n", + set.legend(), xval, ref.legend(), x0val, idx); + return false; + } + } + } else if (set.Dim(0) != ref.Dim(0)) { + mprinterr("Error: X Dimension of %s != %s\n", set.legend(), ref.legend()); + mprinterr("Error: %s: Min=%f Step=%f\n", set.legend(), set.Dim(0).Min(), set.Dim(0).Step()); + mprinterr("Error: %s: Min=%f Step=%f\n", ref.legend(), ref.Dim(0).Min(), ref.Dim(0).Step()); + return false; + } + return true; +} + +/** Ensure that the X dimension of each set in the array matches. */ +int DataIO::CheckXDimension(std::vector& Xmatch, DataSetList const& array) { if (array.empty()) return 0; // FIXME return error? - int err = 0; - Dimension const& Xdim = static_cast(array[0]->Dim(0)); - for (DataSetList::const_iterator set = array.begin(); set != array.end(); ++set) - { - if ((*set)->Dim(0) != Xdim) { - mprinterr("Error: X Dimension of %s != %s\n", (*set)->legend(), - array[0]->legend()); - mprinterr("Error: %s: Min=%f Step=%f\n", (*set)->legend(), - (*set)->Dim(0).Min(), (*set)->Dim(0).Step()); - mprinterr("Error: %s: Min=%f Step=%f\n", array[0]->legend(), - Xdim.Min(), Xdim.Step()); - ++err; + Xmatch.clear(); + Xmatch.resize( array.size(), -1 ); + // First dimension always matches itself + Xmatch[0] = 0; + if (array.size() == 1) { + // Only one X dimension, no checks needed + return 0; + } + + // Loop over all sets + unsigned int currentMatchIndex = 0; + unsigned int NsetsChecked = 0; + int numUniqueXdims = 0; +// int err = 0; +// Dimension const& Xdim = static_cast(array[0]->Dim(0)); + while (NsetsChecked < array.size()) { + DataSet const& currentRef = *(array[currentMatchIndex]); + // Advance to next set that is not matched. + unsigned int currentIndex = 1; + while (currentIndex < array.size() && Xmatch[currentIndex] != -1) ++currentIndex; + if (currentIndex == array.size()) break; + // Loop over remaining sets + ++numUniqueXdims; + for (unsigned int setIdx = currentIndex; setIdx < array.size(); setIdx++) + { + DataSet const& currentSet = *array[setIdx]; + // Check if currentSet Xdim matches the current reference + if (Xmatch[setIdx] == -1 && xDimMatch( currentRef, currentSet )) { + Xmatch[setIdx] = (int)currentMatchIndex; + NsetsChecked++; + } } + // Next reference will be the first unmatched set + while (currentMatchIndex < array.size() && Xmatch[currentMatchIndex] != -1) + currentMatchIndex++; } - return err; + mprintf("DEBUG: Xdim match indices:\n"); + for (unsigned int idx = 0; idx != array.size(); idx++) + mprintf("DEBUG:\t%20s %i\n", array[idx]->legend(), Xmatch[idx]); + +// DataSetList::const_iterator set = array.begin(); +// for (DataSetList::const_iterator set = array.begin(); set != array.end(); ++set) +// { +// Dimension const& currentRefXdim = static_cast( array[currentMatchIndex]->Dim(0) ); +// } +// return err; + if (numUniqueXdims > 1) + return 1; + return 0; } size_t DataIO::DetermineMax(DataSetList const& array) { diff --git a/src/DataIO.h b/src/DataIO.h index ada7236eb3..2a26311f94 100644 --- a/src/DataIO.h +++ b/src/DataIO.h @@ -36,8 +36,9 @@ class DataIO : public BaseIOtype { void SetValid(DataSet::DataType t) { valid_.push_back( t ); } /// Check that all sets in given list have given dimension. static int CheckAllDims(DataSetList const&, unsigned int); + static bool xDimMatch(DataSet const&, DataSet const&); /// Check that X dim for all sets in given list match; all must be 1D. - static int CheckXDimension(DataSetList const&); + static int CheckXDimension(std::vector&, DataSetList const&); /// \return max size of DataSets in given list. static size_t DetermineMax(DataSetList const&); /// Convert flattened matrix array to matrix in DataSetList. diff --git a/src/DataIO_Gnuplot.cpp b/src/DataIO_Gnuplot.cpp index c19ff199dc..7294505917 100644 --- a/src/DataIO_Gnuplot.cpp +++ b/src/DataIO_Gnuplot.cpp @@ -451,7 +451,8 @@ int DataIO_Gnuplot::WriteSets1D(DataSetList const& Sets) { // FIXME: Check that dimension of each set matches. if (Sets.empty()) return 1; - CheckXDimension( Sets ); + std::vector xdimIds; + CheckXDimension( xdimIds, Sets ); // Determine size of largest DataSet. size_t maxFrames = DetermineMax( Sets ); // Use X dimension of set 0 for all set dimensions. diff --git a/src/DataIO_Std.cpp b/src/DataIO_Std.cpp index 8f9fe8695d..f1e7c75f6b 100644 --- a/src/DataIO_Std.cpp +++ b/src/DataIO_Std.cpp @@ -1291,7 +1291,8 @@ int DataIO_Std::WriteDataNormal(CpptrajFile& file, DataSetList const& Sets) { // For this output to work the X-dimension of all sets needs to match. // The most important things for output are min and step so just check that. // Use X dimension of set 0 for all set dimensions. - CheckXDimension( Sets ); + std::vector xdimIds; + CheckXDimension( xdimIds, Sets ); // TODO: Check for empty dim. DataSet* Xdata = Sets[0]; Dimension const& Xdim = static_cast( Xdata->Dim(0) ); diff --git a/src/cpptrajdepend b/src/cpptrajdepend index 59378d10c0..3ad2ce2e06 100644 --- a/src/cpptrajdepend +++ b/src/cpptrajdepend @@ -90,7 +90,7 @@ Action_ToroidalDiffusion.o : Action_ToroidalDiffusion.cpp Action.h ActionState.h Action_Translate.o : Action_Translate.cpp Action.h ActionState.h Action_Translate.h ArgList.h AssociatedData.h Atom.h AtomMask.h AtomType.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.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 ParameterHolders.h ParameterSet.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h TypeNameHolder.h Unit.h Vec3.h Action_Unstrip.o : Action_Unstrip.cpp Action.h ActionState.h Action_Unstrip.h ArgList.h AssociatedData.h Atom.h AtomMask.h AtomType.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.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 ParameterHolders.h ParameterSet.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h TypeNameHolder.h Unit.h Vec3.h Action_Unwrap.o : Action_Unwrap.cpp Action.h ActionState.h Action_Unwrap.h ArgList.h AssociatedData.h Atom.h AtomMask.h AtomType.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h DataSet_Mat3x3.h Dimension.h DispatchObject.h FileIO.h FileName.h FileTypes.h Frame.h ImageRoutines.h ImageTypes.h Image_List.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterHolders.h ParameterSet.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h TypeNameHolder.h Unit.h Vec3.h -Action_Vector.o : Action_Vector.cpp Action.h ActionState.h Action_Vector.h ArgList.h ArrayIterator.h AssociatedData.h Atom.h AtomMask.h AtomType.h BaseIOtype.h Box.h ComplexArray.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_3D.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 GridBin.h ImageOption.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterHolders.h ParameterSet.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h TypeNameHolder.h Unit.h Vec3.h +Action_Vector.o : Action_Vector.cpp Action.h ActionState.h Action_Vector.h ArgList.h ArrayIterator.h AssociatedData.h Atom.h AtomMask.h AtomType.h BaseIOtype.h Box.h CharMask.h ComplexArray.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_3D.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 GridBin.h ImageOption.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterHolders.h ParameterSet.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h TypeNameHolder.h Unit.h Vec3.h Action_VelocityAutoCorr.o : Action_VelocityAutoCorr.cpp Action.h ActionState.h Action_VelocityAutoCorr.h ArgList.h ArrayIterator.h AssociatedData.h Atom.h AtomMask.h AtomType.h BaseIOtype.h Box.h ComplexArray.h Constants.h CoordinateInfo.h Corr.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.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 ParameterHolders.h ParameterSet.h ParameterTypes.h ProgressBar.h PubFFT.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h TypeNameHolder.h Unit.h Vec3.h Action_Volmap.o : Action_Volmap.cpp Action.h ActionState.h Action_Volmap.h ArgList.h ArrayIterator.h AssociatedData.h Atom.h AtomMask.h AtomType.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_3D.h DataSet_Coords.h DataSet_Coords_REF.h DataSet_GridDbl.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 ParameterHolders.h ParameterSet.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SplineFxnTable.h SymbolExporting.h TextFormat.h Timer.h Topology.h TypeNameHolder.h Unit.h Vec3.h Action_Volume.o : Action_Volume.cpp Action.h ActionState.h Action_Volume.h ArgList.h AssociatedData.h Atom.h AtomMask.h AtomType.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_1D.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 ParameterHolders.h ParameterSet.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h TypeNameHolder.h Unit.h Vec3.h @@ -211,7 +211,7 @@ CurveFit.o : CurveFit.cpp CurveFit.h DataFile.o : DataFile.cpp ArgList.h ArrayIterator.h AssociatedData.h Atom.h AtomMask.h AtomType.h BaseIOtype.h Box.h BufferedLine.h Cluster/Cframes.h Cluster/Cmatrix_NC.h Constants.h CoordinateInfo.h Cph.h CpptrajFile.h CpptrajStdio.h DataFile.h DataIO.h DataIO_AmberEne.h DataIO_AmberLib.h DataIO_AmberPrep.h DataIO_CCP4.h DataIO_CharmmFastRep.h DataIO_CharmmOutput.h DataIO_CharmmRepLog.h DataIO_CharmmRtfPrm.h DataIO_Cmatrix_Binary.h DataIO_Cmatrix_NC.h DataIO_Cpout.h DataIO_Evecs.h DataIO_Gnuplot.h DataIO_Grace.h DataIO_Mdout.h DataIO_NetCDF.h DataIO_Numpy.h DataIO_OpenDx.h DataIO_Peaks.h DataIO_RemLog.h DataIO_Std.h DataIO_VecTraj.h DataIO_XVG.h DataIO_Xplor.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h DataSet_PairwiseCache.h DataSet_PairwiseCache_MEM.h DataSet_RemLog.h Dimension.h FileIO.h FileName.h FileTypes.h Frame.h MaskToken.h Matrix.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterHolders.h ParameterSet.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h StringRoutines.h SymbolExporting.h TextFormat.h Timer.h Topology.h TrajectoryFile.h TypeNameHolder.h Unit.h Vec3.h DataFileList.o : DataFileList.cpp ArgList.h AssociatedData.h Atom.h AtomMask.h AtomType.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h FileIO.h FileName.h FileTypes.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h PDBfile.h Parallel.h ParameterHolders.h ParameterSet.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h StringRoutines.h SymbolExporting.h TextFormat.h Timer.h Topology.h TypeNameHolder.h Unit.h Vec3.h DataFilter.o : DataFilter.cpp ArgList.h AssociatedData.h Atom.h AtomMask.h AtomType.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataFilter.h DataSet.h DataSetList.h DataSet_1D.h DataSet_2D.h DataSet_3D.h DataSet_Coords.h DataSet_Coords_REF.h DataSet_integer.h Dimension.h FileIO.h FileName.h FileTypes.h Frame.h GridBin.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterHolders.h ParameterSet.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h TypeNameHolder.h Unit.h Vec3.h -DataIO.o : DataIO.cpp ArgList.h ArrayIterator.h AssociatedData.h Atom.h AtomMask.h AtomType.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataIO.h DataSet.h DataSetList.h DataSet_2D.h DataSet_Coords.h DataSet_Coords_REF.h DataSet_MatrixDbl.h Dimension.h FileIO.h FileName.h Frame.h MaskToken.h Matrix.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterHolders.h ParameterSet.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h TypeNameHolder.h Unit.h Vec3.h +DataIO.o : DataIO.cpp ArgList.h ArrayIterator.h AssociatedData.h Atom.h AtomMask.h AtomType.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataIO.h DataSet.h DataSetList.h DataSet_1D.h DataSet_2D.h DataSet_Coords.h DataSet_Coords_REF.h DataSet_MatrixDbl.h Dimension.h FileIO.h FileName.h Frame.h MaskToken.h Matrix.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterHolders.h ParameterSet.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h TypeNameHolder.h Unit.h Vec3.h DataIO_AmberEne.o : DataIO_AmberEne.cpp ArgList.h AssociatedData.h Atom.h AtomMask.h AtomType.h BaseIOtype.h Box.h BufferedLine.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataIO.h DataIO_AmberEne.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h FileIO.h FileName.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterHolders.h ParameterSet.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h TypeNameHolder.h Unit.h Vec3.h DataIO_AmberLib.o : DataIO_AmberLib.cpp ArgList.h AssociatedData.h AssociatedData_Connect.h Atom.h AtomMask.h AtomType.h BaseIOtype.h Box.h BufferedLine.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataIO.h DataIO_AmberLib.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h FileIO.h FileName.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterHolders.h ParameterSet.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h TypeNameHolder.h Unit.h Vec3.h DataIO_AmberPrep.o : DataIO_AmberPrep.cpp ArgList.h AssociatedData.h Atom.h AtomMask.h AtomType.h BaseIOtype.h BondSearch.h Box.h BufferedLine.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataIO.h DataIO_AmberPrep.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h FileIO.h FileName.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h Molecule.h NameType.h Parallel.h ParameterHolders.h ParameterSet.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h StringRoutines.h Structure/InternalCoords.h Structure/StructureEnum.h Structure/Zmatrix.h SymbolExporting.h TextFormat.h Timer.h Topology.h TypeNameHolder.h Unit.h Vec3.h From 228f034e37d9b758d2fcbcbdda4b74b48a5af5df Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Tue, 25 Nov 2025 19:27:39 -0500 Subject: [PATCH 02/15] Return sets grouped by Xdim --- src/DataIO.cpp | 57 +++++++++++++++++++++++++++----------------------- src/DataIO.h | 5 ++++- 2 files changed, 35 insertions(+), 27 deletions(-) diff --git a/src/DataIO.cpp b/src/DataIO.cpp index 10aa5d0d95..adbc847c3d 100644 --- a/src/DataIO.cpp +++ b/src/DataIO.cpp @@ -100,47 +100,54 @@ bool DataIO::xDimMatch(DataSet const& ref, DataSet const& set) { } /** Ensure that the X dimension of each set in the array matches. */ -int DataIO::CheckXDimension(std::vector& Xmatch, DataSetList const& array) { - if (array.empty()) return 0; // FIXME return error? +DataIO::DSLarray DataIO::CheckXDimension(std::vector& Xmatch, DataSetList const& array) { + DSLarray OUT; + if (array.empty()) return OUT; // FIXME return error? Xmatch.clear(); Xmatch.resize( array.size(), -1 ); - // First dimension always matches itself - Xmatch[0] = 0; - if (array.size() == 1) { - // Only one X dimension, no checks needed - return 0; - } // Loop over all sets - unsigned int currentMatchIndex = 0; unsigned int NsetsChecked = 0; - int numUniqueXdims = 0; // int err = 0; // Dimension const& Xdim = static_cast(array[0]->Dim(0)); while (NsetsChecked < array.size()) { - DataSet const& currentRef = *(array[currentMatchIndex]); - // Advance to next set that is not matched. - unsigned int currentIndex = 1; + // Find the first unmatched set + unsigned int currentIndex = 0; while (currentIndex < array.size() && Xmatch[currentIndex] != -1) ++currentIndex; - if (currentIndex == array.size()) break; + if (currentIndex >= array.size()) break; + DataSet const& currentRef = *(array[currentIndex]); + mprintf("DEBUG: Current ref: %s\n", currentRef.legend()); + Xmatch[currentIndex] = currentIndex; + OUT.push_back( DataSetList() ); + OUT.back().AddCopyOfSet( array[currentIndex] ); // Loop over remaining sets - ++numUniqueXdims; - for (unsigned int setIdx = currentIndex; setIdx < array.size(); setIdx++) + mprintf("DEBUG: Starting at set %u\n", currentIndex+1); + for (unsigned int setIdx = currentIndex+1; setIdx < array.size(); setIdx++) { DataSet const& currentSet = *array[setIdx]; - // Check if currentSet Xdim matches the current reference - if (Xmatch[setIdx] == -1 && xDimMatch( currentRef, currentSet )) { - Xmatch[setIdx] = (int)currentMatchIndex; - NsetsChecked++; + if (Xmatch[setIdx] == -1) { + mprintf("DEBUG:\t\tChecking %s", currentSet.legend()); + // Check if currentSet Xdim matches the current reference + if (xDimMatch( currentRef, currentSet )) { + mprintf(" MATCH!"); + Xmatch[setIdx] = (int)currentIndex; + OUT.back().AddCopyOfSet( array[setIdx] ); + NsetsChecked++; + } + mprintf("\n"); } } - // Next reference will be the first unmatched set - while (currentMatchIndex < array.size() && Xmatch[currentMatchIndex] != -1) - currentMatchIndex++; } mprintf("DEBUG: Xdim match indices:\n"); for (unsigned int idx = 0; idx != array.size(); idx++) mprintf("DEBUG:\t%20s %i\n", array[idx]->legend(), Xmatch[idx]); + mprintf("DEBUG: Sets grouped by Xdim:\n"); + for (DSLarray::const_iterator it = OUT.begin(); it != OUT.end(); ++it) { + mprintf("\t"); + for (DataSetList::const_iterator jt = it->begin(); jt != it->end(); ++jt) + mprintf(" %s", (*jt)->legend()); + mprintf("\n"); + } // DataSetList::const_iterator set = array.begin(); // for (DataSetList::const_iterator set = array.begin(); set != array.end(); ++set) @@ -148,9 +155,7 @@ int DataIO::CheckXDimension(std::vector& Xmatch, DataSetList const& array) // Dimension const& currentRefXdim = static_cast( array[currentMatchIndex]->Dim(0) ); // } // return err; - if (numUniqueXdims > 1) - return 1; - return 0; + return OUT; } size_t DataIO::DetermineMax(DataSetList const& array) { diff --git a/src/DataIO.h b/src/DataIO.h index 2a26311f94..2613eb0832 100644 --- a/src/DataIO.h +++ b/src/DataIO.h @@ -36,9 +36,12 @@ class DataIO : public BaseIOtype { void SetValid(DataSet::DataType t) { valid_.push_back( t ); } /// Check that all sets in given list have given dimension. static int CheckAllDims(DataSetList const&, unsigned int); + /// \return True if the X coordinates for both sets match exactly static bool xDimMatch(DataSet const&, DataSet const&); + /// Typedef for an array of DataSetLists + typedef std::vector DSLarray; /// Check that X dim for all sets in given list match; all must be 1D. - static int CheckXDimension(std::vector&, DataSetList const&); + static DSLarray CheckXDimension(std::vector&, DataSetList const&); /// \return max size of DataSets in given list. static size_t DetermineMax(DataSetList const&); /// Convert flattened matrix array to matrix in DataSetList. From b4c412d931e01ea03a7069d3d74b5e473bedee96 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Tue, 25 Nov 2025 19:42:25 -0500 Subject: [PATCH 03/15] Return an array of DataSetLists, each list having a matching X dimension --- src/DataIO.cpp | 7 ++++--- src/DataIO.h | 2 +- src/DataIO_Gnuplot.cpp | 11 +++++++++-- src/DataIO_Gnuplot.h | 1 + src/DataIO_Std.cpp | 11 +++++++++-- src/DataIO_Std.h | 1 + 6 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/DataIO.cpp b/src/DataIO.cpp index adbc847c3d..55a657245c 100644 --- a/src/DataIO.cpp +++ b/src/DataIO.cpp @@ -100,11 +100,12 @@ bool DataIO::xDimMatch(DataSet const& ref, DataSet const& set) { } /** Ensure that the X dimension of each set in the array matches. */ -DataIO::DSLarray DataIO::CheckXDimension(std::vector& Xmatch, DataSetList const& array) { +DataIO::DSLarray DataIO::CheckXDimension(DataSetList const& array) { DSLarray OUT; if (array.empty()) return OUT; // FIXME return error? - Xmatch.clear(); - Xmatch.resize( array.size(), -1 ); + //Xmatch.clear(); + //Xmatch.resize( array.size(), -1 ); + std::vector Xmatch(array.size(), -1); // Loop over all sets unsigned int NsetsChecked = 0; diff --git a/src/DataIO.h b/src/DataIO.h index 2613eb0832..3f36d18b7b 100644 --- a/src/DataIO.h +++ b/src/DataIO.h @@ -41,7 +41,7 @@ class DataIO : public BaseIOtype { /// Typedef for an array of DataSetLists typedef std::vector DSLarray; /// Check that X dim for all sets in given list match; all must be 1D. - static DSLarray CheckXDimension(std::vector&, DataSetList const&); + static DSLarray CheckXDimension(DataSetList const&); /// \return max size of DataSets in given list. static size_t DetermineMax(DataSetList const&); /// Convert flattened matrix array to matrix in DataSetList. diff --git a/src/DataIO_Gnuplot.cpp b/src/DataIO_Gnuplot.cpp index 7294505917..10425f5aed 100644 --- a/src/DataIO_Gnuplot.cpp +++ b/src/DataIO_Gnuplot.cpp @@ -451,8 +451,15 @@ int DataIO_Gnuplot::WriteSets1D(DataSetList const& Sets) { // FIXME: Check that dimension of each set matches. if (Sets.empty()) return 1; - std::vector xdimIds; - CheckXDimension( xdimIds, Sets ); + DataIO::DSLarray SetLists = CheckXDimension( Sets ); + int err = 0; + for (DataIO::DSLarray::const_iterator dslit = SetLists.begin(); dslit != SetLists.end(); ++dslit) + err += writeSets1D_MatchingXdim(*dslit); + return err; +} + +/** Write data sets to file; the X dimension of all sets should be the same */ +int DataIO_Gnuplot::writeSets1D_MatchingXdim(DataSetList const& Sets) { // Determine size of largest DataSet. size_t maxFrames = DetermineMax( Sets ); // Use X dimension of set 0 for all set dimensions. diff --git a/src/DataIO_Gnuplot.h b/src/DataIO_Gnuplot.h index dc966b7152..50ad6f1c7f 100644 --- a/src/DataIO_Gnuplot.h +++ b/src/DataIO_Gnuplot.h @@ -48,5 +48,6 @@ class DataIO_Gnuplot : public DataIO { void JpegOut(size_t,size_t); void WriteDefinedPalette(int); int WriteSets1D(DataSetList const&); + int writeSets1D_MatchingXdim(DataSetList const&); }; #endif diff --git a/src/DataIO_Std.cpp b/src/DataIO_Std.cpp index f1e7c75f6b..92fa4a84de 100644 --- a/src/DataIO_Std.cpp +++ b/src/DataIO_Std.cpp @@ -1291,8 +1291,15 @@ int DataIO_Std::WriteDataNormal(CpptrajFile& file, DataSetList const& Sets) { // For this output to work the X-dimension of all sets needs to match. // The most important things for output are min and step so just check that. // Use X dimension of set 0 for all set dimensions. - std::vector xdimIds; - CheckXDimension( xdimIds, Sets ); + DataIO::DSLarray SetLists = CheckXDimension( Sets ); + int err = 0; + for (DataIO::DSLarray::const_iterator dslit = SetLists.begin(); dslit != SetLists.end(); ++dslit) + err += writeDataNormal_MatchingXdim(file, *dslit); + return err; +} + +/** Write data sets in given data set list to file; all X dimensions should be matching. */ +int DataIO_Std::writeDataNormal_MatchingXdim(CpptrajFile& file, DataSetList const& Sets) { // TODO: Check for empty dim. DataSet* Xdata = Sets[0]; Dimension const& Xdim = static_cast( Xdata->Dim(0) ); diff --git a/src/DataIO_Std.h b/src/DataIO_Std.h index bfb6f5d5d9..c02469441b 100644 --- a/src/DataIO_Std.h +++ b/src/DataIO_Std.h @@ -34,6 +34,7 @@ class DataIO_Std : public DataIO { int WriteStringVars(CpptrajFile&, DataSetList const&) const; int WriteCmatrix(CpptrajFile&, DataSetList const&); int WriteDataNormal(CpptrajFile&,DataSetList const&); + int writeDataNormal_MatchingXdim(CpptrajFile&, DataSetList const&); int WriteDataInverted(CpptrajFile&,DataSetList const&); int WriteData2D(CpptrajFile&, DataSetList const&); int WriteData3D(CpptrajFile&, DataSetList const&); From 82db787e8beb50104af3363256ca04d8e8fac649 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Tue, 25 Nov 2025 20:54:34 -0500 Subject: [PATCH 04/15] Start comparing from the end of the sets, more likely to get a mismatch --- src/DataIO.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/DataIO.cpp b/src/DataIO.cpp index 55a657245c..216acc53d9 100644 --- a/src/DataIO.cpp +++ b/src/DataIO.cpp @@ -3,6 +3,7 @@ #include "CpptrajStdio.h" #include "DataSet_1D.h" #include "DataSet_MatrixDbl.h" +#include // std::min // CONSTRUCTOR DataIO::DataIO() : @@ -79,9 +80,17 @@ static inline double xCoordVal(DataSet const& set, unsigned int idx) { /** Check if X dimension of 2 given sets matches. */ bool DataIO::xDimMatch(DataSet const& ref, DataSet const& set) { if (set.Type() == DataSet::XYMESH) { + if (ref.Size() == 0 && set.Size() == 0) + // No values in either; automatic match + return true; // Need to explicitly check X values DataSet_1D const& s1 = static_cast( set ); - for (unsigned int idx = 0; idx != set.Size(); idx++) { + // Start from the end since that is most likely to not match + unsigned int endval = std::min(set.Size(), ref.Size()); + if (endval == 0) + // One of the sets is empty; automatic non-match TODO should just match? + return false; + for (int idx = endval - 1; idx >= 0; idx--) { double x0val = xCoordVal(ref, idx); double xval = s1.Xcrd(idx); if (FNE( x0val, xval )) { From ec95f68f44cde1105f1dd0db8e02fdc6069f2984 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Wed, 26 Nov 2025 10:50:53 -0500 Subject: [PATCH 05/15] Handle case where reference set is XY mesh. Hide some debug info. Print newline between grouped output for standard data out --- src/DataIO.cpp | 42 +++++++++++++++++++++++++----------------- src/DataIO_Std.cpp | 4 ++++ 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/src/DataIO.cpp b/src/DataIO.cpp index 216acc53d9..9461ded420 100644 --- a/src/DataIO.cpp +++ b/src/DataIO.cpp @@ -79,30 +79,29 @@ static inline double xCoordVal(DataSet const& set, unsigned int idx) { /** Check if X dimension of 2 given sets matches. */ bool DataIO::xDimMatch(DataSet const& ref, DataSet const& set) { - if (set.Type() == DataSet::XYMESH) { + if (ref.Type() == DataSet::XYMESH || set.Type() == DataSet::XYMESH) { if (ref.Size() == 0 && set.Size() == 0) // No values in either; automatic match return true; // Need to explicitly check X values - DataSet_1D const& s1 = static_cast( set ); // Start from the end since that is most likely to not match unsigned int endval = std::min(set.Size(), ref.Size()); if (endval == 0) // One of the sets is empty; automatic non-match TODO should just match? return false; for (int idx = endval - 1; idx >= 0; idx--) { - double x0val = xCoordVal(ref, idx); - double xval = s1.Xcrd(idx); - if (FNE( x0val, xval )) { - mprinterr("Error: X coordinate of %s (%f) != %s (%f) at index %u\n", - set.legend(), xval, ref.legend(), x0val, idx); + double refXval = xCoordVal(ref, idx); + double setXval = xCoordVal(set, idx); + if (FNE( refXval, setXval )) { + mprintf("Warning: X coordinate of %s (%f) != %s (%f) at index %u\n", + set.legend(), setXval, ref.legend(), refXval, idx); return false; } } } else if (set.Dim(0) != ref.Dim(0)) { - mprinterr("Error: X Dimension of %s != %s\n", set.legend(), ref.legend()); - mprinterr("Error: %s: Min=%f Step=%f\n", set.legend(), set.Dim(0).Min(), set.Dim(0).Step()); - mprinterr("Error: %s: Min=%f Step=%f\n", ref.legend(), ref.Dim(0).Min(), ref.Dim(0).Step()); + mprintf("Warning: X Dimension of %s (Min=%f Step=%f) != %s (Min=%f Step=%f)\n", + set.legend(), set.Dim(0).Min(), set.Dim(0).Step(), + ref.legend(), ref.Dim(0).Min(), ref.Dim(0).Step()); return false; } return true; @@ -126,29 +125,30 @@ DataIO::DSLarray DataIO::CheckXDimension(DataSetList const& array) { while (currentIndex < array.size() && Xmatch[currentIndex] != -1) ++currentIndex; if (currentIndex >= array.size()) break; DataSet const& currentRef = *(array[currentIndex]); - mprintf("DEBUG: Current ref: %s\n", currentRef.legend()); +// mprintf("DEBUG: Current ref: %s\n", currentRef.legend()); Xmatch[currentIndex] = currentIndex; OUT.push_back( DataSetList() ); OUT.back().AddCopyOfSet( array[currentIndex] ); // Loop over remaining sets - mprintf("DEBUG: Starting at set %u\n", currentIndex+1); +// mprintf("DEBUG: Starting at set %u\n", currentIndex+1); for (unsigned int setIdx = currentIndex+1; setIdx < array.size(); setIdx++) { DataSet const& currentSet = *array[setIdx]; if (Xmatch[setIdx] == -1) { - mprintf("DEBUG:\t\tChecking %s", currentSet.legend()); +// mprintf("DEBUG:\t\tChecking %s", currentSet.legend()); // Check if currentSet Xdim matches the current reference if (xDimMatch( currentRef, currentSet )) { - mprintf(" MATCH!"); +// mprintf(" MATCH!"); Xmatch[setIdx] = (int)currentIndex; OUT.back().AddCopyOfSet( array[setIdx] ); NsetsChecked++; } - mprintf("\n"); +// mprintf("\n"); } } } - mprintf("DEBUG: Xdim match indices:\n"); + // DEBUG +/* mprintf("DEBUG: Xdim match indices:\n"); for (unsigned int idx = 0; idx != array.size(); idx++) mprintf("DEBUG:\t%20s %i\n", array[idx]->legend(), Xmatch[idx]); mprintf("DEBUG: Sets grouped by Xdim:\n"); @@ -157,8 +157,16 @@ DataIO::DSLarray DataIO::CheckXDimension(DataSetList const& array) { for (DataSetList::const_iterator jt = it->begin(); jt != it->end(); ++jt) mprintf(" %s", (*jt)->legend()); mprintf("\n"); + }*/ + if (OUT.size() > 1) { + mprintf("Warning: Not all sets had matching X dimensions. They will be grouped in the file like so:\n"); + for (DSLarray::const_iterator it = OUT.begin(); it != OUT.end(); ++it) { + mprintf("\t"); + for (DataSetList::const_iterator jt = it->begin(); jt != it->end(); ++jt) + mprintf(" %s", (*jt)->legend()); + mprintf("\n"); + } } - // DataSetList::const_iterator set = array.begin(); // for (DataSetList::const_iterator set = array.begin(); set != array.end(); ++set) // { diff --git a/src/DataIO_Std.cpp b/src/DataIO_Std.cpp index 92fa4a84de..8f1054eda5 100644 --- a/src/DataIO_Std.cpp +++ b/src/DataIO_Std.cpp @@ -1294,7 +1294,11 @@ int DataIO_Std::WriteDataNormal(CpptrajFile& file, DataSetList const& Sets) { DataIO::DSLarray SetLists = CheckXDimension( Sets ); int err = 0; for (DataIO::DSLarray::const_iterator dslit = SetLists.begin(); dslit != SetLists.end(); ++dslit) + { + if (dslit != SetLists.begin()) + file.Printf("\n"); err += writeDataNormal_MatchingXdim(file, *dslit); + } return err; } From 7c3c3d6ff899cabff412058b7f3dbb0eec542e1c Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Wed, 26 Nov 2025 10:54:43 -0500 Subject: [PATCH 06/15] Add sanity check that there is at least 1 dimension in sets. Update code docs --- src/DataIO.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/DataIO.cpp b/src/DataIO.cpp index 9461ded420..edaa570d9a 100644 --- a/src/DataIO.cpp +++ b/src/DataIO.cpp @@ -79,6 +79,7 @@ static inline double xCoordVal(DataSet const& set, unsigned int idx) { /** Check if X dimension of 2 given sets matches. */ bool DataIO::xDimMatch(DataSet const& ref, DataSet const& set) { + if (ref.Ndim() < 1 || set.Ndim() < 1) return false; if (ref.Type() == DataSet::XYMESH || set.Type() == DataSet::XYMESH) { if (ref.Size() == 0 && set.Size() == 0) // No values in either; automatic match @@ -107,7 +108,10 @@ bool DataIO::xDimMatch(DataSet const& ref, DataSet const& set) { return true; } -/** Ensure that the X dimension of each set in the array matches. */ +/** Ensure that the X dimension of each set in the array matches. + * \return An array of DataSetLists where the sets in each + * DataSetList all have matching X dimensions. + */ DataIO::DSLarray DataIO::CheckXDimension(DataSetList const& array) { DSLarray OUT; if (array.empty()) return OUT; // FIXME return error? From cb6adb922d3f003892a69a43f5694cc232426fb0 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Wed, 26 Nov 2025 11:57:05 -0500 Subject: [PATCH 07/15] Switch back to forwards direction so that the earliest mismatch is reported --- src/DataIO.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/DataIO.cpp b/src/DataIO.cpp index edaa570d9a..d42850ab6c 100644 --- a/src/DataIO.cpp +++ b/src/DataIO.cpp @@ -90,7 +90,9 @@ bool DataIO::xDimMatch(DataSet const& ref, DataSet const& set) { if (endval == 0) // One of the sets is empty; automatic non-match TODO should just match? return false; - for (int idx = endval - 1; idx >= 0; idx--) { + //for (int idx = endval - 1; idx >= 0; idx--) + for (unsigned int idx = 0; idx < endval; idx++) + { double refXval = xCoordVal(ref, idx); double setXval = xCoordVal(set, idx); if (FNE( refXval, setXval )) { From 27e568299247092bf2ed80408acb3b25f3f1cd0e Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Wed, 26 Nov 2025 12:07:11 -0500 Subject: [PATCH 08/15] Warn if multiple X dimensions detected for Gnuplot output --- src/DataIO_Gnuplot.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/DataIO_Gnuplot.cpp b/src/DataIO_Gnuplot.cpp index 10425f5aed..c72beb5019 100644 --- a/src/DataIO_Gnuplot.cpp +++ b/src/DataIO_Gnuplot.cpp @@ -452,6 +452,11 @@ int DataIO_Gnuplot::WriteSets1D(DataSetList const& Sets) // FIXME: Check that dimension of each set matches. if (Sets.empty()) return 1; DataIO::DSLarray SetLists = CheckXDimension( Sets ); + if (Sets.size() > 1) { + mprintf("Warning: Multiple X dimensions detected for sets being written to file '%s'\n", + file_.Filename().full()); + mprintf("Warning: Sets with matching X dimensions will be written to separate plots.\n"); + } int err = 0; for (DataIO::DSLarray::const_iterator dslit = SetLists.begin(); dslit != SetLists.end(); ++dslit) err += writeSets1D_MatchingXdim(*dslit); From b80fe1588a60f97783b26480975e3ea0ce86843b Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Wed, 26 Nov 2025 12:29:13 -0500 Subject: [PATCH 09/15] Add the concept of an index dataset for a dimension. This will allow sets to have other data sets designated as the "index" set for a certain dimension, which will bypass the explicit dimension check. Can be useful when there are multiple sets that are known to be indexed by the same values. --- src/DataIO.cpp | 8 ++++++-- src/DataSet.cpp | 3 +++ src/DataSet.h | 6 ++++++ src/Exec_ParseTiming.cpp | 4 ++-- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/DataIO.cpp b/src/DataIO.cpp index d42850ab6c..c4bef3771e 100644 --- a/src/DataIO.cpp +++ b/src/DataIO.cpp @@ -80,11 +80,15 @@ static inline double xCoordVal(DataSet const& set, unsigned int idx) { /** Check if X dimension of 2 given sets matches. */ bool DataIO::xDimMatch(DataSet const& ref, DataSet const& set) { if (ref.Ndim() < 1 || set.Ndim() < 1) return false; - if (ref.Type() == DataSet::XYMESH || set.Type() == DataSet::XYMESH) { + // First check if the reference set is the index set for incoming set. + if ( set.DimIndexSet(0) != 0 && set.DimIndexSet(0) == (DataSet const*)(&ref) ) { + //mprintf("DEBUG: %s is the X index set for %s\n", ref.legend(), set.legend()); + return true; + } else if (ref.Type() == DataSet::XYMESH || set.Type() == DataSet::XYMESH) { + // Either one of both sets is a mesh. Need to explicitly check X values. if (ref.Size() == 0 && set.Size() == 0) // No values in either; automatic match return true; - // Need to explicitly check X values // Start from the end since that is most likely to not match unsigned int endval = std::min(set.Size(), ref.Size()); if (endval == 0) diff --git a/src/DataSet.cpp b/src/DataSet.cpp index b9e0d5b797..90e294a8c3 100644 --- a/src/DataSet.cpp +++ b/src/DataSet.cpp @@ -59,6 +59,7 @@ DataSet::DataSet() : dType_(UNKNOWN_DATA), dGroup_(GENERIC) DataSet::DataSet(DataType typeIn, DataGroup groupIn, TextFormat const& fmtIn, int dimIn) : format_(fmtIn), dim_(dimIn, Dimension(1.0, 1.0)), // default min=1.0, step=1.0 + indexSet_(dimIn, 0), dType_(typeIn), dGroup_(groupIn) # ifdef MPI @@ -70,6 +71,7 @@ DataSet::DataSet(DataType typeIn, DataGroup groupIn, TextFormat const& fmtIn, in DataSet::DataSet(const DataSet& rhs) : format_(rhs.format_), dim_(rhs.dim_), + indexSet_(rhs.indexSet_), dType_(rhs.dType_), dGroup_(rhs.dGroup_), meta_(rhs.meta_) @@ -97,6 +99,7 @@ DataSet& DataSet::operator=(const DataSet& rhs) { if (this != &rhs) { format_ = rhs.format_; dim_ = rhs.dim_; + indexSet_ = rhs.indexSet_; dType_ = rhs.dType_; dGroup_ = rhs.dGroup_; meta_ = rhs.meta_; diff --git a/src/DataSet.h b/src/DataSet.h index f619652f4d..2a29a41ed3 100644 --- a/src/DataSet.h +++ b/src/DataSet.h @@ -96,6 +96,9 @@ class DataSet { TextFormat& SetupFormat() { return format_; } /// Set specified DataSet dimension. void SetDim(Dimension::DimIdxType i, Dimension const& d) { dim_[(int)i] = d; } + /// Set dimension and index data set + void SetDim(Dimension::DimIdxType i, Dimension const& d, DataSet const* iset) { dim_[(int)i] = d; indexSet_[(int)i] = iset; } + /// Set specified dimension # void SetDim(int i, Dimension const& d) { dim_[i] = d; } # ifdef MPI void SetNeedsSync(bool b) { needsSync_ = b; } @@ -125,6 +128,8 @@ class DataSet { /// \return specified DataSet dimension. // TODO consolidate Dimension& ModifyDim(Dimension::DimIdxType i) { return dim_[(int)i]; } Dimension const& Dim(int i) const { return dim_[i]; } + /// \return specified dimension index set + DataSet const* DimIndexSet(int i) const { return indexSet_[i]; } /// Comparison for sorting, name/aspect/idx inline bool operator<(const DataSet& rhs) const { return meta_ < rhs.meta_; } @@ -156,6 +161,7 @@ class DataSet { // depending on the set type. For example, dim_ doesnt really work // for non-orthogonal grids. DimArray dim_; ///< Holds info for each dimension in the DataSet. + std::vector indexSet_; ///< Optional index set for each dimension AdataArray associatedData_; ///< Holds any additonal data associated with this DataSet DataType dType_; ///< The DataSet type DataGroup dGroup_; ///< The DataSet group diff --git a/src/Exec_ParseTiming.cpp b/src/Exec_ParseTiming.cpp index 6e94685176..3c3950e36c 100644 --- a/src/Exec_ParseTiming.cpp +++ b/src/Exec_ParseTiming.cpp @@ -285,7 +285,7 @@ const } if (outfile != 0) outfile->AddDataSet( nameSet ); nameSet->Allocate( DataSet::SizeArray(1, Runs.size()) ); - nameSet->SetDim(Dimension::X, Xdim); + nameSet->SetDim(Dimension::X, Xdim, ds); DataSet* dirNameSet = DSL.AddSet(DataSet::STRING, MetaData(dsname, "dir")); if (dirNameSet == 0) { @@ -294,7 +294,7 @@ const } if (outfile != 0) outfile->AddDataSet( dirNameSet ); dirNameSet->Allocate( DataSet::SizeArray(1, Runs.size()) ); - dirNameSet->SetDim(Dimension::X, Xdim); + dirNameSet->SetDim(Dimension::X, Xdim, ds); for (RunArray::const_iterator it = Runs.begin(); it != Runs.end(); ++it) { double X = 0; From 50ab04bba5750973812967742b1c800b48265913 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Wed, 26 Nov 2025 13:17:15 -0500 Subject: [PATCH 10/15] Add 'resrange' arg for 'byres' output --- src/Action_AtomicFluct.cpp | 116 +++++++++++++++++++++++++++++-------- src/Action_AtomicFluct.h | 1 + 2 files changed, 92 insertions(+), 25 deletions(-) diff --git a/src/Action_AtomicFluct.cpp b/src/Action_AtomicFluct.cpp index f15ffd7eb9..55290b9a18 100644 --- a/src/Action_AtomicFluct.cpp +++ b/src/Action_AtomicFluct.cpp @@ -19,8 +19,8 @@ Action_AtomicFluct::Action_AtomicFluct() : {} void Action_AtomicFluct::Help() const { - mprintf("\t[] [out ] [] [byres [pdbres] | byatom | bymask]\n" - "\t[bfactor] [calcadp [adpout ]]\n" + mprintf("\t[] [out ] [] [bfactor] [calcadp [adpout ]]\n" + "\t[{byres [pdbres] [resrange ] | byatom | bymask}]\n" "\t%s\n" " Calculate atomic fluctuations of atoms in \n", ActionFrameCounter::HelpText); } @@ -41,6 +41,13 @@ Action::RetType Action_AtomicFluct::Init(ArgList& actionArgs, ActionInit& init, if (actionArgs.hasKey("byres")) { outtype_ = BYRES; usePdbRes_ = actionArgs.hasKey("pdbres"); + std::string resrangearg = actionArgs.GetStringKey("resrange"); + if (!resrangearg.empty()) { + if (resRange_.SetRange( resrangearg )) { + mprinterr("Error: Could not set resrange arg %s\n", resrangearg.c_str()); + return Action::ERR; + } + } } else if (actionArgs.hasKey("bymask")) outtype_ = BYMASK; else if (actionArgs.hasKey("byatom") || actionArgs.hasKey("byatm")) @@ -95,6 +102,10 @@ Action::RetType Action_AtomicFluct::Init(ArgList& actionArgs, ActionInit& init, case BYMASK: mprintf(" over entire atom mask.\n"); break; } if (usePdbRes_) mprintf("\tUsing PDB residue numbers if present in topology.\n"); + if (!resRange_.Empty()) { + if (outtype_ == BYRES) + mprintf("\tResidue range arg: %s\n", resRange_.RangeArg()); + } if (outfile != 0) mprintf("\tOutput to file %s\n", outfile->DataFilename().full()); mprintf("\tAtom mask: [%s]\n",Mask_.MaskString()); @@ -141,6 +152,20 @@ Action::RetType Action_AtomicFluct::Setup(ActionSetup& setup) { mprintf("Warning: Topology is changing. Will base output only using topology '%s'.\n", fluctParm_->c_str()); } + // If a residue range is set, ensure every selected residue is a member of the range + if (!resRange_.Empty()) { + if (outtype_ == BYRES) { + std::vector selectedRes = setup.Top().ResnumsSelectedBy( Mask_ ); + for (std::vector::const_iterator ires = selectedRes.begin(); + ires != selectedRes.end(); ires++) + { + if (!resRange_.InRange( *ires + 1 )) { + mprinterr("Error: Selected residue %i is not in specified resrange %s\n", *ires+1, resRange_.RangeArg()); + return Action::ERR; + } + } + } + } return Action::OK; } @@ -254,33 +279,74 @@ void Action_AtomicFluct::Print() { for (int idx = 0; idx < (int)Results.size(); idx++) dset.AddXY( Mask_[idx]+1, Results[idx] ); } else if (outtype_ == BYRES) { - // By residue output dset.ModifyDim(Dimension::X).SetLabel("Res"); - int lastidx = (int)Results.size() - 1; - double fluct = 0.0; - double xi = 0.0; - for (int idx = 0; idx < (int)Results.size(); idx++) { - int atom = Mask_[idx]; - double mass = (*fluctParm_)[atom].Mass(); - fluct += Results[idx] * mass; - xi += mass; - int currentres = (*fluctParm_)[atom].ResNum(); - int nextres; - if (idx != lastidx) { - int nextatom = Mask_[idx+1]; - nextres = (*fluctParm_)[nextatom].ResNum(); - } else - nextres = -1; - if (nextres != currentres) { + if (resRange_.Empty()) { + // Original By residue output + int lastidx = (int)Results.size() - 1; + double fluct = 0.0; + double xi = 0.0; + for (int idx = 0; idx < (int)Results.size(); idx++) { + int atom = Mask_[idx]; + double mass = (*fluctParm_)[atom].Mass(); + fluct += Results[idx] * mass; + xi += mass; + int currentres = (*fluctParm_)[atom].ResNum(); + int nextres; + if (idx != lastidx) { + int nextatom = Mask_[idx+1]; + nextres = (*fluctParm_)[nextatom].ResNum(); + } else + nextres = -1; + if (nextres != currentres) { + int resnum; + if (usePdbRes_) + resnum = fluctParm_->Res(currentres).OriginalResNum(); + else + resnum = currentres + 1; + dset.AddXY( resnum, fluct / xi ); + xi = 0.0; + fluct = 0.0; + } + } + } else { + // Range was specified + std::vector atomToMaskIdx( fluctParm_->Natom(), -1); + for (AtomMask::const_iterator it = Mask_.begin(); it != Mask_.end(); ++it) + atomToMaskIdx[*it] = it - Mask_.begin(); + std::vector selectedRes = fluctParm_->ResnumsSelectedBy( Mask_ ); + std::vector::const_iterator ires = selectedRes.begin(); + for (Range::const_iterator it = resRange_.begin(); it != resRange_.end(); ++it) + { + int tgtres = *it - 1; int resnum; if (usePdbRes_) - resnum = fluctParm_->Res(currentres).OriginalResNum(); + resnum = fluctParm_->Res(tgtres).OriginalResNum(); else - resnum = currentres + 1; - dset.AddXY( resnum, fluct / xi ); - xi = 0.0; - fluct = 0.0; - } + resnum = *it; + if (ires == selectedRes.end() || tgtres < *ires) { + // Specified res not selected + dset.AddXY( resnum, 0.0 ); + } else if (tgtres == *ires) { + // Specified res selected + double fluct = 0.0; + double xi = 0.0; + for (int at = fluctParm_->Res(*ires).FirstAtom(); at != fluctParm_->Res(*ires).LastAtom(); ++at) + { + int idx = atomToMaskIdx[at]; + if (idx != -1) { + double mass = (*fluctParm_)[at].Mass(); + fluct += Results[idx] * mass; + xi += mass; + } + } + dset.AddXY( resnum, fluct / xi ); + ++ires; + } else { + // Sanity check + mprinterr("Internal Error: Action_AtomicFluct::Print(): resrange print failed; tgtres = %i, ires = %i\n", *it, *ires+1); + return; + } + } // END loop over resnums in range } } else if (outtype_ == BYMASK) { // By mask output diff --git a/src/Action_AtomicFluct.h b/src/Action_AtomicFluct.h index 8541739988..74e418c9da 100644 --- a/src/Action_AtomicFluct.h +++ b/src/Action_AtomicFluct.h @@ -33,5 +33,6 @@ class Action_AtomicFluct : public Action, ActionFrameCounter { outputType outtype_; DataSet* dataout_; DataSet* adpset_; ///< DataSet for holding anisotropic temp. factors + Range resRange_; }; #endif From 55a3ec4f2b4e35761ab3d5b7a53c5ef3427376f9 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Wed, 26 Nov 2025 13:20:55 -0500 Subject: [PATCH 11/15] Add resrange arg to atomicfluct --- doc/cpptraj.lyx | 56 +++++++++++++++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/doc/cpptraj.lyx b/doc/cpptraj.lyx index d1a7927b82..a7e99c3f9d 100644 --- a/doc/cpptraj.lyx +++ b/doc/cpptraj.lyx @@ -23524,15 +23524,15 @@ atomicfluct \end_inset - [] [out ] [] [byres [pdbres] | byatom | bymask] + [] [out ] [] [bfactor] [calcadp [adpout ]] \end_layout \begin_layout LyX-Code - [bfactor] [calcadp [adpout ]] + [{byres [pdbres] [resrange ] | byatom | bymask}] \end_layout \begin_layout LyX-Code - [start ] [stop ] [offset ] + [start ] [stop ] [offset ] \begin_inset Separator latexpar \end_inset @@ -23556,23 +23556,6 @@ out [] Calculate fluctuations for atoms in (all if not specified). \end_layout -\begin_layout Description -byres [pdbres] Output the average (mass-weighted) fluctuation by residue. - If 'pdbres' is specified, the original residue numbering will be used. -\end_layout - -\begin_layout Description -bymask Output the average (mass-weighted) fluctuation for all atoms in . -\end_layout - -\begin_layout Description -byatom -\begin_inset space ~ -\end_inset - -(default) Output the fluctuation by atom. -\end_layout - \begin_layout Description [bfactor] Calculate atomic positional fluctuations squared and weight by @@ -23596,6 +23579,39 @@ graphic B-factors. them to . \end_layout +\begin_layout Description +byres [pdbres] Output the average (mass-weighted) fluctuation by residue. +\end_layout + +\begin_deeper +\begin_layout Description +pdbres If specified, the original residue numbering will be used. +\end_layout + +\begin_layout Description +resrange +\begin_inset space ~ +\end_inset + + Calculate fluctuations for residues in the given range argument. + The residues selected by must be a subset of residues specified + with . + Unselected residues will get a fluctuation of 0.0. +\end_layout + +\end_deeper +\begin_layout Description +bymask Output the average (mass-weighted) fluctuation for all atoms in . +\end_layout + +\begin_layout Description +byatom +\begin_inset space ~ +\end_inset + +(default) Output the fluctuation by atom. +\end_layout + \begin_layout Description [] Frame to begin calculation at (default 1). \end_layout From 63f7ea22a27cfdd364b8b98773c7d3d754bc5f0a Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Wed, 26 Nov 2025 13:21:37 -0500 Subject: [PATCH 12/15] Update manual PDF --- doc/CpptrajManual.pdf | Bin 950568 -> 950376 bytes doc/DocumentChecksums.txt | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/CpptrajManual.pdf b/doc/CpptrajManual.pdf index f10dd3fac57a0da70ab2284fb0e52b620ba7456c..216addd8cb4c156f5e2b438ae93ba3d21c3b1613 100644 GIT binary patch delta 91259 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 delta 91239 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 MB;(>z)m0<=FX^ZeHUIzs diff --git a/doc/DocumentChecksums.txt b/doc/DocumentChecksums.txt index 5d21a6dc7e..9ce1b88448 100644 --- a/doc/DocumentChecksums.txt +++ b/doc/DocumentChecksums.txt @@ -1,3 +1,3 @@ b37726e7a841f6fc695ecd7fb040ffbf CpptrajDevelopmentGuide.lyx -5af47ac2cb73a9c7cd83fc82c1d2f421 cpptraj.lyx +70869c8569e7bd44d1669bc9ba6d68d8 cpptraj.lyx 5d9b5b5ed47a3ded57b6464df99b3585 CpptrajManual.lyx From b6189b361a02f5f53d19dc1184562b257e5212a1 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Wed, 26 Nov 2025 13:36:13 -0500 Subject: [PATCH 13/15] Test resrange arg and detection of different X dimensions --- test/Test_AtomicFluct/RunTest.sh | 7 +++++-- test/Test_AtomicFluct/tz2.byres.dat.save | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 test/Test_AtomicFluct/tz2.byres.dat.save diff --git a/test/Test_AtomicFluct/RunTest.sh b/test/Test_AtomicFluct/RunTest.sh index a1efd09830..464902534a 100755 --- a/test/Test_AtomicFluct/RunTest.sh +++ b/test/Test_AtomicFluct/RunTest.sh @@ -4,7 +4,8 @@ CleanFiles atomic.in fluct.*.dat dpdp.fluct.dat dpdp.adp.dat \ fluct.2.pdb occ.2.pdb scale.2.pdb fluct.1.pdb \ - dpdp.adp.pdb myfluct.adp.dat heavy.adp.pdb + dpdp.adp.pdb myfluct.adp.dat heavy.adp.pdb \ + tz2.byres.dat TESTNAME='Atomic fluctuations tests' Requires netcdf @@ -48,7 +49,9 @@ TOP=../tz2.parm7 cat > $INPUT < Date: Wed, 26 Nov 2025 13:36:35 -0500 Subject: [PATCH 14/15] Protect if no sets calculated --- src/Action_AtomicFluct.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Action_AtomicFluct.cpp b/src/Action_AtomicFluct.cpp index 55290b9a18..08f6e9b110 100644 --- a/src/Action_AtomicFluct.cpp +++ b/src/Action_AtomicFluct.cpp @@ -212,8 +212,8 @@ int Action_AtomicFluct::SyncAction() { // Action_AtomicFluct::Print() void Action_AtomicFluct::Print() { + if (sets_ < 1) return; mprintf(" ATOMICFLUCT: Calculating fluctuations for %i sets.\n",sets_); - double Nsets = (double)sets_; // SumCoords will hold the average: SumCoords_.Divide(Nsets); From 39728e2431482e78748be53f2442bd7836e3f5ee Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Wed, 26 Nov 2025 13:38:01 -0500 Subject: [PATCH 15/15] V6.30.0. Minor version bump for fixed X dimension checking in data output and atomicfluct resrange arg. --- src/Version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Version.h b/src/Version.h index 02534d7d05..9f326f9264 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 "V6.29.19" +#define CPPTRAJ_INTERNAL_VERSION "V6.30.0" /// PYTRAJ relies on this #define CPPTRAJ_VERSION_STRING CPPTRAJ_INTERNAL_VERSION #endif