From db5793e121c69ca737a37bf81f2faa48ef659874 Mon Sep 17 00:00:00 2001 From: Michael Jackson Date: Tue, 9 Dec 2025 14:38:49 -0500 Subject: [PATCH 1/6] REV: ComputeGroupingDensity filter review --- .../Algorithms/ComputeGroupingDensity.cpp | 118 ++++++++++-------- .../Algorithms/GroupMicroTextureRegions.cpp | 8 +- .../Filters/ComputeGroupingDensityFilter.cpp | 64 +++++++--- 3 files changed, 115 insertions(+), 75 deletions(-) diff --git a/src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.cpp b/src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.cpp index 31e20a2..35c7767 100644 --- a/src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.cpp +++ b/src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.cpp @@ -11,8 +11,8 @@ namespace template struct FindDensitySpecializations { - static inline constexpr bool UsingNonContiguousNeighbors = UseNonContiguousNeighbors; - static inline constexpr bool FindingCheckedFeatures = FindCheckedFeatures; + static constexpr bool UsingNonContiguousNeighbors = UseNonContiguousNeighbors; + static constexpr bool FindingCheckedFeatures = FindCheckedFeatures; }; template > @@ -25,7 +25,7 @@ class FindDensityGrouping , m_MessageHandler(mesgHandler) , m_ParentIds(parentIds) , m_ParentVolumes(parentVolumes) - , m_Volumes(volumes) + , m_FeatureVolumes(volumes) , m_ContiguousNL(contiguousNL) , m_GroupingDensities(groupingDensities) , m_NonContiguousNL(nonContiguousNL) @@ -41,14 +41,16 @@ class FindDensityGrouping Result<> operator()() { - const auto& parentIds = m_ParentIds.getDataStoreRef(); + // This is feature data, from 2 different Feature Attribute Matrix + const auto& featureParentIds = m_ParentIds.getDataStoreRef(); const auto& parentVolumes = m_ParentVolumes.getDataStoreRef(); - const auto& volumes = m_Volumes.getDataStoreRef(); + const auto& featureVolumes = m_FeatureVolumes.getDataStoreRef(); - auto& checkedFeatures = m_CheckedFeatures.getDataStoreRef(); - auto& groupingDensities = m_GroupingDensities.getDataStoreRef(); + // These are output **Feature** level data arrays + auto& outCheckedFeatures = m_CheckedFeatures.getDataStoreRef(); + auto& outGroupingDensities = m_GroupingDensities.getDataStoreRef(); - usize numFeatures = volumes.getNumberOfTuples(); + usize numFeatures = featureVolumes.getNumberOfTuples(); usize numParents = parentVolumes.getNumberOfTuples(); int kMax = 1; @@ -57,11 +59,12 @@ class FindDensityGrouping kMax = 2; } - int32 numNeighbors, numNeighborhoods, numCurNeighborList, neigh; - float32 totalCheckVolume, curParentVolume; - std::set totalCheckList = {}; + int32 numNeighbors = 0, numNeighborhoods = 0, numCurNeighborList = 0, neigh = 0; + float32 totalFeatureCheckVolume = 0.0f; + float32 curParentVolume = 0.0f; + std::set totalFeatureCheckList = {}; - std::vector checkedFeatureVolumes(1, 0.0f); + std::vector checkedFeatureVolumes = {0.0f}; if constexpr(FindDensitySpecializations::FindingCheckedFeatures) { // Default value-initialized to zeroes: https://en.cppreference.com/w/cpp/named_req/DefaultInsertable @@ -70,36 +73,42 @@ class FindDensityGrouping MessageHelper messageHelper(m_MessageHandler); ThrottledMessenger throttledMessenger = messageHelper.createThrottledMessenger(); - for(usize parentIdx = 1; parentIdx < numParents; parentIdx++) + // Start the Parent Outer Loop + for(usize currentParentId = 1; currentParentId < numParents; currentParentId++) { - throttledMessenger.sendThrottledMessage([&]() { return fmt::format("[{}%]", CalculatePercentComplete(parentIdx, numParents)); }); + throttledMessenger.sendThrottledMessage([&]() { return fmt::format("[{}%]", CalculatePercentComplete(currentParentId, numParents)); }); if(m_ShouldCancel) { return {}; } - for(usize j = 1; j < numFeatures; j++) + + // Loop on each feature. + for(usize currentFeatureId = 1; currentFeatureId < numFeatures; currentFeatureId++) { - if(parentIds[j] == parentIdx) + // If the currentParentId is the same as the parentIds[currentFeatureId] and we have not added it to the `totalCheckList` + // then increment the volumes + if(featureParentIds[currentFeatureId] == currentParentId) { - if(totalCheckList.find(j) == totalCheckList.end()) - // if(std::find(totalCheckList.begin(), totalCheckList.end(), j) == totalCheckList.end()) + if(totalFeatureCheckList.find(static_cast(currentFeatureId)) == totalFeatureCheckList.end()) { - totalCheckVolume += m_Volumes[j]; - totalCheckList.insert(static_cast(j)); + totalFeatureCheckVolume += m_FeatureVolumes[currentFeatureId]; // Increment the checked volume by aggregating volumes from each feature that made up the parent feature + totalFeatureCheckList.insert(static_cast(currentFeatureId)); // This is to the list of checked features + if constexpr(FindDensitySpecializations::FindingCheckedFeatures) { - if(parentVolumes[parentIdx] > checkedFeatureVolumes[j]) + if(parentVolumes[currentParentId] > checkedFeatureVolumes[currentFeatureId]) { - checkedFeatureVolumes[j] = parentVolumes[parentIdx]; - checkedFeatures[j] = static_cast(parentIdx); + checkedFeatureVolumes[currentFeatureId] = parentVolumes[currentParentId]; + outCheckedFeatures[currentFeatureId] = static_cast(currentParentId); } } } - numNeighbors = m_ContiguousNL.getListSize(static_cast(j)); + // Get the neighbors of the current feature + numNeighbors = m_ContiguousNL.getListSize(static_cast(currentFeatureId)); if constexpr(FindDensitySpecializations::UsingNonContiguousNeighbors) { - numNeighborhoods = static_cast(m_NonContiguousNL[j].size()); + numNeighborhoods = static_cast(m_NonContiguousNL[currentFeatureId].size()); } for(int k = 0; k < kMax; k++) { @@ -119,42 +128,44 @@ class FindDensityGrouping if(k == 0) { bool ok = false; - neigh = m_ContiguousNL.getValue(static_cast(j), l, ok); + neigh = m_ContiguousNL.getValue(static_cast(currentFeatureId), l, ok); } else if(k == 1) { - neigh = m_NonContiguousNL[j][l]; + neigh = m_NonContiguousNL[currentFeatureId][l]; } - if(totalCheckList.find(neigh) == totalCheckList.end()) - // if(std::find(totalCheckList.begin(), totalCheckList.end(), neigh) == totalCheckList.end()) + // If the current neighbor is NOT in the check list... + if(!totalFeatureCheckList.contains(neigh)) { - totalCheckVolume += m_Volumes[neigh]; - totalCheckList.insert(neigh); + // update the volumes and the check list + totalFeatureCheckVolume += m_FeatureVolumes[neigh]; // Increment the total volume for this neighbor + totalFeatureCheckList.insert(neigh); if constexpr(FindDensitySpecializations::FindingCheckedFeatures) { - if(parentVolumes[parentIdx] > checkedFeatureVolumes[neigh]) + if(parentVolumes[currentParentId] > checkedFeatureVolumes[neigh]) { - checkedFeatureVolumes[neigh] = parentVolumes[parentIdx]; - checkedFeatures[neigh] = static_cast(parentIdx); + checkedFeatureVolumes[neigh] = parentVolumes[currentParentId]; + outCheckedFeatures[neigh] = static_cast(currentParentId); } } } } } } - } - curParentVolume = parentVolumes[parentIdx]; - if(totalCheckVolume == 0.0f) + } // END OF FEATURE ID LOOP + + curParentVolume = parentVolumes[currentParentId]; + if(totalFeatureCheckVolume == 0.0f) { - groupingDensities[parentIdx] = -1.0f; + outGroupingDensities[currentParentId] = -1.0f; } else { - groupingDensities[parentIdx] = (curParentVolume / totalCheckVolume); + outGroupingDensities[currentParentId] = (curParentVolume / totalFeatureCheckVolume); } - totalCheckList.clear(); - totalCheckVolume = 0.0f; - } + totalFeatureCheckList.clear(); + totalFeatureCheckVolume = 0.0f; + } // END OF PARENT ID LOOP return {}; } @@ -164,7 +175,7 @@ class FindDensityGrouping const IFilter::MessageHandler& m_MessageHandler; const Int32Array& m_ParentIds; const Float32Array& m_ParentVolumes; - const Float32Array& m_Volumes; + const Float32Array& m_FeatureVolumes; const Int32NeighborList& m_ContiguousNL; Float32Array& m_GroupingDensities; Int32NeighborList& m_NonContiguousNL; @@ -191,13 +202,15 @@ const std::atomic_bool& ComputeGroupingDensity::getCancel() // ----------------------------------------------------------------------------- Result<> ComputeGroupingDensity::operator()() { - auto& parentIds = m_DataStructure.getDataRefAs(m_InputValues->ParentIdsPath); - auto& parentVolumes = m_DataStructure.getDataRefAs(m_InputValues->ParentVolumesPath); - auto& volumes = m_DataStructure.getDataRefAs(m_InputValues->VolumesPath); - auto& contiguousNL = m_DataStructure.getDataRefAs>(m_InputValues->ContiguousNLPath); + const auto& parentIds = m_DataStructure.getDataRefAs(m_InputValues->ParentIdsPath); + const auto& parentVolumes = m_DataStructure.getDataRefAs(m_InputValues->ParentVolumesPath); + const auto& volumes = m_DataStructure.getDataRefAs(m_InputValues->VolumesPath); + const auto& contiguousNL = m_DataStructure.getDataRefAs>(m_InputValues->ContiguousNLPath); auto& groupingDensities = m_DataStructure.getDataRefAs(m_InputValues->GroupingDensitiesPath); // These may or may not be empty depending on the parameters + // The filter created some temporary hidden data array and neighbor list that may or may not + // get used for this. This setup does ensure the next 2 lines will actually return something. auto& nonContiguousNL = m_DataStructure.getDataRefAs>(m_InputValues->NonContiguousNLPath); auto& checkedFeatures = m_DataStructure.getDataRefAs(m_InputValues->CheckedFeaturesPath); @@ -211,14 +224,13 @@ Result<> ComputeGroupingDensity::operator()() return ::FindDensityGrouping>(getCancel(), m_MessageHandler, parentIds, parentVolumes, volumes, contiguousNL, groupingDensities, nonContiguousNL, checkedFeatures)(); } - else if(m_InputValues->FindCheckedFeatures) + + if(m_InputValues->FindCheckedFeatures) { return ::FindDensityGrouping>(getCancel(), m_MessageHandler, parentIds, parentVolumes, volumes, contiguousNL, groupingDensities, nonContiguousNL, checkedFeatures)(); } - else - { - return ::FindDensityGrouping>(getCancel(), m_MessageHandler, parentIds, parentVolumes, volumes, contiguousNL, groupingDensities, nonContiguousNL, - checkedFeatures)(); - } + + return ::FindDensityGrouping>(getCancel(), m_MessageHandler, parentIds, parentVolumes, volumes, contiguousNL, groupingDensities, nonContiguousNL, + checkedFeatures)(); } diff --git a/src/SimplnxReview/Filters/Algorithms/GroupMicroTextureRegions.cpp b/src/SimplnxReview/Filters/Algorithms/GroupMicroTextureRegions.cpp index 317baed..64ac13a 100644 --- a/src/SimplnxReview/Filters/Algorithms/GroupMicroTextureRegions.cpp +++ b/src/SimplnxReview/Filters/Algorithms/GroupMicroTextureRegions.cpp @@ -59,10 +59,10 @@ Result<> GroupMicroTextureRegions::execute() if(m_InputValues->UseNonContiguousNeighbors) { nonContigNeighListPtr = m_DataStructure.getDataAs>(m_InputValues->NonContiguousNeighborListArrayPath); - } - if(nullptr == nonContigNeighListPtr) - { - return MakeErrorResult(-99345, "There was an error getting the Non-contiguous neighborlist from the DataStructure"); + if(nullptr == nonContigNeighListPtr) + { + return MakeErrorResult(-99345, "There was an error getting the Non-contiguous neighborlist from the DataStructure"); + } } std::vector groupList; diff --git a/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.cpp b/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.cpp index a2f79ff..36ccfc2 100644 --- a/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.cpp +++ b/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.cpp @@ -18,7 +18,7 @@ using namespace nx::core; namespace { const DataPath k_ThrowawayCheckedFeatures = DataPath({"HiddenTempCheckedFeatures"}); -const DataPath k_ThrowawayNonContiguous = DataPath({"HiddenContiguousNL"}); +const DataPath k_ThrowawayNonContiguous = DataPath({"HiddenNonContiguousNL"}); } // namespace namespace nx::core @@ -50,7 +50,7 @@ std::string ComputeGroupingDensityFilter::humanName() const //------------------------------------------------------------------------------ std::vector ComputeGroupingDensityFilter::defaultTags() const { - return {className(), "Statistics", "Reconstruction"}; + return {className(), "Statistics", "Reconstruction", "Microtexture"}; } //------------------------------------------------------------------------------ @@ -66,23 +66,25 @@ Parameters ComputeGroupingDensityFilter::parameters() const params.insert(std::make_unique(k_NonContiguousNeighborListArrayPath_Key, "Non-Contiguous Neighborhoods", "List of non-contiguous neighbors for each Feature.", DataPath{}, NeighborListSelectionParameter::AllowedTypes{DataType::int32})); - params.insertSeparator(Parameters::Separator{"Input Cell Data"}); - params.insert(std::make_unique(k_ParentIdsPath_Key, "Parent Ids", "Input Cell level ParentIds", DataPath{}, ArraySelectionParameter::AllowedTypes{DataType::int32}, + params.insertSeparator(Parameters::Separator{"Input Feature Data"}); + params.insert(std::make_unique(k_ParentIdsPath_Key, "Feature Parent Ids", "Input Feature level ParentIds", DataPath{}, ArraySelectionParameter::AllowedTypes{DataType::int32}, ArraySelectionParameter::AllowedComponentShapes{{1}})); - params.insertSeparator(Parameters::Separator{"Input Feature Data"}); - params.insert(std::make_unique(k_VolumesArrayPath_Key, "Volumes", "The Feature Volumes Data Array", DataPath{}, + params.insert(std::make_unique(k_VolumesArrayPath_Key, "Feature Volumes", "The Feature Volumes Data Array", DataPath{}, ArraySelectionParameter::AllowedTypes{nx::core::DataType::float32}, ArraySelectionParameter::AllowedComponentShapes{{1}})); params.insert(std::make_unique(k_ContiguousNeighborListArrayPath_Key, "Contiguous Neighbor List", "List of contiguous neighbors for each Feature.", DataPath{}, NeighborListSelectionParameter::AllowedTypes{DataType::int32})); - params.insert(std::make_unique(k_ParentVolumesPath_Key, "Parent Volumes", "Input feature level parent volume data array", DataPath{}, + params.insertSeparator(Parameters::Separator{"Input Parent Feature Data"}); + params.insert(std::make_unique(k_ParentVolumesPath_Key, "Parent Volumes", "Input Parent feature level volumes data array", DataPath{}, ArraySelectionParameter::AllowedTypes{DataType::float32}, ArraySelectionParameter::AllowedComponentShapes{{1}})); params.insertSeparator(Parameters::Separator{"Output Feature Data"}); params.insert(std::make_unique(k_CheckedFeaturesName_Key, "Checked Features Name", "Output feature level data array to hold 'Checked Features' values", "Checked Features")); + + params.insertSeparator(Parameters::Separator{"Output Parent Feature Data"}); params.insert( std::make_unique(k_GroupingDensitiesName_Key, "Grouping Densities Name", "Output feature level data array to hold 'Grouping Densities' values", "Grouping Densities")); @@ -110,30 +112,44 @@ IFilter::PreflightResult ComputeGroupingDensityFilter::preflightImpl(const DataS const std::atomic_bool& shouldCancel, const ExecutionContext& executionContext) const { auto pParentIdsPath = filterArgs.value(k_ParentIdsPath_Key); - auto pParentVolumesPath = filterArgs.value(k_ParentVolumesPath_Key); - auto pContiguousNLPath = filterArgs.value(k_ContiguousNeighborListArrayPath_Key); auto pVolumesPath = filterArgs.value(k_VolumesArrayPath_Key); - auto pGroupingDensitiesName = filterArgs.value(k_GroupingDensitiesName_Key); + auto pContiguousNLPath = filterArgs.value(k_ContiguousNeighborListArrayPath_Key); + + auto pParentVolumesPath = filterArgs.value(k_ParentVolumesPath_Key); auto pUseNonContiguousNeighbors = filterArgs.value(k_UseNonContiguousNeighbors_Key); auto pNonContiguousNLPath = filterArgs.value(k_NonContiguousNeighborListArrayPath_Key); + auto pFindCheckedFeatures = filterArgs.value(k_FindCheckedFeatures_Key); auto pCheckedFeaturesName = filterArgs.value(k_CheckedFeaturesName_Key); + auto pGroupingDensitiesName = filterArgs.value(k_GroupingDensitiesName_Key); Result resultOutputActions; std::vector preflightUpdatedValues; - auto* pParentAM = dataStructure.getDataAs(pParentVolumesPath.getParent()); - if(pParentAM == nullptr) + + auto* parentIdsPtr = dataStructure.getDataAs(pParentIdsPath); + auto* volumesPtr = dataStructure.getDataAs(pVolumesPath); + auto* pContiguousNLPtr = dataStructure.getDataAs(pContiguousNLPath); + auto* pNonContiguousNLPtr = dataStructure.getDataAs(pNonContiguousNLPath); + + // Make sure all these arrays and neighbor lists all come from the same attribute matrix or at least have the same number of tuples + if(parentIdsPtr != nullptr && volumesPtr != nullptr && pContiguousNLPtr != nullptr) { - return MakePreflightErrorResult(-15670, fmt::format("Parent Volumes [{}] must be stored in an Attribute Matrix.", pParentVolumesPath.toString())); + if(parentIdsPtr->getNumberOfTuples() != volumesPtr->getNumberOfTuples() || parentIdsPtr->getNumberOfTuples() != pContiguousNLPtr->getNumberOfTuples()) + { + return MakePreflightErrorResult(-15671, fmt::format("All Input Feature level data arrays and neighbor lists MUST have the same number of tuples.", pParentVolumesPath.toString())); + } } + if(parentIdsPtr != nullptr && pNonContiguousNLPtr != nullptr) { - DataPath groupingDataPath = pParentVolumesPath.replaceName(pGroupingDensitiesName); - auto createArrayAction = std::make_unique(nx::core::DataType::float32, pParentAM->getShape(), std::vector{1}, groupingDataPath); - resultOutputActions.value().appendAction(std::move(createArrayAction)); + if(parentIdsPtr->getNumberOfTuples() != pNonContiguousNLPtr->getNumberOfTuples()) + { + return MakePreflightErrorResult(-15672, fmt::format("All Input Feature level data arrays and neighbor lists MUST have the same number of tuples.", pParentVolumesPath.toString())); + } } + auto* pFeatureAM = dataStructure.getDataAs(pVolumesPath.getParent()); if(pFeatureAM == nullptr) { @@ -142,9 +158,9 @@ IFilter::PreflightResult ComputeGroupingDensityFilter::preflightImpl(const DataS if(pFindCheckedFeatures) { - DataPath checkedFeaturesPath = pVolumesPath.replaceName(pCheckedFeaturesName); { - auto createArrayAction = std::make_unique(nx::core::DataType::int32, pFeatureAM->getShape(), std::vector{1}, checkedFeaturesPath); + DataPath checkedFeaturesPath = pVolumesPath.replaceName(pCheckedFeaturesName); + auto createArrayAction = std::make_unique(nx::core::DataType::int32, pFeatureAM->getShape(), ShapeType{1}, checkedFeaturesPath); resultOutputActions.value().appendAction(std::move(createArrayAction)); } } @@ -172,6 +188,18 @@ IFilter::PreflightResult ComputeGroupingDensityFilter::preflightImpl(const DataS } } + auto* pParentAM = dataStructure.getDataAs(pParentVolumesPath.getParent()); + if(pParentAM == nullptr) + { + return MakePreflightErrorResult(-15670, fmt::format("Parent Volumes [{}] must be stored in an Attribute Matrix.", pParentVolumesPath.toString())); + } + + { + DataPath groupingDataPath = pParentVolumesPath.replaceName(pGroupingDensitiesName); + auto createArrayAction = std::make_unique(nx::core::DataType::float32, pParentAM->getShape(), std::vector{1}, groupingDataPath); + resultOutputActions.value().appendAction(std::move(createArrayAction)); + } + preflightUpdatedValues.push_back({"WARNING: This filter is experimental in nature and has not had any testing, validation or verification. Use at your own risk"}); resultOutputActions.warnings().push_back({-65432, "WARNING: This filter is experimental in nature and has not had any testing, validation or verification. Use at your own risk"}); From 0778278142fccda8050613356e014059076a88c6 Mon Sep 17 00:00:00 2001 From: Michael Jackson Date: Thu, 8 Jan 2026 17:07:43 -0500 Subject: [PATCH 2/6] Refactor the neighbor processing part into a function Call the function for the normal neighbor list and optionally call it again for the non-contiguous neighbor list (neighborhood). --- .../Algorithms/ComputeGroupingDensity.cpp | 88 ++++++++----------- .../Filters/ComputeGroupingDensityFilter.cpp | 6 +- 2 files changed, 38 insertions(+), 56 deletions(-) diff --git a/src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.cpp b/src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.cpp index 35c7767..a86b116 100644 --- a/src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.cpp +++ b/src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.cpp @@ -53,13 +53,6 @@ class FindDensityGrouping usize numFeatures = featureVolumes.getNumberOfTuples(); usize numParents = parentVolumes.getNumberOfTuples(); - int kMax = 1; - if constexpr(FindDensitySpecializations::UsingNonContiguousNeighbors) - { - kMax = 2; - } - - int32 numNeighbors = 0, numNeighborhoods = 0, numCurNeighborList = 0, neigh = 0; float32 totalFeatureCheckVolume = 0.0f; float32 curParentVolume = 0.0f; std::set totalFeatureCheckList = {}; @@ -76,7 +69,7 @@ class FindDensityGrouping // Start the Parent Outer Loop for(usize currentParentId = 1; currentParentId < numParents; currentParentId++) { - throttledMessenger.sendThrottledMessage([&]() { return fmt::format("[{}%]", CalculatePercentComplete(currentParentId, numParents)); }); + throttledMessenger.sendThrottledMessage([&]() { return fmt::format("{}/{} {}%", currentParentId, numParents, CalculatePercentComplete(currentParentId, numParents)); }); if(m_ShouldCancel) { @@ -104,52 +97,10 @@ class FindDensityGrouping } } } - // Get the neighbors of the current feature - numNeighbors = m_ContiguousNL.getListSize(static_cast(currentFeatureId)); + processNeighborListData(m_ContiguousNL, currentFeatureId, currentParentId, totalFeatureCheckList, totalFeatureCheckVolume, parentVolumes, checkedFeatureVolumes, outCheckedFeatures); if constexpr(FindDensitySpecializations::UsingNonContiguousNeighbors) { - numNeighborhoods = static_cast(m_NonContiguousNL[currentFeatureId].size()); - } - for(int k = 0; k < kMax; k++) - { - if(k == 0) - { - numCurNeighborList = numNeighbors; - } - if constexpr(FindDensitySpecializations::UsingNonContiguousNeighbors) - { - if(k == 1) - { - numCurNeighborList = numNeighborhoods; - } - } - for(int32_t l = 0; l < numCurNeighborList; l++) - { - if(k == 0) - { - bool ok = false; - neigh = m_ContiguousNL.getValue(static_cast(currentFeatureId), l, ok); - } - else if(k == 1) - { - neigh = m_NonContiguousNL[currentFeatureId][l]; - } - // If the current neighbor is NOT in the check list... - if(!totalFeatureCheckList.contains(neigh)) - { - // update the volumes and the check list - totalFeatureCheckVolume += m_FeatureVolumes[neigh]; // Increment the total volume for this neighbor - totalFeatureCheckList.insert(neigh); - if constexpr(FindDensitySpecializations::FindingCheckedFeatures) - { - if(parentVolumes[currentParentId] > checkedFeatureVolumes[neigh]) - { - checkedFeatureVolumes[neigh] = parentVolumes[currentParentId]; - outCheckedFeatures[neigh] = static_cast(currentParentId); - } - } - } - } + processNeighborListData(m_NonContiguousNL, currentFeatureId, currentParentId, totalFeatureCheckList, totalFeatureCheckVolume, parentVolumes, checkedFeatureVolumes, outCheckedFeatures); } } } // END OF FEATURE ID LOOP @@ -170,6 +121,39 @@ class FindDensityGrouping return {}; } + void processNeighborListData(const NeighborList& neighbor_list, const int32 currentFeatureId, const int32 currentParentId, std::set& totalFeatureCheckList, + float32& totalFeatureCheckVolume, const AbstractDataStore& parentVolumes, std::vector& checkedFeatureVolumes, AbstractDataStore& outCheckedFeatures) + { + auto featureNeighborList = neighbor_list.at(currentFeatureId); + auto numCurNeighborList = static_cast(featureNeighborList.size()); + + for(int32_t l = 0; l < numCurNeighborList; l++) + { + // bool ok = false; + auto neigh = featureNeighborList.at(l); + // if(!ok) + // { + // continue; + // } + + // If the current neighbor is NOT in the check list... + if(!totalFeatureCheckList.contains(neigh)) + { + // update the volumes and the check list + totalFeatureCheckVolume += m_FeatureVolumes[neigh]; // Increment the total volume for this neighbor + totalFeatureCheckList.insert(neigh); + if constexpr(FindDensitySpecializations::FindingCheckedFeatures) + { + if(parentVolumes[currentParentId] > checkedFeatureVolumes[neigh]) + { + checkedFeatureVolumes[neigh] = parentVolumes[currentParentId]; + outCheckedFeatures[neigh] = static_cast(currentParentId); + } + } + } + } + } + private: const std::atomic_bool& m_ShouldCancel; const IFilter::MessageHandler& m_MessageHandler; diff --git a/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.cpp b/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.cpp index 36ccfc2..78c1784 100644 --- a/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.cpp +++ b/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.cpp @@ -67,8 +67,8 @@ Parameters ComputeGroupingDensityFilter::parameters() const DataPath{}, NeighborListSelectionParameter::AllowedTypes{DataType::int32})); params.insertSeparator(Parameters::Separator{"Input Feature Data"}); - params.insert(std::make_unique(k_ParentIdsPath_Key, "Feature Parent Ids", "Input Feature level ParentIds", DataPath{}, ArraySelectionParameter::AllowedTypes{DataType::int32}, - ArraySelectionParameter::AllowedComponentShapes{{1}})); + params.insert(std::make_unique(k_ParentIdsPath_Key, "Feature Parent Ids", "Input Feature level ParentIds", DataPath{}, + ArraySelectionParameter::AllowedTypes{DataType::int32}, ArraySelectionParameter::AllowedComponentShapes{{1}})); params.insert(std::make_unique(k_VolumesArrayPath_Key, "Feature Volumes", "The Feature Volumes Data Array", DataPath{}, ArraySelectionParameter::AllowedTypes{nx::core::DataType::float32}, ArraySelectionParameter::AllowedComponentShapes{{1}})); @@ -127,7 +127,6 @@ IFilter::PreflightResult ComputeGroupingDensityFilter::preflightImpl(const DataS Result resultOutputActions; std::vector preflightUpdatedValues; - auto* parentIdsPtr = dataStructure.getDataAs(pParentIdsPath); auto* volumesPtr = dataStructure.getDataAs(pVolumesPath); auto* pContiguousNLPtr = dataStructure.getDataAs(pContiguousNLPath); @@ -149,7 +148,6 @@ IFilter::PreflightResult ComputeGroupingDensityFilter::preflightImpl(const DataS } } - auto* pFeatureAM = dataStructure.getDataAs(pVolumesPath.getParent()); if(pFeatureAM == nullptr) { From 8055490ea4949cafcde9dc4682cdc4b1e97a4e0d Mon Sep 17 00:00:00 2001 From: Michael Jackson Date: Wed, 18 Feb 2026 15:19:22 -0500 Subject: [PATCH 3/6] Short review with minimal style changes. --- .../Algorithms/ComputeGroupingDensity.hpp | 2 +- .../Filters/ComputeGroupingDensityFilter.cpp | 24 ++++++++++--------- .../Filters/ComputeGroupingDensityFilter.hpp | 4 ++-- test/CMakeLists.txt | 1 + 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.hpp b/src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.hpp index 3b2dc60..ca7a99c 100644 --- a/src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.hpp +++ b/src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.hpp @@ -24,7 +24,7 @@ struct SIMPLNXREVIEW_EXPORT ComputeGroupingDensityInputValues /** * @class ComputeGroupingDensity - * @brief This filter determines the average C-axis location of each Feature. + * @brief Computes grouping densities for parent features in hierarchical reconstructions. */ class SIMPLNXREVIEW_EXPORT ComputeGroupingDensity diff --git a/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.cpp b/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.cpp index 78c1784..128fd51 100644 --- a/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.cpp +++ b/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.cpp @@ -70,7 +70,7 @@ Parameters ComputeGroupingDensityFilter::parameters() const params.insert(std::make_unique(k_ParentIdsPath_Key, "Feature Parent Ids", "Input Feature level ParentIds", DataPath{}, ArraySelectionParameter::AllowedTypes{DataType::int32}, ArraySelectionParameter::AllowedComponentShapes{{1}})); - params.insert(std::make_unique(k_VolumesArrayPath_Key, "Feature Volumes", "The Feature Volumes Data Array", DataPath{}, + params.insert(std::make_unique(k_FeatureVolumesArrayPath_Key, "Feature Volumes", "The Feature Volumes Data Array", DataPath{}, ArraySelectionParameter::AllowedTypes{nx::core::DataType::float32}, ArraySelectionParameter::AllowedComponentShapes{{1}})); params.insert(std::make_unique(k_ContiguousNeighborListArrayPath_Key, "Contiguous Neighbor List", "List of contiguous neighbors for each Feature.", DataPath{}, @@ -112,7 +112,7 @@ IFilter::PreflightResult ComputeGroupingDensityFilter::preflightImpl(const DataS const std::atomic_bool& shouldCancel, const ExecutionContext& executionContext) const { auto pParentIdsPath = filterArgs.value(k_ParentIdsPath_Key); - auto pVolumesPath = filterArgs.value(k_VolumesArrayPath_Key); + auto pFeatureVolumesPath = filterArgs.value(k_FeatureVolumesArrayPath_Key); auto pContiguousNLPath = filterArgs.value(k_ContiguousNeighborListArrayPath_Key); auto pParentVolumesPath = filterArgs.value(k_ParentVolumesPath_Key); @@ -128,16 +128,18 @@ IFilter::PreflightResult ComputeGroupingDensityFilter::preflightImpl(const DataS std::vector preflightUpdatedValues; auto* parentIdsPtr = dataStructure.getDataAs(pParentIdsPath); - auto* volumesPtr = dataStructure.getDataAs(pVolumesPath); + auto* featureVolumesPtr = dataStructure.getDataAs(pFeatureVolumesPath); auto* pContiguousNLPtr = dataStructure.getDataAs(pContiguousNLPath); auto* pNonContiguousNLPtr = dataStructure.getDataAs(pNonContiguousNLPath); // Make sure all these arrays and neighbor lists all come from the same attribute matrix or at least have the same number of tuples - if(parentIdsPtr != nullptr && volumesPtr != nullptr && pContiguousNLPtr != nullptr) + if(parentIdsPtr != nullptr && featureVolumesPtr != nullptr && pContiguousNLPtr != nullptr) { - if(parentIdsPtr->getNumberOfTuples() != volumesPtr->getNumberOfTuples() || parentIdsPtr->getNumberOfTuples() != pContiguousNLPtr->getNumberOfTuples()) + if(parentIdsPtr->getNumberOfTuples() != featureVolumesPtr->getNumberOfTuples() || parentIdsPtr->getNumberOfTuples() != pContiguousNLPtr->getNumberOfTuples()) { - return MakePreflightErrorResult(-15671, fmt::format("All Input Feature level data arrays and neighbor lists MUST have the same number of tuples.", pParentVolumesPath.toString())); + return MakePreflightErrorResult(-15671, fmt::format("All Input Feature level data arrays and neighbor lists MUST have the same number of tuples.\n{}: {}\n{}: {}\n{}: {}", + pParentIdsPath.toString(), parentIdsPtr->getNumberOfTuples(), pFeatureVolumesPath.toString(), featureVolumesPtr->getNumberOfTuples(), + pContiguousNLPath.toString(), pContiguousNLPtr->getNumberOfTuples())); } } if(parentIdsPtr != nullptr && pNonContiguousNLPtr != nullptr) @@ -148,16 +150,16 @@ IFilter::PreflightResult ComputeGroupingDensityFilter::preflightImpl(const DataS } } - auto* pFeatureAM = dataStructure.getDataAs(pVolumesPath.getParent()); + auto* pFeatureAM = dataStructure.getDataAs(pFeatureVolumesPath.getParent()); if(pFeatureAM == nullptr) { - return MakePreflightErrorResult(-15671, fmt::format("Feature Volumes [{}] must be stored in an Attribute Matrix.", pVolumesPath.toString())); + return MakePreflightErrorResult(-15673, fmt::format("Feature Volumes [{}] must be stored in an Attribute Matrix.", pFeatureVolumesPath.toString())); } if(pFindCheckedFeatures) { { - DataPath checkedFeaturesPath = pVolumesPath.replaceName(pCheckedFeaturesName); + DataPath checkedFeaturesPath = pFeatureVolumesPath.replaceName(pCheckedFeaturesName); auto createArrayAction = std::make_unique(nx::core::DataType::int32, pFeatureAM->getShape(), ShapeType{1}, checkedFeaturesPath); resultOutputActions.value().appendAction(std::move(createArrayAction)); } @@ -213,7 +215,7 @@ Result<> ComputeGroupingDensityFilter::executeImpl(DataStructure& dataStructure, inputValues.ParentIdsPath = filterArgs.value(k_ParentIdsPath_Key); inputValues.ParentVolumesPath = filterArgs.value(k_ParentVolumesPath_Key); inputValues.ContiguousNLPath = filterArgs.value(k_ContiguousNeighborListArrayPath_Key); - inputValues.VolumesPath = filterArgs.value(k_VolumesArrayPath_Key); + inputValues.VolumesPath = filterArgs.value(k_FeatureVolumesArrayPath_Key); inputValues.GroupingDensitiesPath = inputValues.ParentVolumesPath.replaceName(filterArgs.value(k_GroupingDensitiesName_Key)); inputValues.UseNonContiguousNeighbors = filterArgs.value(k_UseNonContiguousNeighbors_Key); @@ -271,7 +273,7 @@ Result ComputeGroupingDensityFilter::FromSIMPLJson(const nlohmann::js results.push_back(SIMPLConversion::ConvertParameter(args, json, SIMPL::k_ParentIdsArrayPathKey, k_ParentIdsPath_Key)); results.push_back(SIMPLConversion::ConvertParameter(args, json, SIMPL::k_ParentVolumesArrayPathKey, k_ParentVolumesPath_Key)); results.push_back(SIMPLConversion::ConvertParameter(args, json, SIMPL::k_UseNonContiguousNeighborsKey, k_UseNonContiguousNeighbors_Key)); - results.push_back(SIMPLConversion::ConvertParameter(args, json, SIMPL::k_VolumesArrayPathKey, k_VolumesArrayPath_Key)); + results.push_back(SIMPLConversion::ConvertParameter(args, json, SIMPL::k_VolumesArrayPathKey, k_FeatureVolumesArrayPath_Key)); Result<> conversionResult = MergeResults(std::move(results)); diff --git a/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.hpp b/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.hpp index 0614178..5c9abb9 100644 --- a/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.hpp +++ b/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.hpp @@ -9,7 +9,7 @@ namespace nx::core { /** * @class ComputeGroupingDensityFilter - * @brief This filter determines the average C-axis location of each Feature + * @brief Computes grouping densities for parent features in hierarchical reconstructions */ class SIMPLNXREVIEW_EXPORT ComputeGroupingDensityFilter : public IFilter { @@ -24,7 +24,7 @@ class SIMPLNXREVIEW_EXPORT ComputeGroupingDensityFilter : public IFilter ComputeGroupingDensityFilter& operator=(ComputeGroupingDensityFilter&&) noexcept = delete; // Parameter Keys - static constexpr StringLiteral k_VolumesArrayPath_Key = "volumes_path"; + static constexpr StringLiteral k_FeatureVolumesArrayPath_Key = "volumes_path"; static constexpr StringLiteral k_ContiguousNeighborListArrayPath_Key = "contiguous_neighbor_list_path"; static constexpr StringLiteral k_UseNonContiguousNeighbors_Key = "use_non_contiguous_neighbors"; static constexpr StringLiteral k_NonContiguousNeighborListArrayPath_Key = "non_contiguous_neighbor_list_path"; diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 7811af1..47b111e 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -9,6 +9,7 @@ set(${PLUGIN_NAME}UnitTest_SRCS MergeColoniesTest.cpp ComputeLocalAverageCAxisMisalignmentsTest.cpp ComputeMicroTextureRegionsTest.cpp + ComputeGroupingDensityTest.cpp ) set(DISABLED_TESTS From 6320836fa3ec7233a95e98694c648dc5728212f3 Mon Sep 17 00:00:00 2001 From: Michael Jackson Date: Wed, 18 Feb 2026 15:21:24 -0500 Subject: [PATCH 4/6] CLAUDE: Code review and suggestions. Unit test implemented --- CLAUDE.md | 288 ++++++++++++++ .../COMPUTE_GROUPING_DENSITIES_REVIEW.md | 372 ++++++++++++++++++ test/ComputeGroupingDensityTest.cpp | 372 ++++++++++++++++++ 3 files changed, 1032 insertions(+) create mode 100644 CLAUDE.md create mode 100644 Code_Reviews/COMPUTE_GROUPING_DENSITIES_REVIEW.md create mode 100644 test/ComputeGroupingDensityTest.cpp diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..e970735 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,288 @@ +# Project Guidelines for Claude + +## Project Overview + +The filter Compute Grouping Density needs a thorough review. + +- [ ] I need to understand the algorithm. Can you generate a flow chart of the main algorithm +- [ ] The variable naming needs to make sense +- [ ] I need to generate TEST_CASE() that will exercise each of the code paths +- [ ] I need to create a test file to be used as a unit test for each of those code paths + +Can you make suggestions for improvements, test_case setup and any other issue that you find in the code. + +This is a simplnx Plugin that is built as part of the normal simplnx build. Therefore use the following paths: + +- Build Directory: /Users/mjackson/Workspace1/DREAM3D-Build/simplnx-Rel +- CMake Configuration: `cd /Users/mjackson/Workspace1/simplnx && cmake --preset simplnx-Rel` +- If you need python there is an anaconda environment called 'dream3d' that can be used + +## Directory Structure +- `src/SimplnxReview/Filters` - Filters +- `test/` - Test files + +## Directories to Ignore + + +## Coding Standards + +### C++ Style (from .clang-format) +- C++20 standard +- Allman brace style (braces on new lines for classes, control statements, enums, functions, namespaces, structs, before else) +- 200 column limit +- 2-space indentation, no tabs +- Pointer alignment left (`int* ptr` not `int *ptr`) +- No space before parentheses +- Sort includes alphabetically +- No short functions on single line +- Always break template declarations +- Constructor initializers break before comma + +### Naming Conventions (from .clang-tidy) +- C++ header files: `.hpp` extension +- C++ source files: `.cpp` extension +- Namespaces: `lower_case` +- Classes: `CamelCase` +- Structs: `CamelCase` +- Class methods: `camelBack` +- Functions: `camelBack` +- Variables: `camelBack` +- Private members: `m_` prefix + `CamelCase` (e.g., `m_MemberVariable`) +- Global variables: `CamelCase` +- Global constants: `k_` prefix + `CamelCase` (e.g., `k_DefaultValue`) +- Local pointers: `camelBack` + `Ptr` suffix (e.g., `dataPtr`) +- Type aliases: `CamelCase` + `Type` suffix (e.g., `ValueType`) +- Macros: `UPPER_CASE` + +### Descriptive Variable Naming +Use suffixes to make variable types and purposes immediately clear: + +**Geometry variables use `Geom` suffix:** +- Correct: `const auto& imageGeom = dataStructure.getDataRefAs(path);` +- Incorrect: `const auto& image = dataStructure.getDataRefAs(path);` + +**DataStore references use `Ref` suffix:** +- Correct: `const auto& verticesRef = vertexGeom.getVertices()->getDataStoreRef();` +- Incorrect: `const auto& vertices = vertexGeom.getVertices()->getDataStoreRef();` + +Examples: +```cpp +// Geometry variables +auto& imageGeom = dataStructure.getDataRefAs(imagePath); +const auto& rectGridGeom = dataStructure.getDataRefAs(rectPath); +const auto& edgeGeom = dataStructure.getDataRefAs(edgePath); + +// DataStore references +const auto& xBoundsRef = rectGridGeom.getXBounds()->getDataStoreRef(); +const auto& yBoundsRef = rectGridGeom.getYBounds()->getDataStoreRef(); +const auto& verticesRef = edgeGeom.getVertices()->getDataStoreRef(); +``` + +These conventions improve code clarity and distinguish between geometry objects and their underlying data references. + +### File Organization +- When creating a C++ based simplnx filter inside a plugin, the complete filter will have a "NameFilter.hpp" and "NameFilter.cpp" file, an "Algorithm/Name.hpp" and "Algorithm/Name.cpp". +- Filter documentation files are created in Markdown and are in the "docs" subfolder inside the Plugins directory +- Unit tests should be created in the 'test' subfolder and use the 'catch2' unit testing framework. + +## Filter Implementation Guidelines + +### Parameter Validation +- Selection parameters (GeometrySelectionParameter, ArraySelectionParameter, DataGroupSelectionParameter, etc.) automatically validate that the selected object exists in the DataStructure. Do NOT add null checks for these in preflightImpl() or executeImpl(). +- Only add explicit existence checks for objects that are not validated by a selection parameter. + +### DataStructure Access +- Use `getDataRefAs()` to get a reference when you know the object exists (e.g., validated by a selection parameter). +- Use `getDataAs()` to get a pointer only when you need to check if an object exists or when the object may not be present. +- **IMPORTANT**: In unit tests, always wrap `getDataRefAs()` calls with `REQUIRE_NOTHROW()` to provide clear test failure messages if the object doesn't exist. + +Example - Correct: +```cpp +// Parameter already validated this exists, use reference +const auto& imageGeom = dataStructure.getDataRefAs(pInputImageGeometryPathValue); +SizeVec3 dims = imageGeom.getDimensions(); +``` + +Example - Incorrect: +```cpp +// Unnecessary null check - parameter already validated existence +const auto* imageGeomPtr = dataStructure.getDataAs(pInputImageGeometryPathValue); +if(imageGeomPtr == nullptr) +{ + return {MakeErrorResult(-1000, "Could not find geometry")}; +} +``` + +## Thread Safety + +### DataArray and DataStore Classes Are NOT Thread-Safe +- `DataArray`, `DataStore`, and `AbstractDataStore` classes are **NOT thread-safe** for concurrent read or write access. +- The subscript operator (`operator[]`) and other access methods may have internal state or go through virtual function calls that are not safe for concurrent access, even when accessing different indices. +- Some `DataStore` subclasses use out-of-core implementations where data may not be resident in memory. Getting raw pointers to the underlying data is dangerous and should be avoided. + +### Parallelization Guidelines +- When writing parallel algorithms using `ParallelDataAlgorithm`, be aware that passing `DataArray` or `DataStore` references to worker classes can cause random failures on different platforms. +- If parallel access to data arrays is required, consider: + 1. Disabling parallelization with `parallelAlgorithm.setParallelizationEnabled(false)` for correctness + 2. Using thread-local storage for intermediate results + 3. Structuring the algorithm to avoid concurrent access to the same DataArray +- Do NOT assume that writing to different indices of a DataArray from multiple threads is safe. + +Example - Potentially Unsafe: +```cpp +// This pattern can cause random failures even when threads write to different indices +class MyParallelWorker +{ + DataArray& m_OutputArray; // NOT thread-safe for concurrent access + void operator()(const Range& range) const + { + for(usize i = range.min(); i < range.max(); i++) + { + m_OutputArray[i] = computeValue(i); // May fail randomly + } + } +}; +``` + +## Build System +- CMake-based build system +- vcpkg for dependency management +- `cmake --preset simplnx-Rel` to configure the project +- Anaconda Python environment called 'dream3d' if python is needed. + +## Testing +- Unit tests use the Catch2 framework. +- Each `TEST_CASE` should include `UnitTest::CheckArraysInheritTupleDims(dataStructure);` near the end of the test to ensure all created data arrays have correct tuple dimensions inherited from their parent groups. + +### Running Unit Tests +- Always use `ctest` to run unit tests, NOT the test binary directly +- The `ctest` command handles test data extraction and cleanup automatically +- Use the `-R` flag to run specific tests by name pattern + +Example - Running a specific test: +```bash +cd /path/to/build/directory +ctest -R "SimplnxCore::FillBadData" --verbose +``` + +Example - Running all SimplnxCore tests: +```bash +cd /path/to/build/directory +ctest -R "SimplnxCore::" --verbose +``` + +### Printing debug statements in unit tests + +Example - Correct + +auto executeResult = filter.execute(dataStructure, args, nullptr, IFilter::MessageHandler{[](const IFilter::Message& message){ fmt::print("{}\n", message.message); }}); + +### Exemplar-Based Testing Pattern +- Many tests use "exemplar" datasets - pre-generated golden reference data stored in `.dream3d` files +- Exemplar datasets are generated by running pipeline files (`.d3dpipeline`) that configure and execute filters + +#### Workflow for Creating and Publishing Test Data: +1. **Generate test data locally**: Create pipeline file with filter configurations and `WriteDREAM3DFilter` to save results +2. **Execute pipeline**: Run the pipeline to generate exemplar `.dream3d` file and any input data files +3. **Package as tar.gz**: Compress test data (no `6_6_` prefix needed - that was only for legacy DREAM3D data) + ```bash + tar -zvcf test_name.tar.gz test_directory/ + ``` +4. **Compute SHA512 hash**: + ```bash + shasum -a 512 test_name.tar.gz + ``` +5. **Upload to GitHub**: Upload to the [DREAM3D data archive release](https://github.com/BlueQuartzSoftware/simplnx/releases/tag/Data_Archive) +6. **Update CMakeLists.txt**: Add `download_test_data()` call in `src/Plugins/[PluginName]/test/CMakeLists.txt`: + ```cmake + download_test_data(DREAM3D_DATA_DIR ${DREAM3D_DATA_DIR} + ARCHIVE_NAME test_name.tar.gz + SHA512 ) + ``` +7. **Test data auto-downloads**: When tests run, the sentinel mechanism automatically downloads and extracts the tar.gz to `unit_test::k_TestFilesDir` + +#### Test Data Archive Naming and Versioning: +- **Base naming**: Use descriptive names that match the test: `test_name.tar.gz` +- **Version suffixes**: When updating existing test data, append version numbers: `test_name_v2.tar.gz`, `test_name_v3.tar.gz` +- **When to version**: + - Original archive already exists in GitHub data archive + - Test requirements changed (new exemplars, different parameters, additional data files) + - Cannot overwrite original because other code may depend on it + - CMakeLists.txt may reference both old and new versions for different tests +- **Check before creating**: Browse the [Data_Archive release](https://github.com/BlueQuartzSoftware/simplnx/releases/tag/Data_Archive) to see if your test data name already exists +- **Legacy prefixes**: The `6_6_` and `6_5_` prefixes are for data from legacy DREAM3D/SIMPL versions - do NOT use for new DREAM3DNX test data + +#### Test Code Pattern: +```cpp +namespace +{ +const std::string k_TestDataDirName = "test_name"; +const fs::path k_TestDataDir = fs::path(unit_test::k_TestFilesDir.view()) / k_TestDataDirName; +const fs::path k_ExemplarFile = k_TestDataDir / "test_name.dream3d"; +const fs::path k_InputImageFile = k_TestDataDir / "input_file.tif"; +} +``` + +**Example**: If `import_image_stack_test.tar.gz` exists in the archive and you need to upload updated test data with new exemplars, create `import_image_stack_test_v2.tar.gz`. Update CMakeLists.txt to reference the new version, and optionally keep the old version if other tests depend on it. + +#### Comparing Test Results Against Exemplars: +- **Load exemplar DataStructure**: Use `UnitTest::LoadDataStructure(exemplarFilePath)` to load the .dream3d file +- **ALWAYS use `REQUIRE_NOTHROW()` before `getDataRefAs()`**: This applies to ALL `getDataRefAs` calls - both generated and exemplar data +- **Get generated data**: Use `getDataRefAs()` wrapped in `REQUIRE_NOTHROW()` since objects were just created by the filter +- **Get exemplar data**: Use `getDataRefAs()` wrapped in `REQUIRE_NOTHROW()` to verify the exemplar exists before accessing +- **Compare geometries**: Use `UnitTest::CompareImageGeometry(&exemplarGeom, &generatedGeom)` - takes two pointers +- **Compare arrays**: Use `UnitTest::CompareDataArrays(exemplarArray, generatedArray)` - type-specific template +- **Switch on data type** when comparing arrays to handle different types (uint8, uint16, uint32, float32, etc.) + +Example pattern: +```cpp +// Load exemplar +DataStructure exemplarDS = UnitTest::LoadDataStructure(k_ExemplarFile); + +// Get geometries - ALWAYS wrap getDataRefAs with REQUIRE_NOTHROW +REQUIRE_NOTHROW(dataStructure.getDataRefAs(generatedGeomPath)); +const auto& generatedGeom = dataStructure.getDataRefAs(generatedGeomPath); +REQUIRE_NOTHROW(exemplarDS.getDataRefAs(DataPath({exemplarGeomName}))); +const auto& exemplarGeom = exemplarDS.getDataRefAs(DataPath({exemplarGeomName})); + +// Compare geometries (dimensions, origin, spacing) - pass pointers +UnitTest::CompareImageGeometry(&exemplarGeom, &generatedGeom); + +// Get arrays - ALWAYS wrap getDataRefAs with REQUIRE_NOTHROW +REQUIRE_NOTHROW(dataStructure.getDataRefAs(generatedDataPath)); +const auto& generatedArray = dataStructure.getDataRefAs(generatedDataPath); +REQUIRE_NOTHROW(exemplarDS.getDataRefAs(exemplarDataPath)); +const auto& exemplarArray = exemplarDS.getDataRefAs(exemplarDataPath); + +// Compare arrays based on type +switch(generatedArray.getDataType()) +{ +case DataType::uint8: + UnitTest::CompareDataArrays(exemplarArray, generatedArray); + break; +case DataType::uint16: + UnitTest::CompareDataArrays(exemplarArray, generatedArray); + break; +// ... etc +} +``` + +**Important**: Use the standardized `UnitTest::` comparison methods directly in test code. + +### Test Organization +- Each test should call `UnitTest::LoadPlugins()` before executing filters +- Use `DYNAMIC_SECTION()` for parameterized tests that generate multiple test cases + +## Pipeline Files +- JSON format with `.d3dpipeline` extension +- Contains array of filter configurations with arguments +- Each filter has: + - `args`: Dictionary of parameter keys and values + - `comments`: Description of what the filter does + - `filter`: Name and UUID + - `isDisabled`: Boolean to skip filter execution +- Common pattern: Multiple filter configurations followed by WriteDREAM3DFilter to save all results to one `.dream3d` file +- Output geometry paths in pipeline must match exemplar names expected by tests + +## Additional Notes + diff --git a/Code_Reviews/COMPUTE_GROUPING_DENSITIES_REVIEW.md b/Code_Reviews/COMPUTE_GROUPING_DENSITIES_REVIEW.md new file mode 100644 index 0000000..51faeda --- /dev/null +++ b/Code_Reviews/COMPUTE_GROUPING_DENSITIES_REVIEW.md @@ -0,0 +1,372 @@ +# ComputeGroupingDensity Filter - Code Review + +**Date:** 2026-02-18 +**Branch:** `topic/compute_grouping_density_review` +**Files Reviewed:** +- `src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.hpp` +- `src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.cpp` +- `src/SimplnxReview/Filters/ComputeGroupingDensityFilter.hpp` +- `src/SimplnxReview/Filters/ComputeGroupingDensityFilter.cpp` +- `test/ComputeGroupingDensityTest.cpp` +- `docs/ComputeGroupingDensityFilter.md` + +--- + +## 1. Algorithm Overview + +The `ComputeGroupingDensity` filter computes **grouping densities** for parent features in a hierarchical reconstruction. It operates on a two-level feature hierarchy: child **Features** (grains) that belong to **Parent Features** (reconstructed groups). + +### Data Model + +| Data | Level | Type | Description | +|---|---|---|---| +| Feature Volumes | Feature | `Float32Array` | Volume of each child feature | +| Parent IDs | Feature | `Int32Array` | Which parent each feature belongs to | +| Contiguous Neighbor List | Feature | `NeighborList` | Contiguous neighbors per feature | +| Non-Contiguous Neighbor List | Feature | `NeighborList` | (Optional) Non-contiguous neighbors per feature | +| Parent Volumes | Parent | `Float32Array` | Volume of each parent feature | +| **Grouping Densities** | **Parent (output)** | `Float32Array` | Computed density for each parent | +| **Checked Features** | **Feature (output)** | `Int32Array` | (Optional) Which parent checked each feature | + +### Algorithm Flowchart + +``` +START + Initialize: + totalFeatureCheckVolume = 0 + totalFeatureCheckList = {} (empty set) + checkedFeatureVolumes = [0...] (only if FindCheckedFeatures) + + FOR each parentId (1..numParents): + | + | FOR each featureId (1..numFeatures): + | | + | | Is parentIds[featureId] == currentParentId? + | | | + | | NO --> skip to next featureId + | | | + | | YES + | | | + | | Is featureId already in totalFeatureCheckList? + | | | + | | NO: + | | | totalFeatureCheckVolume += featureVolumes[featureId] + | | | Add featureId to totalFeatureCheckList + | | | + | | | [If FindCheckedFeatures]: + | | | If parentVolumes[parentId] > checkedFeatureVolumes[featureId]: + | | | checkedFeatureVolumes[featureId] = parentVolumes[parentId] + | | | outCheckedFeatures[featureId] = parentId + | | | + | | YES: (skip volume add, go straight to neighbor processing) + | | | + | | processNeighborListData(contiguousNeighborList): + | | | For each neighbor of featureId: + | | | If neighbor NOT in totalFeatureCheckList: + | | | totalFeatureCheckVolume += featureVolumes[neighbor] + | | | Add neighbor to totalFeatureCheckList + | | | [If FindCheckedFeatures]: + | | | If parentVolumes[parentId] > checkedFeatureVolumes[neighbor]: + | | | checkedFeatureVolumes[neighbor] = parentVolumes[parentId] + | | | outCheckedFeatures[neighbor] = parentId + | | | + | | [If UseNonContiguousNeighbors]: + | | processNeighborListData(nonContiguousNeighborList) + | | (same logic as above) + | | + | END FOR (featureId) + | + | Compute density for this parent: + | If totalFeatureCheckVolume == 0: + | groupingDensities[parentId] = -1.0 + | Else: + | groupingDensities[parentId] = parentVolumes[parentId] / totalFeatureCheckVolume + | + | Clear totalFeatureCheckList + | Reset totalFeatureCheckVolume = 0 + | + END FOR (parentId) + +DONE +``` + +### Algorithm Summary + +For each parent, the algorithm: +1. Finds all features belonging to that parent +2. Collects all contiguous (and optionally non-contiguous) neighbors of those features +3. Sums the volumes of all collected ("checked") features +4. Computes density as `parentVolume / totalCheckedVolume` +5. A density of `-1.0` indicates no features were found for that parent + +### Template Specializations + +The algorithm uses compile-time template booleans for the two optional paths, resulting in 4 specializations: + +| `UseNonContiguousNeighbors` | `FindCheckedFeatures` | Description | +|---|---|---| +| `false` | `false` | Contiguous neighbors only, no checked features output | +| `true` | `false` | Both neighbor types, no checked features output | +| `false` | `true` | Contiguous neighbors only, with checked features output | +| `true` | `true` | Both neighbor types, with checked features output | + +--- + +## 2. Issues Found + +### 2.1 Bugs / Correctness Issues + +#### Bug 1: Broken `fmt::format` in preflight error message + +**File:** `ComputeGroupingDensityFilter.cpp:149` +**Severity:** Medium + +```cpp +return MakePreflightErrorResult(-15672, + fmt::format("All Input Feature level data arrays and neighbor lists MUST have the same number of tuples.", + pParentVolumesPath.toString())); +``` + +The format string contains **no `{}` placeholder** but `pParentVolumesPath.toString()` is passed as an argument. The path is silently ignored. The error message should include the mismatched paths and their tuple counts (similar to error -15671 above it). + +**Suggested fix:** +```cpp +return MakePreflightErrorResult(-15672, + fmt::format("All Input Feature level data arrays and neighbor lists MUST have the same number of tuples.\n{}: {}\n{}: {}", + pParentIdsPath.toString(), parentIdsPtr->getNumberOfTuples(), + pNonContiguousNLPath.toString(), pNonContiguousNLPtr->getNumberOfTuples())); +``` + +#### Bug 2: Original unit test was a non-functional stub + +**File:** `test/ComputeGroupingDensityTest.cpp` (original) +**Severity:** High + +The original test loaded an exemplar DataStructure but then created a completely separate empty `DataStructure ds` and ran the filter against it with default arguments. The exemplar was never used for comparison. The test would either produce meaningless results or silently pass without testing anything. + +**Status:** Fixed - replaced with 7 comprehensive test cases (see Section 4). + +### 2.2 Variable Naming Violations + +Per the project coding standards, DataStore references should use the `Ref` suffix, and variables should have descriptive names. + +| File:Line | Current Name | Suggested Name | Reason | +|---|---|---|---| +| `ComputeGroupingDensity.cpp:45` | `featureParentIds` | `featureParentIdsRef` | DataStore reference needs `Ref` suffix | +| `ComputeGroupingDensity.cpp:46` | `parentVolumes` | `parentVolumesRef` | DataStore reference needs `Ref` suffix | +| `ComputeGroupingDensity.cpp:47` | `featureVolumes` | `featureVolumesRef` | DataStore reference needs `Ref` suffix | +| `ComputeGroupingDensity.cpp:50` | `outCheckedFeatures` | `outCheckedFeaturesRef` | DataStore reference needs `Ref` suffix | +| `ComputeGroupingDensity.cpp:51` | `outGroupingDensities` | `outGroupingDensitiesRef` | DataStore reference needs `Ref` suffix | +| `ComputeGroupingDensity.cpp:128` | `numCurNeighborList` | `numNeighbors` | Name is not descriptive | +| `ComputeGroupingDensity.cpp:130` | `l` | `neighborIdx` | Single-letter loop variable is unclear | +| `ComputeGroupingDensity.cpp:133` | `neigh` | `neighborId` | Abbreviation is unclear | +| `ComputeGroupingDensity.cpp:127` | `featureNeighborList` | `featureNeighbors` | Redundant "List" - type already conveys this | +| `ComputeGroupingDensity.cpp:191` | `volumes` | `featureVolumes` | Not descriptive enough; ambiguous with parent volumes | + +### 2.3 Dead / Commented-Out Code + +**File:** `ComputeGroupingDensity.cpp:131-137` + +```cpp +// bool ok = false; +auto neigh = featureNeighborList.at(l); +// if(!ok) +// { +// continue; +// } +``` + +This commented-out block should be removed entirely. If the logic is needed in the future, it can be recovered from version control. + +### 2.4 Type Inconsistencies + +**File:** `ComputeGroupingDensity.cpp:124-125` + +```cpp +void processNeighborListData(const NeighborList& neighbor_list, + const int32 currentFeatureId, const int32 currentParentId, ...) +``` + +The method signature uses `int32` for `currentFeatureId` and `currentParentId`, but the caller passes `usize` loop variables (lines 100-103). This causes an implicit narrowing conversion. The parameters should either be `usize` or explicit casts should be added at the call sites. + +Additionally, the `neighbor_list` parameter uses `snake_case` naming which is inconsistent with the project's `camelBack` convention. + +### 2.5 Const-Correctness + +**File:** `ComputeGroupingDensity.cpp:165` + +```cpp +Int32NeighborList& m_NonContiguousNL; // non-const +``` + +The `m_NonContiguousNL` member is declared as a non-const reference but is only ever read (never modified). It should be `const Int32NeighborList&` for correctness and clarity. + +### 2.6 Performance Suggestions + +#### Use `std::unordered_set` instead of `std::set` + +**File:** `ComputeGroupingDensity.cpp:58` + +```cpp +std::set totalFeatureCheckList = {}; +``` + +`std::set` provides O(log n) lookups and insertions. Replacing it with `std::unordered_set` would give O(1) amortized operations, which can be significant for large feature counts. + +#### Inconsistent lookup style + +**File:** `ComputeGroupingDensity.cpp:86 vs 140` + +Line 86 uses the older `.find() == .end()` pattern: +```cpp +if(totalFeatureCheckList.find(static_cast(currentFeatureId)) == totalFeatureCheckList.end()) +``` + +Line 140 uses the C++20 `.contains()` method: +```cpp +if(!totalFeatureCheckList.contains(neigh)) +``` + +Both should use `.contains()` for consistency, since the project targets C++20. + +### 2.7 Preflight Redundant Null Checks + +**File:** `ComputeGroupingDensityFilter.cpp:130-133` + +```cpp +auto* parentIdsPtr = dataStructure.getDataAs(pParentIdsPath); +auto* featureVolumesPtr = dataStructure.getDataAs(pFeatureVolumesPath); +auto* pContiguousNLPtr = dataStructure.getDataAs(pContiguousNLPath); +auto* pNonContiguousNLPtr = dataStructure.getDataAs(pNonContiguousNLPath); +``` + +Per coding standards, `ArraySelectionParameter` and `NeighborListSelectionParameter` automatically validate that the selected object exists. The `getDataAs` + null checks for `parentIdsPtr`, `featureVolumesPtr`, and `pContiguousNLPtr` are therefore unnecessary. + +**Note:** The null check for `pNonContiguousNLPtr` on line 145 *is* warranted because when `UseNonContiguousNeighbors` is false, the path may be empty/invalid. + +### 2.8 Style / Cleanup + +#### Experimental warning should be removed once tests are in place + +**File:** `ComputeGroupingDensityFilter.cpp:203-204` + +```cpp +preflightUpdatedValues.push_back({"WARNING: This filter is experimental..."}); +resultOutputActions.warnings().push_back({-65432, "WARNING: This filter is experimental..."}); +``` + +Now that comprehensive unit tests exist, this warning can be removed. + +--- + +## 3. Suggestions Summary + +| # | Category | Priority | Description | +|---|---|---|---| +| 1 | Bug | High | Fix broken `fmt::format` in error -15672 (missing `{}` placeholder) | +| 2 | Naming | Medium | Rename 10 variables to follow coding conventions (see table in 2.2) | +| 3 | Cleanup | Low | Remove commented-out dead code in `processNeighborListData` | +| 4 | Type Safety | Medium | Fix `int32` vs `usize` mismatch in `processNeighborListData` signature | +| 5 | Const | Low | Make `m_NonContiguousNL` member `const` | +| 6 | Performance | Low | Replace `std::set` with `std::unordered_set` | +| 7 | Style | Low | Use `.contains()` consistently instead of `.find() == .end()` | +| 8 | Cleanup | Low | Remove redundant null checks for parameter-validated arrays | +| 9 | Cleanup | Low | Remove experimental warning now that tests exist | +| 10 | Style | Low | Rename `neighbor_list` parameter to `neighborList` (camelBack) | + +--- + +## 4. Unit Test Coverage + +### Test Data Design + +A manually constructed DataStructure with: +- **6 features** (index 0 = placeholder, features 1-5) +- **4 parents** (index 0 = placeholder, parents 1-3) +- Features 1, 2, 3 belong to Parent 1 +- Features 4, 5 belong to Parent 2 +- Parent 3 has no features (exercises the `density == -1.0` path) + +**Feature Volumes:** `[0, 10, 20, 15, 25, 30]` +**Parent Volumes:** `[0, 200, 100, 50]` + +**Contiguous Neighbors:** +| Feature | Neighbors | +|---|---| +| 0 | {} | +| 1 | {2} | +| 2 | {1, 3} | +| 3 | {2, 4} | +| 4 | {3, 5} | +| 5 | {4} | + +**Non-Contiguous Neighbors (when enabled):** +| Feature | Neighbors | +|---|---| +| 0 | {} | +| 1 | {4} | +| 2 | {5} | +| 3 | {} | +| 4 | {1} | +| 5 | {2} | + +### Test Cases and Expected Results + +#### Test 1: Basic Density (UseNonContiguous=false, FindChecked=false) + +| Parent | Features Checked | Total Check Volume | Density | +|---|---|---|---| +| 1 | {1, 2, 3, 4} (4 via neighbor of 3) | 10+20+15+25 = 70 | 200/70 = 2.857 | +| 2 | {3, 4, 5} (3 via neighbor of 4) | 25+15+30 = 70 | 100/70 = 1.429 | +| 3 | (none) | 0 | -1.0 | + +#### Test 2: With Non-Contiguous Neighbors (UseNonContiguous=true, FindChecked=false) + +| Parent | Features Checked | Total Check Volume | Density | +|---|---|---|---| +| 1 | {1, 2, 3, 4, 5} (all via extended neighbors) | 100 | 200/100 = 2.0 | +| 2 | {1, 2, 3, 4, 5} (all via extended neighbors) | 100 | 100/100 = 1.0 | +| 3 | (none) | 0 | -1.0 | + +#### Test 3: With Checked Features (UseNonContiguous=false, FindChecked=true) + +Same densities as Test 1. Checked features track which parent (with the largest volume) checked each feature: + +| Feature | Checked By Parent | Reason | +|---|---|---| +| 0 | 0 | Placeholder, never checked | +| 1 | 1 | Checked by Parent 1 (vol=200) | +| 2 | 1 | Checked by Parent 1 (vol=200) | +| 3 | 1 | Parent 1 (200) > Parent 2 (100), stays with Parent 1 | +| 4 | 1 | Parent 1 (200) > Parent 2 (100), stays with Parent 1 | +| 5 | 2 | Only checked by Parent 2 (vol=100) | + +**Expected:** `[0, 1, 1, 1, 1, 2]` + +#### Test 4: Both Options Enabled (UseNonContiguous=true, FindChecked=true) + +Same densities as Test 2. With non-contiguous neighbors, Parent 1 (vol=200) checks ALL features first. Parent 2 (vol=100) cannot override any since 100 < 200. + +**Expected checked features:** `[0, 1, 1, 1, 1, 1]` + +#### Test 5: Preflight Error - Feature tuple count mismatch (Error -15671) + +ParentIds array has a different tuple count than Volumes and ContiguousNL. Expects preflight to return an error. + +#### Test 6: Preflight Error - Volumes not in AttributeMatrix (Error -15673) + +Feature Volumes placed directly under the ImageGeom instead of inside an AttributeMatrix. Expects preflight to return an error. + +#### Test 7: Preflight Error - Parent Volumes not in AttributeMatrix (Error -15670) + +Parent Volumes placed directly under the ImageGeom instead of inside an AttributeMatrix. Expects preflight to return an error. + +### Test Results + +All 7 tests pass: + +``` +100% tests passed, 0 tests failed out of 7 + +Total Test time (real) = 0.41 sec +``` diff --git a/test/ComputeGroupingDensityTest.cpp b/test/ComputeGroupingDensityTest.cpp new file mode 100644 index 0000000..f89bdb6 --- /dev/null +++ b/test/ComputeGroupingDensityTest.cpp @@ -0,0 +1,372 @@ +#include + +#include "simplnx/DataStructure/AttributeMatrix.hpp" +#include "simplnx/DataStructure/DataArray.hpp" +#include "simplnx/DataStructure/Geometry/ImageGeom.hpp" +#include "simplnx/DataStructure/NeighborList.hpp" +#include "simplnx/Parameters/ArraySelectionParameter.hpp" +#include "simplnx/Parameters/BoolParameter.hpp" +#include "simplnx/Parameters/DataObjectNameParameter.hpp" +#include "simplnx/Parameters/NeighborListSelectionParameter.hpp" +#include "simplnx/UnitTest/UnitTestCommon.hpp" + +#include "SimplnxReview/Filters/ComputeGroupingDensityFilter.hpp" +#include "SimplnxReview/SimplnxReview_test_dirs.hpp" + +using namespace nx::core; + +namespace +{ +// DataStructure path constants +const std::string k_ImageGeomName = "ImageGeom"; +const std::string k_FeatureAMName = "CellFeatureData"; +const std::string k_ParentAMName = "ParentFeatureData"; +const std::string k_VolumesName = "Volumes"; +const std::string k_ParentIdsName = "ParentIds"; +const std::string k_ContiguousNLName = "ContiguousNeighborList"; +const std::string k_NonContiguousNLName = "NonContiguousNeighborList"; +const std::string k_ParentVolumesName = "ParentVolumes"; +const std::string k_GroupingDensitiesName = "GroupingDensities"; +const std::string k_CheckedFeaturesName = "CheckedFeatures"; + +const DataPath k_VolumesPath = DataPath({k_ImageGeomName, k_FeatureAMName, k_VolumesName}); +const DataPath k_ParentIdsPath = DataPath({k_ImageGeomName, k_FeatureAMName, k_ParentIdsName}); +const DataPath k_ContiguousNLPath = DataPath({k_ImageGeomName, k_FeatureAMName, k_ContiguousNLName}); +const DataPath k_NonContiguousNLPath = DataPath({k_ImageGeomName, k_FeatureAMName, k_NonContiguousNLName}); +const DataPath k_ParentVolumesPath = DataPath({k_ImageGeomName, k_ParentAMName, k_ParentVolumesName}); +const DataPath k_GroupingDensitiesPath = DataPath({k_ImageGeomName, k_ParentAMName, k_GroupingDensitiesName}); +const DataPath k_CheckedFeaturesPath = DataPath({k_ImageGeomName, k_FeatureAMName, k_CheckedFeaturesName}); + +// Test data dimensions +// 6 features (index 0 = placeholder, features 1-5) +// 4 parents (index 0 = placeholder, parents 1-3) +// Features 1,2,3 → Parent 1 +// Features 4,5 → Parent 2 +// Parent 3 has NO features (tests density == -1.0 path) +constexpr usize k_NumFeatures = 6; +constexpr usize k_NumParents = 4; + +/** + * @brief Builds a DataStructure with all input data needed for the ComputeGroupingDensity filter. + * Optionally includes a non-contiguous neighbor list. + */ +DataStructure createTestDataStructure(bool includeNonContiguousNL) +{ + DataStructure dataStructure; + + // Create ImageGeom (just a container for the AMs) + auto* imageGeom = ImageGeom::Create(dataStructure, k_ImageGeomName); + imageGeom->setDimensions({1, 1, 1}); + + // Feature-level AttributeMatrix (6 tuples: indices 0-5) + auto* featureAM = AttributeMatrix::Create(dataStructure, k_FeatureAMName, {k_NumFeatures}, imageGeom->getId()); + + // Parent-level AttributeMatrix (4 tuples: indices 0-3) + auto* parentAM = AttributeMatrix::Create(dataStructure, k_ParentAMName, {k_NumParents}, imageGeom->getId()); + + // --- Feature-level arrays --- + + // Feature Volumes: [0, 10, 20, 15, 25, 30] + auto* featureVolumes = UnitTest::CreateTestDataArray(dataStructure, k_VolumesName, {k_NumFeatures}, {1}, featureAM->getId()); + auto& featureVolumesRef = featureVolumes->getDataStoreRef(); + featureVolumesRef[0] = 0.0f; + featureVolumesRef[1] = 10.0f; + featureVolumesRef[2] = 20.0f; + featureVolumesRef[3] = 15.0f; + featureVolumesRef[4] = 25.0f; + featureVolumesRef[5] = 30.0f; + + // Parent IDs: [0, 1, 1, 1, 2, 2] + auto* parentIds = UnitTest::CreateTestDataArray(dataStructure, k_ParentIdsName, {k_NumFeatures}, {1}, featureAM->getId()); + auto& parentIdsRef = parentIds->getDataStoreRef(); + parentIdsRef[0] = 0; + parentIdsRef[1] = 1; + parentIdsRef[2] = 1; + parentIdsRef[3] = 1; + parentIdsRef[4] = 2; + parentIdsRef[5] = 2; + + // Contiguous Neighbor List + // Feature 0: {} + // Feature 1: {2} + // Feature 2: {1, 3} + // Feature 3: {2, 4} + // Feature 4: {3, 5} + // Feature 5: {4} + auto* contiguousNL = NeighborList::Create(dataStructure, k_ContiguousNLName, ShapeType{k_NumFeatures}, featureAM->getId()); + contiguousNL->setList(0, std::make_shared>(std::vector{})); + contiguousNL->setList(1, std::make_shared>(std::vector{2})); + contiguousNL->setList(2, std::make_shared>(std::vector{1, 3})); + contiguousNL->setList(3, std::make_shared>(std::vector{2, 4})); + contiguousNL->setList(4, std::make_shared>(std::vector{3, 5})); + contiguousNL->setList(5, std::make_shared>(std::vector{4})); + + // Non-Contiguous Neighbor List (optional) + // Feature 0: {} + // Feature 1: {4} + // Feature 2: {5} + // Feature 3: {} + // Feature 4: {1} + // Feature 5: {2} + if(includeNonContiguousNL) + { + auto* nonContiguousNL = NeighborList::Create(dataStructure, k_NonContiguousNLName, ShapeType{k_NumFeatures}, featureAM->getId()); + nonContiguousNL->setList(0, std::make_shared>(std::vector{})); + nonContiguousNL->setList(1, std::make_shared>(std::vector{4})); + nonContiguousNL->setList(2, std::make_shared>(std::vector{5})); + nonContiguousNL->setList(3, std::make_shared>(std::vector{})); + nonContiguousNL->setList(4, std::make_shared>(std::vector{1})); + nonContiguousNL->setList(5, std::make_shared>(std::vector{2})); + } + + // --- Parent-level arrays --- + + // Parent Volumes: [0, 200, 100, 50] + auto* parentVolumes = UnitTest::CreateTestDataArray(dataStructure, k_ParentVolumesName, {k_NumParents}, {1}, parentAM->getId()); + auto& parentVolumesRef = parentVolumes->getDataStoreRef(); + parentVolumesRef[0] = 0.0f; + parentVolumesRef[1] = 200.0f; + parentVolumesRef[2] = 100.0f; + parentVolumesRef[3] = 50.0f; + + return dataStructure; +} + +/** + * @brief Creates the filter Arguments for the given boolean option combination. + */ +Arguments createFilterArgs(bool useNonContiguous, bool findCheckedFeatures) +{ + Arguments args; + args.insertOrAssign(ComputeGroupingDensityFilter::k_FeatureVolumesArrayPath_Key, std::make_any(k_VolumesPath)); + args.insertOrAssign(ComputeGroupingDensityFilter::k_ContiguousNeighborListArrayPath_Key, std::make_any(k_ContiguousNLPath)); + args.insertOrAssign(ComputeGroupingDensityFilter::k_UseNonContiguousNeighbors_Key, std::make_any(useNonContiguous)); + args.insertOrAssign(ComputeGroupingDensityFilter::k_NonContiguousNeighborListArrayPath_Key, std::make_any(useNonContiguous ? k_NonContiguousNLPath : DataPath{})); + args.insertOrAssign(ComputeGroupingDensityFilter::k_ParentIdsPath_Key, std::make_any(k_ParentIdsPath)); + args.insertOrAssign(ComputeGroupingDensityFilter::k_ParentVolumesPath_Key, std::make_any(k_ParentVolumesPath)); + args.insertOrAssign(ComputeGroupingDensityFilter::k_FindCheckedFeatures_Key, std::make_any(findCheckedFeatures)); + args.insertOrAssign(ComputeGroupingDensityFilter::k_CheckedFeaturesName_Key, std::make_any(k_CheckedFeaturesName)); + args.insertOrAssign(ComputeGroupingDensityFilter::k_GroupingDensitiesName_Key, std::make_any(k_GroupingDensitiesName)); + return args; +} +} // namespace + +// ============================================================================= +// Execution Tests - Exercise all 4 template specializations +// ============================================================================= + +TEST_CASE("SimplnxReview::ComputeGroupingDensityFilter: Basic Density (no non-contiguous, no checked features)", "[SimplnxReview][ComputeGroupingDensityFilter]") +{ + UnitTest::LoadPlugins(); + + DataStructure dataStructure = createTestDataStructure(false); + ComputeGroupingDensityFilter filter; + Arguments args = createFilterArgs(false, false); + + auto executeResult = filter.execute(dataStructure, args, nullptr, IFilter::MessageHandler{[](const IFilter::Message& message) { fmt::print("{}\n", message.message); }}); + SIMPLNX_RESULT_REQUIRE_VALID(executeResult.result); + + // Verify grouping densities + // Parent 1: features {1,2,3}, contiguous neighbors add feature 4 + // totalCheckVolume = 10 + 20 + 15 + 25 = 70 + // density = 200 / 70 ≈ 2.857143 + // Parent 2: features {4,5}, contiguous neighbors add feature 3 + // totalCheckVolume = 25 + 15 + 30 = 70 + // density = 100 / 70 ≈ 1.428571 + // Parent 3: no features → density = -1.0 + REQUIRE_NOTHROW(dataStructure.getDataRefAs(k_GroupingDensitiesPath)); + const auto& groupingDensities = dataStructure.getDataRefAs(k_GroupingDensitiesPath); + + REQUIRE(groupingDensities[1] == Approx(200.0f / 70.0f).epsilon(0.0001f)); + REQUIRE(groupingDensities[2] == Approx(100.0f / 70.0f).epsilon(0.0001f)); + REQUIRE(groupingDensities[3] == Approx(-1.0f)); +} + +TEST_CASE("SimplnxReview::ComputeGroupingDensityFilter: With Non-Contiguous Neighbors", "[SimplnxReview][ComputeGroupingDensityFilter]") +{ + UnitTest::LoadPlugins(); + + DataStructure dataStructure = createTestDataStructure(true); + ComputeGroupingDensityFilter filter; + Arguments args = createFilterArgs(true, false); + + auto executeResult = filter.execute(dataStructure, args, nullptr, IFilter::MessageHandler{[](const IFilter::Message& message) { fmt::print("{}\n", message.message); }}); + SIMPLNX_RESULT_REQUIRE_VALID(executeResult.result); + + // With non-contiguous neighbors, all 5 features get checked for each parent + // Parent 1: totalCheckVolume = 10+20+25+15+30 = 100, density = 200/100 = 2.0 + // Parent 2: totalCheckVolume = 25+15+30+10+20 = 100, density = 100/100 = 1.0 + // Parent 3: no features → density = -1.0 + REQUIRE_NOTHROW(dataStructure.getDataRefAs(k_GroupingDensitiesPath)); + const auto& groupingDensities = dataStructure.getDataRefAs(k_GroupingDensitiesPath); + + REQUIRE(groupingDensities[1] == Approx(2.0f).epsilon(0.0001f)); + REQUIRE(groupingDensities[2] == Approx(1.0f).epsilon(0.0001f)); + REQUIRE(groupingDensities[3] == Approx(-1.0f)); +} + +TEST_CASE("SimplnxReview::ComputeGroupingDensityFilter: With Checked Features", "[SimplnxReview][ComputeGroupingDensityFilter]") +{ + UnitTest::LoadPlugins(); + + DataStructure dataStructure = createTestDataStructure(false); + ComputeGroupingDensityFilter filter; + Arguments args = createFilterArgs(false, true); + + auto executeResult = filter.execute(dataStructure, args, nullptr, IFilter::MessageHandler{[](const IFilter::Message& message) { fmt::print("{}\n", message.message); }}); + SIMPLNX_RESULT_REQUIRE_VALID(executeResult.result); + + // Densities same as basic case + REQUIRE_NOTHROW(dataStructure.getDataRefAs(k_GroupingDensitiesPath)); + const auto& groupingDensities = dataStructure.getDataRefAs(k_GroupingDensitiesPath); + + REQUIRE(groupingDensities[1] == Approx(200.0f / 70.0f).epsilon(0.0001f)); + REQUIRE(groupingDensities[2] == Approx(100.0f / 70.0f).epsilon(0.0001f)); + REQUIRE(groupingDensities[3] == Approx(-1.0f)); + + // Checked features: each feature is assigned to the parent with the largest volume that checked it + // Parent 1 (vol=200) processes first and checks features 1,2,3,4 (feature 4 via neighbor of feature 3) + // Parent 2 (vol=100) processes second and checks features 3,4,5 (features 3,4 via neighbors of feature 4) + // But parent 2 vol=100 < parent 1 vol=200, so features 3,4 stay assigned to parent 1 + // Feature 5 is only checked by parent 2 + // Expected: [0, 1, 1, 1, 1, 2] + REQUIRE_NOTHROW(dataStructure.getDataRefAs(k_CheckedFeaturesPath)); + const auto& checkedFeatures = dataStructure.getDataRefAs(k_CheckedFeaturesPath); + + REQUIRE(checkedFeatures[0] == 0); + REQUIRE(checkedFeatures[1] == 1); + REQUIRE(checkedFeatures[2] == 1); + REQUIRE(checkedFeatures[3] == 1); + REQUIRE(checkedFeatures[4] == 1); + REQUIRE(checkedFeatures[5] == 2); +} + +TEST_CASE("SimplnxReview::ComputeGroupingDensityFilter: Both Options Enabled", "[SimplnxReview][ComputeGroupingDensityFilter]") +{ + UnitTest::LoadPlugins(); + + DataStructure dataStructure = createTestDataStructure(true); + ComputeGroupingDensityFilter filter; + Arguments args = createFilterArgs(true, true); + + auto executeResult = filter.execute(dataStructure, args, nullptr, IFilter::MessageHandler{[](const IFilter::Message& message) { fmt::print("{}\n", message.message); }}); + SIMPLNX_RESULT_REQUIRE_VALID(executeResult.result); + + // With non-contiguous neighbors, all features get checked in parent 1's pass + // Parent 1: density = 200/100 = 2.0 + // Parent 2: density = 100/100 = 1.0 + // Parent 3: density = -1.0 + REQUIRE_NOTHROW(dataStructure.getDataRefAs(k_GroupingDensitiesPath)); + const auto& groupingDensities = dataStructure.getDataRefAs(k_GroupingDensitiesPath); + + REQUIRE(groupingDensities[1] == Approx(2.0f).epsilon(0.0001f)); + REQUIRE(groupingDensities[2] == Approx(1.0f).epsilon(0.0001f)); + REQUIRE(groupingDensities[3] == Approx(-1.0f)); + + // Parent 1 (vol=200) processes first and checks ALL features (1-5) via non-contiguous links + // Parent 2 (vol=100) can't override any since 100 < 200 + // Expected: [0, 1, 1, 1, 1, 1] + REQUIRE_NOTHROW(dataStructure.getDataRefAs(k_CheckedFeaturesPath)); + const auto& checkedFeatures = dataStructure.getDataRefAs(k_CheckedFeaturesPath); + + REQUIRE(checkedFeatures[0] == 0); + REQUIRE(checkedFeatures[1] == 1); + REQUIRE(checkedFeatures[2] == 1); + REQUIRE(checkedFeatures[3] == 1); + REQUIRE(checkedFeatures[4] == 1); + REQUIRE(checkedFeatures[5] == 1); +} + +// ============================================================================= +// Preflight Error Tests +// ============================================================================= + +TEST_CASE("SimplnxReview::ComputeGroupingDensityFilter: Preflight Error - Feature tuple count mismatch", "[SimplnxReview][ComputeGroupingDensityFilter]") +{ + UnitTest::LoadPlugins(); + + // Build a DataStructure where ParentIds has a different tuple count than Volumes + DataStructure dataStructure; + auto* imageGeom = ImageGeom::Create(dataStructure, k_ImageGeomName); + imageGeom->setDimensions({1, 1, 1}); + + auto* featureAM = AttributeMatrix::Create(dataStructure, k_FeatureAMName, {k_NumFeatures}, imageGeom->getId()); + auto* parentAM = AttributeMatrix::Create(dataStructure, k_ParentAMName, {k_NumParents}, imageGeom->getId()); + + // Volumes with 6 tuples + UnitTest::CreateTestDataArray(dataStructure, k_VolumesName, {k_NumFeatures}, {1}, featureAM->getId()); + // Contiguous NL with 6 tuples + NeighborList::Create(dataStructure, k_ContiguousNLName, ShapeType{k_NumFeatures}, featureAM->getId()); + // Parent Volumes + UnitTest::CreateTestDataArray(dataStructure, k_ParentVolumesName, {k_NumParents}, {1}, parentAM->getId()); + + // ParentIds in a DIFFERENT AM with a different tuple count (mismatch!) + auto* mismatchAM = AttributeMatrix::Create(dataStructure, "MismatchAM", {10}, imageGeom->getId()); + UnitTest::CreateTestDataArray(dataStructure, k_ParentIdsName, {10}, {1}, mismatchAM->getId()); + + DataPath mismatchParentIdsPath = DataPath({k_ImageGeomName, "MismatchAM", k_ParentIdsName}); + + ComputeGroupingDensityFilter filter; + Arguments args = createFilterArgs(false, false); + args.insertOrAssign(ComputeGroupingDensityFilter::k_ParentIdsPath_Key, std::make_any(mismatchParentIdsPath)); + + auto preflightResult = filter.preflight(dataStructure, args); + SIMPLNX_RESULT_REQUIRE_INVALID(preflightResult.outputActions); +} + +TEST_CASE("SimplnxReview::ComputeGroupingDensityFilter: Preflight Error - Volumes not in AttributeMatrix", "[SimplnxReview][ComputeGroupingDensityFilter]") +{ + UnitTest::LoadPlugins(); + + // Build a DataStructure where Volumes is NOT inside an AttributeMatrix + DataStructure dataStructure; + auto* imageGeom = ImageGeom::Create(dataStructure, k_ImageGeomName); + imageGeom->setDimensions({1, 1, 1}); + + // Create volumes directly under the ImageGeom (not in an AM) + UnitTest::CreateTestDataArray(dataStructure, k_VolumesName, {k_NumFeatures}, {1}, imageGeom->getId()); + UnitTest::CreateTestDataArray(dataStructure, k_ParentIdsName, {k_NumFeatures}, {1}, imageGeom->getId()); + NeighborList::Create(dataStructure, k_ContiguousNLName, ShapeType{k_NumFeatures}, imageGeom->getId()); + + auto* parentAM = AttributeMatrix::Create(dataStructure, k_ParentAMName, {k_NumParents}, imageGeom->getId()); + UnitTest::CreateTestDataArray(dataStructure, k_ParentVolumesName, {k_NumParents}, {1}, parentAM->getId()); + + DataPath volumesNoAMPath = DataPath({k_ImageGeomName, k_VolumesName}); + DataPath parentIdsNoAMPath = DataPath({k_ImageGeomName, k_ParentIdsName}); + DataPath contiguousNLNoAMPath = DataPath({k_ImageGeomName, k_ContiguousNLName}); + + ComputeGroupingDensityFilter filter; + Arguments args = createFilterArgs(false, false); + args.insertOrAssign(ComputeGroupingDensityFilter::k_FeatureVolumesArrayPath_Key, std::make_any(volumesNoAMPath)); + args.insertOrAssign(ComputeGroupingDensityFilter::k_ParentIdsPath_Key, std::make_any(parentIdsNoAMPath)); + args.insertOrAssign(ComputeGroupingDensityFilter::k_ContiguousNeighborListArrayPath_Key, std::make_any(contiguousNLNoAMPath)); + + auto preflightResult = filter.preflight(dataStructure, args); + SIMPLNX_RESULT_REQUIRE_INVALID(preflightResult.outputActions); +} + +TEST_CASE("SimplnxReview::ComputeGroupingDensityFilter: Preflight Error - Parent Volumes not in AttributeMatrix", "[SimplnxReview][ComputeGroupingDensityFilter]") +{ + UnitTest::LoadPlugins(); + + DataStructure dataStructure; + auto* imageGeom = ImageGeom::Create(dataStructure, k_ImageGeomName); + imageGeom->setDimensions({1, 1, 1}); + + auto* featureAM = AttributeMatrix::Create(dataStructure, k_FeatureAMName, {k_NumFeatures}, imageGeom->getId()); + UnitTest::CreateTestDataArray(dataStructure, k_VolumesName, {k_NumFeatures}, {1}, featureAM->getId()); + UnitTest::CreateTestDataArray(dataStructure, k_ParentIdsName, {k_NumFeatures}, {1}, featureAM->getId()); + NeighborList::Create(dataStructure, k_ContiguousNLName, ShapeType{k_NumFeatures}, featureAM->getId()); + + // Parent Volumes directly under ImageGeom (not in AM) + UnitTest::CreateTestDataArray(dataStructure, k_ParentVolumesName, {k_NumParents}, {1}, imageGeom->getId()); + + DataPath parentVolumesNoAMPath = DataPath({k_ImageGeomName, k_ParentVolumesName}); + + ComputeGroupingDensityFilter filter; + Arguments args = createFilterArgs(false, false); + args.insertOrAssign(ComputeGroupingDensityFilter::k_ParentVolumesPath_Key, std::make_any(parentVolumesNoAMPath)); + + auto preflightResult = filter.preflight(dataStructure, args); + SIMPLNX_RESULT_REQUIRE_INVALID(preflightResult.outputActions); +} From 3e3c78eb9d09efa61913710e83858b7486eb906c Mon Sep 17 00:00:00 2001 From: Michael Jackson Date: Wed, 18 Feb 2026 15:30:22 -0500 Subject: [PATCH 5/6] REV: Fix all code review issues for ComputeGroupingDensity - Fix broken fmt::format in preflight error -15672 (missing {} placeholders) - Rename 10+ variables to follow coding conventions (Ref suffix for DataStore references, descriptive names for loop vars and parameters) - Remove commented-out dead code in processNeighborListData - Fix int32 vs usize type mismatch in processNeighborListData signature - Make m_NonContiguousNL member const (read-only access) - Replace std::set with std::unordered_set for O(1) lookups - Use .contains() consistently instead of .find()==.end() - Replace redundant getDataAs null checks with getDataRefAs references - Remove experimental/untested warning now that tests exist Co-Authored-By: Claude Opus 4.6 --- .../Algorithms/ComputeGroupingDensity.cpp | 89 +++++++++---------- .../Filters/ComputeGroupingDensityFilter.cpp | 30 +++---- 2 files changed, 57 insertions(+), 62 deletions(-) diff --git a/src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.cpp b/src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.cpp index a86b116..3082220 100644 --- a/src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.cpp +++ b/src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.cpp @@ -4,6 +4,8 @@ #include "simplnx/DataStructure/NeighborList.hpp" #include "simplnx/Utilities/MessageHelper.hpp" +#include + using namespace nx::core; namespace @@ -19,13 +21,13 @@ template operator()() { // This is feature data, from 2 different Feature Attribute Matrix - const auto& featureParentIds = m_ParentIds.getDataStoreRef(); - const auto& parentVolumes = m_ParentVolumes.getDataStoreRef(); - const auto& featureVolumes = m_FeatureVolumes.getDataStoreRef(); + const auto& featureParentIdsRef = m_ParentIds.getDataStoreRef(); + const auto& parentVolumesRef = m_ParentVolumes.getDataStoreRef(); + const auto& featureVolumesRef = m_FeatureVolumes.getDataStoreRef(); // These are output **Feature** level data arrays - auto& outCheckedFeatures = m_CheckedFeatures.getDataStoreRef(); - auto& outGroupingDensities = m_GroupingDensities.getDataStoreRef(); + auto& outCheckedFeaturesRef = m_CheckedFeatures.getDataStoreRef(); + auto& outGroupingDensitiesRef = m_GroupingDensities.getDataStoreRef(); - usize numFeatures = featureVolumes.getNumberOfTuples(); - usize numParents = parentVolumes.getNumberOfTuples(); + usize numFeatures = featureVolumesRef.getNumberOfTuples(); + usize numParents = parentVolumesRef.getNumberOfTuples(); float32 totalFeatureCheckVolume = 0.0f; float32 curParentVolume = 0.0f; - std::set totalFeatureCheckList = {}; + std::unordered_set totalFeatureCheckList = {}; std::vector checkedFeatureVolumes = {0.0f}; if constexpr(FindDensitySpecializations::FindingCheckedFeatures) @@ -81,38 +83,39 @@ class FindDensityGrouping { // If the currentParentId is the same as the parentIds[currentFeatureId] and we have not added it to the `totalCheckList` // then increment the volumes - if(featureParentIds[currentFeatureId] == currentParentId) + if(featureParentIdsRef[currentFeatureId] == currentParentId) { - if(totalFeatureCheckList.find(static_cast(currentFeatureId)) == totalFeatureCheckList.end()) + if(!totalFeatureCheckList.contains(static_cast(currentFeatureId))) { totalFeatureCheckVolume += m_FeatureVolumes[currentFeatureId]; // Increment the checked volume by aggregating volumes from each feature that made up the parent feature totalFeatureCheckList.insert(static_cast(currentFeatureId)); // This is to the list of checked features if constexpr(FindDensitySpecializations::FindingCheckedFeatures) { - if(parentVolumes[currentParentId] > checkedFeatureVolumes[currentFeatureId]) + if(parentVolumesRef[currentParentId] > checkedFeatureVolumes[currentFeatureId]) { - checkedFeatureVolumes[currentFeatureId] = parentVolumes[currentParentId]; - outCheckedFeatures[currentFeatureId] = static_cast(currentParentId); + checkedFeatureVolumes[currentFeatureId] = parentVolumesRef[currentParentId]; + outCheckedFeaturesRef[currentFeatureId] = static_cast(currentParentId); } } } - processNeighborListData(m_ContiguousNL, currentFeatureId, currentParentId, totalFeatureCheckList, totalFeatureCheckVolume, parentVolumes, checkedFeatureVolumes, outCheckedFeatures); + processNeighborListData(m_ContiguousNL, currentFeatureId, currentParentId, totalFeatureCheckList, totalFeatureCheckVolume, parentVolumesRef, checkedFeatureVolumes, outCheckedFeaturesRef); if constexpr(FindDensitySpecializations::UsingNonContiguousNeighbors) { - processNeighborListData(m_NonContiguousNL, currentFeatureId, currentParentId, totalFeatureCheckList, totalFeatureCheckVolume, parentVolumes, checkedFeatureVolumes, outCheckedFeatures); + processNeighborListData(m_NonContiguousNL, currentFeatureId, currentParentId, totalFeatureCheckList, totalFeatureCheckVolume, parentVolumesRef, checkedFeatureVolumes, + outCheckedFeaturesRef); } } } // END OF FEATURE ID LOOP - curParentVolume = parentVolumes[currentParentId]; + curParentVolume = parentVolumesRef[currentParentId]; if(totalFeatureCheckVolume == 0.0f) { - outGroupingDensities[currentParentId] = -1.0f; + outGroupingDensitiesRef[currentParentId] = -1.0f; } else { - outGroupingDensities[currentParentId] = (curParentVolume / totalFeatureCheckVolume); + outGroupingDensitiesRef[currentParentId] = (curParentVolume / totalFeatureCheckVolume); } totalFeatureCheckList.clear(); totalFeatureCheckVolume = 0.0f; @@ -121,33 +124,29 @@ class FindDensityGrouping return {}; } - void processNeighborListData(const NeighborList& neighbor_list, const int32 currentFeatureId, const int32 currentParentId, std::set& totalFeatureCheckList, - float32& totalFeatureCheckVolume, const AbstractDataStore& parentVolumes, std::vector& checkedFeatureVolumes, AbstractDataStore& outCheckedFeatures) + void processNeighborListData(const NeighborList& neighborList, usize currentFeatureId, usize currentParentId, std::unordered_set& totalFeatureCheckList, + float32& totalFeatureCheckVolume, const AbstractDataStore& parentVolumesRef, std::vector& checkedFeatureVolumes, + AbstractDataStore& outCheckedFeaturesRef) { - auto featureNeighborList = neighbor_list.at(currentFeatureId); - auto numCurNeighborList = static_cast(featureNeighborList.size()); + auto featureNeighbors = neighborList.at(currentFeatureId); + auto numNeighbors = static_cast(featureNeighbors.size()); - for(int32_t l = 0; l < numCurNeighborList; l++) + for(int32 neighborIdx = 0; neighborIdx < numNeighbors; neighborIdx++) { - // bool ok = false; - auto neigh = featureNeighborList.at(l); - // if(!ok) - // { - // continue; - // } + auto neighborId = featureNeighbors.at(neighborIdx); // If the current neighbor is NOT in the check list... - if(!totalFeatureCheckList.contains(neigh)) + if(!totalFeatureCheckList.contains(neighborId)) { // update the volumes and the check list - totalFeatureCheckVolume += m_FeatureVolumes[neigh]; // Increment the total volume for this neighbor - totalFeatureCheckList.insert(neigh); + totalFeatureCheckVolume += m_FeatureVolumes[neighborId]; // Increment the total volume for this neighbor + totalFeatureCheckList.insert(neighborId); if constexpr(FindDensitySpecializations::FindingCheckedFeatures) { - if(parentVolumes[currentParentId] > checkedFeatureVolumes[neigh]) + if(parentVolumesRef[currentParentId] > checkedFeatureVolumes[neighborId]) { - checkedFeatureVolumes[neigh] = parentVolumes[currentParentId]; - outCheckedFeatures[neigh] = static_cast(currentParentId); + checkedFeatureVolumes[neighborId] = parentVolumesRef[currentParentId]; + outCheckedFeaturesRef[neighborId] = static_cast(currentParentId); } } } @@ -162,7 +161,7 @@ class FindDensityGrouping const Float32Array& m_FeatureVolumes; const Int32NeighborList& m_ContiguousNL; Float32Array& m_GroupingDensities; - Int32NeighborList& m_NonContiguousNL; + const Int32NeighborList& m_NonContiguousNL; Int32Array& m_CheckedFeatures; }; } // namespace @@ -188,33 +187,33 @@ Result<> ComputeGroupingDensity::operator()() { const auto& parentIds = m_DataStructure.getDataRefAs(m_InputValues->ParentIdsPath); const auto& parentVolumes = m_DataStructure.getDataRefAs(m_InputValues->ParentVolumesPath); - const auto& volumes = m_DataStructure.getDataRefAs(m_InputValues->VolumesPath); + const auto& featureVolumes = m_DataStructure.getDataRefAs(m_InputValues->VolumesPath); const auto& contiguousNL = m_DataStructure.getDataRefAs>(m_InputValues->ContiguousNLPath); auto& groupingDensities = m_DataStructure.getDataRefAs(m_InputValues->GroupingDensitiesPath); // These may or may not be empty depending on the parameters // The filter created some temporary hidden data array and neighbor list that may or may not // get used for this. This setup does ensure the next 2 lines will actually return something. - auto& nonContiguousNL = m_DataStructure.getDataRefAs>(m_InputValues->NonContiguousNLPath); + const auto& nonContiguousNL = m_DataStructure.getDataRefAs>(m_InputValues->NonContiguousNLPath); auto& checkedFeatures = m_DataStructure.getDataRefAs(m_InputValues->CheckedFeaturesPath); if(m_InputValues->UseNonContiguousNeighbors) { if(m_InputValues->FindCheckedFeatures) { - return ::FindDensityGrouping>(getCancel(), m_MessageHandler, parentIds, parentVolumes, volumes, contiguousNL, groupingDensities, nonContiguousNL, + return ::FindDensityGrouping>(getCancel(), m_MessageHandler, parentIds, parentVolumes, featureVolumes, contiguousNL, groupingDensities, nonContiguousNL, checkedFeatures)(); } - return ::FindDensityGrouping>(getCancel(), m_MessageHandler, parentIds, parentVolumes, volumes, contiguousNL, groupingDensities, nonContiguousNL, + return ::FindDensityGrouping>(getCancel(), m_MessageHandler, parentIds, parentVolumes, featureVolumes, contiguousNL, groupingDensities, nonContiguousNL, checkedFeatures)(); } if(m_InputValues->FindCheckedFeatures) { - return ::FindDensityGrouping>(getCancel(), m_MessageHandler, parentIds, parentVolumes, volumes, contiguousNL, groupingDensities, nonContiguousNL, + return ::FindDensityGrouping>(getCancel(), m_MessageHandler, parentIds, parentVolumes, featureVolumes, contiguousNL, groupingDensities, nonContiguousNL, checkedFeatures)(); } - return ::FindDensityGrouping>(getCancel(), m_MessageHandler, parentIds, parentVolumes, volumes, contiguousNL, groupingDensities, nonContiguousNL, + return ::FindDensityGrouping>(getCancel(), m_MessageHandler, parentIds, parentVolumes, featureVolumes, contiguousNL, groupingDensities, nonContiguousNL, checkedFeatures)(); } diff --git a/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.cpp b/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.cpp index 128fd51..f86de81 100644 --- a/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.cpp +++ b/src/SimplnxReview/Filters/ComputeGroupingDensityFilter.cpp @@ -127,26 +127,25 @@ IFilter::PreflightResult ComputeGroupingDensityFilter::preflightImpl(const DataS Result resultOutputActions; std::vector preflightUpdatedValues; - auto* parentIdsPtr = dataStructure.getDataAs(pParentIdsPath); - auto* featureVolumesPtr = dataStructure.getDataAs(pFeatureVolumesPath); - auto* pContiguousNLPtr = dataStructure.getDataAs(pContiguousNLPath); - auto* pNonContiguousNLPtr = dataStructure.getDataAs(pNonContiguousNLPath); + // Selection parameters auto-validate existence, so use references directly + const auto& parentIds = dataStructure.getDataRefAs(pParentIdsPath); + const auto& featureVolumes = dataStructure.getDataRefAs(pFeatureVolumesPath); + const auto& contiguousNL = dataStructure.getDataRefAs(pContiguousNLPath); // Make sure all these arrays and neighbor lists all come from the same attribute matrix or at least have the same number of tuples - if(parentIdsPtr != nullptr && featureVolumesPtr != nullptr && pContiguousNLPtr != nullptr) + if(parentIds.getNumberOfTuples() != featureVolumes.getNumberOfTuples() || parentIds.getNumberOfTuples() != contiguousNL.getNumberOfTuples()) { - if(parentIdsPtr->getNumberOfTuples() != featureVolumesPtr->getNumberOfTuples() || parentIdsPtr->getNumberOfTuples() != pContiguousNLPtr->getNumberOfTuples()) - { - return MakePreflightErrorResult(-15671, fmt::format("All Input Feature level data arrays and neighbor lists MUST have the same number of tuples.\n{}: {}\n{}: {}\n{}: {}", - pParentIdsPath.toString(), parentIdsPtr->getNumberOfTuples(), pFeatureVolumesPath.toString(), featureVolumesPtr->getNumberOfTuples(), - pContiguousNLPath.toString(), pContiguousNLPtr->getNumberOfTuples())); - } + return MakePreflightErrorResult(-15671, fmt::format("All Input Feature level data arrays and neighbor lists MUST have the same number of tuples.\n{}: {}\n{}: {}\n{}: {}", + pParentIdsPath.toString(), parentIds.getNumberOfTuples(), pFeatureVolumesPath.toString(), featureVolumes.getNumberOfTuples(), + pContiguousNLPath.toString(), contiguousNL.getNumberOfTuples())); } - if(parentIdsPtr != nullptr && pNonContiguousNLPtr != nullptr) + if(pUseNonContiguousNeighbors) { - if(parentIdsPtr->getNumberOfTuples() != pNonContiguousNLPtr->getNumberOfTuples()) + const auto& nonContiguousNL = dataStructure.getDataRefAs(pNonContiguousNLPath); + if(parentIds.getNumberOfTuples() != nonContiguousNL.getNumberOfTuples()) { - return MakePreflightErrorResult(-15672, fmt::format("All Input Feature level data arrays and neighbor lists MUST have the same number of tuples.", pParentVolumesPath.toString())); + return MakePreflightErrorResult(-15672, fmt::format("All Input Feature level data arrays and neighbor lists MUST have the same number of tuples.\n{}: {}\n{}: {}", pParentIdsPath.toString(), + parentIds.getNumberOfTuples(), pNonContiguousNLPath.toString(), nonContiguousNL.getNumberOfTuples())); } } @@ -200,9 +199,6 @@ IFilter::PreflightResult ComputeGroupingDensityFilter::preflightImpl(const DataS resultOutputActions.value().appendAction(std::move(createArrayAction)); } - preflightUpdatedValues.push_back({"WARNING: This filter is experimental in nature and has not had any testing, validation or verification. Use at your own risk"}); - resultOutputActions.warnings().push_back({-65432, "WARNING: This filter is experimental in nature and has not had any testing, validation or verification. Use at your own risk"}); - return {std::move(resultOutputActions), std::move(preflightUpdatedValues)}; } From dc62a14fe1be1b7634cd4a048605aeadf7c1771e Mon Sep 17 00:00:00 2001 From: Michael Jackson Date: Tue, 24 Feb 2026 22:41:07 -0500 Subject: [PATCH 6/6] TEST: Verify unit test exemplar data file --- CLAUDE.md | 288 -------------- .../COMPUTE_GROUPING_DENSITIES_REVIEW.md | 372 ------------------ docs/ComputeGroupingDensityFilter.md | 72 +++- .../ComputeGroupingDensity_Algorithm.png | Bin 0 -> 532032 bytes .../ComputeGroupingDensity_FeatureIds.png | Bin 0 -> 12946 bytes .../ComputeGroupingDensity_ParentIds.png | Bin 0 -> 11640 bytes test/CMakeLists.txt | 6 +- test/ComputeGroupingDensityTest.cpp | 179 ++++++--- 8 files changed, 188 insertions(+), 729 deletions(-) delete mode 100644 CLAUDE.md delete mode 100644 Code_Reviews/COMPUTE_GROUPING_DENSITIES_REVIEW.md create mode 100644 docs/Images/ComputeGroupingDensity_Algorithm.png create mode 100644 docs/Images/ComputeGroupingDensity_FeatureIds.png create mode 100644 docs/Images/ComputeGroupingDensity_ParentIds.png diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index e970735..0000000 --- a/CLAUDE.md +++ /dev/null @@ -1,288 +0,0 @@ -# Project Guidelines for Claude - -## Project Overview - -The filter Compute Grouping Density needs a thorough review. - -- [ ] I need to understand the algorithm. Can you generate a flow chart of the main algorithm -- [ ] The variable naming needs to make sense -- [ ] I need to generate TEST_CASE() that will exercise each of the code paths -- [ ] I need to create a test file to be used as a unit test for each of those code paths - -Can you make suggestions for improvements, test_case setup and any other issue that you find in the code. - -This is a simplnx Plugin that is built as part of the normal simplnx build. Therefore use the following paths: - -- Build Directory: /Users/mjackson/Workspace1/DREAM3D-Build/simplnx-Rel -- CMake Configuration: `cd /Users/mjackson/Workspace1/simplnx && cmake --preset simplnx-Rel` -- If you need python there is an anaconda environment called 'dream3d' that can be used - -## Directory Structure -- `src/SimplnxReview/Filters` - Filters -- `test/` - Test files - -## Directories to Ignore - - -## Coding Standards - -### C++ Style (from .clang-format) -- C++20 standard -- Allman brace style (braces on new lines for classes, control statements, enums, functions, namespaces, structs, before else) -- 200 column limit -- 2-space indentation, no tabs -- Pointer alignment left (`int* ptr` not `int *ptr`) -- No space before parentheses -- Sort includes alphabetically -- No short functions on single line -- Always break template declarations -- Constructor initializers break before comma - -### Naming Conventions (from .clang-tidy) -- C++ header files: `.hpp` extension -- C++ source files: `.cpp` extension -- Namespaces: `lower_case` -- Classes: `CamelCase` -- Structs: `CamelCase` -- Class methods: `camelBack` -- Functions: `camelBack` -- Variables: `camelBack` -- Private members: `m_` prefix + `CamelCase` (e.g., `m_MemberVariable`) -- Global variables: `CamelCase` -- Global constants: `k_` prefix + `CamelCase` (e.g., `k_DefaultValue`) -- Local pointers: `camelBack` + `Ptr` suffix (e.g., `dataPtr`) -- Type aliases: `CamelCase` + `Type` suffix (e.g., `ValueType`) -- Macros: `UPPER_CASE` - -### Descriptive Variable Naming -Use suffixes to make variable types and purposes immediately clear: - -**Geometry variables use `Geom` suffix:** -- Correct: `const auto& imageGeom = dataStructure.getDataRefAs(path);` -- Incorrect: `const auto& image = dataStructure.getDataRefAs(path);` - -**DataStore references use `Ref` suffix:** -- Correct: `const auto& verticesRef = vertexGeom.getVertices()->getDataStoreRef();` -- Incorrect: `const auto& vertices = vertexGeom.getVertices()->getDataStoreRef();` - -Examples: -```cpp -// Geometry variables -auto& imageGeom = dataStructure.getDataRefAs(imagePath); -const auto& rectGridGeom = dataStructure.getDataRefAs(rectPath); -const auto& edgeGeom = dataStructure.getDataRefAs(edgePath); - -// DataStore references -const auto& xBoundsRef = rectGridGeom.getXBounds()->getDataStoreRef(); -const auto& yBoundsRef = rectGridGeom.getYBounds()->getDataStoreRef(); -const auto& verticesRef = edgeGeom.getVertices()->getDataStoreRef(); -``` - -These conventions improve code clarity and distinguish between geometry objects and their underlying data references. - -### File Organization -- When creating a C++ based simplnx filter inside a plugin, the complete filter will have a "NameFilter.hpp" and "NameFilter.cpp" file, an "Algorithm/Name.hpp" and "Algorithm/Name.cpp". -- Filter documentation files are created in Markdown and are in the "docs" subfolder inside the Plugins directory -- Unit tests should be created in the 'test' subfolder and use the 'catch2' unit testing framework. - -## Filter Implementation Guidelines - -### Parameter Validation -- Selection parameters (GeometrySelectionParameter, ArraySelectionParameter, DataGroupSelectionParameter, etc.) automatically validate that the selected object exists in the DataStructure. Do NOT add null checks for these in preflightImpl() or executeImpl(). -- Only add explicit existence checks for objects that are not validated by a selection parameter. - -### DataStructure Access -- Use `getDataRefAs()` to get a reference when you know the object exists (e.g., validated by a selection parameter). -- Use `getDataAs()` to get a pointer only when you need to check if an object exists or when the object may not be present. -- **IMPORTANT**: In unit tests, always wrap `getDataRefAs()` calls with `REQUIRE_NOTHROW()` to provide clear test failure messages if the object doesn't exist. - -Example - Correct: -```cpp -// Parameter already validated this exists, use reference -const auto& imageGeom = dataStructure.getDataRefAs(pInputImageGeometryPathValue); -SizeVec3 dims = imageGeom.getDimensions(); -``` - -Example - Incorrect: -```cpp -// Unnecessary null check - parameter already validated existence -const auto* imageGeomPtr = dataStructure.getDataAs(pInputImageGeometryPathValue); -if(imageGeomPtr == nullptr) -{ - return {MakeErrorResult(-1000, "Could not find geometry")}; -} -``` - -## Thread Safety - -### DataArray and DataStore Classes Are NOT Thread-Safe -- `DataArray`, `DataStore`, and `AbstractDataStore` classes are **NOT thread-safe** for concurrent read or write access. -- The subscript operator (`operator[]`) and other access methods may have internal state or go through virtual function calls that are not safe for concurrent access, even when accessing different indices. -- Some `DataStore` subclasses use out-of-core implementations where data may not be resident in memory. Getting raw pointers to the underlying data is dangerous and should be avoided. - -### Parallelization Guidelines -- When writing parallel algorithms using `ParallelDataAlgorithm`, be aware that passing `DataArray` or `DataStore` references to worker classes can cause random failures on different platforms. -- If parallel access to data arrays is required, consider: - 1. Disabling parallelization with `parallelAlgorithm.setParallelizationEnabled(false)` for correctness - 2. Using thread-local storage for intermediate results - 3. Structuring the algorithm to avoid concurrent access to the same DataArray -- Do NOT assume that writing to different indices of a DataArray from multiple threads is safe. - -Example - Potentially Unsafe: -```cpp -// This pattern can cause random failures even when threads write to different indices -class MyParallelWorker -{ - DataArray& m_OutputArray; // NOT thread-safe for concurrent access - void operator()(const Range& range) const - { - for(usize i = range.min(); i < range.max(); i++) - { - m_OutputArray[i] = computeValue(i); // May fail randomly - } - } -}; -``` - -## Build System -- CMake-based build system -- vcpkg for dependency management -- `cmake --preset simplnx-Rel` to configure the project -- Anaconda Python environment called 'dream3d' if python is needed. - -## Testing -- Unit tests use the Catch2 framework. -- Each `TEST_CASE` should include `UnitTest::CheckArraysInheritTupleDims(dataStructure);` near the end of the test to ensure all created data arrays have correct tuple dimensions inherited from their parent groups. - -### Running Unit Tests -- Always use `ctest` to run unit tests, NOT the test binary directly -- The `ctest` command handles test data extraction and cleanup automatically -- Use the `-R` flag to run specific tests by name pattern - -Example - Running a specific test: -```bash -cd /path/to/build/directory -ctest -R "SimplnxCore::FillBadData" --verbose -``` - -Example - Running all SimplnxCore tests: -```bash -cd /path/to/build/directory -ctest -R "SimplnxCore::" --verbose -``` - -### Printing debug statements in unit tests - -Example - Correct - -auto executeResult = filter.execute(dataStructure, args, nullptr, IFilter::MessageHandler{[](const IFilter::Message& message){ fmt::print("{}\n", message.message); }}); - -### Exemplar-Based Testing Pattern -- Many tests use "exemplar" datasets - pre-generated golden reference data stored in `.dream3d` files -- Exemplar datasets are generated by running pipeline files (`.d3dpipeline`) that configure and execute filters - -#### Workflow for Creating and Publishing Test Data: -1. **Generate test data locally**: Create pipeline file with filter configurations and `WriteDREAM3DFilter` to save results -2. **Execute pipeline**: Run the pipeline to generate exemplar `.dream3d` file and any input data files -3. **Package as tar.gz**: Compress test data (no `6_6_` prefix needed - that was only for legacy DREAM3D data) - ```bash - tar -zvcf test_name.tar.gz test_directory/ - ``` -4. **Compute SHA512 hash**: - ```bash - shasum -a 512 test_name.tar.gz - ``` -5. **Upload to GitHub**: Upload to the [DREAM3D data archive release](https://github.com/BlueQuartzSoftware/simplnx/releases/tag/Data_Archive) -6. **Update CMakeLists.txt**: Add `download_test_data()` call in `src/Plugins/[PluginName]/test/CMakeLists.txt`: - ```cmake - download_test_data(DREAM3D_DATA_DIR ${DREAM3D_DATA_DIR} - ARCHIVE_NAME test_name.tar.gz - SHA512 ) - ``` -7. **Test data auto-downloads**: When tests run, the sentinel mechanism automatically downloads and extracts the tar.gz to `unit_test::k_TestFilesDir` - -#### Test Data Archive Naming and Versioning: -- **Base naming**: Use descriptive names that match the test: `test_name.tar.gz` -- **Version suffixes**: When updating existing test data, append version numbers: `test_name_v2.tar.gz`, `test_name_v3.tar.gz` -- **When to version**: - - Original archive already exists in GitHub data archive - - Test requirements changed (new exemplars, different parameters, additional data files) - - Cannot overwrite original because other code may depend on it - - CMakeLists.txt may reference both old and new versions for different tests -- **Check before creating**: Browse the [Data_Archive release](https://github.com/BlueQuartzSoftware/simplnx/releases/tag/Data_Archive) to see if your test data name already exists -- **Legacy prefixes**: The `6_6_` and `6_5_` prefixes are for data from legacy DREAM3D/SIMPL versions - do NOT use for new DREAM3DNX test data - -#### Test Code Pattern: -```cpp -namespace -{ -const std::string k_TestDataDirName = "test_name"; -const fs::path k_TestDataDir = fs::path(unit_test::k_TestFilesDir.view()) / k_TestDataDirName; -const fs::path k_ExemplarFile = k_TestDataDir / "test_name.dream3d"; -const fs::path k_InputImageFile = k_TestDataDir / "input_file.tif"; -} -``` - -**Example**: If `import_image_stack_test.tar.gz` exists in the archive and you need to upload updated test data with new exemplars, create `import_image_stack_test_v2.tar.gz`. Update CMakeLists.txt to reference the new version, and optionally keep the old version if other tests depend on it. - -#### Comparing Test Results Against Exemplars: -- **Load exemplar DataStructure**: Use `UnitTest::LoadDataStructure(exemplarFilePath)` to load the .dream3d file -- **ALWAYS use `REQUIRE_NOTHROW()` before `getDataRefAs()`**: This applies to ALL `getDataRefAs` calls - both generated and exemplar data -- **Get generated data**: Use `getDataRefAs()` wrapped in `REQUIRE_NOTHROW()` since objects were just created by the filter -- **Get exemplar data**: Use `getDataRefAs()` wrapped in `REQUIRE_NOTHROW()` to verify the exemplar exists before accessing -- **Compare geometries**: Use `UnitTest::CompareImageGeometry(&exemplarGeom, &generatedGeom)` - takes two pointers -- **Compare arrays**: Use `UnitTest::CompareDataArrays(exemplarArray, generatedArray)` - type-specific template -- **Switch on data type** when comparing arrays to handle different types (uint8, uint16, uint32, float32, etc.) - -Example pattern: -```cpp -// Load exemplar -DataStructure exemplarDS = UnitTest::LoadDataStructure(k_ExemplarFile); - -// Get geometries - ALWAYS wrap getDataRefAs with REQUIRE_NOTHROW -REQUIRE_NOTHROW(dataStructure.getDataRefAs(generatedGeomPath)); -const auto& generatedGeom = dataStructure.getDataRefAs(generatedGeomPath); -REQUIRE_NOTHROW(exemplarDS.getDataRefAs(DataPath({exemplarGeomName}))); -const auto& exemplarGeom = exemplarDS.getDataRefAs(DataPath({exemplarGeomName})); - -// Compare geometries (dimensions, origin, spacing) - pass pointers -UnitTest::CompareImageGeometry(&exemplarGeom, &generatedGeom); - -// Get arrays - ALWAYS wrap getDataRefAs with REQUIRE_NOTHROW -REQUIRE_NOTHROW(dataStructure.getDataRefAs(generatedDataPath)); -const auto& generatedArray = dataStructure.getDataRefAs(generatedDataPath); -REQUIRE_NOTHROW(exemplarDS.getDataRefAs(exemplarDataPath)); -const auto& exemplarArray = exemplarDS.getDataRefAs(exemplarDataPath); - -// Compare arrays based on type -switch(generatedArray.getDataType()) -{ -case DataType::uint8: - UnitTest::CompareDataArrays(exemplarArray, generatedArray); - break; -case DataType::uint16: - UnitTest::CompareDataArrays(exemplarArray, generatedArray); - break; -// ... etc -} -``` - -**Important**: Use the standardized `UnitTest::` comparison methods directly in test code. - -### Test Organization -- Each test should call `UnitTest::LoadPlugins()` before executing filters -- Use `DYNAMIC_SECTION()` for parameterized tests that generate multiple test cases - -## Pipeline Files -- JSON format with `.d3dpipeline` extension -- Contains array of filter configurations with arguments -- Each filter has: - - `args`: Dictionary of parameter keys and values - - `comments`: Description of what the filter does - - `filter`: Name and UUID - - `isDisabled`: Boolean to skip filter execution -- Common pattern: Multiple filter configurations followed by WriteDREAM3DFilter to save all results to one `.dream3d` file -- Output geometry paths in pipeline must match exemplar names expected by tests - -## Additional Notes - diff --git a/Code_Reviews/COMPUTE_GROUPING_DENSITIES_REVIEW.md b/Code_Reviews/COMPUTE_GROUPING_DENSITIES_REVIEW.md deleted file mode 100644 index 51faeda..0000000 --- a/Code_Reviews/COMPUTE_GROUPING_DENSITIES_REVIEW.md +++ /dev/null @@ -1,372 +0,0 @@ -# ComputeGroupingDensity Filter - Code Review - -**Date:** 2026-02-18 -**Branch:** `topic/compute_grouping_density_review` -**Files Reviewed:** -- `src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.hpp` -- `src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.cpp` -- `src/SimplnxReview/Filters/ComputeGroupingDensityFilter.hpp` -- `src/SimplnxReview/Filters/ComputeGroupingDensityFilter.cpp` -- `test/ComputeGroupingDensityTest.cpp` -- `docs/ComputeGroupingDensityFilter.md` - ---- - -## 1. Algorithm Overview - -The `ComputeGroupingDensity` filter computes **grouping densities** for parent features in a hierarchical reconstruction. It operates on a two-level feature hierarchy: child **Features** (grains) that belong to **Parent Features** (reconstructed groups). - -### Data Model - -| Data | Level | Type | Description | -|---|---|---|---| -| Feature Volumes | Feature | `Float32Array` | Volume of each child feature | -| Parent IDs | Feature | `Int32Array` | Which parent each feature belongs to | -| Contiguous Neighbor List | Feature | `NeighborList` | Contiguous neighbors per feature | -| Non-Contiguous Neighbor List | Feature | `NeighborList` | (Optional) Non-contiguous neighbors per feature | -| Parent Volumes | Parent | `Float32Array` | Volume of each parent feature | -| **Grouping Densities** | **Parent (output)** | `Float32Array` | Computed density for each parent | -| **Checked Features** | **Feature (output)** | `Int32Array` | (Optional) Which parent checked each feature | - -### Algorithm Flowchart - -``` -START - Initialize: - totalFeatureCheckVolume = 0 - totalFeatureCheckList = {} (empty set) - checkedFeatureVolumes = [0...] (only if FindCheckedFeatures) - - FOR each parentId (1..numParents): - | - | FOR each featureId (1..numFeatures): - | | - | | Is parentIds[featureId] == currentParentId? - | | | - | | NO --> skip to next featureId - | | | - | | YES - | | | - | | Is featureId already in totalFeatureCheckList? - | | | - | | NO: - | | | totalFeatureCheckVolume += featureVolumes[featureId] - | | | Add featureId to totalFeatureCheckList - | | | - | | | [If FindCheckedFeatures]: - | | | If parentVolumes[parentId] > checkedFeatureVolumes[featureId]: - | | | checkedFeatureVolumes[featureId] = parentVolumes[parentId] - | | | outCheckedFeatures[featureId] = parentId - | | | - | | YES: (skip volume add, go straight to neighbor processing) - | | | - | | processNeighborListData(contiguousNeighborList): - | | | For each neighbor of featureId: - | | | If neighbor NOT in totalFeatureCheckList: - | | | totalFeatureCheckVolume += featureVolumes[neighbor] - | | | Add neighbor to totalFeatureCheckList - | | | [If FindCheckedFeatures]: - | | | If parentVolumes[parentId] > checkedFeatureVolumes[neighbor]: - | | | checkedFeatureVolumes[neighbor] = parentVolumes[parentId] - | | | outCheckedFeatures[neighbor] = parentId - | | | - | | [If UseNonContiguousNeighbors]: - | | processNeighborListData(nonContiguousNeighborList) - | | (same logic as above) - | | - | END FOR (featureId) - | - | Compute density for this parent: - | If totalFeatureCheckVolume == 0: - | groupingDensities[parentId] = -1.0 - | Else: - | groupingDensities[parentId] = parentVolumes[parentId] / totalFeatureCheckVolume - | - | Clear totalFeatureCheckList - | Reset totalFeatureCheckVolume = 0 - | - END FOR (parentId) - -DONE -``` - -### Algorithm Summary - -For each parent, the algorithm: -1. Finds all features belonging to that parent -2. Collects all contiguous (and optionally non-contiguous) neighbors of those features -3. Sums the volumes of all collected ("checked") features -4. Computes density as `parentVolume / totalCheckedVolume` -5. A density of `-1.0` indicates no features were found for that parent - -### Template Specializations - -The algorithm uses compile-time template booleans for the two optional paths, resulting in 4 specializations: - -| `UseNonContiguousNeighbors` | `FindCheckedFeatures` | Description | -|---|---|---| -| `false` | `false` | Contiguous neighbors only, no checked features output | -| `true` | `false` | Both neighbor types, no checked features output | -| `false` | `true` | Contiguous neighbors only, with checked features output | -| `true` | `true` | Both neighbor types, with checked features output | - ---- - -## 2. Issues Found - -### 2.1 Bugs / Correctness Issues - -#### Bug 1: Broken `fmt::format` in preflight error message - -**File:** `ComputeGroupingDensityFilter.cpp:149` -**Severity:** Medium - -```cpp -return MakePreflightErrorResult(-15672, - fmt::format("All Input Feature level data arrays and neighbor lists MUST have the same number of tuples.", - pParentVolumesPath.toString())); -``` - -The format string contains **no `{}` placeholder** but `pParentVolumesPath.toString()` is passed as an argument. The path is silently ignored. The error message should include the mismatched paths and their tuple counts (similar to error -15671 above it). - -**Suggested fix:** -```cpp -return MakePreflightErrorResult(-15672, - fmt::format("All Input Feature level data arrays and neighbor lists MUST have the same number of tuples.\n{}: {}\n{}: {}", - pParentIdsPath.toString(), parentIdsPtr->getNumberOfTuples(), - pNonContiguousNLPath.toString(), pNonContiguousNLPtr->getNumberOfTuples())); -``` - -#### Bug 2: Original unit test was a non-functional stub - -**File:** `test/ComputeGroupingDensityTest.cpp` (original) -**Severity:** High - -The original test loaded an exemplar DataStructure but then created a completely separate empty `DataStructure ds` and ran the filter against it with default arguments. The exemplar was never used for comparison. The test would either produce meaningless results or silently pass without testing anything. - -**Status:** Fixed - replaced with 7 comprehensive test cases (see Section 4). - -### 2.2 Variable Naming Violations - -Per the project coding standards, DataStore references should use the `Ref` suffix, and variables should have descriptive names. - -| File:Line | Current Name | Suggested Name | Reason | -|---|---|---|---| -| `ComputeGroupingDensity.cpp:45` | `featureParentIds` | `featureParentIdsRef` | DataStore reference needs `Ref` suffix | -| `ComputeGroupingDensity.cpp:46` | `parentVolumes` | `parentVolumesRef` | DataStore reference needs `Ref` suffix | -| `ComputeGroupingDensity.cpp:47` | `featureVolumes` | `featureVolumesRef` | DataStore reference needs `Ref` suffix | -| `ComputeGroupingDensity.cpp:50` | `outCheckedFeatures` | `outCheckedFeaturesRef` | DataStore reference needs `Ref` suffix | -| `ComputeGroupingDensity.cpp:51` | `outGroupingDensities` | `outGroupingDensitiesRef` | DataStore reference needs `Ref` suffix | -| `ComputeGroupingDensity.cpp:128` | `numCurNeighborList` | `numNeighbors` | Name is not descriptive | -| `ComputeGroupingDensity.cpp:130` | `l` | `neighborIdx` | Single-letter loop variable is unclear | -| `ComputeGroupingDensity.cpp:133` | `neigh` | `neighborId` | Abbreviation is unclear | -| `ComputeGroupingDensity.cpp:127` | `featureNeighborList` | `featureNeighbors` | Redundant "List" - type already conveys this | -| `ComputeGroupingDensity.cpp:191` | `volumes` | `featureVolumes` | Not descriptive enough; ambiguous with parent volumes | - -### 2.3 Dead / Commented-Out Code - -**File:** `ComputeGroupingDensity.cpp:131-137` - -```cpp -// bool ok = false; -auto neigh = featureNeighborList.at(l); -// if(!ok) -// { -// continue; -// } -``` - -This commented-out block should be removed entirely. If the logic is needed in the future, it can be recovered from version control. - -### 2.4 Type Inconsistencies - -**File:** `ComputeGroupingDensity.cpp:124-125` - -```cpp -void processNeighborListData(const NeighborList& neighbor_list, - const int32 currentFeatureId, const int32 currentParentId, ...) -``` - -The method signature uses `int32` for `currentFeatureId` and `currentParentId`, but the caller passes `usize` loop variables (lines 100-103). This causes an implicit narrowing conversion. The parameters should either be `usize` or explicit casts should be added at the call sites. - -Additionally, the `neighbor_list` parameter uses `snake_case` naming which is inconsistent with the project's `camelBack` convention. - -### 2.5 Const-Correctness - -**File:** `ComputeGroupingDensity.cpp:165` - -```cpp -Int32NeighborList& m_NonContiguousNL; // non-const -``` - -The `m_NonContiguousNL` member is declared as a non-const reference but is only ever read (never modified). It should be `const Int32NeighborList&` for correctness and clarity. - -### 2.6 Performance Suggestions - -#### Use `std::unordered_set` instead of `std::set` - -**File:** `ComputeGroupingDensity.cpp:58` - -```cpp -std::set totalFeatureCheckList = {}; -``` - -`std::set` provides O(log n) lookups and insertions. Replacing it with `std::unordered_set` would give O(1) amortized operations, which can be significant for large feature counts. - -#### Inconsistent lookup style - -**File:** `ComputeGroupingDensity.cpp:86 vs 140` - -Line 86 uses the older `.find() == .end()` pattern: -```cpp -if(totalFeatureCheckList.find(static_cast(currentFeatureId)) == totalFeatureCheckList.end()) -``` - -Line 140 uses the C++20 `.contains()` method: -```cpp -if(!totalFeatureCheckList.contains(neigh)) -``` - -Both should use `.contains()` for consistency, since the project targets C++20. - -### 2.7 Preflight Redundant Null Checks - -**File:** `ComputeGroupingDensityFilter.cpp:130-133` - -```cpp -auto* parentIdsPtr = dataStructure.getDataAs(pParentIdsPath); -auto* featureVolumesPtr = dataStructure.getDataAs(pFeatureVolumesPath); -auto* pContiguousNLPtr = dataStructure.getDataAs(pContiguousNLPath); -auto* pNonContiguousNLPtr = dataStructure.getDataAs(pNonContiguousNLPath); -``` - -Per coding standards, `ArraySelectionParameter` and `NeighborListSelectionParameter` automatically validate that the selected object exists. The `getDataAs` + null checks for `parentIdsPtr`, `featureVolumesPtr`, and `pContiguousNLPtr` are therefore unnecessary. - -**Note:** The null check for `pNonContiguousNLPtr` on line 145 *is* warranted because when `UseNonContiguousNeighbors` is false, the path may be empty/invalid. - -### 2.8 Style / Cleanup - -#### Experimental warning should be removed once tests are in place - -**File:** `ComputeGroupingDensityFilter.cpp:203-204` - -```cpp -preflightUpdatedValues.push_back({"WARNING: This filter is experimental..."}); -resultOutputActions.warnings().push_back({-65432, "WARNING: This filter is experimental..."}); -``` - -Now that comprehensive unit tests exist, this warning can be removed. - ---- - -## 3. Suggestions Summary - -| # | Category | Priority | Description | -|---|---|---|---| -| 1 | Bug | High | Fix broken `fmt::format` in error -15672 (missing `{}` placeholder) | -| 2 | Naming | Medium | Rename 10 variables to follow coding conventions (see table in 2.2) | -| 3 | Cleanup | Low | Remove commented-out dead code in `processNeighborListData` | -| 4 | Type Safety | Medium | Fix `int32` vs `usize` mismatch in `processNeighborListData` signature | -| 5 | Const | Low | Make `m_NonContiguousNL` member `const` | -| 6 | Performance | Low | Replace `std::set` with `std::unordered_set` | -| 7 | Style | Low | Use `.contains()` consistently instead of `.find() == .end()` | -| 8 | Cleanup | Low | Remove redundant null checks for parameter-validated arrays | -| 9 | Cleanup | Low | Remove experimental warning now that tests exist | -| 10 | Style | Low | Rename `neighbor_list` parameter to `neighborList` (camelBack) | - ---- - -## 4. Unit Test Coverage - -### Test Data Design - -A manually constructed DataStructure with: -- **6 features** (index 0 = placeholder, features 1-5) -- **4 parents** (index 0 = placeholder, parents 1-3) -- Features 1, 2, 3 belong to Parent 1 -- Features 4, 5 belong to Parent 2 -- Parent 3 has no features (exercises the `density == -1.0` path) - -**Feature Volumes:** `[0, 10, 20, 15, 25, 30]` -**Parent Volumes:** `[0, 200, 100, 50]` - -**Contiguous Neighbors:** -| Feature | Neighbors | -|---|---| -| 0 | {} | -| 1 | {2} | -| 2 | {1, 3} | -| 3 | {2, 4} | -| 4 | {3, 5} | -| 5 | {4} | - -**Non-Contiguous Neighbors (when enabled):** -| Feature | Neighbors | -|---|---| -| 0 | {} | -| 1 | {4} | -| 2 | {5} | -| 3 | {} | -| 4 | {1} | -| 5 | {2} | - -### Test Cases and Expected Results - -#### Test 1: Basic Density (UseNonContiguous=false, FindChecked=false) - -| Parent | Features Checked | Total Check Volume | Density | -|---|---|---|---| -| 1 | {1, 2, 3, 4} (4 via neighbor of 3) | 10+20+15+25 = 70 | 200/70 = 2.857 | -| 2 | {3, 4, 5} (3 via neighbor of 4) | 25+15+30 = 70 | 100/70 = 1.429 | -| 3 | (none) | 0 | -1.0 | - -#### Test 2: With Non-Contiguous Neighbors (UseNonContiguous=true, FindChecked=false) - -| Parent | Features Checked | Total Check Volume | Density | -|---|---|---|---| -| 1 | {1, 2, 3, 4, 5} (all via extended neighbors) | 100 | 200/100 = 2.0 | -| 2 | {1, 2, 3, 4, 5} (all via extended neighbors) | 100 | 100/100 = 1.0 | -| 3 | (none) | 0 | -1.0 | - -#### Test 3: With Checked Features (UseNonContiguous=false, FindChecked=true) - -Same densities as Test 1. Checked features track which parent (with the largest volume) checked each feature: - -| Feature | Checked By Parent | Reason | -|---|---|---| -| 0 | 0 | Placeholder, never checked | -| 1 | 1 | Checked by Parent 1 (vol=200) | -| 2 | 1 | Checked by Parent 1 (vol=200) | -| 3 | 1 | Parent 1 (200) > Parent 2 (100), stays with Parent 1 | -| 4 | 1 | Parent 1 (200) > Parent 2 (100), stays with Parent 1 | -| 5 | 2 | Only checked by Parent 2 (vol=100) | - -**Expected:** `[0, 1, 1, 1, 1, 2]` - -#### Test 4: Both Options Enabled (UseNonContiguous=true, FindChecked=true) - -Same densities as Test 2. With non-contiguous neighbors, Parent 1 (vol=200) checks ALL features first. Parent 2 (vol=100) cannot override any since 100 < 200. - -**Expected checked features:** `[0, 1, 1, 1, 1, 1]` - -#### Test 5: Preflight Error - Feature tuple count mismatch (Error -15671) - -ParentIds array has a different tuple count than Volumes and ContiguousNL. Expects preflight to return an error. - -#### Test 6: Preflight Error - Volumes not in AttributeMatrix (Error -15673) - -Feature Volumes placed directly under the ImageGeom instead of inside an AttributeMatrix. Expects preflight to return an error. - -#### Test 7: Preflight Error - Parent Volumes not in AttributeMatrix (Error -15670) - -Parent Volumes placed directly under the ImageGeom instead of inside an AttributeMatrix. Expects preflight to return an error. - -### Test Results - -All 7 tests pass: - -``` -100% tests passed, 0 tests failed out of 7 - -Total Test time (real) = 0.41 sec -``` diff --git a/docs/ComputeGroupingDensityFilter.md b/docs/ComputeGroupingDensityFilter.md index b1b49ec..c8788be 100644 --- a/docs/ComputeGroupingDensityFilter.md +++ b/docs/ComputeGroupingDensityFilter.md @@ -1,22 +1,82 @@ # Compute Grouping Densities -**THIS FILTER IS UNTESTED, UNVERIFIED AND UNVALIDATED. IT IS AN EXPERIMENTAL FILTER THAT IS UNDERGOING LONG TERM DEVELOPMENT -AND TESTING. USE AT YOUR OWN RISK** - ## Group (Subgroup) Statistics (Reconstruction) ## Description -This **Filter** calculates the grouping densities for specific **Parent Features**. This filter is intended to be used for hierarchical reconstructions (i.e., reconstructions involving more than one segmentation; thus, the **Feature**-**Parent Feature** relationship). The **Filter** iterates through all **Features** that belong to each **Parent Feature,** querying each of the **Feature** **Neighbors** to determine if it was checked during grouping. A list of **Checked Features** is kept for each **Parent Feature**. Then, each **Parent Volume** is divided by the corresponding total volume of **Checked Features** to give the **Grouping Densities**. +This **Filter** computes a **Grouping Density** value for each **Parent Feature** in a hierarchical reconstruction. Hierarchical reconstructions involve more than one level of segmentation, creating a **Feature** to **Parent Feature** relationship (e.g., grains grouped into reconstructed parent grains). + +The **Grouping Density** quantifies how spatially concentrated the child **Features** of a **Parent Feature** are relative to the surrounding microstructure. A higher density value indicates the **Parent Feature's** volume is large relative to the region its child **Features** and their neighbors occupy, suggesting a tightly packed grouping. A lower density value indicates the child **Features** are spread out among many neighbors, suggesting a more dispersed grouping. + +### How It Works + +For each **Parent Feature**, the filter: + +1. Identifies all child **Features** that belong to the **Parent Feature** (via the **Parent IDs** array). +2. Collects all contiguous neighbors of those child **Features** (and optionally non-contiguous neighbors). +3. Accumulates the volumes of all collected ("checked") **Features** into a total checked volume. Each **Feature** is only counted once, even if it is a neighbor of multiple child **Features**. +4. Computes the **Grouping Density** as: + +``` +Grouping Density = Parent Volume / Total Checked Volume +``` + +If a **Parent Feature** has no child **Features** (total checked volume is zero), the **Grouping Density** is set to **-1.0** to indicate an invalid or empty parent. + +### Optional Parameters + +#### Use Non-Contiguous Neighbors + +When enabled, the filter also queries the **Non-Contiguous Neighbor List** for each child **Feature** in addition to the standard **Contiguous Neighbor List**. This expands the set of checked **Features** to include neighbors that are nearby but do not share a direct face/edge/vertex with the child **Feature**. Enable this option if non-contiguous neighbors were used during the original grouping step. Typically the filter "Compute Feature NeighborHoods" is used to generate the Non-contiguous Neighbors lists. That filter's parameter for the "Multiples of Average Diameter can have a large effect on the final Grouping Density value that is computed. + +#### Find Checked Features + +When enabled, the filter produces an additional output array (**Checked Features**) at the **Feature** level. For each **Feature** that was checked during the density computation, this array records which **Parent Feature** checked it. Since a **Feature** may be checked by multiple **Parent Features** (as a neighbor of children belonging to different parents), the assignment goes to the **Parent Feature** with the **largest Parent Volume**. This provides a way to see which parent had the strongest influence over each region of the microstructure. + -If non-contiguous neighbors were used in addition to standard neighbors for grouping, then the *Use Non-Contiguous Neighbors* Parameter may be used. +### Worked Example -Since many **Checked Features** are checked by more than one **Feature** during grouping, a premium is placed on the **Parent Feature** querying the **Checked Feature** having the largest **Parent Volume.** For **Checked Features** to be written, the *Find Checked Features* Parameter may be used. +Consider a 20x5 2D **Image Geometry** with unit spacing (1.0 x 1.0 x 1.0), containing 5 **Features** arranged as vertical bands and 2 **Parent Features**: + +![](Images/ComputeGroupingDensity_FeatureIds.png) + +![](Images/ComputeGroupingDensity_ParentIds.png) + +- Features 1, 2, 3 belong to Parent 1 (Parent Volume = 45, i.e. 10 + 20 + 15 cells) +- Features 4, 5 belong to Parent 2 (Parent Volume = 55, i.e. 25 + 30 cells) + +| Feature | Cells | Volume | Parent | Contiguous Neighbors | +|---------|-------|--------|--------|----------------------| +| 1 | 10 | 10.0 | 1 | {2} | +| 2 | 20 | 20.0 | 1 | {1, 3} | +| 3 | 15 | 15.0 | 1 | {2, 4} | +| 4 | 25 | 25.0 | 2 | {3, 5} | +| 5 | 30 | 30.0 | 2 | {4} | + +**Parent 1:** Child features {1, 2, 3} plus their contiguous neighbors include feature 4 (neighbor of feature 3). Total checked volume = 10 + 20 + 15 + 25 = 70. Density = 45 / 70 = **0.6429**. + +**Parent 2:** Child features {4, 5} plus their contiguous neighbors include feature 3 (neighbor of feature 4). Total checked volume = 25 + 30 + 15 = 70. Density = 55 / 70 = **0.7857**. + +Note that both densities are less than 1.0 because each parent's children have neighbors belonging to the *other* parent, expanding the total checked volume beyond the parent's own volume. + +### Interpreting Results + +| Density Value | Interpretation | +|---------------|----------------| +| > 1.0 | Parent volume exceeds the total checked region; the grouping is compact and dense | +| = 1.0 | Parent volume equals the total checked region | +| 0.0 < d < 1.0 | Parent volume is smaller than the total checked region; the grouping is dispersed | +| -1.0 | No child features found for this parent (invalid/empty parent) | % Auto generated parameter table will be inserted here + +### Algorithm Flowchart + +![ComputeGroupingDensity Algorithm Flowchart](Images/ComputeGroupingDensity_Algorithm.png) + ## References ## Example Pipelines diff --git a/docs/Images/ComputeGroupingDensity_Algorithm.png b/docs/Images/ComputeGroupingDensity_Algorithm.png new file mode 100644 index 0000000000000000000000000000000000000000..5c41a960cc7f41ea69e6234ae0dc003f1b4a8008 GIT binary patch literal 532032 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

TdmH_+NS2cROd4G;N+@K=r5d!k#d2 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

Q-4;}7W3!tvLM#=7|9csn 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 z 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

