Skip to content

DOC: Update filter documentation with figures and easier to read descriptions#1589

Open
imikejackson wants to merge 24 commits into
BlueQuartzSoftware:developfrom
imikejackson:topic/documentation_update
Open

DOC: Update filter documentation with figures and easier to read descriptions#1589
imikejackson wants to merge 24 commits into
BlueQuartzSoftware:developfrom
imikejackson:topic/documentation_update

Conversation

@imikejackson

Copy link
Copy Markdown
Contributor

No description provided.

@imikejackson imikejackson force-pushed the topic/documentation_update branch 3 times, most recently from 9b8844e to c843a5a Compare April 24, 2026 18:44
@imikejackson imikejackson force-pushed the topic/documentation_update branch from c843a5a to d02723b Compare May 4, 2026 20:06
@imikejackson imikejackson force-pushed the topic/documentation_update branch from 8aff31f to 8aea5bc Compare May 28, 2026 20:23
  ComputeGBCDMetricBasedFilter -- Broke up the dense paragraph about metrics into a numbered two-stage explanation (misorientation
  selection, then normal probing). Added a sentence explaining why metric-based avoids discretization artifacts vs binning.

  ComputeGBPDMetricBasedFilter -- Added a clear opening that explains what GBPD is and how it differs from GBCD (2D plane normals only
  vs full 5D). Added MRD interpretation (1.0 = random, >1.0 = preferred). Restructured the metric-based approach description.

  ComputeShapesTriangleGeomFilter -- Moved the caveats into a cleaner "Differences from the Image Geometry Version" section.
  Consolidated the watertight warning and Euler characteristic info into a single "Mesh Quality Requirements" section. Cross-referenced
  the Image Geometry version for output descriptions to avoid duplication.
- Add "Required Input Sources" section to filters with non-obvious upstream
  dependencies, naming the specific filter that produces each required input.
- Convert inline filter name mentions to MyST markdown links
  ([Filter Name](FilterFile.md)) so they render as clickable cross-references
  in the Sphinx-generated documentation.
- Remove redundant "Outputs" listing in ComputeFeatureNeighborCAxisMisalignments
  (auto-generated parameter table already covers it).
- Replace existing {ref} directive in ComputeGBPDMetricBased with a simpler
  MyST link.
…e-style

Reference material extracted from the vv-filter-documentation skill so
the lookup table can be grown by separate agents and the figure style
guide is versioned with the project.

- docs/upstream-filter-sources.md: input array → producing filter table
  with conventions for growing the table and a stub for future graph
  representation.
- docs/filter-figure-style.md: canonical font, color palette, callout
  box, file format, and naming conventions for filter doc figures.
Triaged Geometry Creation / Manipulation batch (15 filters):
- Tier 1 (Critical): 0
- Tier 2 (Important): 8 filters (CreateGeometry, ApplyTransformationToGeometry,
  RotateSampleRefFrame, ResampleImageGeom, ResampleRectGridToImageGeom,
  PadImageGeometry, QuickSurfaceMesh, InitializeImageGeomCellData)
- Tier 3 (Polish): 7 filters (CreateImageGeometry, CombineTransformationMatrices,
  SetImageGeomOriginScaling, CropImageGeometry, AppendImageGeometry,
  PartitionGeometry, ComputeCoordinatesImageGeom)

Added 14 Real-World Visualization Wishlist entries with priorities, and
3 new concept-page candidates (Geometry Types, Transformation Matrices,
Sample vs Crystal Reference Frame).
Tier 2 (8 filters): CreateGeometry, ApplyTransformationToGeometry,
RotateSampleRefFrame, ResampleImageGeom, ResampleRectGridToImageGeom,
PadImageGeometry, QuickSurfaceMesh, InitializeImageGeomCellData.

Tier 3 (7 filters): CreateImageGeometry, CombineTransformationMatrices,
SetImageGeomOriginScaling, CropImageGeometry, AppendImageGeometry,
PartitionGeometry, ComputeCoordinatesImageGeom.

Each rewrite applied the established conventions: Required Input Sources
section naming upstream producers, MyST cross-reference links, explicit
units on numeric parameters, no duplication of the auto-generated
parameter table.

Notable structural changes:
- CreateGeometry: trimmed and reorganized; promoted geometry-type
  taxonomy to a navigable table.
- ApplyTransformationToGeometry: removed duplicate transformation-type
  listing; added explicit cross-reference to CombineTransformationMatrices.
