|
15 | 15 | | 3 | Segmentation / Feature Identification | 10 | 10 | 10 | Complete | |
16 | 16 | | 4 | Neighbor / Kernel Operations | 11 | 11 | 11 | Complete | |
17 | 17 | | 5 | Geometry Creation / Manipulation | 15 | 15 | 15 | Complete | |
18 | | -| 6 | Data Manipulation (Copy, Create, Delete, Rename) | ~20 | 0 | 0 | Not Started | |
| 18 | +| 6 | Data Manipulation (Copy, Create, Delete, Rename) | 21 | 21 | 0 | Triaged | |
19 | 19 | | 7 | I/O Filters (Read/Write) | ~15 | 0 | 0 | Not Started | |
20 | 20 | | 8 | Image Processing (ITK wrappers) | ~88 | 0 | 0 | Not Started | |
21 | 21 | | 9 | Remaining SimplnxCore filters | ~varies | 0 | 0 | Not Started | |
@@ -438,7 +438,139 @@ None. No filter in this batch has a non-expert blocker. |
438 | 438 |
|
439 | 439 | --- |
440 | 440 |
|
441 | | -## Batches 6-9: Not Yet Triaged |
| 441 | +## Batch 6: Data Manipulation |
| 442 | + |
| 443 | +**Plugin:** SimplnxCore |
| 444 | +**Filters:** 21 (create / copy / delete / rename / move / combine / split / convert / initialize / calculate) |
| 445 | + |
| 446 | +### Tier 1 — Critical |
| 447 | + |
| 448 | +None. No filter in this batch is incomprehensible to a non-expert. |
| 449 | + |
| 450 | +### Tier 2 — Important |
| 451 | + |
| 452 | +| Filter | Plugin | Status | |
| 453 | +|--------|--------|--------| |
| 454 | +| CreateAttributeMatrix | SimplnxCore | Pending | |
| 455 | +| CreateDataGroup | SimplnxCore | Pending | |
| 456 | +| DeleteData | SimplnxCore | Pending | |
| 457 | +| RenameDataObject | SimplnxCore | Pending | |
| 458 | +| MoveData | SimplnxCore | Pending | |
| 459 | +| CopyFeatureArrayToElementArray | SimplnxCore | Pending | |
| 460 | +| CreateFeatureArrayFromElementArray | SimplnxCore | Pending | |
| 461 | +| ConditionalSetValue | SimplnxCore | Pending | |
| 462 | +| ConvertColorToGrayScale | SimplnxCore | Pending | |
| 463 | +| ReshapeDataArray | SimplnxCore | Pending | |
| 464 | + |
| 465 | +- [ ] **CreateAttributeMatrixFilter** (SimplnxCore) |
| 466 | + - **Clarity:** Extremely brief (only ~20 lines). Lone example does not explain what an Attribute Matrix conceptually represents. |
| 467 | + - **Completeness:** Missing the *why* (tuple-dimensions discipline for arrays in the same matrix), the *when* (typical use cases — creating a Feature Attribute Matrix, an Ensemble Attribute Matrix), and the relationship to DataGroup. |
| 468 | + - **Accessibility:** Assumes the user already knows what an Attribute Matrix is. |
| 469 | + - **Figures Needed:** Optional — a hierarchy diagram showing Image Geometry → Cell Attribute Matrix → arrays would also serve CreateGeometry/CreateDataGroup. |
| 470 | + - **Concept Links:** Attribute Matrix, tuple dimensions, DataGroup vs Attribute Matrix |
| 471 | + - **Notes:** Add "What is an Attribute Matrix?" subsection. Cross-link to CreateDataGroup with explicit when-to-use-which guidance. Note tuple-dimension consistency requirement. |
| 472 | + |
| 473 | +- [ ] **CreateDataGroupFilter** (SimplnxCore) |
| 474 | + - **Clarity:** Only 1 paragraph; says "unlike AttributeMatrix, DataGroups are capable of holding any DataObject of any size" but doesn't explain when to choose one over the other. |
| 475 | + - **Completeness:** Missing typical use case (organizing related arrays of different sizes, creating an output structure for a future filter). |
| 476 | + - **Concept Links:** DataGroup, AttributeMatrix |
| 477 | + - **Notes:** Expand. Cross-reference CreateAttributeMatrix and explain the choice: DataGroup for heterogeneous content, Attribute Matrix when all child arrays must share tuple dimensions. |
| 478 | + |
| 479 | +- [ ] **DeleteDataFilter** (SimplnxCore) |
| 480 | + - **Clarity:** Two use cases (memory and name collisions) clearly explained. |
| 481 | + - **Completeness:** Missing: cascade behavior (does deleting a Geometry also delete its Attribute Matrices? Does deleting an Attribute Matrix delete its child arrays?), what happens to downstream filters that reference the deleted object. |
| 482 | + - **Concept Links:** cascade delete, object lifetimes |
| 483 | + - **Notes:** Document the cascade behavior. Add explicit warning: subsequent filters that selected the deleted object will fail preflight. |
| 484 | + |
| 485 | +- [ ] **RenameDataObjectFilter** (SimplnxCore) |
| 486 | + - **Clarity:** Single sentence. |
| 487 | + - **Completeness:** Missing: what happens to filter parameters downstream that reference the old name (they won't auto-update — preflight will fail). What name collisions are allowed/disallowed. |
| 488 | + - **Notes:** Expand to one paragraph. Warn about downstream filter parameter references not updating automatically. |
| 489 | + |
| 490 | +- [ ] **MoveDataFilter** (SimplnxCore) |
| 491 | + - **Clarity:** Brief but covers the tuple-count requirement. |
| 492 | + - **Completeness:** Missing: examples (moving a computed array into a Feature Attribute Matrix; moving an array between DataGroups). What happens to arrays that are children of the moved object. |
| 493 | + - **Concept Links:** parent-child hierarchy, tuple validation |
| 494 | + - **Notes:** Add concrete examples. Explain that tuple-dimension *shape* doesn't need to match — only the *number of tuples*. |
| 495 | + |
| 496 | +- [ ] **CopyFeatureArrayToElementArrayFilter** (SimplnxCore) |
| 497 | + - **Clarity:** "Xmdf visualization files write only the Element attributes" is jargon and almost the entire rationale. |
| 498 | + - **Completeness:** Missing: general "when to use" (broadcasting a per-Feature scalar to every cell of that feature for visualization), parameter description. |
| 499 | + - **Notes:** Lead with the general purpose (broadcast Feature-level value back to all cells of the Feature). Explain the Xmdf-export reason as one specific use case rather than the only one. Add Required Input Sources. |
| 500 | + |
| 501 | +- [ ] **CreateFeatureArrayFromElementArrayFilter** (SimplnxCore) |
| 502 | + - **Clarity:** "the value of the *last element copied*" is buried as the central footgun. |
| 503 | + - **Completeness:** Missing: warning that this filter is destructive when used on per-cell scalars that vary within a feature (since most cells get discarded). When to use vs. ComputeArrayStatistics (which computes per-feature means). |
| 504 | + - **Notes:** Promote the "last element copied" caveat to a Warning section. Cross-reference ComputeArrayStatistics for averaging behavior. Add Required Input Sources. |
| 505 | + |
| 506 | +- [ ] **ConditionalSetValueFilter** (SimplnxCore) |
| 507 | + - **Clarity:** Two modes (conditional mask vs value-replacement) buried in one dense sentence. |
| 508 | + - **Completeness:** Mode parameter (*Use Conditional Mask*) is the central control but not promoted. |
| 509 | + - **Notes:** Split the two modes into their own subsections. Document *Use Conditional Mask* explicitly. Add Required Input Sources. |
| 510 | + |
| 511 | +- [ ] **ConvertColorToGrayScaleFilter** (SimplnxCore) |
| 512 | + - **Clarity:** Four conversion algorithms documented with formulas. |
| 513 | + - **Completeness:** Missing: when to use (preprocessing color images for downstream grayscale-only filters), expected input format (uint8 RGB/RGBA), output type. |
| 514 | + - **Notes:** Add "When to Use" lead-in. State input/output array types and component shapes. Add Required Input Sources (ITK image reader). |
| 515 | + |
| 516 | +- [ ] **ReshapeDataArrayFilter** (SimplnxCore) |
| 517 | + - **Clarity:** Critical footgun warning ("DOES NOT MOVE ANY VALUES IN MEMORY") is buried at line 11. |
| 518 | + - **Completeness:** Stride-mismatch example is good but the warning needs more prominence given that misuse silently produces wrong results. |
| 519 | + - **Concept Links:** strides, row-major / C-order storage, tuple dimensions |
| 520 | + - **Notes:** Promote the "no memory rearrangement" warning into a top-level Warning section. Add a "When NOT to Use" callout. Add Required Input Sources. |
| 521 | + |
| 522 | +### Tier 3 — Polish |
| 523 | + |
| 524 | +| Filter | Plugin | Status | |
| 525 | +|--------|--------|--------| |
| 526 | +| CreateDataArray | SimplnxCore | Pending | |
| 527 | +| CreateDataArrayAdvanced | SimplnxCore | Pending | |
| 528 | +| CopyDataObject | SimplnxCore | Pending | |
| 529 | +| CombineAttributeArrays | SimplnxCore | Pending | |
| 530 | +| ConcatenateDataArrays | SimplnxCore | Pending | |
| 531 | +| SplitDataArrayByComponent | SimplnxCore | Pending | |
| 532 | +| SplitDataArrayByTuple | SimplnxCore | Pending | |
| 533 | +| ExtractComponentAsArray | SimplnxCore | Pending | |
| 534 | +| ConvertData | SimplnxCore | Pending | |
| 535 | +| ArrayCalculator | SimplnxCore | Pending | |
| 536 | +| InitializeData | SimplnxCore | Pending | |
| 537 | + |
| 538 | +- [ ] **CreateDataArrayFilter** (SimplnxCore) |
| 539 | + - **Notes:** Already has good data-type ranges table and semicolon-notation example. Minor polish: state that Number of Components must be ≥ 1; explicitly note that this filter creates a *single component dimension* (use CreateDataArrayAdvanced for multi-dimension components). Add Required Input Sources (none). |
| 540 | + |
| 541 | +- [ ] **CreateDataArrayAdvancedFilter** (SimplnxCore) |
| 542 | + - **Notes:** Documents 4 initialization modes (Fill, Incremental, Random, Random With Range) and Step Operation. Mostly good. Polish: state component-dimension product must be ≥ 1; clarify that multi-dimensional components (e.g., 3x3 tensor) are supported here. Cross-link CreateDataArray as the simpler version. |
| 543 | + |
| 544 | +- [ ] **CopyDataObjectFilter** (SimplnxCore) |
| 545 | + - **Notes:** Clear; "deep copy" semantics for BaseGroup containers documented. Polish: cross-link Copy to New Parent option more explicitly; add Required Input Sources (none). |
| 546 | + |
| 547 | +- [ ] **CombineAttributeArraysFilter** (SimplnxCore) |
| 548 | + - **Notes:** Already has worked examples and figures. Polish: cross-link "Concatenate Data Arrays" already present; mention the use case of building a Vertex coordinates array from three separate x/y/z arrays. Add Required Input Sources. |
| 549 | + |
| 550 | +- [ ] **ConcatenateDataArraysFilter** (SimplnxCore) |
| 551 | + - **Notes:** Brief but clear. Cross-link to Combine Attribute Arrays is present. Polish: state that the result is always 1-D (already does); add example. |
| 552 | + |
| 553 | +- [ ] **SplitDataArrayByComponentFilter** (SimplnxCore) |
| 554 | + - **Notes:** Clear worked example. Polish: minor copy-edit ("unput" → "input"); state the "specifying a subset of components" mode more cleanly; cross-link Combine Attribute Arrays as the inverse operation (already does). |
| 555 | + |
| 556 | +- [ ] **SplitDataArrayByTupleFilter** (SimplnxCore) |
| 557 | + - **Notes:** Clear worked example. Polish: cross-link Split Data Array (By Component) present. Polish: state units on tuple counts (integer counts). |
| 558 | + |
| 559 | +- [ ] **ExtractComponentAsArrayFilter** (SimplnxCore) |
| 560 | + - **Notes:** Title in cpp is "Extract/Remove Components" — verify match. Brief but covers the 3 operation modes. Polish: add a worked example showing the 3 modes; add Required Input Sources. |
| 561 | + |
| 562 | +- [ ] **ConvertDataFilter** (SimplnxCore) |
| 563 | + - **Notes:** Already very thorough with up/down casting and signed/unsigned warnings. Polish: cross-link to Reshape Data Array for the related-but-different "interpret data differently" use case. Add Required Input Sources. |
| 564 | + |
| 565 | +- [ ] **ArrayCalculatorFilter** (SimplnxCore) |
| 566 | + - **Notes:** Already extremely thorough — operator tables, multi-component handling, explicit array name escaping, multiple worked examples. Polish: minor only. Cross-link to Convert Angles to Degrees or Radians (already mentioned). Add Required Input Sources. |
| 567 | + |
| 568 | +- [ ] **InitializeDataFilter** (SimplnxCore) |
| 569 | + - **Notes:** Content is good but the prose is rambly. Polish: restructure each initialization mode into its own subsection with a brief intro and bullet list of nuances rather than nested bullet trees. Move boolean entry rules to a single dedicated subsection. |
| 570 | + |
| 571 | +--- |
| 572 | + |
| 573 | +## Batches 7-9: Not Yet Triaged |
442 | 574 |
|
443 | 575 | The following batches have been identified in the design spec but have not yet been triaged. Each batch will be triaged at the start of its work cycle. |
444 | 576 |
|
@@ -627,10 +759,6 @@ The following batches have been identified in the design spec but have not yet b |
627 | 759 |
|
628 | 760 | --- |
629 | 761 |
|
630 | | -### Batch 6: Data Manipulation (~20 filters) |
631 | | -**Plugin:** SimplnxCore |
632 | | -Basic data operations (copy, create, delete, rename, move, combine attribute arrays, etc.) |
633 | | - |
634 | 762 | ### Batch 7: I/O Filters (~15 filters) |
635 | 763 | **Plugin:** SimplnxCore + OrientationAnalysis |
636 | 764 | Read/write filters (DREAM3D, STL, VTK, CSV, etc.) |
|
0 commit comments