From 4f2a795b3bcb3c5bb4df5699b6d70aad1bad474f Mon Sep 17 00:00:00 2001 From: Dan White Date: Fri, 29 May 2026 17:34:45 -0600 Subject: [PATCH 1/2] Add SCIRun modules summary HTML Add a generated documentation page (scirun_modules_summary.html) that summarizes all SCIRun Module subclasses grouped by category (Framework, Visualization, Math, Fields, I/O, FEM, Brain, etc.). The page includes navigation, searchable tables, descriptions, and styling; it was produced from source analysis of the refactor branch (2026-05-29) to serve as an up-to-date developer reference. --- scirun_modules_summary.html | 664 ++++++++++++++++++++++++++++++++++++ 1 file changed, 664 insertions(+) create mode 100644 scirun_modules_summary.html diff --git a/scirun_modules_summary.html b/scirun_modules_summary.html new file mode 100644 index 0000000000..ef6d7c07f5 --- /dev/null +++ b/scirun_modules_summary.html @@ -0,0 +1,664 @@ + + + + + + SCIRun Module Subclasses — Summary + + + + +
+

SCIRun Module Subclasses ~250 classes

+

All classes inheriting from SCIRun::Dataflow::Networks::Module — generated from source analysis of the refactor branch  ·  2026-05-29

+
+ + + +
+ +
+

Overview

+
    +
  • Every processing node in a SCIRun dataflow network is a concrete Module subclass.
  • +
  • Ports are declared statically via HasNInputPorts<Tag…> / HasNOutputPorts<Tag…> mix-ins using a typed tag system.
  • +
  • Subclasses implement execute() for compute and setStateDefaults() for UI parameter defaults.
  • +
  • Heavy computation is usually delegated to a separate Algo or Impl class, keeping the module thin.
  • +
  • Two important abstract intermediate bases exist: GeometryGeneratingModule (adds render-buffer integration) and ModuleWithAsyncDynamicPorts (processes inputs as they arrive).
  • +
+
+ + +
+

🏗 Framework / Core 5

+ + + + + + + + + +
ClassFileDescription
DummyModuleDataflow/Network/Module.ccNo-op placeholder used internally during testing and network loading.
GeometryGeneratingModuleDataflow/Network/GeometryGeneratingModule.hAbstract intermediate base for any module that produces geometry for rendering. Adds render-buffer integration and a GeometryPortTag output.
ModuleWithAsyncDynamicPortsDataflow/Network/ (framework)Abstract base for modules that process inputs asynchronously as they arrive. Used by ViewScene, OsprayViewer, and GeometryBuffer.
SubnetModuleInterface/Application/Subnetworks.hWraps an entire sub-network as a single opaque module node in a parent network.
PlaceholderModuleModules/Basic/PlaceholderModule.hStand-in for an unrecognized or removed module when loading old network files. Has no ports and does nothing.
+
+ + +
+

🎨 Visualization 14

+ + + + + + + + + + + + + + + + + + +
ClassFileDescription
ShowFieldModules/Visualization/ShowField.hPrimary field-rendering module. Renders a scalar/vector/tensor field as colored surfaces, edges, or nodes. Inputs: Field + optional ColorMap; output: Geometry.
ShowFieldGlyphsModules/Visualization/ShowFieldGlyphs.hRenders vector or tensor fields as 3D glyphs (arrows, ellipsoids, superquadrics). Accepts up to 3 field+colormap pairs simultaneously.
ShowUncertaintyGlyphsModules/Visualization/ShowUncertaintyGlyphs.hRenders glyphs sized/shaped by tensor uncertainty data. Inputs: field + matrix.
ShowColorMapModules/Visualization/ShowColorMapModule.hRenders a color legend/scale bar in the viewer for a given ColorMap.
RescaleColorMapModules/Visualization/RescaleColorMap.hRe-maps a ColorMap's value range to fit the actual data range of one or more input Fields.
ReportColorMapInfoModules/Visualization/ReportColorMapInfo.hReports metadata (range, resolution, etc.) about a ColorMap to scalar output ports.
CreateStandardColorMapModules/Visualization/CreateStandardColorMap.hGenerates a built-in named color map (rainbow, grayscale, etc.) from user parameters.
ShowStringModules/Visualization/ShowString.hRenders a text string as a 2D geometry overlay in the viewer.
ShowMeshBoundingBoxModules/Visualization/ShowMeshBoundingBox.hVisualizes the axis-aligned bounding box of a field's mesh.
ShowOrientationAxesModules/Visualization/ShowOrientationAxes.hRenders orientation/coordinate-axis arrows derived from a field's bounding box.
GeometryBufferModules/Visualization/GeometryBuffer.hCollects incoming geometry objects asynchronously and distributes them across up to 8 output ports. Useful for large networks with many geometry producers.
MeshConstructionModules/Visualization/MeshConstruction.hHelper that constructs renderable mesh geometry from a field.
ShowFieldWithOsprayModules/Visualization/ShowFieldWithOspray.hSends field data to the OSPRay path-tracer instead of the standard OpenGL renderer.
CreateTestingArrowModules/Visualization/CreateTestingArrow.hGenerates a simple arrow geometry for testing/debugging the render pipeline.
+
+ + +
+

