From be6c1b96c3102f59429069f10c33aa4814992e74 Mon Sep 17 00:00:00 2001 From: Michael Jackson Date: Fri, 9 Feb 2024 10:01:23 -0500 Subject: [PATCH] ENH: ReadCSVFilter and TriangleCentroidFilter improvements (#852) Signed-off-by: Michael Jackson --- .../Filters/Algorithms/TriangleCentroid.cpp | 6 ++--- .../SimplnxCore/Filters/ReadCSVFileFilter.cpp | 25 +++++++++++++------ .../Filters/TriangleCentroidFilter.cpp | 2 +- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/Plugins/SimplnxCore/src/SimplnxCore/Filters/Algorithms/TriangleCentroid.cpp b/src/Plugins/SimplnxCore/src/SimplnxCore/Filters/Algorithms/TriangleCentroid.cpp index 6735812e92..0a668fcf73 100644 --- a/src/Plugins/SimplnxCore/src/SimplnxCore/Filters/Algorithms/TriangleCentroid.cpp +++ b/src/Plugins/SimplnxCore/src/SimplnxCore/Filters/Algorithms/TriangleCentroid.cpp @@ -19,7 +19,7 @@ namespace class CalculateCentroidsImpl { public: - CalculateCentroidsImpl(const TriangleGeom* triangleGeom, Float32Array* centroids, const std::atomic_bool& shouldCancel) + CalculateCentroidsImpl(const TriangleGeom* triangleGeom, Float64Array* centroids, const std::atomic_bool& shouldCancel) : m_TriangleGeom(triangleGeom) , m_Centroids(centroids) , m_ShouldCancel(shouldCancel) @@ -52,7 +52,7 @@ class CalculateCentroidsImpl private: const TriangleGeom* m_TriangleGeom = nullptr; - Float32Array* m_Centroids = nullptr; + Float64Array* m_Centroids = nullptr; const std::atomic_bool& m_ShouldCancel; }; } // namespace @@ -83,7 +83,7 @@ Result<> TriangleCentroid::operator()() const AttributeMatrix& faceAttributeMatrix = triangleGeom->getFaceAttributeMatrixRef(); const DataPath pCentroidsPath = m_InputValues->TriangleGeometryDataPath.createChildPath(faceAttributeMatrix.getName()).createChildPath(m_InputValues->CentroidsArrayName); - auto* centroidsArray = m_DataStructure.getDataAs(pCentroidsPath); + auto* centroidsArray = m_DataStructure.getDataAs(pCentroidsPath); // Parallel algorithm to calculate the centroids ParallelDataAlgorithm dataAlg; diff --git a/src/Plugins/SimplnxCore/src/SimplnxCore/Filters/ReadCSVFileFilter.cpp b/src/Plugins/SimplnxCore/src/SimplnxCore/Filters/ReadCSVFileFilter.cpp index 7054ff6721..dae6d62c91 100644 --- a/src/Plugins/SimplnxCore/src/SimplnxCore/Filters/ReadCSVFileFilter.cpp +++ b/src/Plugins/SimplnxCore/src/SimplnxCore/Filters/ReadCSVFileFilter.cpp @@ -429,17 +429,26 @@ IFilter::PreflightResult ReadCSVFileFilter::preflightImpl(const DataStructure& d s_HeaderCache[s_InstanceId].FilePath = readCSVData.inputFilePath; - usize lineCount = 0; - while(!in.eof()) + // usize lineCount = 0; + usize lineCount = std::count_if(std::istreambuf_iterator{in}, {}, [](char c) { return c == '\n'; }); + + if(headerMode == ReadCSVData::HeaderMode::LINE) { - std::string line; - std::getline(in, line); - lineCount++; - if(headerMode == ReadCSVData::HeaderMode::LINE && lineCount == readCSVData.headersLine) + in.seekg(0); // Rewind back to the beginning. + usize currentLine = 0; + while(!in.eof()) { - s_HeaderCache[s_InstanceId].Headers = line; - s_HeaderCache[s_InstanceId].HeadersLine = readCSVData.headersLine; + std::string line; + std::getline(in, line); + currentLine++; + + if(currentLine == readCSVData.headersLine) + { + s_HeaderCache[s_InstanceId].Headers = line; + s_HeaderCache[s_InstanceId].HeadersLine = readCSVData.headersLine; + break; + } } } diff --git a/src/Plugins/SimplnxCore/src/SimplnxCore/Filters/TriangleCentroidFilter.cpp b/src/Plugins/SimplnxCore/src/SimplnxCore/Filters/TriangleCentroidFilter.cpp index 9b770df050..a55a54cad4 100644 --- a/src/Plugins/SimplnxCore/src/SimplnxCore/Filters/TriangleCentroidFilter.cpp +++ b/src/Plugins/SimplnxCore/src/SimplnxCore/Filters/TriangleCentroidFilter.cpp @@ -95,7 +95,7 @@ IFilter::PreflightResult TriangleCentroidFilter::preflightImpl(const DataStructu { DataPath createArrayDataPath = pTriangleGeometryDataPath.createChildPath(faceAttributeMatrix->getName()).createChildPath(pCentroidsArrayName); // Create the face areas DataArray Action and store it into the resultOutputActions - auto createArrayAction = std::make_unique(nx::core::DataType::float32, std::vector{triangleGeom->getNumberOfFaces()}, std::vector{3}, createArrayDataPath); + auto createArrayAction = std::make_unique(nx::core::DataType::float64, std::vector{triangleGeom->getNumberOfFaces()}, std::vector{3}, createArrayDataPath); resultOutputActions.value().appendAction(std::move(createArrayAction)); }