- RotateSampleRefFrame: prominent verified-only-for-axis-aligned banner;
  explicit distinction from ApplyTransformation.
- QuickSurfaceMesh: deprecation banner promoted with explicit
  recommendation to use Surface Nets.
- CropImageGeometry: documented voxels-vs-physical-bounds parameter
  explicitly.
- PadImageGeometry: expanded Default Value semantics and Update Origin
  behavior.

Build verified clean (no new Sphinx warnings).
- Tier 1 (Critical): 0
- Tier 2 (Important): 10 (CreateAttributeMatrix, CreateDataGroup, DeleteData,
  RenameDataObject, MoveData, CopyFeatureArrayToElementArray,
  CreateFeatureArrayFromElementArray, ConditionalSetValue,
  ConvertColorToGrayScale, ReshapeDataArray)
- Tier 3 (Polish): 11 (CreateDataArray, CreateDataArrayAdvanced,
  CopyDataObject, CombineAttributeArrays, ConcatenateDataArrays,
  SplitDataArrayByComponent, SplitDataArrayByTuple,
  ExtractComponentAsArray, ConvertData, ArrayCalculator, InitializeData)
Tier 2 (10 filters): CreateAttributeMatrix, CreateDataGroup, DeleteData,
RenameDataObject, MoveData, CopyFeatureArrayToElementArray,
CreateFeatureArrayFromElementArray, ConditionalSetValue,
ConvertColorToGrayScale, ReshapeDataArray.

Tier 3 (11 filters): CreateDataArray, CreateDataArrayAdvanced,
CopyDataObject, CombineAttributeArrays, ConcatenateDataArrays,
SplitDataArrayByComponent, SplitDataArrayByTuple,
ExtractComponentAsArray, ConvertData, ArrayCalculator, InitializeData.

Notable structural changes:
- CreateAttributeMatrix and CreateDataGroup: added 'What is X?' sections
  with explicit guidance on when to choose one over the other.
- DeleteData: documented cascade-delete behavior across container types.
- RenameDataObject: warning about downstream parameter references.
- MoveData: explained tuple-count vs tuple-shape compatibility.
- CreateFeatureArrayFromElementArray: promoted 'last element copied'
  footgun to a Warning section; cross-linked ComputeArrayStatistics.
- ConditionalSetValue: split the two modes (mask vs value-match) into
  their own subsections.
- ReshapeDataArray: critical 'does not move data in memory' warning
  promoted to top-level with safe-vs-dangerous examples.
- InitializeData: restructured from rambly bullets into clean
  per-mode subsections.

Build verified clean (no new Sphinx warnings).
@imikejackson imikejackson force-pushed the topic/documentation_update branch from 8aea5bc to 2836ec0 Compare June 11, 2026 00:12
imikejackson and others added 9 commits June 10, 2026 20:29
Triaged all read/write filters across SimplnxCore and OrientationAnalysis
(24 readers + 20 writers). The design spec estimated ~15; the actual count
is 44 once the full EBSD/HDF5 reader set and format-specific exporters are
included.

Tier 1 (2): ReadH5OinaData (missing auto-table marker + hand-duplicated
parameter tables), WriteGBCDGMTFile (thin stub, undefined GBCD/GMT/pole
figure).

Tier 2 (24): format-specific readers/writers and EBSD readers needing
domain-term definitions, Required Input Sources sections, and fixes for
recurring defects (broken-bold "Ensemble Attribute Matrix**" across 5 EBSD
readers; {ref} -> MyST link conversions; legacy "Data Container" wording).

Tier 3 (15): polish — units, cross-links, typos. Notable: ReadNIfTIFile
hand-duplicates the auto parameter table (must remove); ReadImageStack
title mismatch ("Read Image Stack" vs humanName "Read Images [3D Stack]").

Tier 4 (3): ReadRawBinary, WriteImage, WriteDREAM3D — adequate as-is.

Also updated the stale branch reference in the tracker header, refreshed
the Progress Summary row, and appended Batch 7 entries to the Real-World
Visualization Wishlist and Concept Pages Needed tables.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Two critical I/O filter docs rewritten:

- WriteGBCDGMTFile: expanded from a one-sentence stub. Added plain-language
  "What is a GBCD Pole Figure?" (grain boundary, GBCD, misorientation, pole
  figure, MRD), "What This Filter Does" (GMT is an external toolkit; this
  filter only writes its .dat input), Parameter Guidance (now documents the
  previously-undocumented Misorientation Axis-Angle parameter with units),
  and a Required Input Sources section. Fixed the stale GMT URL.