🖥 Rendering 2

+ + + + + + +
ClassFileDescription
ViewSceneModules/Render/ViewScene.hThe primary interactive 3D OpenGL viewer. Accepts geometry asynchronously via a dynamic port; outputs camera position and orientation as matrices. The main interactive window module.
OsprayViewerModules/Render/OsprayViewer.hPhoto-realistic path-traced viewer using Intel OSPRay. Accepts OSPRay-specific geometry objects asynchronously; no output ports.
+
+ + +
+

Math — Modern 21

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassFileDescription
SolveLinearSystemModules/Math/SolveLinearSystem.hSolves Ax = b using iterative solvers (CG, BiCG, MINRES, etc.). Inputs: matrix A and RHS b; output: solution x.
SolveComplexLinearSystemModules/Math/SolveComplexLinearSystem.hSame as SolveLinearSystem but for complex-valued matrices.
EvaluateLinearAlgebraUnaryModules/Math/EvaluateLinearAlgebraUnary.hApplies a user-selected unary operation (transpose, invert, negate, normalize, etc.) to one matrix.
EvaluateLinearAlgebraBinaryModules/Math/EvaluateLinearAlgebraBinary.hApplies a binary operation (add, multiply, subtract, etc.) to two matrices.
AppendMatrixModules/Math/AppendMatrix.hConcatenates matrices by appending rows or columns. Supports a dynamic number of input matrices.
CreateMatrixModules/Math/CreateMatrix.hCreates a matrix from values entered by the user in a text-editor UI. No input ports.
CreateStandardMatrixModules/Math/CreateStandardMatrix.hCreates common named matrices (identity, zeros, ones, random) at a specified size.
CreateComplexMatrixModules/Math/CreateComplexMatrix.hCreates a complex-valued matrix from two real matrices (real and imaginary parts).
GetMatrixSliceModules/Math/GetMatrixSlice.hExtracts a single row or column from a matrix. Can be driven by a scalar index port for iteration.
GetSubmatrixModules/Math/GetSubmatrix.hExtracts a rectangular block from a matrix by specifying row and column ranges.
ResizeMatrixModules/Math/ResizeMatrix.hResizes a matrix to specified dimensions by padding with zeros or truncating.
ReportMatrixInfoModules/Math/ReportMatrixInfo.hReports a matrix's row count, column count, and Frobenius norm to scalar output ports.
ReportMatrixSliceMeasureModules/Math/ReportMatrixSliceMeasure.hComputes statistics (min, max, mean, etc.) over a row or column slice of a matrix.
ReportComplexMatrixInfoModules/Math/ReportComplexMatrixInfo.hReports metadata for complex matrices (dimensions, norms of real and imaginary parts).
ComputePCAModules/Math/ComputePCA.hPrincipal Component Analysis: outputs eigenvalues, eigenvectors, and projected data as three separate matrices.
ComputeTensorUncertaintyModules/Math/ComputeTensorUncertainty.hComputes uncertainty measures from an ensemble of tensor matrices.
ConvertMatrixToScalarModules/Math/ConvertMatrixToScalar.hExtracts a single scalar value from a 1×1 matrix.
ConvertScalarToMatrixModules/Math/ConvertScalarToMatrix.hWraps a scalar value in a 1×1 matrix.
ConvertComplexToRealMatrixModules/Math/ConvertComplexToRealMatrix.hSplits a complex matrix into separate real and imaginary part matrices.
ConvertRealToComplexMatrixModules/Math/ConvertRealToComplexMatrix.hCombines two real matrices (real and imaginary parts) into one complex matrix.
DisplayHistogramModules/Math/DisplayHistogram.hPlots a histogram of a matrix's values in a UI window. No output ports.
BasicPlotterModules/Math/BasicPlotter.hPlots matrix data as a time-series or XY curve.
AdvancedPlotterModules/Math/AdvancedPlotter.hExtended version of BasicPlotter with additional display and overlay options.
BooleanCompareModules/Math/BooleanCompare.hCompares two scalars with a relational operator; outputs the boolean result as a scalar.
CreateGeometricTransformModules/Math/CreateGeometricTransform.hBuilds a 4×4 transformation matrix (translate/rotate/scale) with an interactive 3D widget. Outputs both the matrix and a geometry object.
+
+ + +
+

