pyCSAMT: Scientific Python for electromagnetic geophysics
Le résumé fourni par la source
Maintenance and reliability release: fixes three real bugs surfaced by production agent runs, hardens EDI/Jones/Zonge/impedance parsing against malformed inputs and pandas-version drift, and expands regression coverage across pycsamt.agents from 83% to 92%. Fixed Agents StaticShiftAgent's before/after comparison plots went blank for any station whose frequency count differed from the first station loaded (the normal case in real surveys, not an edge case) — it now interpolates each station's ρₐ curve onto a common grid instead of discarding it. DataQCAgent's confidence-section plots no longer spam RuntimeWarning: Mean of empty slice for genuine per-frequency data gaps. ReportAgent no longer copies a figure onto itself and logs a spurious "are the same file" warning on every orchestrated run. AgentResult.failed() now preserves warnings collected before a failure instead of discarding them; IoTFieldAgent, Inv2DAgent, Inv3DAgent, and JointInversionAgent no longer lose diagnostics at their early-return failure paths. IoTFieldAgent's signed-manifest write now passes the signing key through — this path always raised before. Workflow-plan validation now recognizes the already-supported mare2dem, pinn_inversion, hybrid_inversion, code_gen, and denoise workflow names. Parsing & data SEG/Jones source resolution tolerates unresolved Windows globs and OS-invalid paths instead of raising unrelated low-level exceptions. EDI TROT fallback to the impedance rotation angle actually triggers again (was unreachable). Head/Heads coordinate clearing, Jones n_freq on multi-element arrays, the Jones banner regex, and SEG xarray export dtype — all fixed. z.utils.invert_z / Z.remove_distortion consistently raise ZError for a singular tensor, regardless of which check detects it. Zonge Topography/Station in-memory construction and load_avg's UTM conversion are repaired. Compatibility format_iterable and split_by_station detect numeric pandas columns with pandas.api.types.is_numeric_dtype instead of a dtype-string comparison / np.issubdtype, both of which raised TypeError on pandas builds that infer a string extension dtype. AVGComponentBase.to_json no longer calls the pandas 2.x-removed pd.io.json.dumps. FlexDict, format_text, and format_dict_result robustness fixes. Changed Removed several unused duplicate private helpers (Jones block parser, SEG xarray exporter, Z determinant, Zonge variance) and a ~140-line dead topography-resolution method in Inv3DAgent. No public API removed. Tests 21 pycsamt.agents modules that sat below 80% branch coverage now reach 80–100%, several via real (non-mocked) forward solves, pipeline runs, and a full non-dry-run orchestrator execution — including its provenance-file writing path, exercised here for the first time. Package-wide agents coverage: 83% → 92%. Broad regression coverage added across airborne adapters, the public API/view layer, EMTF, SEG/Jones, Z/Zonge, inversion-model helpers, metadata, and I/O. CI compatibility fixes for Python 3.13's changed Path.rglob("**") semantics and Windows-only tests running on Linux/macOS runners. Compatibility No public APIs were intentionally removed or renamed. The new optional warnings argument on AgentResult.failed() is backward compatible. Full details: Release notes · Changelog pip install --upgrade pycsamt
Ce résumé expose les affirmations des auteurs. BNTIC ne l’interprète pas comme une validation indépendante des résultats.