Indice
Workflow verificato Tutorial 02 Python · API pubbliche
Questo tutorial continua direttamente il workflow Terrain 3D. Il Dataset osservato terrain_profiles_raw e il Dataset fitted tutorial.terrain_surface_fit vengono confrontati punto per punto; il calcolo scientifico dei residui e delle statistiche passa attraverso NUMERIC_API_v1, quindi i risultati vengono pubblicati come normali Dataset GX-TXT e visualizzati con PLOT_DATASET_API_v3.
terrain_profiles_raw.csv e terrain_profiles_raw.metadata.txt.NUMERIC_API_v1. Il tutorial verifica quindi che analisi numerica, identità delle variabili, metadata, pubblicazione e plotting rimangano all'interno delle API pubbliche GX-TXT.Indice
- Materiali e prerequisiti
- Architettura del workflow
- API utilizzate
- Stage 1 — Analysis Sources
- Calcolo numerico dei residui
- Dataset pubblicati
- Risultati numerici attesi
- Metadata di validazione
- Continuazione tra Session
- Stage 2 — grafici diagnostici
- Errori intenzionali e contratti
- Risultati grafici
- Checklist di riproduzione
- Download
1. Materiali e prerequisiti
Il Tutorial 02 usa come input scientifici i risultati del Tutorial 01. Deve essere disponibile una Session contenente:
terrain_profiles_raw
tutorial.terrain_surface_fit
Il secondo Dataset deve mantenere i metadata scritti dal fit precedente, inclusi almeno processing.kind=surface_fit, processing.source_dataset_id=terrain_profiles_raw, fit.rmse_m, fit.r2 e gli ID stabili delle variabili X/Y/Z.
I file specifici di questo tutorial sono due script: 01_validate_fit_numeric_api.py esegue la validazione e pubblica i Dataset derivati; 02_plot_fit_validation_v3.py genera i grafici diagnostici persistenti.
2. Architettura del workflow
terrain_profiles_raw tutorial.terrain_surface_fit
\ /
\ primary model /
+---------------------------+
↓
TABLE_STREAM_API_v3
↓
metadata-driven variable binding
↓
NUMERIC_API_v1
↓
exact XY residual validation
↓
tutorial.terrain_fit_residuals
tutorial.terrain_fit_profile_statistics
↓
PLOT_DATASET_API_v3
↓
diagnostic plots + Session commit
3. API utilizzate
| API | Ruolo nel tutorial |
|---|---|
TABLE_STREAM_API_v3 | Legge in streaming le colonne dei due Dataset persistenti mantenendo l'allineamento. |
DATASET_VARIABLE_SCHEMA_API_v3 | Risoluzione e verifica degli ID stabili delle variabili. |
DATASET_METADATA_API_v1 | Recupera i binding scientifici e registra i metadata dei risultati. |
NUMERIC_API_v1 | Esegue sottrazione, valore assoluto, quadrato, media, somma, massimo, radice quadrata e operazioni per R². |
DATASET_PUBLICATION_API_v2 | Pubblica i Dataset canonici di residui e statistiche per profilo. |
PLOT_DATASET_API_v3 | Crea due normali Variant plot.dataset.xy. |
SESSION_PERSISTENCE_API_v1 | Esegue il commit dello stato finale nella Session. |
4. Stage 1 — configurare le Analysis Sources
Registra 01_validate_fit_numeric_api.py nel Python Script Workspace. Un ID di Session consigliato è terrain_numeric_validation.

Lo script dichiara un contratto esplicito su due Analysis Sources:
primary -> terrain_profiles_raw
model -> tutorial.terrain_surface_fit

primary e model.5. Calcolo numerico dei residui
Per ogni osservazione lo script cerca nel Dataset fitted il punto con le stesse coordinate X/Y. Nel Dataset deterministico fornito, tutti gli 891 punti originali sono presenti esattamente sulla griglia fitted 81 × 51: non viene introdotta interpolazione.
Le quantità principali sono:
\[r_i=z_{i,obs}-z_{i,fit}\]
\[\mathrm{MAE}=\frac{1}{N}\sum_i |r_i|\qquad \mathrm{RMSE}=\sqrt{\frac{1}{N}\sum_i r_i^2}\]
\[R^2=1-\frac{\sum_i r_i^2}{\sum_i(z_{i,obs}-\bar z_{obs})^2}\]
Le stesse operazioni vengono ripetute indipendentemente per ciascuna delle 11 famiglie di profilo. Nel codice le operazioni scientifiche sono richieste a NUMERIC_API_v1; Python gestisce il controllo del flusso, i gruppi e l'associazione esatta X/Y.
6. Dataset pubblicati
tutorial.terrain_fit_residuals
Contiene 891 righe e le variabili:
v_x_m
v_y_m
v_profile_id
v_z_observed_m
v_z_fit_m
v_residual_m
v_abs_residual_m
v_residual_squared_m2
tutorial.terrain_fit_profile_statistics
Contiene 11 righe, una per profilo:
v_profile_id
v_profile_y_m
v_point_count
v_bias_m
v_mae_m
v_rmse_m
v_max_abs_error_m