Math — Legacy 11

+ + + + + + + + + + + + + + + +
ClassFileDescription
AddKnownsToLinearSystemModules/Legacy/Math/AddKnownsToLinearSystem.hApplies boundary conditions to a linear system by inserting known values into A and b.
AddLinkedNodesToLinearSystemModules/Legacy/Math/AddLinkedNodesToLinearSystem.hCouples pairs of mesh nodes together as equality constraints in a linear system.
BuildNoiseColumnMatrixModules/Legacy/Math/BuildNoiseColumnMatrix.hConstructs a random-noise column vector of specified length and amplitude.
CollectMatricesModules/Legacy/Math/CollectMatrices.hAccumulates matrices arriving across multiple sequential executions into one growing combined matrix.
ComputeSVDModules/Legacy/Math/ComputeSVD.hSingular Value Decomposition; outputs U, Σ (as diagonal matrix), and V.
ConvertMatrixTypeModules/Legacy/Math/ConvertMatrixType.hConverts between sparse, dense, and column matrix storage formats.
EvaluateLinearAlgebraGeneralModules/Legacy/Math/EvaluateLinAlgGeneral.hUser-scripted multi-matrix expression evaluation with up to 5 inputs and 5 outputs.
ReportColumnMatrixMisfitModules/Legacy/Math/ReportColumnMatrixMisfit.hComputes the misfit (error norm) between two column vectors; used during iterative inverse solving.
SelectSubMatrixModules/Legacy/Math/SelectSubMatrix.hSelects rows and columns from a matrix by an index list.
SetSubmatrixModules/Legacy/Math/SetSubmatrix.hInserts one matrix into a subregion of a larger matrix.
SolveMinNormLeastSqSystemModules/Legacy/Math/SolveMinNormLeastSqSystem.hSolves an underdetermined system for the minimum-norm least-squares solution.
+
+ + +
+

🔄 Inverse Problem 5

+ + + + + + + + + +
ClassFileDescription
SolveInverseProblemWithTikhonovModules/Legacy/Inverse/SolveInverseProblemWithTikhonov.hTikhonov regularized inverse: computes x = (AᵀA + λRᵀR)⁻¹Aᵀb. Outputs solution, regularized inverse, and the regularization parameter used.
SolveInverseProblemWithTikhonovSVDModules/Legacy/Inverse/SolveInverseProblemWithTikhonovSVD.hTikhonov inverse via pre-computed SVD factorization — faster for repeated solves at different λ values.
SolveInverseProblemWithTSVDModules/Legacy/Inverse/SolveInverseProblemWithTSVD.hTruncated SVD inverse: discards small singular values to regularize the solution. Accepts pre-computed SVD components.
BuildSurfaceLaplacianMatrixModules/Legacy/Inverse/BuildSurfaceLaplacianMatrix.hBuilds a discrete surface Laplacian matrix from a surface mesh. Used as a spatial regularization operator in inverse problems.
LCurvePlotModules/Legacy/Inverse/LCurvePlot.hPlots the L-curve (solution norm vs. residual norm) to help select the optimal regularization parameter λ.
+
+ + +
+

🔷 Field Operations — Modern 7

+ + + + + + + + + + + +
ClassFileDescription
ReportFieldInfoModules/Fields/ReportFieldInfo.hReports field metadata to output ports: mesh element count, node count, data range, bounding box, mesh type, and data type.
EditMeshBoundingBoxModules/Fields/EditMeshBoundingBox.hInteractively rescales and repositions a field's bounding box via a 3D widget. Outputs transformed field, geometry, and transform matrix.
InterfaceWithCleaverModules/Fields/InterfaceWithCleaver.hWraps the Cleaver meshing library to generate quality tetrahedral meshes from multi-material indicator fields (dynamic port input).
InterfaceWithCleaver2Modules/Fields/InterfaceWithCleaver2.hCleaver 2 integration with an updated API and improved mesh quality controls.
RefineTetMeshLocallyModules/Fields/RefineTetMeshLocally.hLocally subdivides tetrahedra in a Cleaver mesh to improve spatial resolution in specific regions.
CalculateBundleDifferenceModules/Fields/CalculateBundleDifference.hComputes element-wise difference between two field bundles.
CalculateNodeLocationFrequencyModules/Fields/CalculateNodeLocationFrequency.hCounts how frequently each node location appears across a set of fields.
+
+ + +
+

🔷 Field Operations — Legacy ~80

+ +

Organized by function. These are the largest single category in the codebase.

+ +

Mesh Geometry Transforms

