more quality of life updates

This commit is contained in:
2026-04-01 23:07:05 -07:00
parent 878c7b415c
commit d4cecf0372
79 changed files with 139 additions and 127 deletions

View File

@@ -1,51 +0,0 @@
=== Channel: Adhesion:Retrace ===
DimScaling shape: (2, 2)
DimScaling[0,:]: [8.656250e-06 1.665625e-05] (row 0)
DimScaling[1,:]: [-4.e-06 4.e-06] (row 1)
--- If [start, end] interpretation ---
xreal (row1 range) = 8e-06
yreal (row0 range) = 7.999999999999998e-06
--- If [step, offset] interpretation ---
row0: step=8.656249999999648e-06 offset=1.6656249999999646e-05
row1: step=-4e-06 offset=4e-06
DimUnits: ['m' 'm']
DataUnits: N
DimExtents ('Resolution 0'): [512 384]
=== Channel: FFMZSensor:Retrace ===
DimScaling shape: (2, 2)
DimScaling[0,:]: [8.656250e-06 1.665625e-05] (row 0)
DimScaling[1,:]: [-4.e-06 4.e-06] (row 1)
--- If [start, end] interpretation ---
xreal (row1 range) = 8e-06
yreal (row0 range) = 7.999999999999998e-06
--- If [step, offset] interpretation ---
row0: step=8.656249999999648e-06 offset=1.6656249999999646e-05
row1: step=-4e-06 offset=4e-06
DimUnits: ['m' 'm']
DataUnits: m
DimExtents ('Resolution 0'): [512 384]
=== Channel: MaxForce:Retrace ===
DimScaling shape: (2, 2)
DimScaling[0,:]: [8.656250e-06 1.665625e-05] (row 0)
DimScaling[1,:]: [-4.e-06 4.e-06] (row 1)
--- If [start, end] interpretation ---
xreal (row1 range) = 8e-06
yreal (row0 range) = 7.999999999999998e-06
--- If [step, offset] interpretation ---
row0: step=8.656249999999648e-06 offset=1.6656249999999646e-05
row1: step=-4e-06 offset=4e-06
DimUnits: ['m' 'm']
DataUnits: N
DimExtents ('Resolution 0'): [512 384]
=== 2D dataset shapes ===
Image/DataSet/Resolution 0/Frame 0/Adhesion:Retrace/Image shape=(512, 384)
Image/DataSet/Resolution 0/Frame 0/FFMZSensor:Retrace/Image shape=(512, 384)
Image/DataSet/Resolution 0/Frame 0/MaxForce:Retrace/Image shape=(512, 384)
Image/DataSetInfo/Global/Channels/Adhesion:Retrace/Thumbnail shape=(128, 128)
Image/DataSetInfo/Global/Channels/FFMZSensor:Retrace/Thumbnail shape=(128, 128)
Image/DataSetInfo/Global/Channels/MaxForce:Retrace/Thumbnail shape=(128, 128)
Image/DataSetInfo/Global/Thumbnail shape=(128, 128)

View File

@@ -23,7 +23,7 @@ class ThresholdMask:
OUTPUTS = ( OUTPUTS = (
('IMAGE', 'mask'), ('IMAGE', 'mask'),
('RECORD_TABLE', 'threshold'), ('FLOAT', 'threshold'),
) )
FUNCTION = "process" FUNCTION = "process"

View File