- ReadH5OinaData: fixed structural defect — removed the hand-written
  Parameters and Created Objects tables and inserted the missing auto
  parameter-table marker so the real table renders. Replaced the stale
  type table with a plain-language "What This Filter Produces" paragraph.
  Fixed the phi2 +30 degree bullet that wrongly referenced ".ctf" files;
  converted {ref} directives and bold-only filter mentions to MyST links.

Tracker updated: Tier 1 marked Done; Batch 7 now In Progress.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrote 24 I/O filter docs (SimplnxCore + OrientationAnalysis), grouped by
sub-theme. Common improvements: defined the external tool / file format on
first use; converted bold-only filter mentions and legacy {ref} directives
to MyST links; added "Required Input Sources" sections naming the producer
filters; stated explicit units; removed empty "Example Pipelines" headings.

Core data I/O: ReadHDF5Dataset (fixed internally-inconsistent worked
examples), WriteBinaryData (documented one-file-per-array no-header output;
cross-linked Read Raw Binary).

Geometry/volume readers: ReadStlFile (binary-only caveat; typo fix),
ReadVtkStructuredPoints (legacy "Data Container" -> Image Geometry; point
vs cell data), ReadVolumeGraphicsFile (defined Volume Graphics; normalized
group).

Simulation exporters: WriteAbaqusHexahedron, WriteLAMMPSFile,
WriteSPParksSites, WriteLosAlamosFFT, ReadDeformKeyFileV12 — defined each
external tool (Abaqus/LAMMPS/SPPARKS/FFT/DEFORM) and the produced/consumed
data.

VTK/Avizo/dream3d: WriteVtkRectilinearGrid, WriteVtkStructuredPoints,
WriteAvizoRectilinearCoordinate, WriteAvizoUniformCoordinate (defined
VTK/Avizo formats; cleaned garbled example headers), ReadDREAM3D
(documented selective/partial import).

EBSD readers: ReadEnsembleInfo, ReadAngData, ReadCtfData, ReadChannel5Data,
ReadH5Ebsd, ReadH5EspritData, ReadH5OimData — fixed the recurring broken
"Ensemble Attribute Matrix**" bold, {ref}->MyST links, defined EBSD jargon,
stated micron units; ReadH5Ebsd now documents its Import-to-H5EBSD input
dependency; fixed the Channel5 ".ctf" copy-paste error.

OA writers: WriteGBCDTriangleData (fixed column-legend numbering; added
Required Input Sources), WritePoleFigure (defined pole figure/Lambert/Laue;
converted the input-array list into Required Input Sources).

All 24 verified: titles match humanName(), exactly one auto-table marker
each, no leftover {ref}/hand tables, all MyST link targets resolve.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Tier 3 polish (15): targeted fixes on docs that were already mostly clear.
- ReadCSVFile / ReadStringDataArray / ReadTextDataArray: typo fixes, quoted
  "Read CSV Filter" -> MyST links, descriptive image alt-text.
- WriteASCIIData: cleaned the cluttered Group line; documented Maximum
  Tuples Per Line.
- WriteFeatureDataCSV: defined Feature; explained the feature-count line;
  added Required Input Sources.
- ReadImage / ReadImageStack: fixed the ReadImageStack title to match
  humanName ("Read Images [3D Stack]"); cross-linked the two; added a
  file-list/slice-ordering subsection; stated units.
- ReadNIfTIFile: removed the hand-written Parameters table that duplicated
  the auto-table (kept Caveats); glossed sform/qform/pixdim/etc.
- ReadZeissTxmFile / ReadBinaryCTNorthstar: defined xCT/CT; normalized
  group/headings; named outputs; noted inclusive voxel subvolume bounds.
- WriteNodesAndElementsFiles / WriteStlFile: Required Input Sources; typo
  fixes; clarified the 2-component FaceLabels array.
- ReadGrainMapper3D: GrainMapper3D/XNovo gloss; mm-vs-microns caveat.
- WriteINLFile: per-column units; explained the symmetry codes.
- WriteStatsGenOdfAngleFile: expanded ODF; Required Input Sources.

Tier 4 adequate (3): minor consistency touches only.
- ReadRawBinary / WriteImage: added Required Input Sources.
- WriteDREAM3D: added the missing Group (Subgroup) header + Required Input
  Sources note.