+ + + + + + + + + + + + + + + +
ClassFileDescription
AlignMeshBoundingBoxesLegacy/Fields/Aligns one mesh's bounding box to match another's.
ScaleFieldMeshAndDataLegacy/Fields/Uniformly scales both mesh coordinates and field data values by a factor.
TransformMeshWithTransformLegacy/Fields/Applies a 4×4 transform matrix to a mesh, moving all nodes.
ResampleRegularMeshLegacy/Fields/Resamples a structured grid at a different resolution.
FairMeshLegacy/Fields/Smooths a mesh using Laplacian or Taubin filtering.
CleanupTetMeshLegacy/Fields/Removes degenerate elements from a tetrahedral mesh.
RefineMeshLegacy/Fields/Subdivides mesh elements to increase resolution.
RegisterWithCorrespondencesLegacy/Fields/Computes a rigid or affine registration transform from point correspondences between two meshes.
FlipSurfaceNormalsLegacy/Fields/Reverses surface triangle winding order (flips all normals).
ReorderNormalCoherentlyLegacy/Fields/Makes surface normals consistently outward- or inward-pointing.
MergeTriSurfsLegacy/Fields/Merges multiple triangle surface meshes into a single combined mesh.
+ +

Mesh Creation

+ + + + + + + +
ClassFileDescription
CreateLatVolLegacy/Fields/Creates a structured Cartesian (lattice volume) mesh at user-specified dimensions and bounds.
CreateImageLegacy/Fields/Creates a 2D structured grid (image lattice) mesh.
GenerateElectrodeLegacy/Fields/Generates electrode geometry as a field for use in FEM simulations.
+ +

Field Data Manipulation

+ + + + + + + + + + + + + + + + +
ClassFileDescription
GetFieldDataLegacy/Fields/Extracts a field's data values as a matrix.
SetFieldDataLegacy/Fields/Assigns matrix values as a field's data.
GetFieldNodesLegacy/Fields/Extracts node positions as a matrix.
SetFieldNodesLegacy/Fields/Sets mesh node positions from a matrix.
SetFieldDataToConstantValueLegacy/Fields/Fills all field data entries with a single constant value.
SwapFieldDataWithMatrixEntriesLegacy/Fields/Replaces field data with values from a matrix (element-to-element mapping).
CreateFieldDataLegacy/Fields/Creates field data by evaluating a user-supplied function over mesh elements.
ApplyMappingMatrixLegacy/Fields/Maps data between meshes using a pre-built mapping (interpolation) matrix.
BuildMappingMatrixLegacy/Fields/Constructs the mapping/interpolation matrix between two meshes.
ApplyFilterToFieldDataLegacy/Fields/Applies a convolution or smoothing filter to field data values.
SmoothVecFieldMedianLegacy/Fields/Median-filter smoothing of a vector field.
SetFieldOrMeshStringPropertyLegacy/Fields/Sets a named metadata string property on a field or mesh.
+ +

Field Statistics & Analysis

+ + + + + + + + + + + + + + + + + +
ClassFileDescription
ReportFieldGeometryMeasuresLegacy/Fields/Reports geometric measures: volumes, areas, and element size statistics.
ReportScalarFieldStatsLegacy/Fields/Reports min, max, mean, and standard deviation of scalar field data.
GetMeshQualityFieldLegacy/Fields/Computes quality metrics (aspect ratio, Jacobian, etc.) per mesh element, returning them as a scalar field.
CalculateFieldDataMetricLegacy/Fields/Computes a user-selected norm or metric over field data values.
CalculateGradientsLegacy/Fields/Computes gradient vectors from a scalar field using FEM interpolation.
CalculateVectorMagnitudesLegacy/Fields/Converts a vector field to a scalar field of per-element magnitudes.
CalculateDistanceToFieldLegacy/Fields/Computes the unsigned distance from each node to the nearest element of a reference field.
CalculateDistanceToFieldBoundaryLegacy/Fields/Same, but measures distance to the boundary of the reference field.
CalculateSignedDistanceToFieldLegacy/Fields/Signed distance field — negative inside, positive outside the reference surface.
CalculateInsideWhichFieldLegacy/Fields/For each mesh element, determines which (if any) of N reference fields contains it.
CalculateMeshCenterLegacy/Fields/Computes the centroid (geometric center) of a mesh and outputs it as a point field.
CalculateMeshNodesLegacy/Fields/Extracts node positions as a matrix.
GetCentroidsFromMeshLegacy/Fields/Creates a point cloud field at element centroids.
+ +

Clipping & Extraction

