Permalink
Browse files

Topic/ignore data array (#843)

* Fix failing test due to different results from the FindFeature Centroids change.

Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>

* Allow filter to ignore specific DataArrays during the tuple copy operation

These filters perform actions where data from neighboring voxels are copied into
the current voxel. Some types of data such as voxel position data should never
be over written with other data, at least not during these filter operations.
This commit adds a MultiDataArraySelectionWidget to the filter to allow the user
to select DataArrays that are ignored during the copyTuple phase of the filter.

Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
  • Loading branch information...
imikejackson committed Dec 3, 2018
1 parent 86db4ef commit 9addfcff3eea2fa816b9f68cf08381bfd480b667
Showing with 903 additions and 319 deletions.
  1. +27 −23 Source/Plugins/OrientationAnalysis/OrientationAnalysisFilters/NeighborOrientationCorrelation.cpp
  2. +3 −0 Source/Plugins/OrientationAnalysis/OrientationAnalysisFilters/NeighborOrientationCorrelation.h
  3. +17 −10 ...ins/OrientationAnalysis/OrientationAnalysisFilters/ReplaceElementAttributesWithNeighborValues.cpp
  4. +3 −0 ...ugins/OrientationAnalysis/OrientationAnalysisFilters/ReplaceElementAttributesWithNeighborValues.h
  5. +11 −2 Source/Plugins/Processing/ProcessingFilters/ErodeDilateBadData.cpp
  6. +3 −0 Source/Plugins/Processing/ProcessingFilters/ErodeDilateBadData.h
  7. +11 −2 Source/Plugins/Processing/ProcessingFilters/ErodeDilateCoordinationNumber.cpp
  8. +3 −0 Source/Plugins/Processing/ProcessingFilters/ErodeDilateCoordinationNumber.h
  9. +7 −4 Source/Plugins/Processing/ProcessingFilters/FillBadData.cpp
  10. +3 −0 Source/Plugins/Processing/ProcessingFilters/FillBadData.h
  11. +11 −2 Source/Plugins/Processing/ProcessingFilters/MinNeighbors.cpp
  12. +3 −0 Source/Plugins/Processing/ProcessingFilters/MinNeighbors.h
  13. +10 −1 Source/Plugins/Processing/ProcessingFilters/MinSize.cpp
  14. +3 −0 Source/Plugins/Processing/ProcessingFilters/MinSize.h
  15. +11 −3 Source/Plugins/Processing/ProcessingFilters/RemoveFlaggedFeatures.cpp
  16. +3 −0 Source/Plugins/Processing/ProcessingFilters/RemoveFlaggedFeatures.h
  17. +24 −31 Source/Plugins/Reconstruction/ReconstructionFilters/AlignSections.cpp
  18. +3 −0 Source/Plugins/Reconstruction/ReconstructionFilters/AlignSections.h
  19. +2 −2 Source/Plugins/Sampling/SamplingFilters/CropImageGeometry.cpp
  20. +0 −1 Source/Plugins/Statistics/StatisticsFilters/FindSizes.cpp
  21. +21 −21 Support/PrebuiltPipelines/Examples/Threshold2_MoveData.json
  22. +25 −9 ...rt/PrebuiltPipelines/Workshop/EBSD Reconstruction/(04) SmallIN100 Presegmentation Processing.json
  23. +56 −31 ...t/PrebuiltPipelines/Workshop/EBSD Reconstruction/(06) SmallIN100 Postsegmentation Processing.json
  24. +71 −53 Support/PrebuiltPipelines/Workshop/EBSD Reconstruction/(07) SmallIN100 Final Processing.json
  25. +85 −28 Support/PrebuiltPipelines/Workshop/EBSD Reconstruction/(08) SmallIN100 Full Reconstruction.json
  26. +101 −62 Support/PrebuiltPipelines/Workshop/EBSD Statistics/(02) SmallIN100 Export Statistics.json
  27. +386 −34 Support/PrebuiltPipelines/Workshop/EBSD SurfaceMeshing/(01) SmallIN100 Quick Mesh.json
@@ -51,6 +51,7 @@
#include "SIMPLib/FilterParameters/DataArraySelectionFilterParameter.h"
#include "SIMPLib/FilterParameters/FloatFilterParameter.h"
#include "SIMPLib/FilterParameters/IntFilterParameter.h"
#include "SIMPLib/FilterParameters/MultiDataArraySelectionFilterParameter.h"
#include "SIMPLib/FilterParameters/SeparatorFilterParameter.h"
#include "SIMPLib/Geometry/ImageGeom.h"
@@ -61,25 +62,23 @@ class NeighborOrientationCorrelationTransferDataImpl
{
public:
NeighborOrientationCorrelationTransferDataImpl() = delete;
NeighborOrientationCorrelationTransferDataImpl(const NeighborOrientationCorrelationTransferDataImpl&) = default; // Copy Constructor Not Implemented
NeighborOrientationCorrelationTransferDataImpl(const NeighborOrientationCorrelationTransferDataImpl&) = default;
NeighborOrientationCorrelationTransferDataImpl(NeighborOrientationCorrelation* filter, size_t totalPoints, const std::vector<int64_t>& bestNeighbor, AttributeMatrix* attrMat,
int32_t voxelArrayIndex)
NeighborOrientationCorrelationTransferDataImpl(NeighborOrientationCorrelation* filter, size_t totalPoints, const std::vector<int64_t>& bestNeighbor, IDataArray::Pointer dataArrayPtr)
: m_Filter(filter)
, m_TotalPoints(totalPoints)
, m_BestNeighbor(bestNeighbor)
, m_AttrMat(attrMat)
, m_VoxelArrayIndex(voxelArrayIndex)
, m_DataArrayPtr(dataArrayPtr)
{
}
NeighborOrientationCorrelationTransferDataImpl(NeighborOrientationCorrelationTransferDataImpl&&) = default; // Move Constructor Not Implemented
NeighborOrientationCorrelationTransferDataImpl& operator=(const NeighborOrientationCorrelationTransferDataImpl&) = delete; // Copy Assignment Not Implemented
NeighborOrientationCorrelationTransferDataImpl& operator=(NeighborOrientationCorrelationTransferDataImpl&&) = delete; // Move Assignment Not Implemented
~NeighborOrientationCorrelationTransferDataImpl() = default;
void operator()() const
{
QVector<QString> voxelArrayNames = m_AttrMat->getAttributeArrayNames().toVector();
size_t progIncrement = static_cast<size_t>(m_TotalPoints / 50);
size_t prog = 1;
for(size_t i = 0; i < m_TotalPoints; i++)
@@ -92,8 +91,8 @@ class NeighborOrientationCorrelationTransferDataImpl
int64_t neighbor = m_BestNeighbor[i];
if(neighbor != -1)
{
IDataArray::Pointer p = m_AttrMat->getAttributeArray(voxelArrayNames[m_VoxelArrayIndex]);
p->copyTuple(neighbor, i);
// IDataArray::Pointer p = m_AttrMat->getAttributeArray(m_VoxelArrayNames[m_VoxelArrayIndex]);
m_DataArrayPtr->copyTuple(neighbor, i);
}
}
}
@@ -102,10 +101,7 @@ class NeighborOrientationCorrelationTransferDataImpl
NeighborOrientationCorrelation* m_Filter = nullptr;
size_t m_TotalPoints = 0;
std::vector<int64_t> m_BestNeighbor;
AttributeMatrix* m_AttrMat = nullptr;
int32_t m_VoxelArrayIndex = 0;
void operator=(const NeighborOrientationCorrelationTransferDataImpl&) = delete; // Move assignment Not Implemented
IDataArray::Pointer m_DataArrayPtr;
};
// -----------------------------------------------------------------------------
@@ -161,6 +157,10 @@ void NeighborOrientationCorrelation::setupFilterParameters()
DataArraySelectionFilterParameter::CreateRequirement(SIMPL::TypeNames::UInt32, 1, AttributeMatrix::Type::CellEnsemble, IGeometry::Type::Image);
parameters.push_back(SIMPL_NEW_DA_SELECTION_FP("Crystal Structures", CrystalStructuresArrayPath, FilterParameter::RequiredArray, NeighborOrientationCorrelation, req));
}
{
MultiDataArraySelectionFilterParameter::RequirementType req;
parameters.push_back(SIMPL_NEW_MDA_SELECTION_FP("Attribute Arrays to Ignore", IgnoredDataArrayPaths, FilterParameter::Parameter, NeighborOrientationCorrelation, req));
}
setFilterParameters(parameters);
}
@@ -483,6 +483,12 @@ void NeighborOrientationCorrelation::execute()
bool doParallel = true;
#endif
QList<QString> voxelArrayNames = m->getAttributeMatrix(attrMatName)->getAttributeArrayNames();
for(const auto& dataArrayPath : m_IgnoredDataArrayPaths)
{
voxelArrayNames.removeAll(dataArrayPath.getDataArrayName());
}
#ifdef SIMPL_USE_PARALLEL_ALGORITHMS
// The idea for this parallel section is to parallelize over each Data Array that
// will need it's data adjusted. This should go faster than before by about 2x.
@@ -491,23 +497,21 @@ void NeighborOrientationCorrelation::execute()
m_TotalProgress = 0;
if(doParallel)
{
std::shared_ptr<tbb::task_group> g(new tbb::task_group);
std::shared_ptr<tbb::task_group> taskGroup(new tbb::task_group);
AttributeMatrix* attrMat = m->getAttributeMatrix(attrMatName).get();
QVector<QString> voxelArrayNames = m->getAttributeMatrix(attrMatName)->getAttributeArrayNames().toVector();
m_TotalProgress = voxelArrayNames.size() * totalPoints; // Total number of points to update
// Create and run all the tasks
for(int32_t voxelArray = 0; voxelArray < voxelArrayNames.size(); voxelArray++)
for(const auto& arrayName : voxelArrayNames)
{
g->run(NeighborOrientationCorrelationTransferDataImpl(this, totalPoints, bestNeighbor, attrMat, voxelArray));
IDataArray::Pointer dataArrayPtr = attrMat->getAttributeArray(arrayName);
taskGroup->run(NeighborOrientationCorrelationTransferDataImpl(this, totalPoints, bestNeighbor, dataArrayPtr));
}
// Wait for them to complete.
g->wait();
taskGroup->wait();
}
else
#endif
{
QList<QString> voxelArrayNames = m->getAttributeMatrix(attrMatName)->getAttributeArrayNames();
progIncrement = static_cast<int64_t>(totalPoints / 100);
prog = 1;
progressInt = 0;
@@ -523,9 +527,9 @@ void NeighborOrientationCorrelation::execute()
neighbor = bestNeighbor[i];
if(neighbor != -1)
{
for(QList<QString>::iterator iter = voxelArrayNames.begin(); iter != voxelArrayNames.end(); ++iter)
for(const auto& iter : voxelArrayNames)
{
IDataArray::Pointer p = m->getAttributeMatrix(attrMatName)->getAttributeArray(*iter);
IDataArray::Pointer p = m->getAttributeMatrix(attrMatName)->getAttributeArray(iter);
p->copyTuple(neighbor, i);
}
}
@@ -85,6 +85,9 @@ class OrientationAnalysis_EXPORT NeighborOrientationCorrelation : public Abstrac
SIMPL_FILTER_PARAMETER(DataArrayPath, QuatsArrayPath)
Q_PROPERTY(DataArrayPath QuatsArrayPath READ getQuatsArrayPath WRITE setQuatsArrayPath)
SIMPL_FILTER_PARAMETER(QVector<DataArrayPath>, IgnoredDataArrayPaths)
Q_PROPERTY(QVector<DataArrayPath> IgnoredDataArrayPaths READ getIgnoredDataArrayPaths WRITE setIgnoredDataArrayPaths)
void updateProgress(size_t p);
/**
@@ -41,6 +41,7 @@
#include "SIMPLib/FilterParameters/ChoiceFilterParameter.h"
#include "SIMPLib/FilterParameters/DataArraySelectionFilterParameter.h"
#include "SIMPLib/FilterParameters/FloatFilterParameter.h"
#include "SIMPLib/FilterParameters/MultiDataArraySelectionFilterParameter.h"
#include "SIMPLib/FilterParameters/SeparatorFilterParameter.h"
#include "SIMPLib/Geometry/ImageGeom.h"
@@ -83,17 +84,17 @@ template <typename T> class GreaterThanComparison : public LessThanComparison<T>
SIMPL_SHARED_POINTERS(GreaterThanComparison<T>)
SIMPL_STATIC_NEW_MACRO(GreaterThanComparison<T>)
SIMPL_TYPE_MACRO_SUPER(GreaterThanComparison<T>, LessThanComparison<T>)
virtual ~GreaterThanComparison() = default;
~GreaterThanComparison() override = default;
virtual bool compare(T a, T b)
bool compare(T a, T b) override
{
return a > b;
}
virtual bool compare1(T a, T b)
bool compare1(T a, T b) override
{
return a <= b;
}
virtual bool compare2(T a, T b)
bool compare2(T a, T b) override
{
return a < b;
}
@@ -104,8 +105,8 @@ template <typename T> class GreaterThanComparison : public LessThanComparison<T>
template <typename T> void ExecuteTemplate(ReplaceElementAttributesWithNeighborValues* filter, IDataArray::Pointer inArrayPtr)
{
typedef DataArray<T> DataArrayType;
typedef typename DataArrayType::Pointer DataArrayPointerType;
using DataArrayType = DataArray<T>;
using DataArrayPointerType = typename DataArrayType::Pointer;
DataArrayPath dataArrayPath = filter->getConfidenceIndexArrayPath();
DataContainer::Pointer m = filter->getDataContainerArray()->getDataContainer(dataArrayPath.getDataContainerName());
@@ -146,6 +147,14 @@ template <typename T> void ExecuteTemplate(ReplaceElementAttributesWithNeighborV
float thresholdValue = filter->getMinConfidence();
QString attrMatName = dataArrayPath.getAttributeMatrixName();
QVector<DataArrayPath> ignoredPaths = filter->getIgnoredDataArrayPaths();
QList<QString> voxelArrayNames = m->getAttributeMatrix(attrMatName)->getAttributeArrayNames();
for(const auto& dataArrayPath : ignoredPaths)
{
voxelArrayNames.removeAll(dataArrayPath.getDataArrayName());
}
while(keepGoing)
{
keepGoing = false;
@@ -213,8 +222,6 @@ template <typename T> void ExecuteTemplate(ReplaceElementAttributesWithNeighborV
prog = prog + progIncrement;
}
}
QString attrMatName = dataArrayPath.getAttributeMatrixName();
QList<QString> voxelArrayNames = m->getAttributeMatrix(attrMatName)->getAttributeArrayNames();
if(filter->getCancel())
{
@@ -237,9 +244,9 @@ template <typename T> void ExecuteTemplate(ReplaceElementAttributesWithNeighborV
neighbor = bestNeighbor[i];
if(neighbor != -1)
{
for(QList<QString>::iterator iter = voxelArrayNames.begin(); iter != voxelArrayNames.end(); ++iter)
for(const auto& arrayName : voxelArrayNames)
{
IDataArray::Pointer p = m->getAttributeMatrix(attrMatName)->getAttributeArray(*iter);
IDataArray::Pointer p = m->getAttributeMatrix(attrMatName)->getAttributeArray(arrayName);
p->copyTuple(neighbor, i);
}
}
@@ -70,6 +70,9 @@ class OrientationAnalysis_EXPORT ReplaceElementAttributesWithNeighborValues : pu
SIMPL_FILTER_PARAMETER(int, SelectedComparison)
Q_PROPERTY(int SelectedComparison READ getSelectedComparison WRITE setSelectedComparison)
SIMPL_FILTER_PARAMETER(QVector<DataArrayPath>, IgnoredDataArrayPaths)
Q_PROPERTY(QVector<DataArrayPath> IgnoredDataArrayPaths READ getIgnoredDataArrayPaths WRITE setIgnoredDataArrayPaths)
/**
* @brief getCompiledLibraryName Reimplemented from @see AbstractFilter class
*/
@@ -41,6 +41,7 @@
#include "SIMPLib/FilterParameters/ChoiceFilterParameter.h"
#include "SIMPLib/FilterParameters/DataArraySelectionFilterParameter.h"
#include "SIMPLib/FilterParameters/IntFilterParameter.h"
#include "SIMPLib/FilterParameters/MultiDataArraySelectionFilterParameter.h"
#include "SIMPLib/FilterParameters/SeparatorFilterParameter.h"
#include "SIMPLib/Geometry/ImageGeom.h"
@@ -96,6 +97,10 @@ void ErodeDilateBadData::setupFilterParameters()
DataArraySelectionFilterParameter::CreateRequirement(SIMPL::TypeNames::Int32, 1, AttributeMatrix::Type::Cell, IGeometry::Type::Image);
parameters.push_back(SIMPL_NEW_DA_SELECTION_FP("Feature Ids", FeatureIdsArrayPath, FilterParameter::RequiredArray, ErodeDilateBadData, req));
}
{
MultiDataArraySelectionFilterParameter::RequirementType req;
parameters.push_back(SIMPL_NEW_MDA_SELECTION_FP("Attribute Arrays to Ignore", IgnoredDataArrayPaths, FilterParameter::Parameter, ErodeDilateBadData, req));
}
setFilterParameters(parameters);
}
@@ -323,6 +328,10 @@ void ErodeDilateBadData::execute()
QString attrMatName = m_FeatureIdsArrayPath.getAttributeMatrixName();
QList<QString> voxelArrayNames = m->getAttributeMatrix(attrMatName)->getAttributeArrayNames();
for(const auto& dataArrayPath : m_IgnoredDataArrayPaths)
{
voxelArrayNames.removeAll(dataArrayPath.getDataArrayName());
}
for(size_t j = 0; j < totalPoints; j++)
{
@@ -332,9 +341,9 @@ void ErodeDilateBadData::execute()
{
if((featurename == 0 && m_FeatureIds[neighbor] > 0 && m_Direction == 1) || (featurename > 0 && m_FeatureIds[neighbor] == 0 && m_Direction == 0))
{
for(QList<QString>::iterator iter = voxelArrayNames.begin(); iter != voxelArrayNames.end(); ++iter)
for(const auto& arrayName : voxelArrayNames)
{
IDataArray::Pointer p = m->getAttributeMatrix(attrMatName)->getAttributeArray(*iter);
IDataArray::Pointer p = m->getAttributeMatrix(attrMatName)->getAttributeArray(arrayName);
p->copyTuple(neighbor, j);
}
}
@@ -82,6 +82,9 @@ class Processing_EXPORT ErodeDilateBadData : public AbstractFilter
SIMPL_FILTER_PARAMETER(DataArrayPath, FeatureIdsArrayPath)
Q_PROPERTY(DataArrayPath FeatureIdsArrayPath READ getFeatureIdsArrayPath WRITE setFeatureIdsArrayPath)
SIMPL_FILTER_PARAMETER(QVector<DataArrayPath>, IgnoredDataArrayPaths)
Q_PROPERTY(QVector<DataArrayPath> IgnoredDataArrayPaths READ getIgnoredDataArrayPaths WRITE setIgnoredDataArrayPaths)
/**
* @brief getCompiledLibraryName Reimplemented from @see AbstractFilter class
*/
@@ -40,6 +40,7 @@
#include "SIMPLib/FilterParameters/BooleanFilterParameter.h"
#include "SIMPLib/FilterParameters/DataArraySelectionFilterParameter.h"
#include "SIMPLib/FilterParameters/IntFilterParameter.h"
#include "SIMPLib/FilterParameters/MultiDataArraySelectionFilterParameter.h"
#include "SIMPLib/FilterParameters/SeparatorFilterParameter.h"
#include "SIMPLib/Geometry/ImageGeom.h"
@@ -76,6 +77,10 @@ void ErodeDilateCoordinationNumber::setupFilterParameters()
DataArraySelectionFilterParameter::CreateRequirement(SIMPL::TypeNames::Int32, 1, AttributeMatrix::Type::Cell, IGeometry::Type::Image);
parameters.push_back(SIMPL_NEW_DA_SELECTION_FP("Feature Ids", FeatureIdsArrayPath, FilterParameter::RequiredArray, ErodeDilateCoordinationNumber, req));
}
{
MultiDataArraySelectionFilterParameter::RequirementType req;
parameters.push_back(SIMPL_NEW_MDA_SELECTION_FP("Attribute Arrays to Ignore", IgnoredDataArrayPaths, FilterParameter::Parameter, ErodeDilateCoordinationNumber, req));
}
setFilterParameters(parameters);
}
@@ -195,6 +200,10 @@ void ErodeDilateCoordinationNumber::execute()
QString attrMatName = m_FeatureIdsArrayPath.getAttributeMatrixName();
QList<QString> voxelArrayNames = m->getAttributeMatrix(attrMatName)->getAttributeArrayNames();
for(const auto& dataArrayPath : m_IgnoredDataArrayPaths)
{
voxelArrayNames.removeAll(dataArrayPath.getDataArrayName());
}
QVector<int32_t> n(numfeatures + 1, 0);
QVector<int32_t> coordinationNumber(totalPoints, 0);
@@ -270,9 +279,9 @@ void ErodeDilateCoordinationNumber::execute()
int32_t neighbor = m_Neighbors[point];
if(coordinationNumber[point] >= m_CoordinationNumber && coordinationNumber[point] > 0)
{
for(QList<QString>::iterator iter = voxelArrayNames.begin(); iter != voxelArrayNames.end(); ++iter)
for(const auto& arrayName : voxelArrayNames)
{
IDataArray::Pointer p = m->getAttributeMatrix(attrMatName)->getAttributeArray(*iter);
IDataArray::Pointer p = m->getAttributeMatrix(attrMatName)->getAttributeArray(arrayName);
p->copyTuple(neighbor, point);
}
}
@@ -67,6 +67,9 @@ class Processing_EXPORT ErodeDilateCoordinationNumber : public AbstractFilter
SIMPL_FILTER_PARAMETER(DataArrayPath, FeatureIdsArrayPath)
Q_PROPERTY(DataArrayPath FeatureIdsArrayPath READ getFeatureIdsArrayPath WRITE setFeatureIdsArrayPath)
SIMPL_FILTER_PARAMETER(QVector<DataArrayPath>, IgnoredDataArrayPaths)
Q_PROPERTY(QVector<DataArrayPath> IgnoredDataArrayPaths READ getIgnoredDataArrayPaths WRITE setIgnoredDataArrayPaths)
/**
* @brief getCompiledLibraryName Reimplemented from @see AbstractFilter class
*/
@@ -41,6 +41,7 @@
#include "SIMPLib/FilterParameters/DataArraySelectionFilterParameter.h"
#include "SIMPLib/FilterParameters/IntFilterParameter.h"
#include "SIMPLib/FilterParameters/LinkedBooleanFilterParameter.h"
#include "SIMPLib/FilterParameters/MultiDataArraySelectionFilterParameter.h"
#include "SIMPLib/FilterParameters/SeparatorFilterParameter.h"
#include "SIMPLib/Geometry/ImageGeom.h"
@@ -55,8 +56,6 @@ FillBadData::FillBadData()
, m_MinAllowedDefectSize(1)
, m_FeatureIdsArrayPath(SIMPL::Defaults::ImageDataContainerName, SIMPL::Defaults::CellAttributeMatrixName, SIMPL::CellData::FeatureIds)
, m_CellPhasesArrayPath(SIMPL::Defaults::ImageDataContainerName, SIMPL::Defaults::CellAttributeMatrixName, SIMPL::CellData::Phases)
, m_AlreadyChecked(nullptr)
, m_Neighbors(nullptr)
{
}
@@ -86,6 +85,10 @@ void FillBadData::setupFilterParameters()
DataArraySelectionFilterParameter::CreateRequirement(SIMPL::TypeNames::Int32, 1, AttributeMatrix::Type::Cell, IGeometry::Type::Image);
parameters.push_back(SIMPL_NEW_DA_SELECTION_FP("Phases", CellPhasesArrayPath, FilterParameter::RequiredArray, FillBadData, req));
}
{
MultiDataArraySelectionFilterParameter::RequirementType req;
parameters.push_back(SIMPL_NEW_MDA_SELECTION_FP("Attribute Arrays to Ignore", IgnoredDataArrayPaths, FilterParameter::Parameter, FillBadData, req));
}
setFilterParameters(parameters);
}
@@ -426,9 +429,9 @@ void FillBadData::execute()
neighbor = m_Neighbors[j];
if(featurename < 0 && neighbor != -1 && m_FeatureIds[neighbor] > 0)
{
for(QList<QString>::iterator iter = voxelArrayNames.begin(); iter != voxelArrayNames.end(); ++iter)
for(const auto& arrayName : voxelArrayNames)
{
IDataArray::Pointer p = m->getAttributeMatrix(attrMatName)->getAttributeArray(*iter);
IDataArray::Pointer p = m->getAttributeMatrix(attrMatName)->getAttributeArray(arrayName);
p->copyTuple(neighbor, j);
}
}
@@ -71,6 +71,9 @@ class Processing_EXPORT FillBadData : public AbstractFilter
SIMPL_FILTER_PARAMETER(DataArrayPath, CellPhasesArrayPath)
Q_PROPERTY(DataArrayPath CellPhasesArrayPath READ getCellPhasesArrayPath WRITE setCellPhasesArrayPath)
SIMPL_FILTER_PARAMETER(QVector<DataArrayPath>, IgnoredDataArrayPaths)
Q_PROPERTY(QVector<DataArrayPath> IgnoredDataArrayPaths READ getIgnoredDataArrayPaths WRITE setIgnoredDataArrayPaths)
/**
* @brief getCompiledLibraryName Reimplemented from @see AbstractFilter class
*/
Oops, something went wrong.

0 comments on commit 9addfcf

Please sign in to comment.