-
Notifications
You must be signed in to change notification settings - Fork 76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature/graph rename optimization #896
Merged
imikejackson
merged 29 commits into
BlueQuartzSoftware:develop
from
mmarineBlueQuartz:feature/GraphRenameOptimization
Apr 1, 2019
Merged
Feature/graph rename optimization #896
imikejackson
merged 29 commits into
BlueQuartzSoftware:develop
from
mmarineBlueQuartz:feature/GraphRenameOptimization
Apr 1, 2019
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Contributor
mmarineBlueQuartz
commented
Mar 29, 2019
- Redesigned the rename functionality for improved performance. Rather than being performed by iterating over the DataContainerArray after each filter preflights to determine what new DataArrayPaths exist and which were renamed, these checks are performed at the filter level during preflight on an opt-in basis. This reduced the rename functionality to a subset of its previous implementation, especially in cases where filters create an arbitrary number of new DataArrayPaths.
- Redesigned the Data Structure to move towards graph-based from the existing tree-based design. Nodes (DataContainer, AttributeMatrix, and IDataArray) can still only have one parent at the moment and will overwrite their existing parent if a new one is assigned. In addition, nodes now know about their parents and can construct a DataArrayPath to itself and all of its children based on that information.
- Implemented STL iterator support to Data Structure Nodes. Now all containers can be iterated over using range-based for loops, and DataArrays can be iterated over for component values using STL range-based for loops.
- Renamed add** methods in Data Structure containers to addOrReplace**. Added IDataStructureContainerNode::insertOrAssign(std::shared_ptr child) to keep functionality consistent and reduce the amount of copy-pasted code. Most add** method calls were replaced with this insertOrAssign. For cases where replacement is not desired, the IDataStructureContainerNode::push_back method will attempt to add without replacement. It returns a boolean value determining if it was successful.
- IDataStructureContainerNode has [] operators that can return the corresponding child based on either index or name. If the input is invalid, it throws an out_of_range exception.
- Removed QObject from DataArrayPath inheritance
Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
All DataStructure classes have been updated in addition to some FilterParameter changes that allow much faster renaming within the gui and generally faster execution times. Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
* ModifiedLambertProjectionArray::resizeTuples needs implementation.
+ Updates API in AttributeMatrix: Add insert_or_assign (based on C++17 std::map semantics) + Updates DataArray<T> to have a more STL like interface + Updates FloatVec3_t to SIMPLArray<T, unsigned int Dimension> allows more STL like interfaces to be built onto the FloatVec3Type alias. + Lots of other replacements to update uses of the old API to the new API Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
+ Update all occurances of insert_or_assign to insertOrAssign + Update DataArray with proper allocation/deallocation schemes when the memory is not owned Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
For now there is no "resize(size_type)" method in DataArray until we are sure all the filters that used that function have been updated to use resizeTuples() instead. Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
…GraphRenameOptimization
The library is already located by SIMPL and SurfaceMeshing uses a boolean that is set by SIMPL to determine if the Eigen related filters should be included. Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
…nto feature/GraphRenameOptimization
* Converted QString DataContainerNames to DataArrayPaths
* Updated DataContainerName variant to DataArrayPath variant.
* Updated QString paths to DataArrayPaths.
* Renamed the add methods in various data container classes. Functionality was restored to its previous case where values were not just added but replaced as well. The only pure add method remaining is IDataStructureContainerNode::push_back * DataContainerArray::addDataContainer renamed to addOrRelaceDataContainer. * DataContainer::addAttributeMatrix renamed to addOrReplaceAttributeMatrix. * AttributeMatrix::addAttributeArray renamed to addOrReplaceArributeArray.
* EbsdToH5Ebsd filter can now convert relative paths to absolute paths in the same way that the GUI does. This was important for PipelineRunner test or anywhere pipelines are executed outside of the SIMPLView GUI, as pipelines executed in the GUI were not compatible with those run through command line. There are likely several other places that this conversion needs to be performed in the filter-level.
* Updated input and output file paths for EBSD Reconstruction (02) and (03) to use relative paths instead of absolute paths for a specific user and OS.
* FindMisorientations filter throws an out of range exception when using a negative index to reference a quaternion pointer.
* Updated EbsdToH5Ebsd filter in OrientationAnalysis
Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
+ Test Pipeline updated to also output a .dream3d file (useful for debugging) + filter updated to use QMutex and QMutexLocker instead of a QSemaphore + Other C++ Modernization updates Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
…yPath Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
…r getPrereqDataContainer This is needed to allow the filter to take part in renaming actions. Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
# Conflicts: # Source/Plugins/OrientationAnalysis/OrientationAnalysisFilters/ReadAngData.cpp # Source/Plugins/Statistics/StatisticsFilters/FindNeighborhoods.cpp # Source/Plugins/Statistics/StatisticsFilters/FindNeighbors.cpp # Source/Plugins/SurfaceMeshing/SurfaceMeshingFilters/FindTriangleGeomNeighbors.cpp
Remove Python binding for method that was removed. Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
This whole PR was discussed internally and all systems are building and passing tests. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.