+ + + + + + + + + + + + +
ClassFileDescription
ClipFieldByFunction3Legacy/Fields/Clips mesh elements by a user-supplied algebraic function.
ClipFieldByMeshLegacy/Fields/Clips one mesh against the boundary of another.
ClipVolumeByIsovalueLegacy/Fields/Extracts the region of a volume field above or below a threshold isovalue.
ExtractSimpleIsosurfaceLegacy/Fields/Marching-cubes isosurface extraction from a scalar volume field.
GetDomainBoundaryLegacy/Fields/Extracts the boundary surface of a labeled material domain.
GetFieldBoundaryLegacy/Fields/Extracts the geometric boundary surface of any mesh.
SplitFieldByConnectedRegionLegacy/Fields/Separates disconnected mesh components into individual fields.
SplitFieldByDomainLegacy/Fields/Splits a multi-material mesh into one field per material label.
+ +

Sampling

+ + + + + + + + +
ClassFileDescription
GeneratePointSamplesFromFieldLegacy/Fields/Generates random or regular point samples within a field's domain.
GeneratePointSamplesFromFieldOrWidgetLegacy/Fields/Same, but also accepts an interactive widget to control seed placement.
GenerateSinglePointProbeFromFieldLegacy/Fields/Places a single probe point and returns the interpolated field value at that location.
ProjectPointsOntoMeshLegacy/Fields/Projects a set of points onto the nearest surface location of a mesh.
+ +

Conversion

+ + + + + + + + + + + + +
ClassFileDescription
ConvertFieldBasisLegacy/Fields/Changes data interpolation basis (e.g., node-centered ↔ cell-centered).
ConvertFieldDataTypeLegacy/Fields/Converts scalar data storage type (float/double/int).
ConvertHexVolToTetVolLegacy/Fields/Splits hexahedral elements into tetrahedra.
ConvertMatricesToMeshLegacy/Fields/Constructs a mesh from node-position and element-connectivity matrices.
ConvertMeshToPointCloudLegacy/Fields/Drops all mesh connectivity, keeping only node positions as a point cloud.
ConvertMeshToUnstructuredMeshLegacy/Fields/Converts a structured (lattice) mesh to an unstructured representation.
ConvertQuadSurfToTriSurfLegacy/Fields/Splits quadrilateral surface elements into pairs of triangles.
ConvertIndicesToFieldDataLegacy/Fields/Maps integer index values to field data using a lookup table.
+ +

Utilities

+ + + + + + + + +
ClassFileDescription
BuildMatrixOfSurfaceNormalsLegacy/Fields/Outputs surface normals for each node or element as a matrix.
GenerateNodeNormalsLegacy/Fields/Computes per-node normal vectors by averaging surrounding element normals.
CollectFieldsLegacy/Fields/Accumulates fields arriving in successive executions into one growing collection.
RemoveUnusedNodesLegacy/Fields/Removes mesh nodes not referenced by any element.
+
+ + +
+

📦 Bundle Operations 9

+

Bundles are named containers that group multiple data objects together under string keys.

+ + + + + + + + + + + + + +
ClassFileDescription
GetFieldsFromBundleLegacy/Bundle/GetFieldsFromBundle.hExtracts up to 6 named fields from a bundle to individual output ports.
InsertFieldsIntoBundleLegacy/Bundle/InsertFieldsIntoBundle.hInserts fields (dynamic port) into a bundle under user-specified names.
GetMatricesFromBundleLegacy/Bundle/GetMatricesFromBundle.hExtracts up to 6 named matrices from a bundle.
InsertMatricesIntoBundleLegacy/Bundle/InsertMatricesIntoBundle.hInserts matrices into a bundle under user-specified names.
GetColorMapsFromBundleLegacy/Bundle/GetColorMapsFromBundle.hExtracts named ColorMaps from a bundle.
GetStringsFromBundleLegacy/Bundle/GetStringsFromBundle.hExtracts named string values from a bundle.
InsertStringsIntoBundleLegacy/Bundle/InsertStringsIntoBundle.hInserts string values into a bundle under user-specified names.
InsertEnvironmentIntoBundleLegacy/Bundle/InsertEnvironmentIntoBundle.hInserts environment/system variable values into a bundle as strings.
ReportBundleInfoLegacy/Bundle/ReportBundleInfo.hPrints the contents (keys, types, sizes) of a bundle to the log.
+
+ + +
+

💾 Data I/O 11

