gea-program 0.7.0__tar.gz → 0.8.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {gea_program-0.7.0/gea_program.egg-info → gea_program-0.8.1}/PKG-INFO +91 -6
- {gea_program-0.7.0 → gea_program-0.8.1}/README.md +90 -5
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/__init__.py +1 -1
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/__main__.py +438 -12
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/acceptance_tests.py +994 -3
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/client_reports.py +390 -9
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/doctor.py +89 -0
- gea_program-0.8.1/gea/geodesy.py +536 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/help/doctor.md +7 -0
- gea_program-0.8.1/gea/help/seismic.md +13 -0
- gea_program-0.8.1/gea/help/site.md +53 -0
- gea_program-0.8.1/gea/help/sites.md +13 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/helplib.py +2 -1
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/operator_app.py +12 -3
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/permits.py +83 -9
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/seismic_array.py +23 -7
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/seismic_detect.py +20 -6
- gea_program-0.8.1/gea/seismic_harmonic.py +889 -0
- gea_program-0.8.1/gea/seismic_qc.py +517 -0
- gea_program-0.8.1/gea/seismic_signature.py +557 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/seismic_track.py +40 -5
- gea_program-0.8.1/gea/seismic_uncertainty.py +294 -0
- gea_program-0.8.1/gea/seismic_unlisted.py +303 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/service.py +114 -4
- gea_program-0.8.1/gea/supervisor.py +256 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/web/app.html +148 -3
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/workspace.py +488 -17
- {gea_program-0.7.0 → gea_program-0.8.1/gea_program.egg-info}/PKG-INFO +91 -6
- {gea_program-0.7.0 → gea_program-0.8.1}/gea_program.egg-info/SOURCES.txt +8 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/pyproject.toml +1 -1
- gea_program-0.7.0/gea/help/seismic.md +0 -13
- gea_program-0.7.0/gea/help/site.md +0 -15
- {gea_program-0.7.0 → gea_program-0.8.1}/LICENSE +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/BENCH_TEST_PROTOCOL.md +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/accuracy_statement.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/alarm_engine.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/bench.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/blind_harness.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/acex_lomonosov_age_depth_model.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/acex_lomonosov_age_depth_model.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/agassiz77_canada_temperature.csv +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/agassiz77_canada_temperature.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/barbados_110_consolidation.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/barbados_110_consolidation.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/bengal_u1452_grain_size.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/bengal_u1452_grain_size.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/blake_164_methane_isotopes.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/blake_164_methane_isotopes.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/chicxulub_m0077a_pwave_velocity.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/chicxulub_m0077a_pwave_velocity.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/collingwood_1_28_ks_complete.las +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/collingwood_1_28_ks_complete.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/costa_rica_odp_friction_envelope.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/costa_rica_odp_friction_envelope.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/dead_sea_5017_debrite_xrf_ms.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/dead_sea_5017_debrite_xrf_ms.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/dsdp_504b_physical_properties.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/dsdp_504b_physical_properties.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/dsdp_504b_sound_velocity.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/dsdp_504b_sound_velocity.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/elgygytgyn_5011_turbidites.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/elgygytgyn_5011_turbidites.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/epica_domec_co2_800kyr.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/epica_domec_co2_800kyr.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/fram_909_organic_petrography.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/fram_909_organic_petrography.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/gbr_325_coral_uth_ages.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/gbr_325_coral_uth_ages.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/gisp2_greenland_temperature.csv +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/gisp2_greenland_temperature.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/gom_308_t2p_insitu.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/gom_308_t2p_insitu.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/guaymas_385_dom_d13c.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/guaymas_385_dom_d13c.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/hikurangi_u1520_friction_insitu.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/hikurangi_u1520_friction_insitu.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/hydrate_ridge_204_ncr_hydrate.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/hydrate_ridge_204_ncr_hydrate.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/iodp_u1324_pore_pressure.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/iodp_u1324_pore_pressure.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/jfast_c0019_slow_slip_events.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/jfast_c0019_slow_slip_events.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/kennetcook_2_p129_excerpt.las +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/kennetcook_2_p129_excerpt.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/ktb_hb_bhgm_density.dat +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/ktb_hb_bhgm_density.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/ktb_hb_complog_6020_excerpt.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/ktb_hb_complog_6020_excerpt.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/ktb_hb_hlog246_temperature.dat +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/ktb_hb_hlog246_temperature.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/ktb_hb_rockmech_compress.dat +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/ktb_hb_rockmech_compress.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.dat +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/ktb_vb_rockmech_compress.dat +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/ktb_vb_rockmech_compress.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/ktb_vb_vlog251_temperature.dat +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/ktb_vb_vlog251_temperature.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/l06_06_nl_survey.csv +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/l06_06_nl_survey.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/l07_01_nl_excerpt.las +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/l07_01_nl_excerpt.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/mariana_1200_serpentinite_geochem.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/mariana_1200_serpentinite_geochem.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/med_160_sapropels.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/med_160_sapropels.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/nankai_megasplay_shear_strength.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/nankai_megasplay_shear_strength.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/odp_1027b_thermal_conductivity.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/odp_1027b_thermal_conductivity.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/odp_1027c_cork_temperature.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/odp_1027c_cork_temperature.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/odp_1165b_thermal_conductivity.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/odp_1165b_thermal_conductivity.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/odp_1274a_mantle_peridotite_mad.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/odp_1274a_mantle_peridotite_mad.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/odp_504b_dike_elastic_moduli.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/odp_504b_dike_elastic_moduli.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/odp_504b_leg137_borehole_fluids.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/odp_504b_leg137_borehole_fluids.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/odp_735b_gabbro_elastic_moduli.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/odp_735b_gabbro_elastic_moduli.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/peru_201_sulfate_reduction.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/peru_201_sulfate_reduction.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/scorpio_e1_sa_excerpt.las +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/scorpio_e1_sa_excerpt.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/sumatra_362_cohesion.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/sumatra_362_cohesion.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/university_6_17_no1_tx_excerpt.las +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/university_6_17_no1_tx_excerpt.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/ursa_308_xrd_mineralogy.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/ursa_308_xrd_mineralogy.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/volve_15_9_19_sr_excerpt.las +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/volve_15_9_19_sr_excerpt.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/volve_15_9_19a_core_excerpt.csv +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/volve_15_9_19a_core_excerpt.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/volve_f12_f14_production_excerpt.csv +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/volve_f12_f14_production_excerpt.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/walvis_208_petm_carbonate.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/walvis_208_petm_carbonate.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/woodlark_1109_rock_eval.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/catalog/woodlark_1109_rock_eval.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/certificates.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/cli.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/config_versioning.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/correlation.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/dashboard.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/deviation.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/downhole_engine.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/drift_monitor.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/earth_model.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/example_register_map.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/fat_sat.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/files.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/follower.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/forward_model.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/gamma.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/gauge_aging.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/gauge_specs.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/gravity_reference.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/help/TESTER_GUIDE.md +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/help/alarms.md +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/help/audit-update.md +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/help/data-in.md +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/help/drift.md +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/help/files.md +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/help/instruments.md +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/help/notifications.md +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/help/patches.md +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/help/quality.md +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/help/start.md +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/help/transients.md +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/help/upkeep.md +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/help/well-tests.md +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/housekeeping.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/inverse_engine.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/jobs.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/live_ports.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/loadtest.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/matplotlib_demo.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/modbus.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/model_card.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/mqtt_port.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/notify.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/opcua_port.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/patches.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/ports.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/profile_catalog.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/project.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/qt6_downhole_app.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/reconciler.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/reference/IU_ANMO_10_BHZ_response.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/reference/IU_ANMO_10_BHZ_response.xml +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/reference/libmseed_steim.provenance.json +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/reference/libmseed_steim1_4096.mseed +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/reference/libmseed_steim2_4096.mseed +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/reference/libmseed_steim2_512.mseed +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/rock_inventory.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/sample_record.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/sample_well_profile.csv +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/sbom.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/segy.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/seismic.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/seismic_film.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/seismic_response.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/sensor_swap.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/service_life.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/shell.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/shut_in.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/sla_report.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/store_forward.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/strata_join.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/survey_cmd.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/survey_view.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/telemetry.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/tool_library.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/transient.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/well_assembler.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/well_test_validation.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/wits0.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea/witsml.py +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea_program.egg-info/dependency_links.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea_program.egg-info/entry_points.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea_program.egg-info/requires.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/gea_program.egg-info/top_level.txt +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/setup.cfg +0 -0
- {gea_program-0.7.0 → gea_program-0.8.1}/tests/test_acceptance.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gea-program
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.8.1
|
|
4
4
|
Summary: GEA-Program: downhole gauge monitoring - canonical measurement records, quality rules, drift evaluation with a re-fit change log, well-test validation, alarm management, model cards, store-and-forward, monthly SLA measurement, FAT/SAT protocols and a dashboard, generated from live objects in the client's reporting outline.
|
|
5
5
|
Author: Daniel T. Murphy
|
|
6
6
|
License: MPL-2.0
|
|
@@ -125,7 +125,7 @@ gea dashboard --catalog-well volve_f12_f14_production_excerpt:15/9-F-12:10000 --
|
|
|
125
125
|
gea client-report --report accuracy --out client_report
|
|
126
126
|
gea model-cards --out model_cards
|
|
127
127
|
gea sbom --out sbom
|
|
128
|
-
gea accept # the product gate (
|
|
128
|
+
gea accept # the product gate (302 checks)
|
|
129
129
|
gea help drift # the help library, by the job (16 pages; the same text is on every dashboard page)
|
|
130
130
|
gea guide # the click-by-click tester guide (docs/TESTER_GUIDE.md)
|
|
131
131
|
gea gui # the desktop window (pip install "gea-program[desktop]")
|
|
@@ -152,12 +152,12 @@ site session is reproduced offline and how the mapping logic is tested.
|
|
|
152
152
|
```
|
|
153
153
|
pip install "gea-program[live]" # asyncua, paho-mqtt, pymodbus, pyserial (or one extra at a time)
|
|
154
154
|
gea wits0 --write-example-config wits0.json # drill floor: transport tcp | listen | serial; item codes -> tags, units
|
|
155
|
-
gea wits0-sim --port 5001 # a WITS0 sender to rehearse with (no rig needed)
|
|
156
|
-
gea wits0 --config wits0.json --seconds 60 --record floor/session.jsonl --out floor --stream-csv floor/stream.csv
|
|
155
|
+
gea wits0-sim --port 5001 # a WITS0 sender to rehearse with (no rig needed) - run it in a SECOND window and leave it running
|
|
156
|
+
gea wits0 --config wits0.json --seconds 60 --record floor/session.jsonl --out floor --stream-csv floor/stream.csv # in the first window, while the sender runs
|
|
157
157
|
gea witsml --write-example-config witsml.json # a WITSML 1.4.1 store: url, uids, mnemonics -> tags; credentials by env name
|
|
158
|
-
gea witsml --config witsml.json --seconds 60 --out store
|
|
158
|
+
gea witsml --config witsml.json --seconds 60 --out store # needs a real store: the example url is a placeholder until you edit it
|
|
159
159
|
gea opcua --write-example-config opcua.json # edit: endpoint, security, credential env names, nodes
|
|
160
|
-
gea opcua --config opcua.json --seconds 60 --record opc/session.jsonl --out opc --stream-csv opc/stream.csv
|
|
160
|
+
gea opcua --config opcua.json --seconds 60 --record opc/session.jsonl --out opc --stream-csv opc/stream.csv # needs a real OPC UA server, likewise
|
|
161
161
|
gea mqtt --write-example-config mqtt.json # edit: broker, TLS, credential env names, topics
|
|
162
162
|
gea mqtt --config mqtt.json --replay mq/session.jsonl --out mq_replay # no broker needed
|
|
163
163
|
gea ingest --file floor/stream.csv # a stream CSV feeds the historian port like any other
|
|
@@ -443,6 +443,91 @@ were dropped and why, and how many end dates it assumed (a permit rarely says
|
|
|
443
443
|
when drilling stopped). The Seismic page's add form takes a permit export in
|
|
444
444
|
place of the rigs CSV and keeps both.
|
|
445
445
|
|
|
446
|
+
### Several rigs at once
|
|
447
|
+
|
|
448
|
+
One bearing is one direction for every machine in the band, so when two rigs
|
|
449
|
+
work together the crossing of whole-band bearings means nothing. That is the
|
|
450
|
+
wall between "a rig" and "a field", and `seismic_signature.py` is the step
|
|
451
|
+
through it. While a rig works alone, the bins that stand above the local
|
|
452
|
+
floor in its windows and not in the quiet ones are kept as its signature -
|
|
453
|
+
the same lines the detectability test already prints. In the windows where
|
|
454
|
+
several rigs work together, the cross-spectral matrix is sliced to one rig's
|
|
455
|
+
lines and beamed, which gives a bearing per rig in the same window; a
|
|
456
|
+
machinery line arriving as one plane wave is coherent in its own bin even
|
|
457
|
+
when the band as a whole is noise, which is why it works.
|
|
458
|
+
|
|
459
|
+
What it refuses is as much of the method as what it claims. A rig that never
|
|
460
|
+
worked alone has no signature and gets no bearing. Two rigs whose lines fall
|
|
461
|
+
within the spectral resolution of each other are NOT_SEPARABLE, both of them,
|
|
462
|
+
rather than handed a bearing each. A rig whose own lines all sit above the
|
|
463
|
+
array's spatial Nyquist is ALIASED: the measured beam has another peak within
|
|
464
|
+
a tenth of the height of the one found, the geometry cannot say which is the
|
|
465
|
+
source, and the peaks it cannot separate are listed instead of a direction.
|
|
466
|
+
Run through two arrays, every rig that both pointed at in the same window
|
|
467
|
+
gets its own positions, ellipses and track, and a track whose extent is
|
|
468
|
+
inside its own ellipses says `NOT_RESOLVED` instead of reporting the heading
|
|
469
|
+
of a scatter as a direction of travel. `gea seismic --action signatures |
|
|
470
|
+
multi-beam | multi-bearings | multi-track | signature-selftest |
|
|
471
|
+
field-selftest`; on a site, an array station with a rigs list learns the
|
|
472
|
+
signatures at every refresh and a track carries a track per rig beside the
|
|
473
|
+
whole-band one.
|
|
474
|
+
|
|
475
|
+
### The machine behind the lines
|
|
476
|
+
|
|
477
|
+
A signature as a list of frequencies is a list of facts about bins. A pump at
|
|
478
|
+
1.7 strokes per second is one fact about a machine, and it puts energy at
|
|
479
|
+
1.7, 3.4, 5.1 and 8.5 Hz. `seismic_harmonic.py` searches every line divided
|
|
480
|
+
by every order for the comb that explains the most of them, normalises it to
|
|
481
|
+
the largest spacing the orders found allow - a comb of every second tooth is
|
|
482
|
+
that comb at twice the spacing, and the larger one claims less - and reports
|
|
483
|
+
the fundamental as a rate per minute. That is a far stronger claim than the
|
|
484
|
+
same lines listed separately, and the module says how strong: `by chance` is
|
|
485
|
+
how often this record's line density puts that many lines on a comb by
|
|
486
|
+
accident, and a family above the ceiling is set aside rather than reported.
|
|
487
|
+
Fewer than three lines is not a family, because any two lines define a comb;
|
|
488
|
+
two spacings that explain the same lines equally well are AMBIGUOUS; and a
|
|
489
|
+
fundamental whose half would fall below the analysed band is flagged, because
|
|
490
|
+
the machine may be running at half that rate with only its even harmonics in
|
|
491
|
+
view.
|
|
492
|
+
|
|
493
|
+
The other half is time. A pump's rate follows the work: a line at 1.40 Hz
|
|
494
|
+
walks to 1.85 Hz over a tour, no single bin stands above its floor in enough
|
|
495
|
+
windows, and the rig all but disappears from its own signature - which is the
|
|
496
|
+
defect this band exists to fix. Every line is followed window to window by
|
|
497
|
+
nearest neighbour within a drift ceiling, each peak refined inside its bin by
|
|
498
|
+
a parabola so a walk smaller than the bin width can be read, and each track
|
|
499
|
+
carries STEADY, DRIFTING or INTERMITTENT with its drift in Hz per hour. A
|
|
500
|
+
drift no larger than the bin width is not called a drift. The walk is also an
|
|
501
|
+
observable in its own right: `rate_history` reads the rate over the record,
|
|
502
|
+
and a rate that moves is the machine's load changing, not a different
|
|
503
|
+
machine.
|
|
504
|
+
|
|
505
|
+
Both halves meet in attribution. A track belongs to a source when it passes
|
|
506
|
+
within tolerance of a line that source was learned on - or when it stands in
|
|
507
|
+
a small whole-number ratio, in a window they share, to a track that source
|
|
508
|
+
already claims, which is how a harmonic the fixed bins missed comes back to
|
|
509
|
+
its machine wherever it has walked to. A line two sources could both claim is
|
|
510
|
+
given to neither. A line no listed source claims is listed as exactly that:
|
|
511
|
+
something is making it and the program was not told what.
|
|
512
|
+
|
|
513
|
+
And it closes the loop on ground truth. Every verdict in the leg rested on
|
|
514
|
+
the rigs CSV's working window - the detectability test, the array test and the
|
|
515
|
+
track all believed it. `activity_from_signature` measures it instead: the
|
|
516
|
+
fraction of a source's own lines standing above their floor, window by
|
|
517
|
+
window, each line looked for within a fraction of its own frequency of where
|
|
518
|
+
it was learned, because a harmonic walks as far as its order. The spells it
|
|
519
|
+
finds sit beside the declared ones with AGREES or DIFFERS and the counts both
|
|
520
|
+
ways. A permit date is a permission, not a drilling log, so a disagreement is
|
|
521
|
+
a finding and not an error - and which of the two is right is not decided
|
|
522
|
+
here.
|
|
523
|
+
|
|
524
|
+
`gea seismic --action harmonics | harmonic-selftest`; on a site every station
|
|
525
|
+
refresh does all of it - a single sensor as well as an array, using its own
|
|
526
|
+
detectability test's lines per source when there is no array to learn from,
|
|
527
|
+
so one geophone can still say when each rig was working - and the Seismic
|
|
528
|
+
Station Report and the station page carry the section, with the tracks drawn
|
|
529
|
+
against time.
|
|
530
|
+
|
|
446
531
|
### Audit / Update
|
|
447
532
|
|
|
448
533
|
The Audit / Update tab holds three things. The whole audit log
|
|
@@ -86,7 +86,7 @@ gea dashboard --catalog-well volve_f12_f14_production_excerpt:15/9-F-12:10000 --
|
|
|
86
86
|
gea client-report --report accuracy --out client_report
|
|
87
87
|
gea model-cards --out model_cards
|
|
88
88
|
gea sbom --out sbom
|
|
89
|
-
gea accept # the product gate (
|
|
89
|
+
gea accept # the product gate (302 checks)
|
|
90
90
|
gea help drift # the help library, by the job (16 pages; the same text is on every dashboard page)
|
|
91
91
|
gea guide # the click-by-click tester guide (docs/TESTER_GUIDE.md)
|
|
92
92
|
gea gui # the desktop window (pip install "gea-program[desktop]")
|
|
@@ -113,12 +113,12 @@ site session is reproduced offline and how the mapping logic is tested.
|
|
|
113
113
|
```
|
|
114
114
|
pip install "gea-program[live]" # asyncua, paho-mqtt, pymodbus, pyserial (or one extra at a time)
|
|
115
115
|
gea wits0 --write-example-config wits0.json # drill floor: transport tcp | listen | serial; item codes -> tags, units
|
|
116
|
-
gea wits0-sim --port 5001 # a WITS0 sender to rehearse with (no rig needed)
|
|
117
|
-
gea wits0 --config wits0.json --seconds 60 --record floor/session.jsonl --out floor --stream-csv floor/stream.csv
|
|
116
|
+
gea wits0-sim --port 5001 # a WITS0 sender to rehearse with (no rig needed) - run it in a SECOND window and leave it running
|
|
117
|
+
gea wits0 --config wits0.json --seconds 60 --record floor/session.jsonl --out floor --stream-csv floor/stream.csv # in the first window, while the sender runs
|
|
118
118
|
gea witsml --write-example-config witsml.json # a WITSML 1.4.1 store: url, uids, mnemonics -> tags; credentials by env name
|
|
119
|
-
gea witsml --config witsml.json --seconds 60 --out store
|
|
119
|
+
gea witsml --config witsml.json --seconds 60 --out store # needs a real store: the example url is a placeholder until you edit it
|
|
120
120
|
gea opcua --write-example-config opcua.json # edit: endpoint, security, credential env names, nodes
|
|
121
|
-
gea opcua --config opcua.json --seconds 60 --record opc/session.jsonl --out opc --stream-csv opc/stream.csv
|
|
121
|
+
gea opcua --config opcua.json --seconds 60 --record opc/session.jsonl --out opc --stream-csv opc/stream.csv # needs a real OPC UA server, likewise
|
|
122
122
|
gea mqtt --write-example-config mqtt.json # edit: broker, TLS, credential env names, topics
|
|
123
123
|
gea mqtt --config mqtt.json --replay mq/session.jsonl --out mq_replay # no broker needed
|
|
124
124
|
gea ingest --file floor/stream.csv # a stream CSV feeds the historian port like any other
|
|
@@ -404,6 +404,91 @@ were dropped and why, and how many end dates it assumed (a permit rarely says
|
|
|
404
404
|
when drilling stopped). The Seismic page's add form takes a permit export in
|
|
405
405
|
place of the rigs CSV and keeps both.
|
|
406
406
|
|
|
407
|
+
### Several rigs at once
|
|
408
|
+
|
|
409
|
+
One bearing is one direction for every machine in the band, so when two rigs
|
|
410
|
+
work together the crossing of whole-band bearings means nothing. That is the
|
|
411
|
+
wall between "a rig" and "a field", and `seismic_signature.py` is the step
|
|
412
|
+
through it. While a rig works alone, the bins that stand above the local
|
|
413
|
+
floor in its windows and not in the quiet ones are kept as its signature -
|
|
414
|
+
the same lines the detectability test already prints. In the windows where
|
|
415
|
+
several rigs work together, the cross-spectral matrix is sliced to one rig's
|
|
416
|
+
lines and beamed, which gives a bearing per rig in the same window; a
|
|
417
|
+
machinery line arriving as one plane wave is coherent in its own bin even
|
|
418
|
+
when the band as a whole is noise, which is why it works.
|
|
419
|
+
|
|
420
|
+
What it refuses is as much of the method as what it claims. A rig that never
|
|
421
|
+
worked alone has no signature and gets no bearing. Two rigs whose lines fall
|
|
422
|
+
within the spectral resolution of each other are NOT_SEPARABLE, both of them,
|
|
423
|
+
rather than handed a bearing each. A rig whose own lines all sit above the
|
|
424
|
+
array's spatial Nyquist is ALIASED: the measured beam has another peak within
|
|
425
|
+
a tenth of the height of the one found, the geometry cannot say which is the
|
|
426
|
+
source, and the peaks it cannot separate are listed instead of a direction.
|
|
427
|
+
Run through two arrays, every rig that both pointed at in the same window
|
|
428
|
+
gets its own positions, ellipses and track, and a track whose extent is
|
|
429
|
+
inside its own ellipses says `NOT_RESOLVED` instead of reporting the heading
|
|
430
|
+
of a scatter as a direction of travel. `gea seismic --action signatures |
|
|
431
|
+
multi-beam | multi-bearings | multi-track | signature-selftest |
|
|
432
|
+
field-selftest`; on a site, an array station with a rigs list learns the
|
|
433
|
+
signatures at every refresh and a track carries a track per rig beside the
|
|
434
|
+
whole-band one.
|
|
435
|
+
|
|
436
|
+
### The machine behind the lines
|
|
437
|
+
|
|
438
|
+
A signature as a list of frequencies is a list of facts about bins. A pump at
|
|
439
|
+
1.7 strokes per second is one fact about a machine, and it puts energy at
|
|
440
|
+
1.7, 3.4, 5.1 and 8.5 Hz. `seismic_harmonic.py` searches every line divided
|
|
441
|
+
by every order for the comb that explains the most of them, normalises it to
|
|
442
|
+
the largest spacing the orders found allow - a comb of every second tooth is
|
|
443
|
+
that comb at twice the spacing, and the larger one claims less - and reports
|
|
444
|
+
the fundamental as a rate per minute. That is a far stronger claim than the
|
|
445
|
+
same lines listed separately, and the module says how strong: `by chance` is
|
|
446
|
+
how often this record's line density puts that many lines on a comb by
|
|
447
|
+
accident, and a family above the ceiling is set aside rather than reported.
|
|
448
|
+
Fewer than three lines is not a family, because any two lines define a comb;
|
|
449
|
+
two spacings that explain the same lines equally well are AMBIGUOUS; and a
|
|
450
|
+
fundamental whose half would fall below the analysed band is flagged, because
|
|
451
|
+
the machine may be running at half that rate with only its even harmonics in
|
|
452
|
+
view.
|
|
453
|
+
|
|
454
|
+
The other half is time. A pump's rate follows the work: a line at 1.40 Hz
|
|
455
|
+
walks to 1.85 Hz over a tour, no single bin stands above its floor in enough
|
|
456
|
+
windows, and the rig all but disappears from its own signature - which is the
|
|
457
|
+
defect this band exists to fix. Every line is followed window to window by
|
|
458
|
+
nearest neighbour within a drift ceiling, each peak refined inside its bin by
|
|
459
|
+
a parabola so a walk smaller than the bin width can be read, and each track
|
|
460
|
+
carries STEADY, DRIFTING or INTERMITTENT with its drift in Hz per hour. A
|
|
461
|
+
drift no larger than the bin width is not called a drift. The walk is also an
|
|
462
|
+
observable in its own right: `rate_history` reads the rate over the record,
|
|
463
|
+
and a rate that moves is the machine's load changing, not a different
|
|
464
|
+
machine.
|
|
465
|
+
|
|
466
|
+
Both halves meet in attribution. A track belongs to a source when it passes
|
|
467
|
+
within tolerance of a line that source was learned on - or when it stands in
|
|
468
|
+
a small whole-number ratio, in a window they share, to a track that source
|
|
469
|
+
already claims, which is how a harmonic the fixed bins missed comes back to
|
|
470
|
+
its machine wherever it has walked to. A line two sources could both claim is
|
|
471
|
+
given to neither. A line no listed source claims is listed as exactly that:
|
|
472
|
+
something is making it and the program was not told what.
|
|
473
|
+
|
|
474
|
+
And it closes the loop on ground truth. Every verdict in the leg rested on
|
|
475
|
+
the rigs CSV's working window - the detectability test, the array test and the
|
|
476
|
+
track all believed it. `activity_from_signature` measures it instead: the
|
|
477
|
+
fraction of a source's own lines standing above their floor, window by
|
|
478
|
+
window, each line looked for within a fraction of its own frequency of where
|
|
479
|
+
it was learned, because a harmonic walks as far as its order. The spells it
|
|
480
|
+
finds sit beside the declared ones with AGREES or DIFFERS and the counts both
|
|
481
|
+
ways. A permit date is a permission, not a drilling log, so a disagreement is
|
|
482
|
+
a finding and not an error - and which of the two is right is not decided
|
|
483
|
+
here.
|
|
484
|
+
|
|
485
|
+
`gea seismic --action harmonics | harmonic-selftest`; on a site every station
|
|
486
|
+
refresh does all of it - a single sensor as well as an array, using its own
|
|
487
|
+
detectability test's lines per source when there is no array to learn from,
|
|
488
|
+
so one geophone can still say when each rig was working - and the Seismic
|
|
489
|
+
Station Report and the station page carry the section, with the tracks drawn
|
|
490
|
+
against time.
|
|
491
|
+
|
|
407
492
|
### Audit / Update
|
|
408
493
|
|
|
409
494
|
The Audit / Update tab holds three things. The whole audit log
|