# yaman-ajaj/curvature_estimation_bacterianearsurface_2110 architecture

> Architecture diagram of the GitHub repository yaman-ajaj/curvature_estimation_bacterianearsurface_2110, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110
- Repository: https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110

## Overview

This is a MATLAB toolkit for analyzing trajectory curvature. The principal workflow generates or loads tracks, analyzes near-surface runs with a selected estimator, saves curvature results, and evaluates or visualizes them. The graph preserves the documented estimator, synthetic-validation, parameter-sweep, and plotting capabilities. Source excerpts were unavailable, so relationships are limited to those described in the README; generated result-file names are represented by existing result files where possible.

Main entry points: [`analyzeAllTracks.m`](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/analyzeAllTracks.m) (Track analysis), [`curvatureResults_Real_splinesmoothed_tangentAngle_sig025_m129_step15_20261017_132608.mat`](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/curvatureResults_Real_splinesmoothed_tangentAngle_sig025_m129_step15_20261017_132608.mat) (Curvature results), [`run_sweep_tests.m`](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/run_sweep_tests.m) (Sweep runner), [`create_synthetic_trajectories.m`](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/create_synthetic_trajectories.m) (Synthetic generator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Track workflow"]
  node_track_data["Trajectory data"]
  node_analysis["Track analysis<br/>[analyzeAllTracks.m]"]
  node_curvature_results["Curvature results"]
end

subgraph group_estimators["Curvature estimators"]
  node_circle3["Three-point circle"]
  node_circle_ls["Least-squares circle"]
  node_tangent["Tangent-angle method"]
  node_central_diff["Central differences"]
  node_local_poly["Local polynomial"]
  node_spline_derivative["Spline derivative"]
  node_spline_smoothing["Spline smoothing"]
end

subgraph group_synthetic["Synthetic validation"]
  node_synthetic_generator["Synthetic generator"]
  node_clean_tracks["Clean synthetic tracks"]
  node_noisy_tracks["Noisy synthetic tracks"]
  node_truth["True curvature<br/>[getTrueCurvature.m]"]
end

subgraph group_evaluation["Evaluation and tuning"]
  node_comparison["Ground-truth comparison"]
  node_edge_trim["Edge trimming<br/>[edgeTrimPercent.m]"]
  node_sweep_runner["Sweep runner<br/>[run_sweep_tests.m]"]
  node_sweep_local["Local-poly sweep<br/>[sweep_localPoly.m]"]
  node_sweep_circle["Spline-circle sweep"]
  node_sweep_spline["Spline parameter sweep<br/>[sweep_splineP.m]"]
  node_sweep_tolerance["Tolerance sweep<br/>[sweep_tolMult.m]"]
end

subgraph group_visualization["Visualization"]
  node_trajectory_plot["Trajectory plots"]
  node_comparative_plot["Comparative plots"]
  node_inset_plot["Track inset plots<br/>[PlotWithInset.m]"]
end

node_researcher(("Researcher"))

node_researcher -->|"runs"| node_synthetic_generator
node_synthetic_generator -->|"generates"| node_clean_tracks
node_synthetic_generator -->|"generates"| node_noisy_tracks
node_researcher -->|"runs"| node_analysis
node_clean_tracks -->|"loads"| node_analysis
node_noisy_tracks -->|"loads"| node_analysis
node_track_data -->|"loads"| node_analysis
node_analysis -->|"selects method"| node_circle3
node_analysis -->|"selects method"| node_circle_ls
node_analysis -->|"selects method"| node_tangent
node_analysis -->|"selects method"| node_central_diff
node_analysis -->|"selects method"| node_local_poly
node_analysis -->|"selects method"| node_spline_derivative
node_analysis -->|"uses helper"| node_spline_smoothing
node_analysis -->|"saves results"| node_curvature_results
node_curvature_results -->|"compares results"| node_comparison
node_truth -->|"provides truth"| node_comparison
node_comparison -->|"trims edges"| node_edge_trim
node_researcher -->|"runs"| node_sweep_runner
node_sweep_runner -->|"runs sweep"| node_sweep_local
node_sweep_runner -->|"runs sweep"| node_sweep_circle
node_sweep_runner -->|"runs sweep"| node_sweep_spline
node_sweep_runner -->|"runs sweep"| node_sweep_tolerance
node_curvature_results -->|"visualizes tracks"| node_trajectory_plot
node_curvature_results -->|"compares curves"| node_comparative_plot
node_curvature_results -->|"plots with inset"| node_inset_plot

click node_analysis "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/analyzeAllTracks.m"
click node_curvature_results "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/curvatureResults_Real_splinesmoothed_tangentAngle_sig025_m129_step15_20261017_132608.mat"
click node_circle3 "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/curvature_estimation_OsculatingCircle.m"
click node_circle_ls "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/curvature_estimation_leastSquaresCircle.m"
click node_tangent "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/curvatureEstimationTangentAngle.m"
click node_central_diff "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/curvature_estimation_centralDiff.m"
click node_local_poly "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/curvature_estimation_localPoly.m"
click node_spline_derivative "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/curvature_estimation_splineDerivative.m"
click node_spline_smoothing "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/smoothTrajectorySpline.m"
click node_synthetic_generator "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/create_synthetic_trajectories.m"
click node_clean_tracks "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/Fake_synthetic_trajectories_Clean.mat"
click node_noisy_tracks "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/Fake_synthetic_trajectories_Noise.mat"
click node_truth "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/getTrueCurvature.m"
click node_comparison "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/groundTruthComparison.m"
click node_edge_trim "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/edgeTrimPercent.m"
click node_sweep_runner "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/run_sweep_tests.m"
click node_sweep_local "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/sweep_localPoly.m"
click node_sweep_circle "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/sweep_splineCirclefit_2D.m"
click node_sweep_spline "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/sweep_splineP.m"
click node_sweep_tolerance "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/sweep_tolMult.m"
click node_trajectory_plot "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/Plot_Trajectories.m"
click node_comparative_plot "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/plotTrackByIndexComparative.m"
click node_inset_plot "https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/PlotWithInset.m"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_track_data,node_analysis,node_curvature_results toneBlue
class node_circle3,node_circle_ls,node_tangent,node_central_diff,node_local_poly,node_spline_derivative,node_spline_smoothing toneAmber
class node_synthetic_generator,node_clean_tracks,node_noisy_tracks,node_truth toneMint
class node_comparison,node_edge_trim,node_sweep_runner,node_sweep_local,node_sweep_circle,node_sweep_spline,node_sweep_tolerance toneRose
class node_trajectory_plot,node_comparative_plot,node_inset_plot,node_researcher toneIndigo
```

## Components

### Track workflow

- **Trajectory data**
- [Track analysis](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/analyzeAllTracks.m): `analyzeAllTracks.m`
- [Curvature results](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/curvatureResults_Real_splinesmoothed_tangentAngle_sig025_m129_step15_20261017_132608.mat): `curvatureResults_Real_splinesmoothed_tangentAngle_sig025_m129_step15_20261017_132608.mat`

### Curvature estimators

- [Three-point circle](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/curvature_estimation_OsculatingCircle.m): `curvature_estimation_OsculatingCircle.m`
- [Least-squares circle](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/curvature_estimation_leastSquaresCircle.m): `curvature_estimation_leastSquaresCircle.m`
- [Tangent-angle method](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/curvatureEstimationTangentAngle.m): `curvatureEstimationTangentAngle.m`
- [Central differences](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/curvature_estimation_centralDiff.m): `curvature_estimation_centralDiff.m`
- [Local polynomial](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/curvature_estimation_localPoly.m): `curvature_estimation_localPoly.m`
- [Spline derivative](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/curvature_estimation_splineDerivative.m): `curvature_estimation_splineDerivative.m`
- [Spline smoothing](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/smoothTrajectorySpline.m): `smoothTrajectorySpline.m`

### Synthetic validation

- [Synthetic generator](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/create_synthetic_trajectories.m): `create_synthetic_trajectories.m`
- [Clean synthetic tracks](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/Fake_synthetic_trajectories_Clean.mat): `Fake_synthetic_trajectories_Clean.mat`
- [Noisy synthetic tracks](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/Fake_synthetic_trajectories_Noise.mat): `Fake_synthetic_trajectories_Noise.mat`
- [True curvature](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/getTrueCurvature.m): `getTrueCurvature.m`

### Evaluation and tuning

- [Ground-truth comparison](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/groundTruthComparison.m): `groundTruthComparison.m`
- [Edge trimming](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/edgeTrimPercent.m): `edgeTrimPercent.m`
- [Sweep runner](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/run_sweep_tests.m): `run_sweep_tests.m`
- [Local-poly sweep](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/sweep_localPoly.m): `sweep_localPoly.m`
- [Spline-circle sweep](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/sweep_splineCirclefit_2D.m): `sweep_splineCirclefit_2D.m`
- [Spline parameter sweep](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/sweep_splineP.m): `sweep_splineP.m`
- [Tolerance sweep](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/sweep_tolMult.m): `sweep_tolMult.m`

### Visualization

- [Trajectory plots](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/Plot_Trajectories.m): `Plot_Trajectories.m`
- [Comparative plots](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/plotTrackByIndexComparative.m): `plotTrackByIndexComparative.m`
- [Track inset plots](https://github.com/yaman-ajaj/curvature_estimation_bacterianearsurface_2110/blob/main/PlotWithInset.m): `PlotWithInset.m`

### Other components

- **Researcher**

## Connections

- Researcher → Synthetic generator: runs (evidence: `README.md`)
- Synthetic generator → Clean synthetic tracks: generates (evidence: `README.md`)
- Synthetic generator → Noisy synthetic tracks: generates (evidence: `README.md`)
- Researcher → Track analysis: runs (evidence: `README.md`)
- Clean synthetic tracks → Track analysis: loads (evidence: `README.md`)
- Noisy synthetic tracks → Track analysis: loads (evidence: `README.md`)
- Trajectory data → Track analysis: loads (evidence: `README.md`)
- Track analysis → Three-point circle: selects method (evidence: `README.md`)
- Track analysis → Least-squares circle: selects method (evidence: `README.md`)
- Track analysis → Tangent-angle method: selects method (evidence: `README.md`)
- Track analysis → Central differences: selects method (evidence: `README.md`)
- Track analysis → Local polynomial: selects method (evidence: `README.md`)
- Track analysis → Spline derivative: selects method (evidence: `README.md`)
- Track analysis → Spline smoothing: uses helper (evidence: `README.md`)
- Track analysis → Curvature results: saves results (evidence: `README.md`)
- Curvature results → Ground-truth comparison: compares results (evidence: `README.md`)
- True curvature → Ground-truth comparison: provides truth (evidence: `README.md`)
- Ground-truth comparison → Edge trimming: trims edges (evidence: `README.md`)
- Researcher → Sweep runner: runs (evidence: `README.md`)
- Sweep runner → Local-poly sweep: runs sweep (evidence: `README.md`)
- Sweep runner → Spline-circle sweep: runs sweep (evidence: `README.md`)
- Sweep runner → Spline parameter sweep: runs sweep (evidence: `README.md`)
- Sweep runner → Tolerance sweep: runs sweep (evidence: `README.md`)
- Curvature results → Trajectory plots: visualizes tracks (evidence: `README.md`)
- Curvature results → Comparative plots: compares curves (evidence: `README.md`)
- Curvature results → Track inset plots: plots with inset (evidence: `README.md`)