+ + + + + + + + + + + + + + + +
ClassFileDescription
GenericReader<H,P>Modules/DataIO/GenericReader.hTemplate base: reads a typed data file selected via UI or string port. Outputs the loaded object and the filename string.
GenericWriter<H,P>Modules/DataIO/GenericWriter.hTemplate base: writes a typed object to a file path specified via UI or string port.
ReadFieldModules/DataIO/ReadField.hReads SCIRun field files (.fld, .mat, VTK, etc.). Delegates to format-specific importers.
WriteFieldModules/DataIO/WriteField.hWrites a field to disk in a selected format.
ReadBundleModules/DataIO/ReadBundle.hReads a serialized Bundle from disk.
WriteBundleModules/DataIO/WriteBundle.hWrites a Bundle to disk.
ReadMatrixClassicModules/DataIO/ReadMatrixClassic.hReads a matrix from text or binary SCIRun format.
WriteMatrixModules/DataIO/WriteMatrix.hWrites a matrix to text or binary format.
ReadColorMapXmlModules/DataIO/ReadColorMapXml.hReads a ColorMap from an XML file; also outputs a bundle with raw color data.
AutoReadFileModules/DataIO/AutoReadFile.hDetects file type automatically from extension and routes to either a matrix or field output port.
WriteG3DModules/DataIO/WriteG3D.hExports geometry data to G3D format for use with external tools.
+
+ + +
+

🔬 Finite Element Methods — Legacy 6

+ + + + + + + + + + +
ClassFileDescription
BuildFEMatrixLegacy/FiniteElements/BuildFEMatrix.hAssembles the global FEM stiffness matrix K from a field with conductivity data. Outputs both real and complex stiffness matrices.
BuildFESurfRHSLegacy/FiniteElements/BuildFESurfRHS.hAssembles the right-hand side vector for FEM surface (Neumann) source terms.
BuildFEVolRHSLegacy/FiniteElements/BuildFEVolRHS.hAssembles the RHS for volumetric source terms in a FEM formulation.
ApplyFEMCurrentSourceLegacy/FiniteElements/ApplyFEMCurrentSource.hApplies current-source boundary conditions to a FEM linear system (modifies both A and b).
ApplyFEMVoltageSourceLegacy/FiniteElements/ApplyFEMVoltageSource.hApplies voltage-source (Dirichlet) boundary conditions to a FEM linear system.
BuildTDCSMatrixLegacy/FiniteElements/BuildTDCSMatrix.hBuilds the full system matrix for transcranial direct current stimulation (tDCS), incorporating electrode contact impedances.
+
+ + +
+

Forward Problem 4

+ + + + + + + + +
ClassFileDescription
BuildBEMatrixLegacy/Forward/BuildBEMatrix.hBuilds a Boundary Element Method (BEM) transfer matrix from one or more closed surface meshes. Accepts a dynamic number of surface inputs.
CalculateCurrentDensityLegacy/Forward/CalculateCurrentDensity.hComputes the current density field J = σ·E from an electric potential field and a conductivity field.
InsertVoltageSourceLegacy/Forward/InsertVoltageSource.hInserts electrode voltage sources into a forward-problem field and returns the modified field and a mapping matrix.
CalcTMPLegacy/Forward/CalcTMP.hCalculates transmembrane potentials from cardiac activation times using a bidomain model. Accepts 7 matrix inputs.
+
+ + +
+

🧠 Brain Stimulation 7

+ + + + + + + + + + + +
ClassFileDescription
ElectrodeCoilSetupModules/BrainStimulator/ElectrodeCoilSetup.hPositions electrode/coil geometry on a head mesh surface. Outputs placement matrices and projected fields for downstream FEM/BEM modules.
SolveBiotSavartModules/BrainStimulator/SolveBiotSavart.hComputes the magnetic field B induced by a current-carrying TMS coil using the Biot-Savart law. Inputs: coil geometry and domain field.
SetupTDCS (SetupRHSforTDCSandTMS)Modules/BrainStimulator/SetupRHSforTDCSandTMS.hAssembles the complete right-hand side vectors and boundary condition matrices for a tDCS or TMS FEM solve. Outputs 8 matrix/field ports.
GenerateROIStatisticsModules/BrainStimulator/GenerateROIStatistics.hComputes mean, std, min, and max of a field quantity over labeled regions-of-interest (ROIs) defined by mask fields and name strings.
ModelTMSCoilModules/BrainStimulator/ModelTMSCoil.hGenerates synthetic coil geometry for Transcranial Magnetic Stimulation from user-defined coil parameters. No input ports; outputs a field.
SetConductivitiesToMeshModules/BrainStimulator/SetConductivitiesToTetMesh.hAssigns tissue conductivity values to tetrahedral mesh elements based on a label field and a conductivity lookup table.
SimulateForwardMagneticFieldModules/BrainStimulator/SimulateForwardMagneticField.hSimulates the forward magnetic field measurement from neural current sources by integrating current density over a domain. 4 field inputs, 2 field outputs.
+
+ + +
+

🐍 Python Integration 5