tutorial.terrain_fit_residuals visto nella Session.7. Risultati numerici attesi
Con il Dataset deterministico del Tutorial 01 il risultato globale di accettazione è:
| Quantità | Valore atteso |
|---|---|
| Osservazioni | 891 |
| Profili | 11 |
| Bias | ≈ 5.02×10−13 m |
| MAE | ≈ 0.465583403 m |
| RMSE | ≈ 0.575562597 m |
| Errore assoluto massimo | ≈ 1.994135503 m |
| R² | ≈ 0.998712481 |
Lo script confronta inoltre RMSE e R² ricalcolati con i valori conservati nei metadata del Dataset fitted; una discrepanza superiore alla tolleranza prevista interrompe il run.
PASS TERRAIN_NUMERIC_VALIDATION ...
8. Metadata di validazione
Il Dataset dei residui registra esplicitamente la catena di validazione, inclusi:
validation.kind=fit_residual_analysis
validation.observed_dataset_id=terrain_profiles_raw
validation.model_dataset_id=tutorial.terrain_surface_fit
validation.numeric_backend=NUMERIC_API_v1
validation.data_access=TABLE_STREAM_API_v3
validation.matching=exact_xy
validation.global_bias_m=...
validation.global_mae_m=...
validation.global_rmse_m=...
validation.global_max_abs_error_m=...
validation.global_r2=...

9. Continuare il workflow in una nuova Session
Il tutorial è stato verificato anche esportando tutorial.terrain_surface_fit dalla Session precedente e importandolo in una nuova Session. Metadata e Notes associati al Dataset consentono al workflow downstream di continuare senza ricostruire il fit.


10. Stage 2 — grafici diagnostici
Registra 02_plot_fit_validation_v3.py, ad esempio come terrain_validation_plots, e configura:
primary -> tutorial.terrain_fit_residuals
summary -> tutorial.terrain_fit_profile_statistics

Il primo PlotSpec è multi-panel: il pannello superiore sovrappone profili osservati e fitted; quello inferiore mostra i residui per famiglia con una linea di riferimento a zero. Il secondo PlotSpec mostra RMSE in funzione della posizione Y del profilo.
11. Errori intenzionali e contratti delle API
Le schermate di errore sono parte del tutorial: documentano che il framework rifiuta configurazioni incomplete o non conformi invece di indovinare implicitamente l'intento.
Analysis Source model mancante

model.
Alias summary errato

summary; source2 non soddisfa il contratto registrato.
Validazione PlotSpec
Durante la prova una prima versione del tutorial usava axis="y" nella reference line. Il validatore ha correttamente rifiutato il valore: per questa annotazione sono validi x, left e right. La versione corrente usa axis="left".

12. Risultati grafici


PASS TERRAIN_VALIDATION_PLOTS ...
13. Checklist di riproduzione
- Completa il Tutorial 01 — Terrain 3D, oppure importa in una nuova Session il Dataset fitted conservandone Metadata e Notes.
- Verifica la presenza di
terrain_profiles_rawetutorial.terrain_surface_fit. - Registra
01_validate_fit_numeric_api.py. - Configura esattamente
primaryemodel. - Esegui e verifica i due Dataset pubblicati e la linea
PASS TERRAIN_NUMERIC_VALIDATION. - Controlla i metadata di
tutorial.terrain_fit_residuals. - Registra
02_plot_fit_validation_v3.py. - Configura esattamente
primaryesummary. - Esegui e verifica i due grafici persistenti e la linea
PASS TERRAIN_VALIDATION_PLOTS.
14. Download
Il pacchetto del Tutorial 02 contiene solo i materiali propri di questa fase. Dataset sorgente e metadata restano nel Tutorial 01 e non vengono duplicati.