All 18 verified: titles match humanName(), one auto-table marker each, no
{ref}/hand tables, all MyST links resolve. Batch 7 (44 filters) complete.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The written data row has 10 columns (1-3 right-hand orientation, 4-6
left-hand orientation, 7-9 triangle normal, 10 surface area), but the
file header labeled surface area as "Column 8", which collides with the
triangle-normal columns. Corrected to "Column 10" to match the actual
output. The filter documentation was already corrected in Batch 7.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Triaged the catch-all of SimplnxCore filters not covered by Batches 1-7
(statistics, feature geometry, clustering/point-cloud, triangle/mesh
compute, surface meshing/smoothing, mesh editing, thresholding/color,
utilities). The ITK plugin (Batch 8) is deferred.

Tier split: T1=4, T2=35, T3=31, T4=3.

Tier 1 (Critical): FlyingEdges3D, TriangleDihedralAngle,
NearestPointFuseRegularGrids, PointSampleEdgeGeometry — stubs or stale
"Data Container" terminology.

Recurring defects flagged for the rewrite phase: two more hand-duplicated
parameter tables (HierarchicalSmooth; CreatePythonSkeleton, which also
lacks the auto-table marker), a legacy @ref directive (ComputeBoundingBoxStats),
Doxygen math/@image artifacts (Silhouette, FeatureFaceCurvature,
PointSampleTriangleGeometry), more legacy "Data Container" wording, and many
bold-only filter mentions to convert to MyST links.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Four critical SimplnxCore stubs rewritten:
- FlyingEdges3D: defined isosurface/contour and the isovalue; contrasted
  with Surface Nets/Quick Surface Mesh; documented units + inputs.
- TriangleDihedralAngle: explained minimum-interior-angle as a mesh-quality
  metric; stated degrees (0-60); added Required Input Sources.
- NearestPointFuseRegularGrids: replaced legacy "Data Container" with Image
  Geometry; explained Reference vs Sampling and nearest-cell assignment.
- PointSampleEdgeGeometry: added missing Group header; defined Edge
  Geometry / scan vector; stated Sampling Spacing is in millimeters.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrote 35 SimplnxCore filter docs across six sub-themes (statistics,
feature analysis, clustering/point-cloud, triangle/mesh compute, surface
meshing/smoothing, mesh editing/sampling). Common improvements: defined
domain jargon on first use (RDF, Voronoi, isosurface, winding, Face Labels,
triple line/quad point, gradient magnitude, curvature); stated explicit
units (areas length^2, volumes length^3, curvature 1/length, distances,
fractions [0,1], degrees); added Required Input Sources naming producers;
converted bold-only/italic/{ref}/@ref/@image/Doxygen-math to MyST links and
MyST math.

Notable fixes: removed hand-duplicated content; reconciled
ComputeVolumeFractions' count-vs-volume-fraction wording; corrected the
RobustAutomaticThreshold producer (Find Derivatives no longer exists ->
ITK Gradient Magnitude); fixed the RemoveFlaggedTriangles Vertices->Triangles
copy-paste; corrected several stale "DREAM3D Review" group lines; fixed the
ComputeKMeans/KMedoids broken "Ensemble Attribute Matrix" bold; converted
SilhouetteFilter Doxygen math to MyST.

All 35 verified: titles match humanName(), one auto-table marker each, no
{ref}/@ref/Doxygen/hand tables, all MyST link targets resolve.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Tier 3 polish (31): targeted fixes — defined jargon (mode, aliasing,
Ensemble, winding, STL, RDF context), stated units (1/length ratios,
square/physical areas, physical coordinates vs voxel indices, degrees),
added Required Input Sources, and converted bold-only/italic mentions to
MyST links. Structural fixes: removed the hand-duplicated Parameters table
in HierarchicalSmooth; added the missing auto-table marker and removed the
hand-written parameter list in CreatePythonSkeleton; added missing Group
headers (CreateColorMap, CropEdgeGeometry, ExtractPipelineToFile) and the
missing Help footer (ExtractPipelineToFile); replaced legacy "Data
Container" wording (RemoveFlaggedVertices). Trimmed the oversized data dump
in ComputeArrayHistogram.

Tier 4 adequate (3): minor touches — Required Input Sources for
ComputeFeatureSizes and ComputeBoundaryCells (plus its 0-6 output range),
and a MyST link + Required Input Sources for ComputeGroupingDensity.

All 34 verified: titles match humanName(), one auto-table marker each, no
{ref}/@ref/Doxygen/hand tables, all MyST link targets resolve. Batch 9
(73 filters) complete.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant