From ea4beae727040d4792b90c8d1beac4536aa1be7d Mon Sep 17 00:00:00 2001 From: weefuzzy Date: Thu, 10 Mar 2022 21:30:41 +0000 Subject: [PATCH 1/5] Const correct arguments for data object messages; actually const object refs for RT usage --- include/algorithms/public/MLP.hpp | 8 +++---- include/algorithms/public/UMAP.hpp | 24 ++++++++++----------- include/algorithms/util/NNLayer.hpp | 6 +++--- include/clients/nrt/ClientInputChecks.hpp | 4 ++-- include/clients/nrt/DataClient.hpp | 8 +++---- include/clients/nrt/DataSetClient.hpp | 23 +++++++++++--------- include/clients/nrt/DataSetQueryClient.hpp | 6 +++--- include/clients/nrt/GridClient.hpp | 2 +- include/clients/nrt/KDTreeClient.hpp | 21 +++++++++--------- include/clients/nrt/KMeansClient.hpp | 21 +++++++++--------- include/clients/nrt/KNNClassifierClient.hpp | 19 ++++++++-------- include/clients/nrt/KNNRegressorClient.hpp | 17 ++++++++------- include/clients/nrt/LabelSetClient.hpp | 1 + include/clients/nrt/MDSClient.hpp | 3 ++- include/clients/nrt/MLPClassifierClient.hpp | 17 ++++++++------- include/clients/nrt/NormalizeClient.hpp | 21 +++++++++--------- include/clients/nrt/PCAClient.hpp | 13 +++++------ include/clients/nrt/RobustScaleClient.hpp | 17 ++++++++------- include/clients/nrt/StandardizeClient.hpp | 17 ++++++++------- include/clients/nrt/UMAPClient.hpp | 15 +++++++------ 20 files changed, 139 insertions(+), 124 deletions(-) diff --git a/include/algorithms/public/MLP.hpp b/include/algorithms/public/MLP.hpp index 1adb93e6c..4bda843fc 100644 --- a/include/algorithms/public/MLP.hpp +++ b/include/algorithms/public/MLP.hpp @@ -100,7 +100,7 @@ class MLP } void processFrame(RealVectorView in, RealVectorView out, index startLayer, - index endLayer) + index endLayer) const { using namespace _impl; using namespace Eigen; @@ -113,13 +113,13 @@ class MLP out = asFluid(tmpOut); } - void forward(Eigen::Ref in, Eigen::Ref out) + void forward(Eigen::Ref in, Eigen::Ref out) const { forward(in, out, 0, asSigned(mLayers.size())); } void forward(Eigen::Ref in, Eigen::Ref out, - index startLayer, index endLayer) + index startLayer, index endLayer) const { if (startLayer >= asSigned(mLayers.size()) || endLayer > asSigned(mLayers.size())) @@ -137,7 +137,7 @@ class MLP out = output; } - void backward(Eigen::Ref out) + void backward(Eigen::Ref out) { index nRows = out.rows(); ArrayXXd chain = diff --git a/include/algorithms/public/UMAP.hpp b/include/algorithms/public/UMAP.hpp index de143558f..a3e608f66 100644 --- a/include/algorithms/public/UMAP.hpp +++ b/include/algorithms/public/UMAP.hpp @@ -133,7 +133,7 @@ class UMAP return out; } - DataSet transform(DataSet& in, index maxIter = 200, double learningRate = 1.0) + DataSet transform(DataSet& in, index maxIter = 200, double learningRate = 1.0) const { if (!mInitialized) return DataSet(); SparseMatrixXd knnGraph(in.size(), mEmbedding.rows()); @@ -158,7 +158,7 @@ class UMAP } - void transformPoint(RealVectorView in, RealVectorView out) + void transformPoint(RealVectorView in, RealVectorView out) const { if (!mInitialized) return; SparseMatrixXd knnGraph(1, mEmbedding.rows()); @@ -185,7 +185,7 @@ class UMAP private: template - void traverseGraph(const SparseMatrixXd& graph, F func) + void traverseGraph(const SparseMatrixXd& graph, F func) const { for (index i = 0; i < graph.outerSize(); i++) { @@ -204,7 +204,7 @@ class UMAP } ArrayXd findSigma(index k, Ref dists, index maxIter = 64, - double tolerance = 1e-5) + double tolerance = 1e-5) const { using namespace std; double target = log2(k); @@ -242,7 +242,7 @@ class UMAP } void computeHighDimProb(const Ref& dists, const Ref& sigma, - SparseMatrixXd& graph) + SparseMatrixXd& graph) const { traverseGraph(graph, [&](auto it) { it.valueRef() = @@ -263,7 +263,7 @@ class UMAP } void makeGraph(const DataSet& in, index k, SparseMatrixXd& graph, - Ref dists, bool discardFirst) + Ref dists, bool discardFirst) const { graph.reserve(in.size() * k); auto data = in.getData(); @@ -298,7 +298,7 @@ class UMAP } void getGraphIndices(const SparseMatrixXd& graph, Ref rowIndices, - Ref colIndices) + Ref colIndices) const { index p = 0; traverseGraph(graph, [&](auto it) { @@ -309,7 +309,7 @@ class UMAP } void computeEpochsPerSample(const SparseMatrixXd& graph, - Ref epochsPerSample) + Ref epochsPerSample) const { index p = 0; double maxVal = graph.coeffs().maxCoeff(); @@ -321,7 +321,7 @@ class UMAP void optimizeLayout(Ref embedding, Ref reference, Ref embIndices, Ref refIndices, Ref epochsPerSample, bool updateReference, - double learningRate, index maxIter, double gamma = 1.0) + double learningRate, index maxIter, double gamma = 1.0) const { using namespace std; double alpha = learningRate; @@ -385,7 +385,7 @@ class UMAP } ArrayXXd initTransformEmbedding(const SparseMatrixXd& graph, - Ref reference, index N) + Ref reference, index N) const { ArrayXXd embedding = ArrayXXd::Zero(N, reference.cols()); traverseGraph(graph, [&](auto it) { @@ -394,7 +394,7 @@ class UMAP return embedding; } - void normalizeRows(const SparseMatrixXd& graph) + void normalizeRows(const SparseMatrixXd& graph) const { ArrayXd sums = ArrayXd::Zero(graph.innerSize()); traverseGraph(graph, [&](auto it) { sums(it.row()) += it.value(); }); @@ -406,7 +406,7 @@ class UMAP KDTree mTree; index mK; VectorXd mAB; - ArrayXXd mEmbedding; + mutable ArrayXXd mEmbedding; bool mInitialized{false}; }; }; // namespace algorithm diff --git a/include/algorithms/util/NNLayer.hpp b/include/algorithms/util/NNLayer.hpp index 5033b9555..caf8c5a3c 100644 --- a/include/algorithms/util/NNLayer.hpp +++ b/include/algorithms/util/NNLayer.hpp @@ -68,7 +68,7 @@ class NNLayer index outputSize() const { return mWeights.cols(); } - void forward(Eigen::Ref in, Eigen::Ref out) + void forward(Eigen::Ref in, Eigen::Ref out) const { mInput = in; MatrixXd WT = mWeights.transpose(); @@ -114,8 +114,8 @@ class NNLayer MatrixXd mPrevWeightsUpdate; VectorXd mPrevBiasesUpdate; - MatrixXd mInput; - MatrixXd mOutput; + mutable MatrixXd mInput; + mutable MatrixXd mOutput; }; } // namespace algorithm } // namespace fluid diff --git a/include/clients/nrt/ClientInputChecks.hpp b/include/clients/nrt/ClientInputChecks.hpp index 212d67daf..4005fcef9 100644 --- a/include/clients/nrt/ClientInputChecks.hpp +++ b/include/clients/nrt/ClientInputChecks.hpp @@ -31,7 +31,7 @@ class InBufferCheck : public ClientInputCheck { public: InBufferCheck(index size) : mInputSize(size){}; - bool checkInputs(BufferAdaptor* inputPtr) + bool checkInputs(const BufferAdaptor* inputPtr) { if (!inputPtr) { @@ -61,7 +61,7 @@ class InOutBuffersCheck : public InBufferCheck public: using InBufferCheck::InBufferCheck; - bool checkInputs(BufferAdaptor* inputPtr, BufferAdaptor* outputPtr) + bool checkInputs(const BufferAdaptor* inputPtr, BufferAdaptor* outputPtr) { if (!InBufferCheck::checkInputs(inputPtr)) { return false; } if (!outputPtr) diff --git a/include/clients/nrt/DataClient.hpp b/include/clients/nrt/DataClient.hpp index 92be1be1e..60380ef39 100644 --- a/include/clients/nrt/DataClient.hpp +++ b/include/clients/nrt/DataClient.hpp @@ -27,9 +27,9 @@ class DataClient public: using string = std::string; - MessageResult size() { return mAlgorithm.size(); } + MessageResult size() const { return mAlgorithm.size(); } - MessageResult dims() { return mAlgorithm.dims(); } + MessageResult dims() const { return mAlgorithm.dims(); } MessageResult clear() { @@ -80,8 +80,8 @@ class DataClient } } - bool initialized() { return mAlgorithm.initialized(); } - T& algorithm() { return mAlgorithm; } + bool initialized() const { return mAlgorithm.initialized(); } + T const& algorithm() const { return mAlgorithm; } protected: T mAlgorithm; }; diff --git a/include/clients/nrt/DataSetClient.hpp b/include/clients/nrt/DataSetClient.hpp index 520b5546c..21ac51c96 100644 --- a/include/clients/nrt/DataSetClient.hpp +++ b/include/clients/nrt/DataSetClient.hpp @@ -35,6 +35,7 @@ class DataSetClient : public FluidBaseClient, public: using string = std::string; using BufferPtr = std::shared_ptr; + using InputBufferPtr = std::shared_ptr; using DataSet = FluidDataSet; using LabelSet = FluidDataSet; @@ -61,11 +62,11 @@ class DataSetClient : public FluidBaseClient, DataSetClient(ParamSetViewType& p) : mParams(p) {} - MessageResult addPoint(string id, BufferPtr data) + MessageResult addPoint(string id, InputBufferPtr data) { DataSet& dataset = mAlgorithm; if (!data) return Error(NoBuffer); - BufferAdaptor::Access buf(data.get()); + BufferAdaptor::ReadAccess buf(data.get()); if (!buf.exists()) return Error(InvalidBuffer); if (buf.numFrames() == 0) return Error(EmptyBuffer); if (dataset.size() == 0) @@ -101,10 +102,10 @@ class DataSetClient : public FluidBaseClient, } } - MessageResult updatePoint(string id, BufferPtr data) + MessageResult updatePoint(string id, InputBufferPtr data) { if (!data) return Error(NoBuffer); - BufferAdaptor::Access buf(data.get()); + BufferAdaptor::ReadAccess buf(data.get()); if (!buf.exists()) return Error(InvalidBuffer); if (buf.numFrames() < mAlgorithm.dims()) return Error(WrongPointSize); RealVector point(mAlgorithm.dims()); @@ -112,12 +113,12 @@ class DataSetClient : public FluidBaseClient, return mAlgorithm.update(id, point) ? OK() : Error(PointNotFound); } - MessageResult setPoint(string id, BufferPtr data) + MessageResult setPoint(string id, InputBufferPtr data) { if (!data) return Error(NoBuffer); { // restrict buffer lock to this scope in case addPoint is called - BufferAdaptor::Access buf(data.get()); + BufferAdaptor::ReadAccess buf(data.get()); if (!buf.exists()) return Error(InvalidBuffer); if (buf.numFrames() < mAlgorithm.dims()) return Error(WrongPointSize); RealVector point(mAlgorithm.dims()); @@ -133,7 +134,7 @@ class DataSetClient : public FluidBaseClient, return mAlgorithm.remove(id) ? OK() : Error(PointNotFound); } - MessageResult merge(SharedClientRef datasetClient, + MessageResult merge(SharedClientRef datasetClient, bool overwrite) { auto datasetClientPtr = datasetClient.get().lock(); @@ -154,11 +155,11 @@ class DataSetClient : public FluidBaseClient, } MessageResult - fromBuffer(BufferPtr data, bool transpose, - SharedClientRef labels) + fromBuffer(InputBufferPtr data, bool transpose, + SharedClientRef labels) { if (!data) return Error(NoBuffer); - BufferAdaptor::Access buf(data.get()); + BufferAdaptor::ReadAccess buf(data.get()); if (!buf.exists()) return Error(InvalidBuffer); auto bufView = transpose ? buf.allFrames() : buf.allFrames().transpose(); if (auto labelsPtr = labels.get().lock()) @@ -256,6 +257,8 @@ class DataSetClient : public FluidBaseClient, } // namespace dataset using DataSetClientRef = SharedClientRef; +using InputDataSetClientRef = SharedClientRef; + using NRTThreadedDataSetClient = NRTThreadingAdaptor; diff --git a/include/clients/nrt/DataSetQueryClient.hpp b/include/clients/nrt/DataSetQueryClient.hpp index 24d9a6ac9..8a0be59a9 100644 --- a/include/clients/nrt/DataSetQueryClient.hpp +++ b/include/clients/nrt/DataSetQueryClient.hpp @@ -100,7 +100,7 @@ class DataSetQueryClient : public FluidBaseClient, OfflineIn, OfflineOut } - MessageResult transform(DataSetClientRef sourceClient, + MessageResult transform(InputDataSetClientRef sourceClient, DataSetClientRef destClient) { if (mAlgorithm.numColumns() <= 0) return Error("No columns"); @@ -118,8 +118,8 @@ class DataSetQueryClient : public FluidBaseClient, OfflineIn, OfflineOut return OK(); } - MessageResult transformJoin(DataSetClientRef source1Client, - DataSetClientRef source2Client, + MessageResult transformJoin(InputDataSetClientRef source1Client, + InputDataSetClientRef source2Client, DataSetClientRef destClient) { auto src1Ptr = source1Client.get().lock(); diff --git a/include/clients/nrt/GridClient.hpp b/include/clients/nrt/GridClient.hpp index 349f05174..68c838b1e 100644 --- a/include/clients/nrt/GridClient.hpp +++ b/include/clients/nrt/GridClient.hpp @@ -56,7 +56,7 @@ class GridClient : public FluidBaseClient, OfflineIn, OfflineOut, ModelObject GridClient(ParamSetViewType& p) : mParams(p) {} - MessageResult fitTransform(DataSetClientRef sourceClient, + MessageResult fitTransform(InputDataSetClientRef sourceClient, DataSetClientRef destClient) { auto srcPtr = sourceClient.get().lock(); diff --git a/include/clients/nrt/KDTreeClient.hpp b/include/clients/nrt/KDTreeClient.hpp index c93d502ec..6d6136750 100644 --- a/include/clients/nrt/KDTreeClient.hpp +++ b/include/clients/nrt/KDTreeClient.hpp @@ -35,6 +35,7 @@ class KDTreeClient : public FluidBaseClient, public: using string = std::string; using BufferPtr = std::shared_ptr; + using InputBufferPtr = std::shared_ptr; using StringVector = FluidTensor; using ParamDescType = decltype(KDTreeParams); @@ -63,7 +64,7 @@ class KDTreeClient : public FluidBaseClient, return {}; } - MessageResult fit(DataSetClientRef datasetClient) + MessageResult fit(InputDataSetClientRef datasetClient) { mDataSetClient = datasetClient; auto datasetClientPtr = mDataSetClient.get().lock(); @@ -74,7 +75,7 @@ class KDTreeClient : public FluidBaseClient, return OK(); } - MessageResult kNearest(BufferPtr data) const + MessageResult kNearest(InputBufferPtr data) const { index k = get(); if (k > mAlgorithm.size()) return Error(SmallDataSet); @@ -92,7 +93,7 @@ class KDTreeClient : public FluidBaseClient, return result; } - MessageResult kNearestDist(BufferPtr data) const + MessageResult kNearestDist(InputBufferPtr data) const { // TODO: refactor with kNearest index k = get(); @@ -126,22 +127,22 @@ class KDTreeClient : public FluidBaseClient, makeMessage("read", &KDTreeClient::read)); } - DataSetClientRef getDataSet() { return mDataSetClient; } + InputDataSetClientRef getDataSet() const { return mDataSetClient; } - const algorithm::KDTree& algorithm() { return mAlgorithm; } + const algorithm::KDTree& algorithm() const { return mAlgorithm; } private: - DataSetClientRef mDataSetClient; + InputDataSetClientRef mDataSetClient; }; -using KDTreeRef = SharedClientRef; +using KDTreeRef = SharedClientRef; constexpr auto KDTreeQueryParams = defineParameters( KDTreeRef::makeParam("tree", "KDTree"), LongParam("numNeighbours", "Number of Nearest Neighbours", 1), FloatParam("radius", "Maximum distance", 0, Min(0)), - DataSetClientRef::makeParam("dataSet", "DataSet Name"), - BufferParam("inputPointBuffer", "Input Point Buffer"), + InputDataSetClientRef::makeParam("dataSet", "DataSet Name"), + InputBufferParam("inputPointBuffer", "Input Point Buffer"), BufferParam("predictionBuffer", "Prediction Buffer")); class KDTreeQuery : public FluidBaseClient, ControlIn, ControlOut @@ -238,7 +239,7 @@ class KDTreeQuery : public FluidBaseClient, ControlIn, ControlOut private: RealVector mRTBuffer; - DataSetClientRef mDataSetClient; + InputDataSetClientRef mDataSetClient; }; } // namespace kdtree diff --git a/include/clients/nrt/KMeansClient.hpp b/include/clients/nrt/KMeansClient.hpp index cb8a5cfa9..afc105213 100644 --- a/include/clients/nrt/KMeansClient.hpp +++ b/include/clients/nrt/KMeansClient.hpp @@ -36,6 +36,7 @@ class KMeansClient : public FluidBaseClient, public: using string = std::string; using BufferPtr = std::shared_ptr; + using InputBufferPtr = std::shared_ptr; using IndexVector = FluidTensor; using StringVector = FluidTensor; using StringVectorView = FluidTensorView; @@ -68,7 +69,7 @@ class KMeansClient : public FluidBaseClient, return {}; } - MessageResult fit(DataSetClientRef datasetClient) + MessageResult fit(InputDataSetClientRef datasetClient) { index k = get(); index maxIter = get(); @@ -83,7 +84,7 @@ class KMeansClient : public FluidBaseClient, return getCounts(assignments, k); } - MessageResult fitPredict(DataSetClientRef datasetClient, + MessageResult fitPredict(InputDataSetClientRef datasetClient, LabelSetClientRef labelsetClient) { index k = get(); @@ -104,7 +105,7 @@ class KMeansClient : public FluidBaseClient, return getCounts(assignments, k); } - MessageResult predict(DataSetClientRef datasetClient, + MessageResult predict(InputDataSetClientRef datasetClient, LabelSetClientRef labelClient) const { auto dataPtr = datasetClient.get().lock(); @@ -129,7 +130,7 @@ class KMeansClient : public FluidBaseClient, } - MessageResult transform(DataSetClientRef srcClient, + MessageResult transform(InputDataSetClientRef srcClient, DataSetClientRef dstClient) const { auto srcPtr = srcClient.get().lock(); @@ -151,7 +152,7 @@ class KMeansClient : public FluidBaseClient, return OK(); } - MessageResult fitTransform(DataSetClientRef srcClient, + MessageResult fitTransform(InputDataSetClientRef srcClient, DataSetClientRef dstClient) { index k = get(); @@ -171,7 +172,7 @@ class KMeansClient : public FluidBaseClient, return getCounts(assignments, k); } - MessageResult predictPoint(BufferPtr data) const + MessageResult predictPoint(InputBufferPtr data) const { if (!mAlgorithm.initialized()) return Error(NoDataFitted); InBufferCheck bufCheck(mAlgorithm.dims()); @@ -198,7 +199,7 @@ class KMeansClient : public FluidBaseClient, return OK(); } - MessageResult setMeans(DataSetClientRef srcClient) + MessageResult setMeans(InputDataSetClientRef srcClient) { auto srcPtr = srcClient.get().lock(); if (!srcPtr) return Error(NoDataSet); @@ -210,7 +211,7 @@ class KMeansClient : public FluidBaseClient, } - MessageResult transformPoint(BufferPtr in, BufferPtr out) const + MessageResult transformPoint(InputBufferPtr in, BufferPtr out) const { if (!mAlgorithm.initialized()) return Error(NoDataFitted); InBufferCheck bufCheck(mAlgorithm.dims()); @@ -271,11 +272,11 @@ class KMeansClient : public FluidBaseClient, } }; -using KMeansRef = SharedClientRef; +using KMeansRef = SharedClientRef; constexpr auto KMeansQueryParams = defineParameters(KMeansRef::makeParam("kmeans", "Source KMeans model"), - BufferParam("inputPointBuffer", "Input Point Buffer"), + InputBufferParam("inputPointBuffer", "Input Point Buffer"), BufferParam("predictionBuffer", "Prediction Buffer")); class KMeansQuery : public FluidBaseClient, ControlIn, ControlOut diff --git a/include/clients/nrt/KNNClassifierClient.hpp b/include/clients/nrt/KNNClassifierClient.hpp index b2f3dabe8..6b179c4cc 100644 --- a/include/clients/nrt/KNNClassifierClient.hpp +++ b/include/clients/nrt/KNNClassifierClient.hpp @@ -24,8 +24,8 @@ struct KNNClassifierData { algorithm::KDTree tree{0}; FluidDataSet labels{1}; - index size() { return labels.size(); } - index dims() { return tree.dims(); } + index size() const { return labels.size(); } + index dims() const { return tree.dims(); } void clear() { labels = FluidDataSet(1); @@ -68,6 +68,7 @@ class KNNClassifierClient : public FluidBaseClient, public: using string = std::string; using BufferPtr = std::shared_ptr; + using InputBufferPtr = std::shared_ptr; using LabelSet = FluidDataSet; using DataSet = FluidDataSet; using StringVector = FluidTensor; @@ -99,8 +100,8 @@ class KNNClassifierClient : public FluidBaseClient, return {}; } - MessageResult fit(DataSetClientRef datasetClient, - LabelSetClientRef labelsetClient) + MessageResult fit(InputDataSetClientRef datasetClient, + InputLabelSetClientRef labelsetClient) { auto datasetClientPtr = datasetClient.get().lock(); if (!datasetClientPtr) return Error(NoDataSet); @@ -118,7 +119,7 @@ class KNNClassifierClient : public FluidBaseClient, return OK(); } - MessageResult predictPoint(BufferPtr data) const + MessageResult predictPoint(InputBufferPtr data) const { index k = get(); bool weight = get() != 0; @@ -137,7 +138,7 @@ class KNNClassifierClient : public FluidBaseClient, return result; } - MessageResult predict(DataSetClientRef source, + MessageResult predict(InputDataSetClientRef source, LabelSetClientRef dest) const { index k = get(); @@ -185,7 +186,7 @@ class KNNClassifierClient : public FluidBaseClient, makeMessage("read", &KNNClassifierClient::read)); } - index encodeIndex(std::string label) + index encodeIndex(std::string label) const { return mLabelSetEncoder.encodeIndex(label); } @@ -194,13 +195,13 @@ class KNNClassifierClient : public FluidBaseClient, algorithm::LabelSetEncoder mLabelSetEncoder; }; -using KNNClassifierRef = SharedClientRef; +using KNNClassifierRef = SharedClientRef; constexpr auto KNNClassifierQueryParams = defineParameters( KNNClassifierRef::makeParam("model", "Source model"), LongParam("numNeighbours", "Number of Nearest Neighbours", 3, Min(1)), EnumParam("weight", "Weight Neighbours by Distance", 1, "No", "Yes"), - BufferParam("inputPointBuffer", "Input Point Buffer"), + InputBufferParam("inputPointBuffer", "Input Point Buffer"), BufferParam("predictionBuffer", "Prediction Buffer")); class KNNClassifierQuery : public FluidBaseClient, ControlIn, ControlOut diff --git a/include/clients/nrt/KNNRegressorClient.hpp b/include/clients/nrt/KNNRegressorClient.hpp index 360080b5b..014a742d4 100644 --- a/include/clients/nrt/KNNRegressorClient.hpp +++ b/include/clients/nrt/KNNRegressorClient.hpp @@ -22,8 +22,8 @@ struct KNNRegressorData { algorithm::KDTree tree{0}; FluidDataSet target{1}; - index size() { return target.size(); } - index dims() { return tree.dims(); } + index size() const { return target.size(); } + index dims() const { return tree.dims(); } void clear() { tree.clear(); @@ -67,6 +67,7 @@ class KNNRegressorClient : public FluidBaseClient, public: using string = std::string; using BufferPtr = std::shared_ptr; + using InputBufferPtr = std::shared_ptr; using DataSet = FluidDataSet; using StringVector = FluidTensor; @@ -100,8 +101,8 @@ class KNNRegressorClient : public FluidBaseClient, return {}; } - MessageResult fit(DataSetClientRef datasetClient, - DataSetClientRef targetClient) + MessageResult fit(InputDataSetClientRef datasetClient, + InputDataSetClientRef targetClient) { auto datasetClientPtr = datasetClient.get().lock(); if (!datasetClientPtr) return Error(NoDataSet); @@ -118,7 +119,7 @@ class KNNRegressorClient : public FluidBaseClient, return {}; } - MessageResult predictPoint(BufferPtr data) const + MessageResult predictPoint(InputBufferPtr data) const { index k = get(); bool weight = get() != 0; @@ -137,7 +138,7 @@ class KNNRegressorClient : public FluidBaseClient, return result; } - MessageResult predict(DataSetClientRef source, + MessageResult predict(InputDataSetClientRef source, DataSetClientRef dest) const { index k = get(); @@ -185,13 +186,13 @@ class KNNRegressorClient : public FluidBaseClient, } }; -using KNNRegressorRef = SharedClientRef; +using KNNRegressorRef = SharedClientRef; constexpr auto KNNRegressorQueryParams = defineParameters( KNNRegressorRef::makeParam("model", "Source model"), LongParam("numNeighbours", "Number of Nearest Neighbours", 3, Min(1)), EnumParam("weight", "Weight Neighbours by Distance", 1, "No", "Yes"), - BufferParam("inputPointBuffer", "Input Point Buffer"), + InputBufferParam("inputPointBuffer", "Input Point Buffer"), BufferParam("predictionBuffer", "Prediction Buffer")); class KNNRegressorQuery : public FluidBaseClient, ControlIn, ControlOut diff --git a/include/clients/nrt/LabelSetClient.hpp b/include/clients/nrt/LabelSetClient.hpp index 072922214..d398f8964 100644 --- a/include/clients/nrt/LabelSetClient.hpp +++ b/include/clients/nrt/LabelSetClient.hpp @@ -25,6 +25,7 @@ namespace labelset { //Note that the shared type alias is declared after the Client implementation in most other cases using LabelSetClientRef = SharedClientRef; +using InputLabelSetClientRef = SharedClientRef; namespace labelset { diff --git a/include/clients/nrt/MDSClient.hpp b/include/clients/nrt/MDSClient.hpp index d5d1d1edb..2df48f291 100644 --- a/include/clients/nrt/MDSClient.hpp +++ b/include/clients/nrt/MDSClient.hpp @@ -32,6 +32,7 @@ class MDSClient : public FluidBaseClient, OfflineIn, OfflineOut, ModelObject public: using string = std::string; using BufferPtr = std::shared_ptr; + using InputBufferPtr = std::shared_ptr; using StringVector = FluidTensor; template @@ -57,7 +58,7 @@ class MDSClient : public FluidBaseClient, OfflineIn, OfflineOut, ModelObject MDSClient(ParamSetViewType& p) : mParams(p) {} - MessageResult fitTransform(DataSetClientRef sourceClient, + MessageResult fitTransform(InputDataSetClientRef sourceClient, DataSetClientRef destClient) { index k = get(); diff --git a/include/clients/nrt/MLPClassifierClient.hpp b/include/clients/nrt/MLPClassifierClient.hpp index 402ebddcd..9d42d6818 100644 --- a/include/clients/nrt/MLPClassifierClient.hpp +++ b/include/clients/nrt/MLPClassifierClient.hpp @@ -26,8 +26,8 @@ struct MLPClassifierData { algorithm::MLP mlp; algorithm::LabelSetEncoder encoder; - index size() { return mlp.size(); } - index dims() { return mlp.dims(); } + index size() const { return mlp.size(); } + index dims() const { return mlp.dims(); } void clear() { mlp.clear(); @@ -88,6 +88,7 @@ class MLPClassifierClient : public FluidBaseClient, public: using string = std::string; using BufferPtr = std::shared_ptr; + using InputBufferPtr = std::shared_ptr; using IndexVector = FluidTensor; using StringVector = FluidTensor; using DataSet = FluidDataSet; @@ -135,7 +136,7 @@ class MLPClassifierClient : public FluidBaseClient, return {result.status(), result.message()}; } - MessageResult fit(DataSetClientRef source, LabelSetClientRef target) + MessageResult fit(InputDataSetClientRef source, InputLabelSetClientRef target) { auto sourceClientPtr = source.get().lock(); if (!sourceClientPtr) return Error(NoDataSet); @@ -181,7 +182,7 @@ class MLPClassifierClient : public FluidBaseClient, return error; } - MessageResult predict(DataSetClientRef srcClient, + MessageResult predict(InputDataSetClientRef srcClient, LabelSetClientRef destClient) { auto srcPtr = srcClient.get().lock(); @@ -207,7 +208,7 @@ class MLPClassifierClient : public FluidBaseClient, return OK(); } - MessageResult predictPoint(BufferPtr in) + MessageResult predictPoint(InputBufferPtr in) { if (!in) return Error(NoBuffer); BufferAdaptor::Access inBuf(in.get()); @@ -262,11 +263,11 @@ class MLPClassifierClient : public FluidBaseClient, }; -using MLPClassifierRef = SharedClientRef; +using MLPClassifierRef = SharedClientRef; constexpr auto MLPClassifierQueryParams = defineParameters(MLPClassifierRef::makeParam("model", "Source Model"), - BufferParam("inputPointBuffer", "Input Point Buffer"), + InputBufferParam("inputPointBuffer", "Input Point Buffer"), BufferParam("predictionBuffer", "Prediction Buffer")); class MLPClassifierQuery : public FluidBaseClient, ControlIn, ControlOut @@ -311,7 +312,7 @@ class MLPClassifierQuery : public FluidBaseClient, ControlIn, ControlOut // report error? return; } - MLPClassifierData& algorithm = mlpPtr->algorithm(); + MLPClassifierData const& algorithm = mlpPtr->algorithm(); if (!algorithm.mlp.trained()) return; index dims = algorithm.mlp.dims(); diff --git a/include/clients/nrt/NormalizeClient.hpp b/include/clients/nrt/NormalizeClient.hpp index 0a1e1ee6a..4d56e8ba8 100644 --- a/include/clients/nrt/NormalizeClient.hpp +++ b/include/clients/nrt/NormalizeClient.hpp @@ -35,6 +35,7 @@ class NormalizeClient : public FluidBaseClient, public: using string = std::string; using BufferPtr = std::shared_ptr; + using InputBufferPtr = std::shared_ptr; using StringVector = FluidTensor; using ParamDescType = decltype(NormalizeParams); @@ -60,7 +61,7 @@ class NormalizeClient : public FluidBaseClient, return {}; } - MessageResult fit(DataSetClientRef datasetClient) + MessageResult fit(InputDataSetClientRef datasetClient) { auto weakPtr = datasetClient.get(); if (auto datasetClientPtr = weakPtr.lock()) @@ -75,13 +76,13 @@ class NormalizeClient : public FluidBaseClient, } return {}; } - MessageResult transform(DataSetClientRef sourceClient, + MessageResult transform(InputDataSetClientRef sourceClient, DataSetClientRef destClient) { return _transform(sourceClient, destClient, get() == 1); } - MessageResult fitTransform(DataSetClientRef sourceClient, + MessageResult fitTransform(InputDataSetClientRef sourceClient, DataSetClientRef destClient) { auto result = fit(sourceClient); @@ -90,7 +91,7 @@ class NormalizeClient : public FluidBaseClient, return result; } - MessageResult transformPoint(BufferPtr in, BufferPtr out) + MessageResult transformPoint(InputBufferPtr in, BufferPtr out) { if (!mAlgorithm.initialized()) return Error(NoDataFitted); InOutBuffersCheck bufCheck(mAlgorithm.dims()); @@ -127,7 +128,7 @@ class NormalizeClient : public FluidBaseClient, } private: - MessageResult _transform(DataSetClientRef sourceClient, + MessageResult _transform(InputDataSetClientRef sourceClient, DataSetClientRef destClient, bool invert) { using namespace std; @@ -154,14 +155,14 @@ class NormalizeClient : public FluidBaseClient, } }; -using NormalizeRef = SharedClientRef; +using NormalizeRef = SharedClientRef; constexpr auto NormalizeQueryParams = defineParameters( NormalizeRef::makeParam("model", "Source Model"), FloatParam("min", "Minimum Value", 0.0), FloatParam("max", "Maximum Value", 1.0), EnumParam("invert", "Inverse Transform", 0, "False", "True"), - BufferParam("inputPointBuffer", "Input Point Buffer"), + InputBufferParam("inputPointBuffer", "Input Point Buffer"), BufferParam("predictionBuffer", "Prediction Buffer")); class NormalizeQuery : public FluidBaseClient, ControlIn, ControlOut @@ -207,7 +208,7 @@ class NormalizeQuery : public FluidBaseClient, ControlIn, ControlOut // report error? return; } - algorithm::Normalization& algorithm = normPtr->algorithm(); + algorithm::Normalization const& algorithm = normPtr->algorithm(); if (!algorithm.initialized()) return; InOutBuffersCheck bufCheck(algorithm.dims()); if (!bufCheck.checkInputs(get().get(), @@ -219,8 +220,8 @@ class NormalizeQuery : public FluidBaseClient, ControlIn, ControlOut RealVector dest(algorithm.dims()); src = BufferAdaptor::ReadAccess(get().get()) .samps(0, algorithm.dims(), 0); - algorithm.setMin(get()); - algorithm.setMax(get()); +// algorithm.setMin(get()); +// algorithm.setMax(get()); algorithm.processFrame(src, dest, get() == 1); outBuf.samps(0, algorithm.dims(), 0) = dest; } diff --git a/include/clients/nrt/PCAClient.hpp b/include/clients/nrt/PCAClient.hpp index dd215f4b4..3af2f6bc8 100644 --- a/include/clients/nrt/PCAClient.hpp +++ b/include/clients/nrt/PCAClient.hpp @@ -32,6 +32,7 @@ class PCAClient : public FluidBaseClient, public: using string = std::string; using BufferPtr = std::shared_ptr; + using InputBufferPtr = std::shared_ptr; using StringVector = FluidTensor; using ParamDescType = decltype(PCAParams); @@ -57,7 +58,7 @@ class PCAClient : public FluidBaseClient, return{}; } - MessageResult fit(DataSetClientRef datasetClient) + MessageResult fit(InputDataSetClientRef datasetClient) { auto datasetClientPtr = datasetClient.get().lock(); if (!datasetClientPtr) return Error(NoDataSet); @@ -67,7 +68,7 @@ class PCAClient : public FluidBaseClient, return OK(); } - MessageResult fitTransform(DataSetClientRef sourceClient, + MessageResult fitTransform(InputDataSetClientRef sourceClient, DataSetClientRef destClient) { auto fitResult = fit(sourceClient); @@ -77,7 +78,7 @@ class PCAClient : public FluidBaseClient, return result; } - MessageResult transform(DataSetClientRef sourceClient, + MessageResult transform(InputDataSetClientRef sourceClient, DataSetClientRef destClient) const { using namespace std; @@ -109,7 +110,7 @@ class PCAClient : public FluidBaseClient, return result; } - MessageResult transformPoint(BufferPtr in, BufferPtr out) const + MessageResult transformPoint(InputBufferPtr in, BufferPtr out) const { index k = get(); if (k <= 0) return Error(SmallDim); @@ -146,12 +147,12 @@ class PCAClient : public FluidBaseClient, } }; -using PCARef = SharedClientRef; +using PCARef = SharedClientRef; constexpr auto PCAQueryParams = defineParameters( PCARef::makeParam("model", "Source Model"), LongParam("numDimensions", "Target Number of Dimensions", 2, Min(1)), - BufferParam("inputPointBuffer", "Input Point Buffer"), + InputBufferParam("inputPointBuffer", "Input Point Buffer"), BufferParam("predictionBuffer", "Prediction Buffer")); class PCAQuery : public FluidBaseClient, ControlIn, ControlOut diff --git a/include/clients/nrt/RobustScaleClient.hpp b/include/clients/nrt/RobustScaleClient.hpp index c3a51ac16..db179d5ee 100644 --- a/include/clients/nrt/RobustScaleClient.hpp +++ b/include/clients/nrt/RobustScaleClient.hpp @@ -36,6 +36,7 @@ class RobustScaleClient : public FluidBaseClient, public: using string = std::string; using BufferPtr = std::shared_ptr; + using InputBufferPtr = std::shared_ptr; using StringVector = FluidTensor; using ParamDescType = decltype(RobustScaleParams); @@ -61,7 +62,7 @@ class RobustScaleClient : public FluidBaseClient, return{}; } - MessageResult fit(DataSetClientRef datasetClient) + MessageResult fit(InputDataSetClientRef datasetClient) { auto weakPtr = datasetClient.get(); if (auto datasetClientPtr = weakPtr.lock()) @@ -76,13 +77,13 @@ class RobustScaleClient : public FluidBaseClient, } return {}; } - MessageResult transform(DataSetClientRef sourceClient, + MessageResult transform(InputDataSetClientRef sourceClient, DataSetClientRef destClient) { return _transform(sourceClient, destClient, get() == 1); } - MessageResult fitTransform(DataSetClientRef sourceClient, + MessageResult fitTransform(InputDataSetClientRef sourceClient, DataSetClientRef destClient) { auto result = fit(sourceClient); @@ -91,7 +92,7 @@ class RobustScaleClient : public FluidBaseClient, return result; } - MessageResult transformPoint(BufferPtr in, BufferPtr out) + MessageResult transformPoint(InputBufferPtr in, BufferPtr out) { if (!mAlgorithm.initialized()) return Error(NoDataFitted); InOutBuffersCheck bufCheck(mAlgorithm.dims()); @@ -126,7 +127,7 @@ class RobustScaleClient : public FluidBaseClient, } private: - MessageResult _transform(DataSetClientRef sourceClient, + MessageResult _transform(InputDataSetClientRef sourceClient, DataSetClientRef destClient, bool invert) { using namespace std; @@ -151,12 +152,12 @@ class RobustScaleClient : public FluidBaseClient, } }; -using RobustScaleRef = SharedClientRef; +using RobustScaleRef = SharedClientRef; constexpr auto RobustScaleQueryParams = defineParameters( RobustScaleRef::makeParam("model", "Source Model"), EnumParam("invert", "Inverse Transform", 0, "False", "True"), - BufferParam("inputPointBuffer", "Input Point Buffer"), + InputBufferParam("inputPointBuffer", "Input Point Buffer"), BufferParam("predictionBuffer", "Prediction Buffer")); class RobustScaleQuery : public FluidBaseClient, ControlIn, ControlOut @@ -205,7 +206,7 @@ class RobustScaleQuery : public FluidBaseClient, ControlIn, ControlOut // report error? return; } - algorithm::RobustScaling& algorithm = robustPtr->algorithm(); + algorithm::RobustScaling const& algorithm = robustPtr->algorithm(); if (!algorithm.initialized()) return; InOutBuffersCheck bufCheck(algorithm.dims()); if (!bufCheck.checkInputs(get().get(), diff --git a/include/clients/nrt/StandardizeClient.hpp b/include/clients/nrt/StandardizeClient.hpp index 798570d26..8efd4fd24 100644 --- a/include/clients/nrt/StandardizeClient.hpp +++ b/include/clients/nrt/StandardizeClient.hpp @@ -33,6 +33,7 @@ class StandardizeClient : public FluidBaseClient, public: using string = std::string; using BufferPtr = std::shared_ptr; + using InputBufferPtr = std::shared_ptr; using StringVector = FluidTensor; template @@ -58,7 +59,7 @@ class StandardizeClient : public FluidBaseClient, StandardizeClient(ParamSetViewType& p) : mParams(p) {} - MessageResult fit(DataSetClientRef datasetClient) + MessageResult fit(InputDataSetClientRef datasetClient) { auto weakPtr = datasetClient.get(); if (auto datasetClientPtr = weakPtr.lock()) @@ -74,13 +75,13 @@ class StandardizeClient : public FluidBaseClient, return {}; } - MessageResult transform(DataSetClientRef sourceClient, + MessageResult transform(InputDataSetClientRef sourceClient, DataSetClientRef destClient) const { return _transform(sourceClient, destClient, get() == 1); } - MessageResult transformPoint(BufferPtr in, BufferPtr out) const + MessageResult transformPoint(InputBufferPtr in, BufferPtr out) const { if (!mAlgorithm.initialized()) return Error(NoDataFitted); InOutBuffersCheck bufCheck(mAlgorithm.dims()); @@ -98,7 +99,7 @@ class StandardizeClient : public FluidBaseClient, return OK(); } - MessageResult fitTransform(DataSetClientRef sourceClient, + MessageResult fitTransform(InputDataSetClientRef sourceClient, DataSetClientRef destClient) { auto result = fit(sourceClient); @@ -124,7 +125,7 @@ class StandardizeClient : public FluidBaseClient, } private: - MessageResult _transform(DataSetClientRef sourceClient, + MessageResult _transform(InputDataSetClientRef sourceClient, DataSetClientRef destClient, bool invert) const { using namespace std; @@ -149,12 +150,12 @@ class StandardizeClient : public FluidBaseClient, } }; -using StandardizeRef = SharedClientRef; +using StandardizeRef = SharedClientRef; constexpr auto StandardizeQueryParams = defineParameters( StandardizeRef::makeParam("model", "Source Model"), EnumParam("invert", "Inverse Transform", 0, "False", "True"), - BufferParam("inputPointBuffer", "Input Point Buffer"), + InputBufferParam("inputPointBuffer", "Input Point Buffer"), BufferParam("predictionBuffer", "Prediction Buffer")); class StandardizeQuery : public FluidBaseClient, ControlIn, ControlOut @@ -200,7 +201,7 @@ class StandardizeQuery : public FluidBaseClient, ControlIn, ControlOut return; } - algorithm::Standardization& algorithm = stdPtr->algorithm(); + algorithm::Standardization const& algorithm = stdPtr->algorithm(); if (!algorithm.initialized()) return; InOutBuffersCheck bufCheck(algorithm.dims()); diff --git a/include/clients/nrt/UMAPClient.hpp b/include/clients/nrt/UMAPClient.hpp index 739845442..1157a8e15 100644 --- a/include/clients/nrt/UMAPClient.hpp +++ b/include/clients/nrt/UMAPClient.hpp @@ -44,6 +44,7 @@ class UMAPClient : public FluidBaseClient, public: using string = std::string; using BufferPtr = std::shared_ptr; + using InputBufferPtr = std::shared_ptr; using StringVector = FluidTensor; using ParamDescType = decltype(UMAPParams); @@ -69,7 +70,7 @@ class UMAPClient : public FluidBaseClient, return{}; } - MessageResult fitTransform(DataSetClientRef sourceClient, + MessageResult fitTransform(InputDataSetClientRef sourceClient, DataSetClientRef destClient) { auto srcPtr = sourceClient.get().lock(); @@ -88,7 +89,7 @@ class UMAPClient : public FluidBaseClient, return OK(); } - MessageResult fit(DataSetClientRef sourceClient) + MessageResult fit(InputDataSetClientRef sourceClient) { auto srcPtr = sourceClient.get().lock(); if (!srcPtr) return Error(NoDataSet); @@ -104,7 +105,7 @@ class UMAPClient : public FluidBaseClient, return OK(); } - MessageResult transform(DataSetClientRef sourceClient, + MessageResult transform(InputDataSetClientRef sourceClient, DataSetClientRef destClient) { auto srcPtr = sourceClient.get().lock(); @@ -124,7 +125,7 @@ class UMAPClient : public FluidBaseClient, return OK(); } - MessageResult transformPoint(BufferPtr in, BufferPtr out) + MessageResult transformPoint(InputBufferPtr in, BufferPtr out) { index inSize = mAlgorithm.inputDims(); index outSize = mAlgorithm.dims(); @@ -162,11 +163,11 @@ class UMAPClient : public FluidBaseClient, } }; -using UMAPRef = SharedClientRef; +using UMAPRef = SharedClientRef; constexpr auto UMAPQueryParams = defineParameters(UMAPRef::makeParam("model", "Source Model"), - BufferParam("inputPointBuffer", "Input Point Buffer"), + InputBufferParam("inputPointBuffer", "Input Point Buffer"), BufferParam("predictionBuffer", "Prediction Buffer")); class UMAPQuery : public FluidBaseClient, ControlIn, ControlOut @@ -208,7 +209,7 @@ class UMAPQuery : public FluidBaseClient, ControlIn, ControlOut // report error? return; } - algorithm::UMAP& algorithm = UMAPPtr->algorithm(); + algorithm::UMAP const& algorithm = UMAPPtr->algorithm(); if (!algorithm.initialized()) return; index inSize = algorithm.inputDims(); index outSize = algorithm.dims(); From a26bcc421c44344c8e7f2bf7373a7aad965b1538 Mon Sep 17 00:00:00 2001 From: weefuzzy Date: Thu, 10 Mar 2022 21:47:07 +0000 Subject: [PATCH 2/5] MLP const update --- include/clients/nrt/MLPRegressorClient.hpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/include/clients/nrt/MLPRegressorClient.hpp b/include/clients/nrt/MLPRegressorClient.hpp index 02a59d4e8..3ac3bbee3 100644 --- a/include/clients/nrt/MLPRegressorClient.hpp +++ b/include/clients/nrt/MLPRegressorClient.hpp @@ -61,6 +61,7 @@ class MLPRegressorClient : public FluidBaseClient, public: using string = std::string; using BufferPtr = std::shared_ptr; + using InputBufferPtr = std::shared_ptr; using IndexVector = FluidTensor; using StringVector = FluidTensor; using DataSet = FluidDataSet; @@ -93,7 +94,8 @@ class MLPRegressorClient : public FluidBaseClient, return {}; } - MessageResult fit(DataSetClientRef source, DataSetClientRef target) + MessageResult fit(InputDataSetClientRef source, + InputDataSetClientRef target) { auto sourceClientPtr = source.get().lock(); if (!sourceClientPtr) return Error(NoDataSet); @@ -130,8 +132,8 @@ class MLPRegressorClient : public FluidBaseClient, return error; } - MessageResult predict(DataSetClientRef srcClient, - DataSetClientRef destClient) + MessageResult predict(InputDataSetClientRef srcClient, + DataSetClientRef destClient) { index inputTap = get(); index outputTap = get(); @@ -160,7 +162,7 @@ class MLPRegressorClient : public FluidBaseClient, return OK(); } - MessageResult predictPoint(BufferPtr in, BufferPtr out) + MessageResult predictPoint(InputBufferPtr in, BufferPtr out) { index inputTap = get(); index outputTap = get(); @@ -174,7 +176,7 @@ class MLPRegressorClient : public FluidBaseClient, index outputSize = mAlgorithm.outputSize(outputTap); if (!in || !out) return Error(NoBuffer); - BufferAdaptor::Access inBuf(in.get()); + BufferAdaptor::ReadAccess inBuf(in.get()); BufferAdaptor::Access outBuf(out.get()); if (!inBuf.exists()) return Error(InvalidBuffer); if (!outBuf.exists()) return Error(InvalidBuffer); @@ -245,13 +247,13 @@ class MLPRegressorClient : public FluidBaseClient, } }; -using MLPRegressorRef = SharedClientRef; +using MLPRegressorRef = SharedClientRef; constexpr auto MLPRegressorQueryParams = defineParameters(MLPRegressorRef::makeParam("model", "Source Model"), LongParam("tapIn", "Input Tap Index", 0, Min(0)), LongParam("tapOut", "Output Tap Index", -1, Min(-1)), - BufferParam("inputPointBuffer", "Input Point Buffer"), + InputBufferParam("inputPointBuffer", "Input Point Buffer"), BufferParam("predictionBuffer", "Prediction Buffer")); class MLPRegressorQuery : public FluidBaseClient, ControlIn, ControlOut @@ -297,7 +299,7 @@ class MLPRegressorQuery : public FluidBaseClient, ControlIn, ControlOut return; } - algorithm::MLP& algorithm = MLPRef->algorithm(); + algorithm::MLP const& algorithm = MLPRef->algorithm(); if (!algorithm.trained()) return; index inputTap = get(); From 4e654250f8d6fe914ab51459a594662ad38ceff2 Mon Sep 17 00:00:00 2001 From: weefuzzy Date: Tue, 15 Mar 2022 08:41:01 +0000 Subject: [PATCH 3/5] SharedClient const updates --- include/clients/common/SharedClientUtils.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/clients/common/SharedClientUtils.hpp b/include/clients/common/SharedClientUtils.hpp index 531b20d62..9c320bcbd 100644 --- a/include/clients/common/SharedClientUtils.hpp +++ b/include/clients/common/SharedClientUtils.hpp @@ -27,9 +27,9 @@ class SharedClientRef SharedClientRef() {} SharedClientRef(const char* name) : mName{name} {} - WeakPointer get() { return {SharedType::lookup(mName)}; } + WeakPointer get() const { return {SharedType::lookup(mName)}; } void set(const char* name) { mName = std::string(name); } - const char* name() { return mName.c_str(); } + const char* name() const { return mName.c_str(); } // Supporting machinery for making new parameter types From da8b64fcf64a1e3318ff7b60b813f2906db6e92a Mon Sep 17 00:00:00 2001 From: weefuzzy Date: Tue, 15 Mar 2022 11:37:33 +0000 Subject: [PATCH 4/5] workflow: Disable parallel test runner and turn up verbosity --- .github/workflows/flucoma-core-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/flucoma-core-ci.yml b/.github/workflows/flucoma-core-ci.yml index d56dda8ef..897723218 100644 --- a/.github/workflows/flucoma-core-ci.yml +++ b/.github/workflows/flucoma-core-ci.yml @@ -35,5 +35,5 @@ jobs: - name: Test working-directory: ${{github.workspace}}/build - run: ctest -C ${{env.BUILD_TYPE}} -j3 + run: ctest -C ${{env.BUILD_TYPE}} --output-on-failure From ff6c7f34793efea1b72199882877bcb4ffaee8a6 Mon Sep 17 00:00:00 2001 From: weefuzzy Date: Tue, 15 Mar 2022 12:01:30 +0000 Subject: [PATCH 5/5] remove std::cout access from segfaulting test (just in case) --- tests/data/TestFluidTensorSupport.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/data/TestFluidTensorSupport.cpp b/tests/data/TestFluidTensorSupport.cpp index e6ef3aae2..bb7ba6513 100644 --- a/tests/data/TestFluidTensorSupport.cpp +++ b/tests/data/TestFluidTensorSupport.cpp @@ -118,8 +118,7 @@ TEST_CASE("FluidTensorSlice operator() maps indices back to flat layout","[Fluid SECTION("3D"){ FluidTensorSlice<3> x{2,9,3}; - for(auto& s:x.strides) std::cout << s <<','; - std::cout <