+ + + + + + + + + +
ClassFileDescription
InterfaceWithPythonModules/Python/InterfaceWithPython.hRuns a Python script inside the SCIRun network. Receives matrices, fields, and strings from dynamic input ports; returns up to 9 typed values to output ports.
LoopStartModules/Python/LoopStart.hMarks the beginning of a Python-driven loop construct. On each iteration emits data from a metadata object to downstream modules.
LoopEndModules/Python/LoopEnd.hMarks the end of a loop. Collects per-iteration results back into a metadata object.
PythonObjectForwarderModules/Python/PythonObjectForwarder.hTemplate helper that polls the Python interpreter for objects produced asynchronously and forwards them to typed output ports with configurable retry logic.
ModuleStateModifierTesterModules/Python/ModuleStateModifierTester.hTest/debug module that exercises the state-modification API from Python.
+
+ + +
+

💬 String Modules 8

+ + + + + + + + + + + + +
ClassFileDescription
CreateStringModules/String/CreateString.hCreates a literal string from user input in the UI. No input ports.
NetworkNotesModules/String/NetworkNotes.hStores free-text notes attached to a network file. No compute; UI only.
JoinStringsLegacy/String/JoinStrings.hConcatenates multiple strings with a user-specified separator.
PrintMatrixIntoStringLegacy/String/PrintMatrixIntoString.hFormats a matrix as a human-readable string.
PrintStringIntoStringLegacy/String/PrintStringIntoString.hApplies printf-style format substitution to a template string.
ReportStringInfoLegacy/String/ReportStringInfo.hPrints a string's length and content to the log output.
SplitFileNameLegacy/String/SplitFileName.hSplits a file path into directory, base name, and extension components.
GetNetworkFileNameLegacy/String/GetNetworkFileName.hReturns the filename of the currently loaded SCIRun network (.srn5) file.
+
+ + +
+

🔁 Converters 2

+ + + + + + +
ClassFileDescription
ConvertBundleToFieldLegacy/Converters/ConvertBundleToField.hExtracts a field from a bundle by a user-specified key name.
ConvertMatrixToStringLegacy/Converters/ConvertMatrixToString.hSerializes a matrix to a formatted string representation.
+
+ + +
+

🧪 Basic / Testing 13

+ + + + + + + + + + + + + + + + + +
ClassFileDescription
ChooseInputModules/Basic/ChooseInput.hPasses through the first non-empty input from a dynamic port list (mux/selector). Supersedes the legacy ChooseMatrix module.
PrintDatatypeModules/Basic/PrintDatatype.hPrints a description of any datatype object to the log. No output ports.
SimulationStreamingReaderBaseModules/Basic/SimulationReaderBaseModule.hBase for streaming simulation data from external solvers into SCIRun. Outputs a Bundle per timestep.
PlaceholderModuleModules/Basic/PlaceholderModule.hStand-in for removed or unrecognized modules when loading legacy network files.
DynamicPortTesterModules/Basic/DynamicPortTester.hTest module that exercises dynamic port addition and removal.
AsyncPortTestModuleModules/Basic/AsyncPortTestModule.hTests async port execution semantics and ordering.
AsyncStreamingTestModuleModules/Basic/AsyncStreamingTestModule.hTests streaming data delivery through async ports.
LoggingTesterModules/Basic/LoggingTester.hExercises the module logging API.
NeedToExecuteTesterModules/Basic/NeedToExecuteTester.hTests the "needs re-execution" caching and invalidation logic.
PortFeedbackTestModulesModules/Basic/PortFeedbackTestModules.hTests backward (feedback) data flow between ports.
SendComplexScalarModules/Basic/SendComplexScalar.hTest source that emits a complex scalar value.
ReceiveComplexScalarModules/Basic/ReceiveComplexScalar.hTest sink that receives and verifies a complex scalar value.
CompositeModuleWithStaticPorts / …TypedStaticPortsModules/Basic/Test harnesses for composite (subnet) module port wiring.
+
+ + +
+

🌊 Legacy Visualization 2

+ + + + + + +
ClassFileDescription
GenerateStreamLinesLegacy/Visualization/GenerateStreamLines.hTraces streamlines through a vector field using Runge-Kutta integration. Inputs: vector field + optional seed field. Output: curve field. Interruptible.
ShowAndEditDipolesLegacy/Visualization/ShowAndEditDipoles.hRenders dipole sources as 3D arrow geometry and allows interactive repositioning. Outputs both updated field and geometry.
+
+ + +
+

📊 Teem / NRRD 6

+

Integration with the Teem library for NRRD volumetric data and DTI tractography.