B4nfW*u?6XdZbflP9fMY?! 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 M6*S}vWzF9HFIMq*!vFvP literal 0 HcmV?d00001 diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 47b111e..ea3a9e0 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -6,10 +6,10 @@ # ------------------------------------------------------------------------------ # Define the list of unit test source files set(${PLUGIN_NAME}UnitTest_SRCS - MergeColoniesTest.cpp + ComputeGroupingDensityTest.cpp ComputeLocalAverageCAxisMisalignmentsTest.cpp ComputeMicroTextureRegionsTest.cpp - ComputeGroupingDensityTest.cpp + MergeColoniesTest.cpp ) set(DISABLED_TESTS @@ -59,7 +59,7 @@ if(EXISTS "${DREAM3D_DATA_DIR}" AND SIMPLNX_DOWNLOAD_TEST_FILES) file(MAKE_DIRECTORY "${DREAM3D_DATA_DIR}/TestFiles/") endif() -# download_test_data(DREAM3D_DATA_DIR ${DREAM3D_DATA_DIR} ARCHIVE_NAME 12_IN625_GBCD.tar.gz SHA512 f696a8af181505947e6fecfdb1a11fda6c762bba5e85fea8d484b1af00bf18643e1d930d48f092ee238d1c19c9ce7c4fb5a8092d17774bda867961a1400e9cea) + download_test_data(DREAM3D_DATA_DIR ${DREAM3D_DATA_DIR} ARCHIVE_NAME compute_grouping_densities.tar.gz SHA512 96066196d6aa5f87cc7b717f959848c2f3025b7129589abe1eded2a8d725c539a89b0a6290a388a56b5a401e0bd3041698fbd8e8cf37a1f18fdd937debd21531) endif() diff --git a/test/ComputeGroupingDensityTest.cpp b/test/ComputeGroupingDensityTest.cpp index f89bdb6..b9d0caa 100644 --- a/test/ComputeGroupingDensityTest.cpp +++ b/test/ComputeGroupingDensityTest.cpp @@ -25,8 +25,8 @@ const std::string k_VolumesName = "Volumes"; const std::string k_ParentIdsName = "ParentIds"; const std::string k_ContiguousNLName = "ContiguousNeighborList"; const std::string k_NonContiguousNLName = "NonContiguousNeighborList"; -const std::string k_ParentVolumesName = "ParentVolumes"; -const std::string k_GroupingDensitiesName = "GroupingDensities"; +const std::string k_ParentVolumesName = "Volumes"; +const std::string k_ComputedGroupingDensitiesName = "Computed GroupingDensities"; const std::string k_CheckedFeaturesName = "CheckedFeatures"; const DataPath k_VolumesPath = DataPath({k_ImageGeomName, k_FeatureAMName, k_VolumesName}); @@ -34,21 +34,26 @@ const DataPath k_ParentIdsPath = DataPath({k_ImageGeomName, k_FeatureAMName, k_P const DataPath k_ContiguousNLPath = DataPath({k_ImageGeomName, k_FeatureAMName, k_ContiguousNLName}); const DataPath k_NonContiguousNLPath = DataPath({k_ImageGeomName, k_FeatureAMName, k_NonContiguousNLName}); const DataPath k_ParentVolumesPath = DataPath({k_ImageGeomName, k_ParentAMName, k_ParentVolumesName}); -const DataPath k_GroupingDensitiesPath = DataPath({k_ImageGeomName, k_ParentAMName, k_GroupingDensitiesName}); +const DataPath k_GroupingDensitiesPath = DataPath({k_ImageGeomName, k_ParentAMName, k_ComputedGroupingDensitiesName}); const DataPath k_CheckedFeaturesPath = DataPath({k_ImageGeomName, k_FeatureAMName, k_CheckedFeaturesName}); -// Test data dimensions -// 6 features (index 0 = placeholder, features 1-5) -// 4 parents (index 0 = placeholder, parents 1-3) -// Features 1,2,3 → Parent 1 -// Features 4,5 → Parent 2 -// Parent 3 has NO features (tests density == -1.0 path) +// Test data dimensions matching the 20x5 2D Image Geometry: +// 6 features (index 0 = placeholder, features 1-5) +// 3 parents (index 0 = placeholder, parents 1-2) +// Features 1,2,3 -> Parent 1 (volume = 10+20+15 = 45) +// Features 4,5 -> Parent 2 (volume = 25+30 = 55) constexpr usize k_NumFeatures = 6; -constexpr usize k_NumParents = 4; +constexpr usize k_NumParents = 3; /** * @brief Builds a DataStructure with all input data needed for the ComputeGroupingDensity filter. * Optionally includes a non-contiguous neighbor list. + * + * Data matches the 20x5 2D Image Geometry worked example: + * Feature Volumes: [0, 10, 20, 15, 25, 30] + * Parent IDs: [0, 1, 1, 1, 2, 2] + * Parent Volumes: [0, 45, 55] + * Contiguous Neighbors: chain 1-2-3-4-5 */ DataStructure createTestDataStructure(bool includeNonContiguousNL) { @@ -61,7 +66,7 @@ DataStructure createTestDataStructure(bool includeNonContiguousNL) // Feature-level AttributeMatrix (6 tuples: indices 0-5) auto* featureAM = AttributeMatrix::Create(dataStructure, k_FeatureAMName, {k_NumFeatures}, imageGeom->getId()); - // Parent-level AttributeMatrix (4 tuples: indices 0-3) + // Parent-level AttributeMatrix (3 tuples: indices 0-2) auto* parentAM = AttributeMatrix::Create(dataStructure, k_ParentAMName, {k_NumParents}, imageGeom->getId()); // --- Feature-level arrays --- @@ -86,7 +91,7 @@ DataStructure createTestDataStructure(bool includeNonContiguousNL) parentIdsRef[4] = 2; parentIdsRef[5] = 2; - // Contiguous Neighbor List + // Contiguous Neighbor List (chain: 1-2-3-4-5) // Feature 0: {} // Feature 1: {2} // Feature 2: {1, 3} @@ -121,13 +126,12 @@ DataStructure createTestDataStructure(bool includeNonContiguousNL) // --- Parent-level arrays --- - // Parent Volumes: [0, 200, 100, 50] + // Parent Volumes: [0, 45, 55] (sum of child feature cell volumes) auto* parentVolumes = UnitTest::CreateTestDataArray(dataStructure, k_ParentVolumesName, {k_NumParents}, {1}, parentAM->getId()); auto& parentVolumesRef = parentVolumes->getDataStoreRef(); parentVolumesRef[0] = 0.0f; - parentVolumesRef[1] = 200.0f; - parentVolumesRef[2] = 100.0f; - parentVolumesRef[3] = 50.0f; + parentVolumesRef[1] = 45.0f; + parentVolumesRef[2] = 55.0f; return dataStructure; } @@ -146,16 +150,78 @@ Arguments createFilterArgs(bool useNonContiguous, bool findCheckedFeatures) args.insertOrAssign(ComputeGroupingDensityFilter::k_ParentVolumesPath_Key, std::make_any(k_ParentVolumesPath)); args.insertOrAssign(ComputeGroupingDensityFilter::k_FindCheckedFeatures_Key, std::make_any(findCheckedFeatures)); args.insertOrAssign(ComputeGroupingDensityFilter::k_CheckedFeaturesName_Key, std::make_any(k_CheckedFeaturesName)); - args.insertOrAssign(ComputeGroupingDensityFilter::k_GroupingDensitiesName_Key, std::make_any(k_GroupingDensitiesName)); + args.insertOrAssign(ComputeGroupingDensityFilter::k_GroupingDensitiesName_Key, std::make_any(k_ComputedGroupingDensitiesName)); return args; } } // namespace +// ============================================================================= +// Exemplar-Based Test - Compare against DREAM3D-NX pipeline output +// ============================================================================= + +TEST_CASE("SimplnxReview::ComputeGroupingDensityFilter: Basic Density (contiguous, no checked features)", "[SimplnxReview][ComputeGroupingDensityFilter]") +{ + + const std::string k_GroupingDensitiesName = "GroupingDensities (false, false)"; + const DataPath k_ExemplarGroupingDensitiesPath = DataPath({k_ImageGeomName, k_ParentAMName, k_GroupingDensitiesName}); + + UnitTest::LoadPlugins(); + + const nx::core::UnitTest::TestFileSentinel testDataSentinel(nx::core::unit_test::k_TestFilesDir, "compute_grouping_densities.tar.gz", "compute_grouping_densities"); + + // Read Exemplar DREAM3D File Filter + auto exemplarFilePath = fs::path(fmt::format("{}/compute_grouping_densities/compute_grouping_densities.dream3d", unit_test::k_TestFilesDir)); + DataStructure dataStructure = UnitTest::LoadDataStructure(exemplarFilePath); + + ComputeGroupingDensityFilter filter; + Arguments args; + args.insertOrAssign(ComputeGroupingDensityFilter::k_FeatureVolumesArrayPath_Key, std::make_any(k_VolumesPath)); + args.insertOrAssign(ComputeGroupingDensityFilter::k_ContiguousNeighborListArrayPath_Key, std::make_any(k_ContiguousNLPath)); + args.insertOrAssign(ComputeGroupingDensityFilter::k_UseNonContiguousNeighbors_Key, std::make_any(false)); + args.insertOrAssign(ComputeGroupingDensityFilter::k_NonContiguousNeighborListArrayPath_Key, std::make_any(DataPath{})); + args.insertOrAssign(ComputeGroupingDensityFilter::k_ParentIdsPath_Key, std::make_any(k_ParentIdsPath)); + args.insertOrAssign(ComputeGroupingDensityFilter::k_ParentVolumesPath_Key, std::make_any(k_ParentVolumesPath)); + args.insertOrAssign(ComputeGroupingDensityFilter::k_FindCheckedFeatures_Key, std::make_any(false)); + args.insertOrAssign(ComputeGroupingDensityFilter::k_CheckedFeaturesName_Key, std::make_any(k_CheckedFeaturesName)); + args.insertOrAssign(ComputeGroupingDensityFilter::k_GroupingDensitiesName_Key, std::make_any(k_ComputedGroupingDensitiesName)); + + // Preflight the filter and check result + auto preflightResult = filter.preflight(dataStructure, args); + SIMPLNX_RESULT_REQUIRE_VALID(preflightResult.outputActions) + + auto executeResult = filter.execute(dataStructure, args, nullptr, IFilter::MessageHandler{[](const IFilter::Message& message) { fmt::print("{}\n", message.message); }}); + SIMPLNX_RESULT_REQUIRE_VALID(executeResult.result); + + // Compare computed densities against the exemplar from the DREAM3D-NX pipeline + REQUIRE_NOTHROW(dataStructure.getDataRefAs(k_GroupingDensitiesPath)); + REQUIRE_NOTHROW(dataStructure.getDataRefAs(k_ExemplarGroupingDensitiesPath)); + + const auto& computedDensities = dataStructure.getDataRefAs(k_GroupingDensitiesPath); + const auto& exemplarDensities = dataStructure.getDataRefAs(k_ExemplarGroupingDensitiesPath); + + REQUIRE(computedDensities.getNumberOfTuples() == exemplarDensities.getNumberOfTuples()); + for(usize i = 0; i < computedDensities.getNumberOfTuples(); i++) + { + REQUIRE(computedDensities[i] == Approx(exemplarDensities[i]).epsilon(0.0001f)); + } + + // Verify against hand-calculated values: + // Parent Volumes: [0, 45, 55] + // Parent 1: children {1,2,3}, neighbors add feature 4 + // totalCheckVolume = 10 + 20 + 15 + 25 = 70 + // density = 45 / 70 = 0.642857 + // Parent 2: children {4,5}, neighbors add feature 3 + // totalCheckVolume = 25 + 30 + 15 = 70 + // density = 55 / 70 = 0.785714 + REQUIRE(computedDensities[1] == Approx(45.0f / 70.0f).epsilon(0.0001f)); + REQUIRE(computedDensities[2] == Approx(55.0f / 70.0f).epsilon(0.0001f)); +} + // ============================================================================= // Execution Tests - Exercise all 4 template specializations // ============================================================================= -TEST_CASE("SimplnxReview::ComputeGroupingDensityFilter: Basic Density (no non-contiguous, no checked features)", "[SimplnxReview][ComputeGroupingDensityFilter]") +TEST_CASE("SimplnxReview::ComputeGroupingDensityFilter: Contiguous Only, No Checked Features", "[SimplnxReview][ComputeGroupingDensityFilter]") { UnitTest::LoadPlugins(); @@ -166,20 +232,17 @@ TEST_CASE("SimplnxReview::ComputeGroupingDensityFilter: Basic Density (no non-co auto executeResult = filter.execute(dataStructure, args, nullptr, IFilter::MessageHandler{[](const IFilter::Message& message) { fmt::print("{}\n", message.message); }}); SIMPLNX_RESULT_REQUIRE_VALID(executeResult.result); - // Verify grouping densities - // Parent 1: features {1,2,3}, contiguous neighbors add feature 4 + // Parent 1: children {1,2,3}, contiguous neighbors add feature 4 // totalCheckVolume = 10 + 20 + 15 + 25 = 70 - // density = 200 / 70 ≈ 2.857143 - // Parent 2: features {4,5}, contiguous neighbors add feature 3 - // totalCheckVolume = 25 + 15 + 30 = 70 - // density = 100 / 70 ≈ 1.428571 - // Parent 3: no features → density = -1.0 + // density = 45 / 70 = 0.642857 + // Parent 2: children {4,5}, contiguous neighbors add feature 3 + // totalCheckVolume = 25 + 30 + 15 = 70 + // density = 55 / 70 = 0.785714 REQUIRE_NOTHROW(dataStructure.getDataRefAs(k_GroupingDensitiesPath)); const auto& groupingDensities = dataStructure.getDataRefAs(k_GroupingDensitiesPath); - REQUIRE(groupingDensities[1] == Approx(200.0f / 70.0f).epsilon(0.0001f)); - REQUIRE(groupingDensities[2] == Approx(100.0f / 70.0f).epsilon(0.0001f)); - REQUIRE(groupingDensities[3] == Approx(-1.0f)); + REQUIRE(groupingDensities[1] == Approx(45.0f / 70.0f).epsilon(0.0001f)); + REQUIRE(groupingDensities[2] == Approx(55.0f / 70.0f).epsilon(0.0001f)); } TEST_CASE("SimplnxReview::ComputeGroupingDensityFilter: With Non-Contiguous Neighbors", "[SimplnxReview][ComputeGroupingDensityFilter]") @@ -194,15 +257,13 @@ TEST_CASE("SimplnxReview::ComputeGroupingDensityFilter: With Non-Contiguous Neig SIMPLNX_RESULT_REQUIRE_VALID(executeResult.result); // With non-contiguous neighbors, all 5 features get checked for each parent - // Parent 1: totalCheckVolume = 10+20+25+15+30 = 100, density = 200/100 = 2.0 - // Parent 2: totalCheckVolume = 25+15+30+10+20 = 100, density = 100/100 = 1.0 - // Parent 3: no features → density = -1.0 + // Parent 1: totalCheckVolume = 10+20+15+25+30 = 100, density = 45/100 = 0.45 + // Parent 2: totalCheckVolume = 25+30+15+10+20 = 100, density = 55/100 = 0.55 REQUIRE_NOTHROW(dataStructure.getDataRefAs(k_GroupingDensitiesPath)); const auto& groupingDensities = dataStructure.getDataRefAs(k_GroupingDensitiesPath); - REQUIRE(groupingDensities[1] == Approx(2.0f).epsilon(0.0001f)); - REQUIRE(groupingDensities[2] == Approx(1.0f).epsilon(0.0001f)); - REQUIRE(groupingDensities[3] == Approx(-1.0f)); + REQUIRE(groupingDensities[1] == Approx(45.0f / 100.0f).epsilon(0.0001f)); + REQUIRE(groupingDensities[2] == Approx(55.0f / 100.0f).epsilon(0.0001f)); } TEST_CASE("SimplnxReview::ComputeGroupingDensityFilter: With Checked Features", "[SimplnxReview][ComputeGroupingDensityFilter]") @@ -216,28 +277,28 @@ TEST_CASE("SimplnxReview::ComputeGroupingDensityFilter: With Checked Features", auto executeResult = filter.execute(dataStructure, args, nullptr, IFilter::MessageHandler{[](const IFilter::Message& message) { fmt::print("{}\n", message.message); }}); SIMPLNX_RESULT_REQUIRE_VALID(executeResult.result); - // Densities same as basic case + // Densities same as contiguous-only case REQUIRE_NOTHROW(dataStructure.getDataRefAs(k_GroupingDensitiesPath)); const auto& groupingDensities = dataStructure.getDataRefAs(k_GroupingDensitiesPath); - REQUIRE(groupingDensities[1] == Approx(200.0f / 70.0f).epsilon(0.0001f)); - REQUIRE(groupingDensities[2] == Approx(100.0f / 70.0f).epsilon(0.0001f)); - REQUIRE(groupingDensities[3] == Approx(-1.0f)); + REQUIRE(groupingDensities[1] == Approx(45.0f / 70.0f).epsilon(0.0001f)); + REQUIRE(groupingDensities[2] == Approx(55.0f / 70.0f).epsilon(0.0001f)); // Checked features: each feature is assigned to the parent with the largest volume that checked it - // Parent 1 (vol=200) processes first and checks features 1,2,3,4 (feature 4 via neighbor of feature 3) - // Parent 2 (vol=100) processes second and checks features 3,4,5 (features 3,4 via neighbors of feature 4) - // But parent 2 vol=100 < parent 1 vol=200, so features 3,4 stay assigned to parent 1 - // Feature 5 is only checked by parent 2 - // Expected: [0, 1, 1, 1, 1, 2] + // Parent 1 (vol=45) processes first and checks features {1,2,3,4} + // Parent 2 (vol=55) processes second and checks features {3,4,5} + // Feature 3: checked by Parent 1 (45) then Parent 2 (55 > 45) -> overridden to Parent 2 + // Feature 4: checked by Parent 1 (45) then Parent 2 (55 > 45) -> overridden to Parent 2 + // Feature 5: only checked by Parent 2 + // Expected: [0, 1, 1, 2, 2, 2] REQUIRE_NOTHROW(dataStructure.getDataRefAs(k_CheckedFeaturesPath)); const auto& checkedFeatures = dataStructure.getDataRefAs(k_CheckedFeaturesPath); REQUIRE(checkedFeatures[0] == 0); REQUIRE(checkedFeatures[1] == 1); REQUIRE(checkedFeatures[2] == 1); - REQUIRE(checkedFeatures[3] == 1); - REQUIRE(checkedFeatures[4] == 1); + REQUIRE(checkedFeatures[3] == 2); + REQUIRE(checkedFeatures[4] == 2); REQUIRE(checkedFeatures[5] == 2); } @@ -252,29 +313,27 @@ TEST_CASE("SimplnxReview::ComputeGroupingDensityFilter: Both Options Enabled", " auto executeResult = filter.execute(dataStructure, args, nullptr, IFilter::MessageHandler{[](const IFilter::Message& message) { fmt::print("{}\n", message.message); }}); SIMPLNX_RESULT_REQUIRE_VALID(executeResult.result); - // With non-contiguous neighbors, all features get checked in parent 1's pass - // Parent 1: density = 200/100 = 2.0 - // Parent 2: density = 100/100 = 1.0 - // Parent 3: density = -1.0 + // With non-contiguous neighbors, all features get checked by both parents + // Parent 1: density = 45/100 = 0.45 + // Parent 2: density = 55/100 = 0.55 REQUIRE_NOTHROW(dataStructure.getDataRefAs(k_GroupingDensitiesPath)); const auto& groupingDensities = dataStructure.getDataRefAs(k_GroupingDensitiesPath); - REQUIRE(groupingDensities[1] == Approx(2.0f).epsilon(0.0001f)); - REQUIRE(groupingDensities[2] == Approx(1.0f).epsilon(0.0001f)); - REQUIRE(groupingDensities[3] == Approx(-1.0f)); + REQUIRE(groupingDensities[1] == Approx(45.0f / 100.0f).epsilon(0.0001f)); + REQUIRE(groupingDensities[2] == Approx(55.0f / 100.0f).epsilon(0.0001f)); - // Parent 1 (vol=200) processes first and checks ALL features (1-5) via non-contiguous links - // Parent 2 (vol=100) can't override any since 100 < 200 - // Expected: [0, 1, 1, 1, 1, 1] + // Parent 1 (vol=45) checks ALL features {1,2,3,4,5} via non-contiguous links + // Parent 2 (vol=55) also checks ALL features, and 55 > 45 so all get overridden + // Expected: [0, 2, 2, 2, 2, 2] REQUIRE_NOTHROW(dataStructure.getDataRefAs(k_CheckedFeaturesPath)); const auto& checkedFeatures = dataStructure.getDataRefAs(k_CheckedFeaturesPath); REQUIRE(checkedFeatures[0] == 0); - REQUIRE(checkedFeatures[1] == 1); - REQUIRE(checkedFeatures[2] == 1); - REQUIRE(checkedFeatures[3] == 1); - REQUIRE(checkedFeatures[4] == 1); - REQUIRE(checkedFeatures[5] == 1); + REQUIRE(checkedFeatures[1] == 2); + REQUIRE(checkedFeatures[2] == 2); + REQUIRE(checkedFeatures[3] == 2); + REQUIRE(checkedFeatures[4] == 2); + REQUIRE(checkedFeatures[5] == 2); } // =============================================================================