@@ -60,6 +60,22 @@ FRONTEND_DIR = frontend_dir()
DIST_DIR = frontend_dist_dir() DIST_DIR = frontend_dist_dir()
PNG_SIGNATURE = b"\x89PNG\r\n\x1a\n" PNG_SIGNATURE = b"\x89PNG\r\n\x1a\n"
GITHUB_REPO = "vipqualitypost/tono"
_APP_VERSION: str | None = None
def _get_app_version() -> str:
global _APP_VERSION
if _APP_VERSION is not None:
return _APP_VERSION
try:
import tomllib
with open(project_root() / "pyproject.toml", "rb") as f:
_APP_VERSION = tomllib.load(f)["project"]["version"]
except Exception:
_APP_VERSION = "0.0.0"
return _APP_VERSION
class _SafeEncoder(json.JSONEncoder): class _SafeEncoder(json.JSONEncoder):
def default(self, obj): def default(self, obj):
@@ -568,6 +584,30 @@ def create_app(
) )
return ws return ws
async def check_update(_request: web.Request) -> web.Response:
import aiohttp as _aiohttp
current = _get_app_version()
url = f"https://api.github.com/repos/{GITHUB_REPO}/releases/latest"
try:
async with _aiohttp.ClientSession() as session:
async with session.get(url, timeout=_aiohttp.ClientTimeout(total=5),
headers={"Accept": "application/vnd.github.v3+json"}) as resp:
if resp.status != 200:
return web.json_response({"current": current, "latest": None, "update_available": False})
data = await resp.json()
latest = str(data.get("tag_name", "")).lstrip("vV")
html_url = str(data.get("html_url", ""))
update_available = latest != "" and latest != current
return web.json_response({
"current": current,
"latest": latest,
"update_available": update_available,
"url": html_url,
})
except Exception:
return web.json_response({"current": current, "latest": None, "update_available": False})
app = web.Application() app = web.Application()
app["allow_local_filesystem"] = allow_local_filesystem app["allow_local_filesystem"] = allow_local_filesystem
@@ -587,6 +627,7 @@ def create_app(
app.router.add_get("/help-docs", get_help_docs) app.router.add_get("/help-docs", get_help_docs)
app.router.add_get("/help-docs/{filename}", get_help_doc_file) app.router.add_get("/help-docs/{filename}", get_help_doc_file)
app.router.add_post("/prompt", submit_prompt) app.router.add_post("/prompt", submit_prompt)
app.router.add_get("/check-update", check_update)
app.router.add_get("/ws", websocket_handler) app.router.add_get("/ws", websocket_handler)
if (DIST_DIR / "assets").exists(): if (DIST_DIR / "assets").exists():

View File

@@ -26,7 +26,7 @@ Interactive 3D surface view of a DATA_FIELD. Use the mesh input for geometry and
| resolution | INT | 128 | Downsampling resolution for mesh generation (32512) | | resolution | INT | 128 | Downsampling resolution for mesh generation (32512) |
| make_solid | BOOLEAN | False | When enabled adds a flat base and side walls to close the mesh | | make_solid | BOOLEAN | False | When enabled adds a flat base and side walls to close the mesh |
## Limitations ## Notes
- Resolution is applied by uniform subsampling; fine features smaller than one mesh step may be lost. - Resolution is applied by uniform subsampling; fine features smaller than one mesh step may be lost.
- Non-square pixels emit a warning and the 3D surface represents physical scan area, not pixel grid. - Non-square pixels emit a warning and the 3D surface represents physical scan area, not pixel grid.

View File

@@ -21,7 +21,7 @@ Compute the one-dimensional autocorrelation function of a line profile. Only pos
|------|------|---------|-------------| |------|------|---------|-------------|
| level | dropdown | mean | Pre-processing: subtract mean before correlation, or none | | level | dropdown | mean | Pre-processing: subtract mean before correlation, or none |
## Limitations ## Notes
- Only one-sided (positive lag) ACF is returned. - Only one-sided (positive lag) ACF is returned.
- Peak period detection finds only the first local maximum; multi-periodic signals report only the shortest detected period. - Peak period detection finds only the first local maximum; multi-periodic signals report only the shortest detected period.

View File

@@ -20,7 +20,7 @@ Compute the two-dimensional autocorrelation function with Gwyddion-style mean or
|------|------|---------|-------------| |------|------|---------|-------------|
| level | dropdown | mean | Pre-processing applied before correlation: mean subtraction, plane subtraction, or none | | level | dropdown | mean | Pre-processing applied before correlation: mean subtraction, plane subtraction, or none |
## Limitations ## Notes
- Output is not normalized to [1, 1]; peak value equals the field variance. - Output is not normalized to [1, 1]; peak value equals the field variance.
- Plane levelling assumes a linear trend; strongly curved surfaces may not detrend correctly. - Plane levelling assumes a linear trend; strongly curved surfaces may not detrend correctly.

View File

@@ -22,7 +22,7 @@ Measure the included angle between two draggable line segments over a DATA_FIELD
| color | STRING (color picker) | #ff9800 | Overlay color for the angle arms and arc | | color | STRING (color picker) | #ff9800 | Overlay color for the angle arms and arc |
| stroke_width | FLOAT | 1.35 | Line thickness in display pixels (0.356.0) | | stroke_width | FLOAT | 1.35 | Line thickness in display pixels (0.356.0) |
## Limitations ## Notes
- Coordinates are stored as fractions of the image dimensions; physical units depend on the input field's calibration. - Coordinates are stored as fractions of the image dimensions; physical units depend on the input field's calibration.
- Angle measurement is the included angle at the vertex, always in [0°, 180°]. - Angle measurement is the included angle at the vertex, always in [0°, 180°].

View File

@@ -25,6 +25,6 @@ Attach optional publication-style annotations (scale bar, color-map legend) to a
| show_color_map | BOOLEAN | True | Render a color-map legend with min/mid/max values | | show_color_map | BOOLEAN | True | Render a color-map legend with min/mid/max values |
| text_size | FLOAT | 14.0 | Font size in points for annotation labels (696) | | text_size | FLOAT | 14.0 | Font size in points for annotation labels (696) |
## Limitations ## Notes
- Scale bar and color-map legend require the input to carry physical dimension and unit metadata; plain images without metadata will emit a warning and the feature will be skipped. - Scale bar and color-map legend require the input to carry physical dimension and unit metadata; plain images without metadata will emit a warning and the feature will be skipped.

View File

@@ -24,7 +24,7 @@ Blind tip estimation from a measured SPM image using the Villarrubia algorithm.
| method | dropdown | partial | partial: uses local maxima only (faster, needs sharp isolated features); full: uses all points above morphological opening (slower, more robust) | | method | dropdown | partial | partial: uses local maxima only (faster, needs sharp isolated features); full: uses all points above morphological opening (slower, more robust) |
| use_edges | BOOLEAN | False | When enabled, also uses image edge pixels as refinement candidates | | use_edges | BOOLEAN | False | When enabled, also uses image edge pixels as refinement candidates |
## Limitations ## Notes
- Requires sharp, isolated features on the surface for reliable results. - Requires sharp, isolated features on the surface for reliable results.
- Output tip has the same pixel size as the input field; tip deconvolution requires matching pixel sizes. - Output tip has the same pixel size as the input field; tip deconvolution requires matching pixel sizes.

View File

@@ -20,7 +20,7 @@ None.
| preset | dropdown | viridis | Built-in colormap preset name; visible when mode is preset | | preset | dropdown | viridis | Built-in colormap preset name; visible when mode is preset |
| stops | STRING (colormap editor) | default gradient | JSON array of color stops for the custom gradient; visible when mode is custom | | stops | STRING (colormap editor) | default gradient | JSON array of color stops for the custom gradient; visible when mode is custom |
## Limitations ## Notes
- Custom colormaps must include at least a minimum and maximum color stop. - Custom colormaps must include at least a minimum and maximum color stop.
- Stops must be valid JSON; invalid JSON will raise an error. - Stops must be valid JSON; invalid JSON will raise an error.

View File

@@ -22,7 +22,7 @@ Adjust how a DATA_FIELD maps into its colormap without changing the underlying d
| scale | FLOAT | 1.0 | Zoom the colormap range (0.054.0); values below 1 stretch contrast | | scale | FLOAT | 1.0 | Zoom the colormap range (0.054.0); values below 1 stretch contrast |
| auto | BUTTON | — | Reset offset to 0 and scale to 1 (full data range) | | auto | BUTTON | — | Reset offset to 0 and scale to 1 (full data range) |
## Limitations ## Notes
- Only the display mapping metadata is changed; raw data values are unaffected. - Only the display mapping metadata is changed; raw data values are unaffected.
- Scale must be positive and finite; zero or negative values raise an error. - Scale must be positive and finite; zero or negative values raise an error.

View File

@@ -19,6 +19,6 @@ Combine two COORD values into a single COORDPAIR for use with nodes that accept
None. None.
## Limitations ## Notes
- Coordinates are expected to be in the [0, 1] fractional range; values outside this range may produce unexpected results in downstream nodes. - Coordinates are expected to be in the [0, 1] fractional range; values outside this range may produce unexpected results in downstream nodes.

View File

@@ -19,6 +19,6 @@ None.
| x | FLOAT | 0.5 | Horizontal position as a fraction of image width (0 = left, 1 = right) | | x | FLOAT | 0.5 | Horizontal position as a fraction of image width (0 = left, 1 = right) |
| y | FLOAT | 0.5 | Vertical position as a fraction of image height (0 = top, 1 = bottom) | | y | FLOAT | 0.5 | Vertical position as a fraction of image height (0 = top, 1 = bottom) |
## Limitations ## Notes
- Values are clamped to [0, 1] by downstream nodes; this node does not enforce clamping itself. - Values are clamped to [0, 1] by downstream nodes; this node does not enforce clamping itself.

View File

@@ -24,7 +24,7 @@ Crop a DATA_FIELD with a draggable rectangle defined by two corners, then option
| target_height | INT | 0 | Output pixel height after resampling (0 = keep cropped height) | | target_height | INT | 0 | Output pixel height after resampling (0 = keep cropped height) |
| interpolation | dropdown | bilinear | Resampling interpolation: bilinear, nearest, or bicubic | | interpolation | dropdown | bilinear | Resampling interpolation: bilinear, nearest, or bicubic |
## Limitations ## Notes
- The crop region must have non-zero width and height; an error is raised otherwise. - The crop region must have non-zero width and height; an error is raised otherwise.
- If only one of target_width or target_height is set, the other dimension is computed to preserve aspect ratio. - If only one of target_width or target_height is set, the other dimension is computed to preserve aspect ratio.

View File

@@ -23,7 +23,7 @@ Extract a cross-section height profile along a line between two draggable points
| extend | dropdown | none | none: profile between the two markers; to_edges: extend line to image borders | | extend | dropdown | none | none: profile between the two markers; to_edges: extend line to image borders |
| n_samples | INT | 0 | Number of sample points along the profile (0 = auto, one per pixel diagonal) | | n_samples | INT | 0 | Number of sample points along the profile (0 = auto, one per pixel diagonal) |
## Limitations ## Notes
- Profile is sampled using cubic spline interpolation (order 3); sharp step edges may show ringing. - Profile is sampled using cubic spline interpolation (order 3); sharp step edges may show ringing.
- Physical x-axis of the output profile is the Euclidean distance in field xy units. - Physical x-axis of the output profile is the Euclidean distance in field xy units.

View File

@@ -22,7 +22,7 @@ Compute 2D cross-correlation between two fields. The correlation peak indicates
| mode | dropdown | same | Output size: full (Na+Nb1), same (same as field_a), or valid (overlapping region only) | | mode | dropdown | same | Output size: full (Na+Nb1), same (same as field_a), or valid (overlapping region only) |
| normalize | BOOLEAN | True | Normalize the result to [1, 1] by dividing by the product of RMS values | | normalize | BOOLEAN | True | Normalize the result to [1, 1] by dividing by the product of RMS values |
## Limitations ## Notes
- Both fields must be of compatible numpy array types; very different sizes in full mode produce large outputs. - Both fields must be of compatible numpy array types; very different sizes in full mode produce large outputs.
- Mean is subtracted before correlation; absolute offset information is lost. - Mean is subtracted before correlation; absolute offset information is lost.

View File

@@ -20,7 +20,7 @@ Place two draggable cursors on a line plot or 2D field to measure positions and
None (cursor positions are set by dragging in the preview panel). None (cursor positions are set by dragging in the preview panel).
## Limitations ## Notes
- When a COORDPAIR is connected, the cursor positions are locked and cannot be dragged interactively. - When a COORDPAIR is connected, the cursor positions are locked and cannot be dragged interactively.
- On 2D fields, z values are sampled with bilinear (order 1) interpolation. - On 2D fields, z values are sampled with bilinear (order 1) interpolation.

View File

@@ -24,7 +24,7 @@ Fit a quadratic surface and report the overall principal curvature radii and dir
|------|------|---------|-------------| |------|------|---------|-------------|
| masking | dropdown | ignore | How to use the mask: ignore (fit all pixels), include (fit only masked pixels), or exclude (fit unmasked pixels) | | masking | dropdown | ignore | How to use the mask: ignore (fit all pixels), include (fit only masked pixels), or exclude (fit unmasked pixels) |
## Limitations ## Notes
- Requires at least six usable pixels for the quadratic fit; fewer pixels produce no output. - Requires at least six usable pixels for the quadratic fit; fewer pixels produce no output.
- The fit assumes a globally smooth quadratic surface; locally rough or step-like surfaces give unreliable results. - The fit assumes a globally smooth quadratic surface; locally rough or step-like surfaces give unreliable results.

View File

@@ -22,7 +22,7 @@ Apply a user-defined convolution kernel to a DATA_FIELD. Enter rows of space-sep
| normalize | BOOLEAN | True | Divide the result by the sum of absolute kernel values to preserve amplitude | | normalize | BOOLEAN | True | Divide the result by the sum of absolute kernel values to preserve amplitude |
| boundary | dropdown | reflect | Boundary handling: reflect, nearest, or wrap | | boundary | dropdown | reflect | Boundary handling: reflect, nearest, or wrap |
## Limitations ## Notes
- Kernel must be a rectangle: all rows must have the same number of values. - Kernel must be a rectangle: all rows must have the same number of values.
- Maximum kernel size is 51×51; larger kernels are rejected. - Maximum kernel size is 51×51; larger kernels are rejected.

View File

@@ -22,7 +22,7 @@ Paint a binary mask directly over an image preview. Pen size controls newly draw
| invert | BOOLEAN | False | When enabled, swaps painted and unpainted regions | | invert | BOOLEAN | False | When enabled, swaps painted and unpainted regions |
| clear_mask | BUTTON | — | Clears all painted strokes | | clear_mask | BUTTON | — | Clears all painted strokes |
## Limitations ## Notes
- Strokes are stored as path data; very long painting sessions with many strokes may accumulate large state. - Strokes are stored as path data; very long painting sessions with many strokes may accumulate large state.
- The mask resolution matches the input field resolution and cannot be changed independently. - The mask resolution matches the input field resolution and cannot be changed independently.

View File

@@ -21,7 +21,7 @@ Detect edges using Sobel, Prewitt, Laplacian, or Laplacian-of-Gaussian (LoG) ope
| method | dropdown | sobel | Edge detection operator: sobel, prewitt, laplacian, or log (Laplacian of Gaussian) | | method | dropdown | sobel | Edge detection operator: sobel, prewitt, laplacian, or log (Laplacian of Gaussian) |
| sigma | FLOAT | 1.0 | Gaussian smoothing sigma used only for the LoG operator (0.110.0) | | sigma | FLOAT | 1.0 | Gaussian smoothing sigma used only for the LoG operator (0.110.0) |
## Limitations ## Notes
- sigma is ignored for sobel, prewitt, and laplacian methods. - sigma is ignored for sobel, prewitt, and laplacian methods.
- Sobel and Prewitt return gradient magnitude; Laplacian and LoG return signed second-derivative values. - Sobel and Prewitt return gradient magnitude; Laplacian and LoG return signed second-derivative values.

View File

@@ -22,7 +22,7 @@ Compute the Shannon entropy of the height or slope distribution. H = −Σ p·ln
| mode | dropdown | height values | Compute entropy of height values or slope magnitude | | mode | dropdown | height values | Compute entropy of height values or slope magnitude |
| n_bins | INT | 256 | Number of histogram bins for probability estimation (161024) | | n_bins | INT | 256 | Number of histogram bins for probability estimation (161024) |
## Limitations ## Notes
- Entropy is sensitive to n_bins; very few bins underestimate entropy while very many bins overestimate it for small fields. - Entropy is sensitive to n_bins; very few bins underestimate entropy while very many bins overestimate it for small fields.
- Non-finite pixel values are removed before binning. - Non-finite pixel values are removed before binning.

View File

@@ -19,7 +19,7 @@ Compute the FFT amplitude spectrum of a line profile and identify the dominant p
None. None.
## Limitations ## Notes
- The DC component is excluded from the output. - The DC component is excluded from the output.
- Spectrum is one-sided (real FFT); the x-axis shows period, not frequency. - Spectrum is one-sided (real FFT); the x-axis shows period, not frequency.

View File

@@ -24,7 +24,7 @@ Compute the 2D FFT with optional windowing and mean/plane subtraction. Outputs l
| windowing | dropdown | hann | Window function applied before FFT: hann, hamming, blackman, or none | | windowing | dropdown | hann | Window function applied before FFT: hann, hamming, blackman, or none |
| level | dropdown | mean | Pre-processing: subtract mean, subtract plane, or none | | level | dropdown | mean | Pre-processing: subtract mean, subtract plane, or none |
## Limitations ## Notes
- Output fields are in the frequency domain; physical units on axes are spatial frequency (1/m). - Output fields are in the frequency domain; physical units on axes are spatial frequency (1/m).
- Phase output uses the raw FFT phase and is sensitive to field origin; it is most useful when paired with the Inverse 2D FFT node. - Phase output uses the raw FFT phase and is sensitive to field origin; it is most useful when paired with the Inverse 2D FFT node.

View File

@@ -23,7 +23,7 @@ Frequency-domain filtering of a line profile or 2D data field using a Butterwort
| cutoff_high | FLOAT | 0.4 | Upper cutoff for bandpass/notch modes (0.0011.0) | | cutoff_high | FLOAT | 0.4 | Upper cutoff for bandpass/notch modes (0.0011.0) |
| order | INT | 2 | Butterworth filter order; higher values give steeper roll-off (110) | | order | INT | 2 | Butterworth filter order; higher values give steeper roll-off (110) |
## Limitations ## Notes
- cutoff_high is only used for bandpass and notch modes. - cutoff_high is only used for bandpass and notch modes.
- The filter is applied in the frequency domain via FFT; very short lines may show wrap-around artefacts. - The filter is applied in the frequency domain via FFT; very short lines may show wrap-around artefacts.

View File

@@ -21,7 +21,7 @@ Level a field by iteratively finding the dominant local facet orientation and su
|------|------|---------|-------------| |------|------|---------|-------------|
| masking | dropdown | exclude | How to use the mask: exclude (ignore masked facets), include (use only masked facets), or ignore (use all facets) | | masking | dropdown | exclude | How to use the mask: exclude (ignore masked facets), include (use only masked facets), or ignore (use all facets) |
## Limitations ## Notes
- Requires compatible XY and Z physical units for correct facet gradient estimation. - Requires compatible XY and Z physical units for correct facet gradient estimation.
- Needs at least four valid facet cells; fields smaller than 2×2 pixels are not processed. - Needs at least four valid facet cells; fields smaller than 2×2 pixels are not processed.

View File

@@ -21,7 +21,7 @@ Apply a point-wise arithmetic operation to two DATA_FIELDs of the same resolutio
|------|------|---------|-------------| |------|------|---------|-------------|
| operation | dropdown | add | Element-wise operation: add, subtract, multiply, divide, min, max, or hypot (√(a²+b²)) | | operation | dropdown | add | Element-wise operation: add, subtract, multiply, divide, min, max, or hypot (√(a²+b²)) |
## Limitations ## Notes
- Both fields must have exactly the same pixel dimensions; mismatched sizes raise an error. - Both fields must have exactly the same pixel dimensions; mismatched sizes raise an error.
- divide may produce NaN or Inf pixels where field_b is zero. - divide may produce NaN or Inf pixels where field_b is zero.

View File

@@ -20,6 +20,6 @@ Shift data so that the minimum, mean, or median value becomes zero. Equivalent t
|------|------|---------|-------------| |------|------|---------|-------------|
| method | dropdown | min | Reference value to set to zero: min (lowest pixel), mean (average), or median | | method | dropdown | min | Reference value to set to zero: min (lowest pixel), mean (average), or median |
## Limitations ## Notes
- None. - None.

View File

@@ -20,6 +20,6 @@ Reflect a DATA_FIELD across the X axis (top/bottom) or Y axis (left/right). Phys
|------|------|---------|-------------| |------|------|---------|-------------|
| axis | dropdown | x | Flip axis: x flips top/bottom (vertical mirror), y flips left/right (horizontal mirror) | | axis | dropdown | x | Flip axis: x flips top/bottom (vertical mirror), y flips left/right (horizontal mirror) |
## Limitations ## Notes
- None. - None.

View File

@@ -20,6 +20,6 @@ None.
| max_value | FLOAT | 1.0 | Upper bound of the slider range | | max_value | FLOAT | 1.0 | Upper bound of the slider range |
| value | FLOAT (slider) | 0.5 | Current value within [min_value, max_value] | | value | FLOAT (slider) | 0.5 | Current value within [min_value, max_value] |
## Limitations ## Notes
- None. - None.

View File

@@ -18,7 +18,7 @@ None.
|------|------|---------|-------------| |------|------|---------|-------------|
| folder | FOLDER_PICKER | "" | Path to the folder to list | | folder | FOLDER_PICKER | "" | Path to the folder to list |
## Limitations ## Notes
- Only files with supported extensions are listed; subdirectories and unsupported file types are ignored. - Only files with supported extensions are listed; subdirectories and unsupported file types are ignored.
- The number of file output sockets is determined at load time by the folder contents. - The number of file output sockets is determined at load time by the folder contents.

View File

@@ -19,7 +19,7 @@ None.
| family | dropdown | System default | Font family name; includes discovered system fonts plus "Custom file" option | | family | dropdown | System default | Font family name; includes discovered system fonts plus "Custom file" option |
| font_file | FILE_PICKER | "" | Path to a custom font file; visible only when family is set to "Custom file" | | font_file | FILE_PICKER | "" | Path to a custom font file; visible only when family is set to "Custom file" |
## Limitations ## Notes
- Custom font files must be in a format supported by the underlying font rendering library (e.g. TTF, OTF). - Custom font files must be in a format supported by the underlying font rendering library (e.g. TTF, OTF).
- System fonts are enumerated at startup; newly installed fonts require restarting the application. - System fonts are enumerated at startup; newly installed fonts require restarting the application.

View File

@@ -21,7 +21,7 @@ Calculate the surface fractal dimension using Gwyddion's partitioning, cube coun
| method | dropdown | partitioning | Algorithm: partitioning, cube_counting, triangulation, psdf (power spectrum), or hhcf (structure function) | | method | dropdown | partitioning | Algorithm: partitioning, cube_counting, triangulation, psdf (power spectrum), or hhcf (structure function) |
| interpolation | dropdown | linear | Interpolation used when resampling the field to a square grid: linear, nearest, or cubic | | interpolation | dropdown | linear | Interpolation used when resampling the field to a square grid: linear, nearest, or cubic |
## Limitations ## Notes
- The field is resampled to a square grid internally; highly anisotropic scan sizes may introduce interpolation artefacts. - The field is resampled to a square grid internally; highly anisotropic scan sizes may introduce interpolation artefacts.
- Fit range can be adjusted interactively on the log-log plot; the default range covers the full data. - Fit range can be adjusted interactively on the log-log plot; the default range covers the full data.

View File

@@ -20,7 +20,7 @@ Apply a Gaussian blur to a DATA_FIELD. Equivalent to gwy_data_field_filter_gauss
|------|------|---------|-------------| |------|------|---------|-------------|
| sigma | FLOAT | 1.0 | Standard deviation of the Gaussian kernel in pixels (0.0150.0) | | sigma | FLOAT | 1.0 | Standard deviation of the Gaussian kernel in pixels (0.0150.0) |
## Limitations ## Notes
- sigma is specified in pixels, not physical units; the effective physical blur depends on pixel size. - sigma is specified in pixels, not physical units; the effective physical blur depends on pixel size.
- Large sigma values (> ~20 pixels) are slow due to the large kernel. - Large sigma values (> ~20 pixels) are slow due to the large kernel.

View File

@@ -20,7 +20,7 @@ Compute the spatial gradient using a Sobel operator. Outputs the gradient magnit
|------|------|---------|-------------| |------|------|---------|-------------|
| component | dropdown | magnitude | Output component: magnitude (√(gx²+gy²)), x (horizontal gradient), y (vertical gradient), or azimuth (angle in degrees) | | component | dropdown | magnitude | Output component: magnitude (√(gx²+gy²)), x (horizontal gradient), y (vertical gradient), or azimuth (angle in degrees) |
## Limitations ## Notes
- Gradient components are in units of z_unit/xy_unit; azimuth is in degrees. - Gradient components are in units of z_unit/xy_unit; azimuth is in degrees.
- Sobel operator uses a 3×3 kernel; sub-pixel features smaller than one pixel cannot be resolved. - Sobel operator uses a 3×3 kernel; sub-pixel features smaller than one pixel cannot be resolved.

View File

@@ -21,7 +21,7 @@ Label connected grain regions in a binary mask and compute per-grain statistics:
|------|------|---------|-------------| |------|------|---------|-------------|
| min_size | INT | 10 | Minimum grain area in pixels; smaller connected regions are ignored (1100000) | | min_size | INT | 10 | Minimum grain area in pixels; smaller connected regions are ignored (1100000) |
## Limitations ## Notes
- Grain detection uses 2D connected-component labeling on the binary mask; the field and mask must have the same pixel dimensions. - Grain detection uses 2D connected-component labeling on the binary mask; the field and mask must have the same pixel dimensions.
- Physical area and diameter values require the field to carry valid physical calibration (xreal, yreal, si_unit_xy). - Physical area and diameter values require the field to carry valid physical calibration (xreal, yreal, si_unit_xy).

View File

@@ -23,7 +23,7 @@ Compute the mask distance transform using Gwyddion-style interior, exterior, or
| output_type | dropdown | interior | Output mode: interior (distances inside grains), exterior (distances outside), or signed (positive inside, negative outside) | | output_type | dropdown | interior | Output mode: interior (distances inside grains), exterior (distances outside), or signed (positive inside, negative outside) |
| from_border | BOOLEAN | True | When enabled, image borders are treated as mask boundaries | | from_border | BOOLEAN | True | When enabled, image borders are treated as mask boundaries |
## Limitations ## Notes
- Output distances are in physical xy units derived from the field calibration. - Output distances are in physical xy units derived from the field calibration.
- The mask must have the same pixel dimensions as the field. - The mask must have the same pixel dimensions as the field.

View File

@@ -22,7 +22,7 @@ Remove grains from a binary mask based on size and border contact. Equivalent to
| max_area | INT | 0 | Discard grains with more pixels than this value (0 = no upper limit) | | max_area | INT | 0 | Discard grains with more pixels than this value (0 = no upper limit) |
| remove_border | BOOLEAN | False | Discard any grain that touches the image edge | | remove_border | BOOLEAN | False | Discard any grain that touches the image edge |
## Limitations ## Notes
- Grain detection uses 4-connected or 8-connected labeling; the exact connectivity is determined by the implementation. - Grain detection uses 4-connected or 8-connected labeling; the exact connectivity is determined by the implementation.
- min_area and max_area are in pixels, not physical units. - min_area and max_area are in pixels, not physical units.

View File

@@ -22,7 +22,7 @@ Compute the height distribution histogram (DH). Use log scale to reveal small pe
| n_bins | INT | 256 | Number of histogram bins (101000) | | n_bins | INT | 256 | Number of histogram bins (101000) |
| y_scale | dropdown | linear | Y-axis scale: linear or log | | y_scale | dropdown | linear | Y-axis scale: linear or log |
## Limitations ## Notes
- Cursor positions are stored as fractions of the histogram range and are set interactively. - Cursor positions are stored as fractions of the histogram range and are set interactively.
- Log scale displays bins as log(count); bins with zero count appear as the minimum log value. - Log scale displays bins as log(count); bins with zero count appear as the minimum log value.

View File

@@ -19,7 +19,7 @@ None.
| name | dropdown | (first demo file) | Name of the bundled demo file to load | | name | dropdown | (first demo file) | Name of the bundled demo file to load |
| colormap | dropdown | viridis | Colormap applied to the field; hidden when colormap_map is connected | | colormap | dropdown | viridis | Colormap applied to the field; hidden when colormap_map is connected |
## Limitations ## Notes
- Only files present in the bundled demo directory are available; custom files cannot be added here. - Only files present in the bundled demo directory are available; custom files cannot be added here.
- If no demo files are found, the dropdown shows "(no demo files found)". - If no demo files are found, the dropdown shows "(no demo files found)".

View File

@@ -22,7 +22,7 @@ Load any supported file. SPM formats (.gwy, .sxm, .ibw) and HDF5 (.h5, .hdf5) pr
| filename | FILE_PICKER | "" | Path to the file to load; hidden when path input is connected | | filename | FILE_PICKER | "" | Path to the file to load; hidden when path input is connected |
| colormap | dropdown | viridis | Colormap applied to the loaded field; hidden when colormap_map is connected | | colormap | dropdown | viridis | Colormap applied to the loaded field; hidden when colormap_map is connected |
## Limitations ## Notes
- Uncalibrated formats (images, arrays) emit a warning and produce fields without physical dimensions. - Uncalibrated formats (images, arrays) emit a warning and produce fields without physical dimensions.
- Multi-channel files (e.g. .gwy with multiple data channels) produce one DATA_FIELD output socket per channel; the socket count is determined at load time. - Multi-channel files (e.g. .gwy with multiple data channels) produce one DATA_FIELD output socket per channel; the socket count is determined at load time.

View File

@@ -21,7 +21,7 @@ Reconstruct a spatial-domain image from a 2D frequency spectrum. For exact recon
|------|------|---------|-------------| |------|------|---------|-------------|
| representation | dropdown | magnitude | How to interpret the spectrum input: magnitude, log_magnitude, or psdf | | representation | dropdown | magnitude | How to interpret the spectrum input: magnitude, log_magnitude, or psdf |
## Limitations ## Notes
- The spectrum input must be a frequency-domain DATA_FIELD; connecting a spatial-domain field raises an error. - The spectrum input must be a frequency-domain DATA_FIELD; connecting a spatial-domain field raises an error.
- If phase is connected, it must also be a frequency-domain field with the same shape as the spectrum. - If phase is connected, it must also be a frequency-domain field with the same shape as the spectrum.

View File

@@ -20,7 +20,7 @@ Edge-preserving smoothing using Kuwahara's minimum-variance quadrant method. Unl
|------|------|---------|-------------| |------|------|---------|-------------|
| iterations | INT | 1 | Number of times the 5×5 Kuwahara pass is applied (120) | | iterations | INT | 1 | Number of times the 5×5 Kuwahara pass is applied (120) |
## Limitations ## Notes
- The kernel is fixed at 5×5 pixels; coarser smoothing requires more iterations. - The kernel is fixed at 5×5 pixels; coarser smoothing requires more iterations.
- Multiple iterations increase processing time proportionally; 20 iterations on a large field may be slow. - Multiple iterations increase processing time proportionally; 20 iterations on a large field may be slow.

View File

@@ -27,7 +27,7 @@ Correct scan-line mismatches using Gwyddion-derived row alignment methods. Suppo
| trim_fraction | FLOAT | 0.05 | Fraction of extreme values to trim; visible only for trimmed_mean and trimmed_diff methods (00.5) | | trim_fraction | FLOAT | 0.05 | Fraction of extreme values to trim; visible only for trimmed_mean and trimmed_diff methods (00.5) |
| polynomial_degree | INT | 1 | Polynomial degree for the polynomial method (05); visible only for polynomial method | | polynomial_degree | INT | 1 | Polynomial degree for the polynomial method (05); visible only for polynomial method |
## Limitations ## Notes
- The step method is designed for step-like scan artifacts and may over-correct smooth surfaces. - The step method is designed for step-like scan artifacts and may over-correct smooth surfaces.
- Mask shape must match the field shape if a mask is connected. - Mask shape must match the field shape if a mask is connected.

View File

@@ -21,7 +21,7 @@ Expand the local dynamic range at each pixel to reveal fine surface features tha
| kernel_size | INT | 10 | Size of the local neighbourhood window in pixels (2100) | | kernel_size | INT | 10 | Size of the local neighbourhood window in pixels (2100) |
| weight | FLOAT | 0.5 | Blend weight between original and full-contrast output (0 = original, 1 = full local contrast; 01) | | weight | FLOAT | 0.5 | Blend weight between original and full-contrast output (0 = original, 1 = full local contrast; 01) |
## Limitations ## Notes
- Large kernel sizes are slow; values above ~50 pixels may be noticeably slow on large fields. - Large kernel sizes are slow; values above ~50 pixels may be noticeably slow on large fields.
- The enhancement is purely a display-contrast operation; it changes the underlying data values. - The enhancement is purely a display-contrast operation; it changes the underlying data values.

View File

@@ -23,7 +23,7 @@ Draw simple vector shapes (lines, rectangles, circles, arrows) over a DATA_FIELD
| stroke_width | INT | 3 | Line thickness in display pixels for newly drawn shapes (164) | | stroke_width | INT | 3 | Line thickness in display pixels for newly drawn shapes (164) |
| clear_shapes | BUTTON | — | Remove all drawn shapes | | clear_shapes | BUTTON | — | Remove all drawn shapes |
## Limitations ## Notes
- Shapes are stored as fractional coordinates; physical positions depend on field calibration. - Shapes are stored as fractional coordinates; physical positions depend on field calibration.
- Individual shape properties (color, width) cannot be changed after drawing; use Clear Shapes to start over. - Individual shape properties (color, width) cannot be changed after drawing; use Clear Shapes to start over.

View File

@@ -19,6 +19,6 @@ Invert a binary mask — swap masked and unmasked regions.
None. None.
## Limitations ## Notes
- None. - None.

View File

@@ -23,6 +23,6 @@ Apply morphological operations to a binary mask. Dilate expands regions, erode s
| radius | INT | 1 | Structuring element radius in pixels (150) | | radius | INT | 1 | Structuring element radius in pixels (150) |
| shape | dropdown | disk | Structuring element shape: disk or square | | shape | dropdown | disk | Structuring element shape: disk or square |
## Limitations ## Notes
- Large radius values (> ~20 pixels) may be slow on large masks. - Large radius values (> ~20 pixels) may be slow on large masks.

View File

@@ -21,6 +21,6 @@ Apply boolean logic to two binary masks. Supports AND, OR, XOR, NAND, NOR, XNOR,
|------|------|---------|-------------| |------|------|---------|-------------|
| operation | dropdown | and | Boolean operation: and, or, xor, xnor, nand, nor, a_minus_b, b_minus_a, a, b, not_a, not_b, a_implies_b, b_implies_a, false, true | | operation | dropdown | and | Boolean operation: and, or, xor, xnor, nand, nor, a_minus_b, b_minus_a, a, b, not_a, not_b, a_implies_b, b_implies_a, false, true |
## Limitations ## Notes
- Both masks must have the same pixel dimensions. - Both masks must have the same pixel dimensions.

View File

@@ -20,7 +20,7 @@ Apply a median filter to a DATA_FIELD. Equivalent to gwy_data_field_filter_media
|------|------|---------|-------------| |------|------|---------|-------------|
| size | INT | 3 | Kernel size (side length) in pixels; odd values only (121) | | size | INT | 3 | Kernel size (side length) in pixels; odd values only (121) |
## Limitations ## Notes
- The median filter is applied with a square kernel; non-square (e.g. rectangular) kernels are not supported. - The median filter is applied with a square kernel; non-square (e.g. rectangular) kernels are not supported.
- Large kernel sizes are significantly slower than the Gaussian filter for the same smoothing extent. - Large kernel sizes are significantly slower than the Gaussian filter for the same smoothing extent.

View File

@@ -20,7 +20,7 @@ Read the Note metadata from an .ibw (Igor binary wave) file and display all entr
|------|------|---------|-------------| |------|------|---------|-------------|
| filename | FILE_PICKER | "" | Path to the .ibw file; hidden when path input is connected | | filename | FILE_PICKER | "" | Path to the .ibw file; hidden when path input is connected |
## Limitations ## Notes
- Only .ibw files are supported; other formats raise an error. - Only .ibw files are supported; other formats raise an error.
- If the .ibw note section is empty or missing, an error is raised. - If the .ibw note section is empty or missing, an error is raised.

View File

@@ -18,6 +18,6 @@ None.
|------|------|---------|-------------| |------|------|---------|-------------|
| value | FLOAT | 0.0 | The numeric value to output | | value | FLOAT | 0.0 | The numeric value to output |
## Limitations ## Notes
- None. - None.

View File

@@ -21,7 +21,7 @@ Compute the two-dimensional power spectral density function with Gwyddion-style
| windowing | dropdown | hann | Window function applied before FFT to reduce spectral leakage: hann, hamming, blackman, or none | | windowing | dropdown | hann | Window function applied before FFT to reduce spectral leakage: hann, hamming, blackman, or none |
| level | dropdown | mean | Pre-processing: subtract mean, subtract plane, or none | | level | dropdown | mean | Pre-processing: subtract mean, subtract plane, or none |
## Limitations ## Notes
- Output is in the frequency domain; physical units on axes are spatial frequency (1/m) and PSDF units are z_unit²·m². - Output is in the frequency domain; physical units on axes are spatial frequency (1/m) and PSDF units are z_unit²·m².
- Window RMS compensation is applied to normalize the spectral density consistently across window choices. - Window RMS compensation is applied to normalize the spectral density consistently across window choices.

View File

@@ -21,6 +21,6 @@ Fit and subtract a least-squares plane from the data. Supports include/exclude m
|------|------|---------|-------------| |------|------|---------|-------------|
| masking | dropdown | ignore | How to use the mask: ignore (use all pixels), include (fit plane to masked pixels only), or exclude (exclude masked pixels from fit) | | masking | dropdown | ignore | How to use the mask: ignore (use all pixels), include (fit plane to masked pixels only), or exclude (exclude masked pixels from fit) |
## Limitations ## Notes
- When masking is include or exclude, the unmasked/masked region must contain at least three non-collinear pixels to fit a plane. - When masking is include or exclude, the unmasked/masked region must contain at least three non-collinear pixels to fit a plane.

View File

@@ -22,7 +22,7 @@ Fit and subtract a polynomial background of given degree in x and y. Equivalent
| degree_x | INT | 2 | Polynomial degree in the x direction (05) | | degree_x | INT | 2 | Polynomial degree in the x direction (05) |
| degree_y | INT | 2 | Polynomial degree in the y direction (05) | | degree_y | INT | 2 | Polynomial degree in the y direction (05) |
## Limitations ## Notes
- High polynomial degrees (> 4) may overfit and introduce artificial long-range modulation. - High polynomial degrees (> 4) may overfit and introduce artificial long-range modulation.
- No masking support; all pixels contribute equally to the fit. - No masking support; all pixels contribute equally to the fit.

View File

@@ -19,7 +19,7 @@ None.
|------|------|---------|-------------| |------|------|---------|-------------|
| colormap | dropdown | auto | Colormap used when rendering a DATA_FIELD or grayscale IMAGE; hidden when colormap_map is connected | | colormap | dropdown | auto | Colormap used when rendering a DATA_FIELD or grayscale IMAGE; hidden when colormap_map is connected |
## Limitations ## Notes
- When no input is connected, an error is raised at execution time. - When no input is connected, an error is raised at execution time.
- Connecting a FILE_PATH socket (instead of DATA_FIELD) raises a type error; ensure the correct socket is connected. - Connecting a FILE_PATH socket (instead of DATA_FIELD) raises a type error; ensure the correct socket is connected.

View File

@@ -16,6 +16,6 @@ None.
None. None.
## Limitations ## Notes
- None. - None.

View File

@@ -22,7 +22,7 @@ Compute the azimuthally averaged radial profile from a centre point. The output
| cy | FLOAT | 0.5 | Centre y position as a fraction of field height (0 = top, 1 = bottom) | | cy | FLOAT | 0.5 | Centre y position as a fraction of field height (0 = top, 1 = bottom) |
| n_bins | INT | 128 | Number of radial bins (44096) | | n_bins | INT | 128 | Number of radial bins (44096) |
## Limitations ## Notes
- Pixels are assigned to radial bins by Euclidean distance; bins near the centre contain fewer pixels and may be noisier. - Pixels are assigned to radial bins by Euclidean distance; bins near the centre contain fewer pixels and may be noisier.
- Physical x-axis units come from the field's si_unit_xy; uncalibrated fields produce pixel-unit radii. - Physical x-axis units come from the field's si_unit_xy; uncalibrated fields produce pixel-unit radii.

View File

@@ -22,7 +22,7 @@ Resample a DATA_FIELD to a new pixel resolution while preserving physical dimens
| height | INT | 256 | Output pixel height (216384) | | height | INT | 256 | Output pixel height (216384) |
| interpolation | dropdown | linear | Interpolation method: linear, cubic, or nearest | | interpolation | dropdown | linear | Interpolation method: linear, cubic, or nearest |
## Limitations ## Notes
- Physical dimensions are preserved; upsampling does not add new information. - Physical dimensions are preserved; upsampling does not add new information.
- Very large output sizes (e.g. 16384×16384) require substantial memory. - Very large output sizes (e.g. 16384×16384) require substantial memory.

View File

@@ -22,7 +22,7 @@ Rotate a DATA_FIELD counterclockwise by an angle in degrees. Optionally expand t
| interpolation | dropdown | bilinear | Interpolation method for resampling: bilinear, nearest, or bicubic | | interpolation | dropdown | bilinear | Interpolation method for resampling: bilinear, nearest, or bicubic |
| expand_canvas | BOOLEAN | True | When True, canvas is expanded to contain the full rotated image; when False, canvas is clipped to original size | | expand_canvas | BOOLEAN | True | When True, canvas is expanded to contain the full rotated image; when False, canvas is clipped to original size |
## Limitations ## Notes
- Rotation by angles other than multiples of 90° introduces interpolation artefacts. - Rotation by angles other than multiples of 90° introduces interpolation artefacts.
- expand_canvas may produce fields with non-square pixel sizes for arbitrary angles. - expand_canvas may produce fields with non-square pixel sizes for arbitrary angles.

View File

@@ -22,7 +22,7 @@ None.
| format | dropdown | TIFF | Output format: TIFF (multi-page, float32 for fields) or NPZ (named arrays) | | format | dropdown | TIFF | Output format: TIFF (multi-page, float32 for fields) or NPZ (named arrays) |
| layer_name_0 … layer_name_N | STRING | "" | Optional name for each layer; used as TIFF page descriptions or NPZ array keys | | layer_name_0 … layer_name_N | STRING | "" | Optional name for each layer; used as TIFF page descriptions or NPZ array keys |
## Limitations ## Notes
- At least one layer must be connected; an error is raised otherwise. - At least one layer must be connected; an error is raised otherwise.
- TIFF writes DATA_FIELD layers as float32; IMAGE layers are written as uint8. - TIFF writes DATA_FIELD layers as float32; IMAGE layers are written as uint8.

View File

@@ -22,7 +22,7 @@ None.
| format | STRING (context-dependent) | TIFF | Output format; available choices depend on the connected input type | | format | STRING (context-dependent) | TIFF | Output format; available choices depend on the connected input type |
| plot_title | STRING | "" | Optional title for line plots saved as PNG or TIFF | | plot_title | STRING | "" | Optional title for line plots saved as PNG or TIFF |
## Limitations ## Notes
- Available formats per input type: DATA_FIELD → TIFF, PNG, NPZ; IMAGE → PNG, TIFF, NPZ; LINE → PNG, TIFF, CSV, NPZ, JSON; RECORD_TABLE/DATA_TABLE → CSV, JSON; FLOAT → TXT, JSON; MESH_MODEL → OBJ, STL. - Available formats per input type: DATA_FIELD → TIFF, PNG, NPZ; IMAGE → PNG, TIFF, NPZ; LINE → PNG, TIFF, CSV, NPZ, JSON; RECORD_TABLE/DATA_TABLE → CSV, JSON; FLOAT → TXT, JSON; MESH_MODEL → OBJ, STL.
- divide-by-zero or NaN values in fields are preserved in TIFF/NPZ but may not render correctly in PNG. - divide-by-zero or NaN values in fields are preserved in TIFF/NPZ but may not render correctly in PNG.

View File

@@ -25,7 +25,7 @@ Detect and remove horizontal scan scars using Gwyddion-derived scar marking thre
| min_length | INT | 16 | Minimum horizontal run length in pixels to classify as a scar (14096) | | min_length | INT | 16 | Minimum horizontal run length in pixels to classify as a scar (14096) |
| max_width | INT | 4 | Maximum vertical width in pixels for a scar candidate (132) | | max_width | INT | 4 | Maximum vertical width in pixels for a scar candidate (132) |
## Limitations ## Notes
- Designed for horizontal (fast-scan) scars only; vertical scars are not detected. - Designed for horizontal (fast-scan) scars only; vertical scars are not detected.
- Aggressive thresholds may remove legitimate surface features that resemble scars. - Aggressive thresholds may remove legitimate surface features that resemble scars.

View File

@@ -21,7 +21,7 @@ Compute the angular slope distribution of a DATA_FIELD surface. Equivalent to Gw
| distribution | dropdown | theta | Distribution type: theta (inclination angle, probability density in 1/deg), phi (azimuthal direction, weighted by slope², 0360°), or gradient (slope magnitude, probability density in 1/(z/xy)) | | distribution | dropdown | theta | Distribution type: theta (inclination angle, probability density in 1/deg), phi (azimuthal direction, weighted by slope², 0360°), or gradient (slope magnitude, probability density in 1/(z/xy)) |
| n_bins | INT | 90 | Number of histogram bins (101000) | | n_bins | INT | 90 | Number of histogram bins (101000) |
## Limitations ## Notes
- The gradient magnitude distribution requires valid physical xy and z units for correct normalization. - The gradient magnitude distribution requires valid physical xy and z units for correct normalization.
- phi distribution is weighted by slope squared; flat surfaces with near-zero slopes produce a noisy azimuthal distribution. - phi distribution is weighted by slope squared; flat surfaces with near-zero slopes produce a noisy azimuthal distribution.

View File

@@ -22,7 +22,7 @@ Fill defect pixels (hot pixels, dropouts, scan artifacts) by interpolation. The
| method | dropdown | laplace | Inpainting method: laplace (smooth Laplace equation solution), mean (local mean), or zero | | method | dropdown | laplace | Inpainting method: laplace (smooth Laplace equation solution), mean (local mean), or zero |
| max_iter | INT | 100 | Maximum number of iterations for the Laplace solver (12000) | | max_iter | INT | 100 | Maximum number of iterations for the Laplace solver (12000) |
## Limitations ## Notes
- Large masked regions may not converge fully within max_iter iterations using the Laplace method. - Large masked regions may not converge fully within max_iter iterations using the Laplace method.
- The mean method uses a simple neighbourhood average and may leave visible discontinuities at large defect clusters. - The mean method uses a simple neighbourhood average and may leave visible discontinuities at large defect clusters.

View File

@@ -18,6 +18,6 @@ Compute basic surface statistics: min, max, mean, RMS roughness, median, and ske
None. None.
## Limitations ## Notes
- None. - None.

View File

@@ -21,7 +21,7 @@ Compute a contextual scalar statistic from a LINE, record table, DATA_FIELD, or
| operation | STRING (context-dependent dropdown) | mean | Statistical operation; available choices depend on the input type | | operation | STRING (context-dependent dropdown) | mean | Statistical operation; available choices depend on the input type |
| column | STRING | value | Column name for DATA_TABLE inputs; visible only when a DATA_TABLE is connected | | column | STRING | value | Column name for DATA_TABLE inputs; visible only when a DATA_TABLE is connected |
## Limitations ## Notes
- Available operations vary by input type; connecting a different type changes the available options. - Available operations vary by input type; connecting a different type changes the available options.
- For DATA_TABLE inputs, the column must match an existing column name; an error is raised otherwise. - For DATA_TABLE inputs, the column must match an existing column name; an error is raised otherwise.

View File

@@ -22,7 +22,7 @@ Find a template pattern within a larger data field using normalised cross-correl
|------|------|---------|-------------| |------|------|---------|-------------|
| threshold | FLOAT | 0.8 | Minimum correlation score to mark as a detection (0.01.0) | | threshold | FLOAT | 0.8 | Minimum correlation score to mark as a detection (0.01.0) |
## Limitations ## Notes
- The template must be smaller than the image; equal or larger sizes are not supported. - The template must be smaller than the image; equal or larger sizes are not supported.
- Normalized cross-correlation assumes uniform background; strong global gradients reduce detection accuracy. - Normalized cross-correlation assumes uniform background; strong global gradients reduce detection accuracy.

View File

@@ -17,6 +17,6 @@ None.
| text | STRING (multiline) | "# Guide\n\nDouble-click to edit this note.\n\n- Step 1\n- Step 2" | Markdown text displayed on the canvas card | | text | STRING (multiline) | "# Guide\n\nDouble-click to edit this note.\n\n- Step 1\n- Step 2" | Markdown text displayed on the canvas card |
| color | dropdown | default | Card background color: default, blue, green, yellow, red, or purple | | color | dropdown | default | Card background color: default, blue, green, yellow, red, or purple |
## Limitations ## Notes
- None. - None.

View File

@@ -23,7 +23,7 @@ Create a binary mask by thresholding data. Otsu automatically finds the optimal
| threshold | FLOAT | 0.0 | Threshold value; for absolute: raw z value; for relative: fraction 01; ignored for otsu (socket-only input) | | threshold | FLOAT | 0.0 | Threshold value; for absolute: raw z value; for relative: fraction 01; ignored for otsu (socket-only input) |
| direction | dropdown | above | Which pixels to select: above or below the threshold | | direction | dropdown | above | Which pixels to select: above or below the threshold |
## Limitations ## Notes
- For the relative method, the threshold fraction is applied to the full data range [min, max]. - For the relative method, the threshold fraction is applied to the full data range [min, max].
- Otsu thresholding may not give meaningful results on non-bimodal height distributions. - Otsu thresholding may not give meaningful results on non-bimodal height distributions.

View File

@@ -19,7 +19,7 @@ Reconstruct the true surface from a tip-broadened measured AFM image. Uses morph
None. None.
## Limitations ## Notes
- The tip pixel size must match the image pixel size exactly; mismatched calibrations will produce incorrect results. - The tip pixel size must match the image pixel size exactly; mismatched calibrations will produce incorrect results.
- Deconvolution can only reduce tip broadening; it cannot recover information lost below the noise floor. - Deconvolution can only reduce tip broadening; it cannot recover information lost below the noise floor.

View File

@@ -23,7 +23,7 @@ Generate a synthetic AFM tip model DATA_FIELD. The input field sets the pixel si
| half_angle | FLOAT | 20.0 | Half-cone angle from the tip axis in degrees for the cone shape (189°) | | half_angle | FLOAT | 20.0 | Half-cone angle from the tip axis in degrees for the cone shape (189°) |
| n_pixels | INT | 65 | Side length of the square tip grid in pixels (odd values only, 3511) | | n_pixels | INT | 65 | Side length of the square tip grid in pixels (odd values only, 3511) |
## Limitations ## Notes
- half_angle is only used for the cone shape. - half_angle is only used for the cone shape.
- The tip grid must be smaller than or equal to the image size for Tip Deconvolution to work correctly. - The tip grid must be smaller than or equal to the image size for Tip Deconvolution to work correctly.

View File

@@ -21,7 +21,7 @@ Display a FLOAT value, or a selected numeric row from a measurement table, and p
| number_input | STRING (text input) | "0" | Manual numeric entry, e.g. "1.5 nm"; hidden when value socket is connected | | number_input | STRING (text input) | "0" | Manual numeric entry, e.g. "1.5 nm"; hidden when value socket is connected |
| measurement | STRING (dropdown) | "" | Row selector when a RECORD_TABLE is connected; visible only for RECORD_TABLE inputs | | measurement | STRING (dropdown) | "" | Row selector when a RECORD_TABLE is connected; visible only for RECORD_TABLE inputs |
## Limitations ## Notes
- When a RECORD_TABLE is connected, only rows with numeric values can be selected; non-numeric rows are not accessible. - When a RECORD_TABLE is connected, only rows with numeric values can be selected; non-numeric rows are not accessible.
- Manual text entry supports optional SI unit suffix (e.g. "1.5 nm") for display only; the output FLOAT is always the raw numeric value. - Manual text entry supports optional SI unit suffix (e.g. "1.5 nm") for display only; the output FLOAT is always the raw numeric value.

View File

@@ -27,7 +27,7 @@ Segment a height field into grains using the two-stage Gwyddion watershed workfl
| watershed_drop_size | FLOAT | 0.1 | Relative drop size for watershed growth stage (0.00011.0) | | watershed_drop_size | FLOAT | 0.1 | Relative drop size for watershed growth stage (0.00011.0) |
| combine_mode | dropdown | replace | How to combine with an existing mask: replace (ignore existing), union (OR), or intersection (AND) | | combine_mode | dropdown | replace | How to combine with an existing mask: replace (ignore existing), union (OR), or intersection (AND) |
## Limitations ## Notes
- Parameter tuning is required; the default settings work best for isolated round features. - Parameter tuning is required; the default settings work best for isolated round features.
- Very large locate_threshold values may reject all seeds and produce an empty mask. - Very large locate_threshold values may reject all seeds and produce an empty mask.

View File

@@ -23,7 +23,7 @@ Denoise a DATA_FIELD using wavelet coefficient thresholding. BayesShrink adapts
| sigma | FLOAT | 0.0 | Noise level estimate in data units; 0 = automatic estimation (01.0) | | sigma | FLOAT | 0.0 | Noise level estimate in data units; 0 = automatic estimation (01.0) |
| mode | dropdown | soft | Thresholding mode: soft (smooth shrinkage) or hard (zero below threshold) | | mode | dropdown | soft | Thresholding mode: soft (smooth shrinkage) or hard (zero below threshold) |
## Limitations ## Notes
- The field size should ideally be a power of two for best wavelet decomposition; other sizes are handled by padding. - The field size should ideally be a power of two for best wavelet decomposition; other sizes are handled by padding.
- sigma = 0 triggers automatic noise estimation from the finest-scale wavelet coefficients; this may be inaccurate on strongly structured surfaces. - sigma = 0 triggers automatic noise estimation from the finest-scale wavelet coefficients; this may be inaccurate on strongly structured surfaces.

View File

@@ -3001,6 +3001,13 @@ function Flow() {
return () => document.removeEventListener('pointerdown', handler); return () => document.removeEventListener('pointerdown', handler);
}, [menuOpen]); }, [menuOpen]);
// Auto-dismiss status toast after 5 seconds
useEffect(() => {
if (!status.text) return;
const timer = setTimeout(() => setStatus({ text: '', level: 'info' }), 5000);
return () => clearTimeout(timer);
}, [status]);
useEffect(() => { useEffect(() => {
const handler = (e: KeyboardEvent) => { const handler = (e: KeyboardEvent) => {
if ((e.ctrlKey || e.metaKey) && e.key === 'Enter') { if ((e.ctrlKey || e.metaKey) && e.key === 'Enter') {

View File

@@ -2,6 +2,18 @@ import React, { useEffect, useMemo, useRef, useState } from 'react';
import ReactDOM from 'react-dom'; import ReactDOM from 'react-dom';
import { marked } from 'marked'; import { marked } from 'marked';
// Open external links in new tabs
const renderer = new marked.Renderer();
const defaultLinkRenderer = renderer.link.bind(renderer);
renderer.link = function (token) {
const html = defaultLinkRenderer(token);
if (token.href && /^https?:\/\//.test(token.href)) {
return html.replace(/^<a /, '<a target="_blank" rel="noopener noreferrer" ');
}
return html;
};
marked.use({ renderer });
interface Heading { interface Heading {
level: number; level: number;
text: string; text: string;

View File

@@ -154,7 +154,7 @@ html, body, #root {
.floating-menu-toggle { .floating-menu-toggle {
width: 40px; width: 40px;
height: 40px; height: 40px;
border-radius: 10px; border-radius: 20px;
border: 1px solid var(--border-toolbar); border: 1px solid var(--border-toolbar);
background: var(--bg-toolbar); background: var(--bg-toolbar);
cursor: pointer; cursor: pointer;
@@ -170,8 +170,8 @@ html, body, #root {
} }
.floating-menu-logo { .floating-menu-logo {
width: 28px; width: 40px;
height: 28px; height: 40px;
border-radius: 6px; border-radius: 6px;
} }
@@ -744,6 +744,9 @@ html, body, #root {
.node-help-panel-body strong { color: #e2e8f0; } .node-help-panel-body strong { color: #e2e8f0; }
.node-help-panel-body a { color: #ff9800; }
.node-help-panel-body a:hover { color: #ffb74d; }
/* ── Help panel TOC + content layout ──────────────────────────────── */ /* ── Help panel TOC + content layout ──────────────────────────────── */
.help-content-row { .help-content-row {

BIN
profile.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB