10 KiB
10 KiB
Gwyddion Feature Gap — tono
Comprehensive comparison against Gwyddion r29630. Excludes force curves, force volumes, and spectroscopic measurements. Grouped by priority for typical SPM workflows.
Completed
All features from the original gap analysis are implemented:
| # | Feature | Gwyddion Source | tono Node |
|---|---|---|---|
| 1 | Line Correction | linecorrect.c, linematch.c | LineCorrection |
| 2 | Scar Removal | scars.c | ScarRemoval |
| 3 | Facet Leveling | facet-level.c | FacetLevelField |
| 4 | Morphological Mask Ops | mask_morph.c | MaskMorphology |
| 5 | 1D FFT Filter | fft_filter_1d.c | FFTFilter |
| 6 | 2D FFT Filter | fft_filter_2d.c | FFTFilter |
| 7 | Autocorrelation (ACF) | acf2d.c | ACF2D |
| 8 | PSDF | psdf2d.c | PSDF |
| 9 | Fractal Dimension | fractal.c | FractalDimension |
| 10 | Curvature | curvature.c | Curvature |
| 11 | Grain Distance Transform | mask_edt.c | GrainDistanceTransform |
| 12 | Watershed Segmentation | grain_wshed.c | WatershedSegmentation |
| 13 | Rotate / Flip | rotate.c, basicops.c | RotateField, FlipField |
| 14 | Crop | crop.c | CropResizeField |
| 15 | Correlation / Pattern Matching | crosscor.c, maskcor.c | CrossCorrelate, TemplateMatch |
| 16 | Slope Distribution | slope_dist.c | SlopeDistribution |
| 17 | Grain Filtering | grain_filter.c | GrainFilter |
| 18 | Field Arithmetic | arithmetic.c | FieldArithmetic |
| 19 | Spot Removal | spotremove.c | SpotRemoval |
| 20 | Tip Modeling / Deconvolution | tip_blind.c, tip_model.c | TipModel, TipDeconvolution, BlindTipEstimate |
| 21 | Radial Profile | rprofile tool | RadialProfile |
| 22 | Wavelet Transform | dwt.c, cwt.c | WaveletDenoise |
| 23 | Scale / Resample | scale.c, resample.c | Resample |
| 24 | Gradient | gradient.c | Gradient |
| 25 | Custom Convolution | convolution_filter.c | CustomConvolution |
| 26 | Local Contrast Enhancement | local_contrast.c | LocalContrast |
| 27 | Drift Correction | drift.c | DriftCorrection |
| 28 | Affine Correction | correct_affine.c | AffineCorrection |
| 29 | MFM Analysis | mfm_*.c | MFMAnalysis |
| 30 | Lattice Measurement | measure_lattice.c | LatticeMeasurement |
| 31 | Hough Transform | hough.c | HoughTransform |
| 32 | Image Stitching | merge.c, stitch.c | ImageStitch |
| 33 | Facet Analysis | facet_analysis.c | FacetAnalysis |
| 34 | Shape Fitting | fit-shape.c | ShapeFitting |
| 35 | Synthetic Surface Generation | *_synth.c | SyntheticSurface |
| 36 | Entropy | entropy.c | Entropy |
| 38 | Deconvolution | deconvolve.c | Deconvolution |
| 39 | Canny / Harris Detection | filters.c | FeatureDetection |
| 40 | Kuwahara Filter | filters.c | KuwaharaFilter |
Remaining Gaps
High Value — Core SPM workflow features
| # | Feature | Gwyddion Source | tono Node | Status |
|---|---|---|---|---|
| 41 | Terrace Fitting | terracefit.c | TerraceFit | DONE |
| 42 | Laplace Interpolation | laplace.c | LaplaceInterpolation | DONE |
| 43 | Fractal Interpolation | fraccor.c | FractalInterpolation | DONE |
| 44 | Median Background Subtraction | median-bg.c | MedianBackground | DONE |
| 45 | Flatten Base | flatten_base.c | FlattenBase | DONE |
| 46 | Level Individual Grains | level_grains.c | LevelGrains | DONE |
| 47 | Grain Marking by Criteria | grain_mark.c | GrainMark | DONE |
| 48 | Grain Property Distributions | grain_dist.c | GrainDistributions | DONE |
| 49 | Grain Summary Statistics | grain_summary.c | GrainSummary | DONE |
| 50 | Outlier Masking | outliers.c | OutlierMask | DONE |
| 51 | Scan Line Reordering | reorder.c | ScanLineReorder | DONE |
Medium Value — Analysis and correction
| # | Feature | Gwyddion Source | tono Node | Status |
|---|---|---|---|---|
| 52 | Perspective Correction | correct_perspective.c | PerspectiveCorrection | DONE |
| 53 | Polynomial Distortion | polydistort.c | PolynomialDistortion | DONE |
| 54 | Frequency Splitting | freq_split.c | FrequencySplit | DONE |
| 55 | Phase/Value Wrapping | wrapvalue.c | WrapValue | DONE |
| 56 | Shaded Presentation | shade.c | Shade | DONE |
| 57 | Pixel Binning | binning.c | PixelBinning | DONE |
| 58 | Extend / Pad | extend.c | ExtendPad | DONE |
| 59 | Tilt | tilt.c | Tilt | DONE |
| 60 | Trimmed Mean Filter | trimmed-mean.c | TrimmedMean | DONE |
| 61 | Rank Filter | rank-filter.c | RankFilter | DONE |
| 62 | Zero Crossing Detection | zero_crossing.c | ZeroCrossing | DONE |
| 63 | Log-Polar PSDF | psdf_logphi.c | LogPolarPSDF | DONE |
| 64 | Grain Edge Detection | grain_edge.c | GrainEdge | DONE |
| 65 | Grain Cross-Correlation | grain_cross.c | GrainCross | DONE |
| 66 | Mutual Crop | mcrop.c | MutualCrop | DONE |
| 67 | Immerse Detail | immerse.c | ImmerseDetail | DONE |
| 68 | Multiple Profiles | multiprofile.c | MultipleProfiles | DONE |
| 69 | Straighten Path | straighten_path.c | StraightenPath | DONE |
| 70 | Relate Two Fields | relate.c | RelateFields | DONE |
SPM Mode-Specific
| # | Feature | Gwyddion Source | tono Node | Status |
|---|---|---|---|---|
| 71 | PFM Analysis | pfm.c | PFMAnalysis | DONE |
| 72 | Lateral Force Simulation | latsim.c | LateralForceSim | DONE |
| 73 | SEM Simulation | semsim.c | SEMSimulation | DONE |
| 74 | Scanning Microwave Microscopy | smm.c, smm_apply.c | SMMAnalysis | DONE |
| 75 | MFM Current Simulation | mfm_current.c | MFMCurrentSimulation | DONE |
| 76 | MFM Domain Generation | mfm_parallel.c | MFMDomainGeneration | DONE |
Lower Priority — Specialized or niche
| # | Feature | Gwyddion Source | Description |
|---|---|---|---|
| 77 | Mark Disconnected Regions | mark_disconn.c | Mask topologically isolated surface regions using threshold and radius criteria. |
| 78 | Mask Shift | mask_shift.c | Translate mask by pixel offset in any direction. |
| 79 | Mask Noisify | mask_noisify.c | Add random perturbation to mask boundaries. Useful for testing mask sensitivity. |
| 80 | DWT Anisotropy | dwtanisotropy.c | Quantify surface anisotropy using discrete wavelet transform decomposition. |
| 81 | Displacement Field | displfield.c | Distort images using displacement fields (Gaussian, tear, image-based). Simulates scanning artifacts. |
| 82 | Pixel Classification | classify.c | Classify pixels into categories using decision trees on height, slope, and curvature criteria. |
| 83 | Neural Network Classification | neural.c | Train and apply neural networks for pixel-level feature classification. |
| 84 | Logistic Classification | logistic.c | Classify features using logistic regression on Gaussian derivative features. |
| 85 | Super-Resolution | superresolution.c | Combine multiple aligned low-resolution scans to produce a higher-resolution image. |
| 86 | PSF Estimation | psf.c, psf-fit.c | Estimate and fit point spread functions from image features for deconvolution. |
| 87 | Tip Shape from Features | tipshape.c | Estimate SPM tip shape from known calibration feature convolutions. |
| 88 | Presentation Ops | presentationops.c | Manage presentation overlays (extract, attach, remove presentation layers). |
| 89 | Calibration Coefficients | calcoefs_*.c, calibrate.c | Load, create, and apply lateral/height calibration corrections. |
| 90 | Distribution Coercion | coerce.c | Transform data distribution to match target (uniform, Gaussian, custom). |
| 91 | Grain Selection Visualization | grain_makesel.c | Visualize grains as discs, circles, or bounding boxes for selection. |
Synthesis — Additional surface generation patterns
All 22 synthesis patterns added to the existing SyntheticSurface node (28 patterns total):
| # | Pattern | Gwyddion Source | tono Pattern | Status |
|---|---|---|---|---|
| 92 | Columnar | col_synth.c | columnar | DONE |
| 93 | Objects | obj_synth.c | objects | DONE |
| 94 | Fibres | fibre_synth.c | fibres | DONE |
| 95 | Waves | wave_synth.c | waves | DONE |
| 96 | Dunes | dune_synth.c | dunes | DONE |
| 97 | Domains | domain_synth.c | domains | DONE |
| 98 | Ballistic Deposition | bdep_synth.c | ballistic | DONE |
| 99 | Particle Deposition | deposit_synth.c | deposition | DONE |
| 100 | Rod Deposition | roddeposit_synth.c | rods | DONE |
| 101 | Diffusion Aggregation | diff_synth.c | dla | DONE |
| 102 | Discs | disc_synth.c | discs | DONE |
| 103 | Plateaus | plateau_synth.c | plateaus | DONE |
| 104 | Pileups | pileup_synth.c | pileups | DONE |
| 105 | Annealing | anneal_synth.c | annealing | DONE |
| 106 | Lattice (Voronoi) | lat_synth.c | voronoi | DONE |
| 107 | Phase Separation | phase_synth.c | spinodal | DONE |
| 108 | PDE Patterns | cpde_synth.c | pde | DONE |
| 109 | Spectral (FFT) | fft_synth.c | spectral | DONE |
| 110 | Residues | residue_synth.c | residues | DONE |
| 111 | Noise Distributions | lno_synth.c, noise_synth.c | noise | DONE |
| 112 | Periodic Patterns | pat_synth.c | periodic | DONE |
| 113 | WFR Patterns | wfr_synth.c | wfr | DONE |
File Format Support
Gwyddion supports 155+ file format modules. tono currently handles a smaller set. Major format gaps (not exhaustive):
| Format | Gwyddion Source | Vendor/Description |
|---|---|---|
| Bruker Nanoscope | nanoscope.c, nanoscope-ii.c | Bruker/Veeco/DI SPM files |
| Park Systems | parkafm.c | Park Systems SPM files |
| RHK | rhk-sm4.c, rhk-spm32.c | RHK Technology SPM files |
| Omicron | omicron.c, omicronflat.c | Omicron/Scienta SPM files |
| Asylum Research | asylum.c | Asylum Research (Igor Pro) |
| WITec | witec-asc.c | WITec SPM/Raman files |
| JEOL | jeol.c | JEOL SPM files |
| ISO 28600 | iso28600.c | Standard SPM exchange format |
| Zygo | zygo.c | Zygo surface profiler |
| ASCII matrix | asciiexport.c | Generic ASCII grid import/export |
Summary
| Category | Count | Status |
|---|---|---|
| Originally tracked (1–40) | 40 | 39 done, 1 excluded (force curves) |
| High Value (41–51) | 11 | All 11 done |
| Medium Value (52–70) | 19 | All 19 done |
| SPM Mode-Specific (71–76) | 6 | All 6 done |
| Lower Priority (77–91) | 15 | Pending |
| Synthesis Patterns (92–113) | 22 | All 22 done |
| File Formats | 10+ | Pending |
97 of 98 tracked features implemented. 15 remaining gaps identified (lower priority + file formats).