+ + + + + + + + + + + +
ClassFileDescription
ReadNrrdLegacy/Teem/DataIO/ReadNrrd.hReads NRRD (Nearly Raw Raster Data) volumetric files via the Teem library. No input ports; outputs a NrrdData object.
ConvertNrrdToFieldLegacy/Teem/Converters/ConvertNrrdToField.hConverts a NRRD dataset to a SCIRun Field.
ConvertNrrdToMatrixLegacy/Teem/Converters/ConvertNrrdToMatrix.hConverts a NRRD dataset to a SCIRun Matrix.
SplitFieldIntoNrrdDataLegacy/Teem/Converters/SplitFieldIntoNrrdData.hSplits a SCIRun field into separate NRRD arrays (coordinates and data).
BuildDerivedNrrdWithGageLegacy/Teem/Misc/BuildDerivedNrrdWithGage.hComputes derived quantities (gradients, curvatures, etc.) from a NRRD volume using Teem's Gage library.
ReportNrrdInfoLegacy/Teem/Misc/ReportNrrdInfo.hPrints metadata of a NRRD dataset (dimensions, spacing, type) to the log.
TendFiberLegacy/Teem/Tend/TendFiber.hTraces DTI fiber tractography streamlines through a tensor NRRD volume using Teem's Tend library. Output: a curve field.
+
+ + +
+

🔢 MATLAB I/O 6

+ + + + + + + + + + +
ClassFileDescription
ImportMatricesFromMatlabLegacy/Matlab/DataIO/ImportMatricesFromMatlab.hReads matrices from a MATLAB .mat file selected by filename. Outputs up to 6 matrices.
ExportMatricesToMatlabLegacy/Matlab/DataIO/ExportMatricesToMatlab.hWrites matrices to a MATLAB .mat file.
ImportFieldsFromMatlabLegacy/Matlab/DataIO/ImportFieldsFromMatlab.hReads SCIRun field objects stored in a MATLAB .mat file.
ExportFieldsToMatlabLegacy/Matlab/DataIO/ExportFieldsToMatlab.hWrites field objects to a MATLAB .mat file.
ImportDatatypesFromMatlabLegacy/Matlab/DataIO/ImportDatatypesFromMatlab.hGeneric MATLAB import for any supported SCIRun datatype.
ExportDatatypesToMatlabLegacy/Matlab/DataIO/ExportDatatypesToMatlab.hGeneric MATLAB export for any supported SCIRun datatype.
+
+ + +
+

📝 Examples 3

+ + + + + + + +
ClassFileDescription
SortMatrixModules/Examples/SortMatrix.hExample demonstrating the module API. Sorts a matrix's rows by a selected column.
TestModuleSimpleModules/Examples/TestModuleSimple.hMinimal example module with no UI — illustrates the bare minimum Module subclass.
TestModuleSimpleUIModules/Examples/TestModuleSimpleUI.hMinimal example module with a parameter UI — shows how to wire state and UI.
+
+ + +
+

🏛 Architecture Patterns

+
+

All Module subclasses share this structure

+
    +
  • Base class: SCIRun::Dataflow::Networks::Module (or GeometryGeneratingModule / ModuleWithAsyncDynamicPorts for specialized cases)
  • +
  • Ports: declared statically as mix-in template bases — HasNInputPorts<Tag…> / HasNOutputPorts<Tag…>
  • +
  • Port tags: FieldPortTag, MatrixPortTag, GeometryPortTag, ColorMapPortTag, StringPortTag, ScalarPortTag, NrrdPortTag, BundlePortTag, DatatypePortTag, and others
  • +
  • Dynamic ports: wrapped in DynamicPortTag<T> or AsyncDynamicPortTag<T>
  • +
  • Compute: implemented in execute(); UI defaults in setStateDefaults()
  • +
  • State: parameters stored in an AlgorithmParameter-keyed map retrieved via get_state()
  • +
  • Separation of concerns: heavy computation delegated to a separate Algo or Impl class, keeping the module class thin
  • +
  • Legacy vs. modern: Legacy modules under Modules/Legacy/ often have a LEGACY_BIOPSE_MODULE or CONVERTED_VERSION_OF_MODULE() macro annotation indicating the migration status
  • +
+
+
+ +
+ + + + + From 4080e8d27efd23ff43a6c24ce8dd6455c75fb931 Mon Sep 17 00:00:00 2001 From: Dan White Date: Fri, 3 Jul 2026 23:35:25 -0600 Subject: [PATCH 2/2] Move scirun_modules_summary.html to docs/ Co-Authored-By: Claude Sonnet 4.6 --- scirun_modules_summary.html => docs/scirun_modules_summary.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename scirun_modules_summary.html => docs/scirun_modules_summary.html (100%) diff --git a/scirun_modules_summary.html b/docs/scirun_modules_summary.html similarity index 100% rename from scirun_modules_summary.html rename to docs/scirun_modules_summary.html