gea-program 0.5.0__tar.gz → 0.7.0__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.5.0/gea_program.egg-info → gea_program-0.7.0}/PKG-INFO +142 -10
- {gea_program-0.5.0 → gea_program-0.7.0}/README.md +141 -9
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/__init__.py +3 -1
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/__main__.py +309 -5
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/acceptance_tests.py +696 -3
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/cli.py +18 -12
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/client_reports.py +182 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/doctor.py +45 -6
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/help/TESTER_GUIDE.md +1 -1
- gea_program-0.7.0/gea/help/audit-update.md +13 -0
- gea_program-0.7.0/gea/help/seismic.md +13 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/helplib.py +2 -1
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/jobs.py +11 -4
- gea_program-0.7.0/gea/permits.py +222 -0
- gea_program-0.7.0/gea/reference/IU_ANMO_10_BHZ_response.provenance.json +122 -0
- gea_program-0.7.0/gea/reference/IU_ANMO_10_BHZ_response.xml +188 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/seismic.py +175 -89
- gea_program-0.7.0/gea/seismic_array.py +592 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/seismic_detect.py +1 -1
- gea_program-0.7.0/gea/seismic_film.py +303 -0
- gea_program-0.7.0/gea/seismic_response.py +358 -0
- gea_program-0.7.0/gea/seismic_track.py +435 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/service.py +192 -4
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/web/app.html +275 -2
- gea_program-0.7.0/gea/workspace.py +800 -0
- {gea_program-0.5.0 → gea_program-0.7.0/gea_program.egg-info}/PKG-INFO +142 -10
- {gea_program-0.5.0 → gea_program-0.7.0}/gea_program.egg-info/SOURCES.txt +8 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/pyproject.toml +1 -1
- gea_program-0.5.0/gea/help/seismic.md +0 -13
- gea_program-0.5.0/gea/workspace.py +0 -359
- {gea_program-0.5.0 → gea_program-0.7.0}/LICENSE +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/BENCH_TEST_PROTOCOL.md +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/accuracy_statement.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/alarm_engine.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/bench.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/blind_harness.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/acex_lomonosov_age_depth_model.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/acex_lomonosov_age_depth_model.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/agassiz77_canada_temperature.csv +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/agassiz77_canada_temperature.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/barbados_110_consolidation.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/barbados_110_consolidation.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/bengal_u1452_grain_size.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/bengal_u1452_grain_size.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/blake_164_methane_isotopes.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/blake_164_methane_isotopes.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/chicxulub_m0077a_pwave_velocity.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/chicxulub_m0077a_pwave_velocity.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/collingwood_1_28_ks_complete.las +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/collingwood_1_28_ks_complete.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/costa_rica_odp_friction_envelope.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/costa_rica_odp_friction_envelope.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/dead_sea_5017_debrite_xrf_ms.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/dead_sea_5017_debrite_xrf_ms.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/dsdp_504b_physical_properties.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/dsdp_504b_physical_properties.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/dsdp_504b_sound_velocity.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/dsdp_504b_sound_velocity.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/elgygytgyn_5011_turbidites.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/elgygytgyn_5011_turbidites.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/epica_domec_co2_800kyr.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/epica_domec_co2_800kyr.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/fram_909_organic_petrography.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/fram_909_organic_petrography.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/gbr_325_coral_uth_ages.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/gbr_325_coral_uth_ages.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/gisp2_greenland_temperature.csv +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/gisp2_greenland_temperature.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/gom_308_t2p_insitu.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/gom_308_t2p_insitu.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/guaymas_385_dom_d13c.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/guaymas_385_dom_d13c.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/hikurangi_u1520_friction_insitu.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/hikurangi_u1520_friction_insitu.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/hydrate_ridge_204_ncr_hydrate.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/hydrate_ridge_204_ncr_hydrate.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/iodp_u1324_pore_pressure.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/iodp_u1324_pore_pressure.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/jfast_c0019_slow_slip_events.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/jfast_c0019_slow_slip_events.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/kennetcook_2_p129_excerpt.las +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/kennetcook_2_p129_excerpt.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/ktb_hb_bhgm_density.dat +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/ktb_hb_bhgm_density.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/ktb_hb_complog_6020_excerpt.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/ktb_hb_complog_6020_excerpt.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/ktb_hb_hlog246_temperature.dat +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/ktb_hb_hlog246_temperature.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/ktb_hb_rockmech_compress.dat +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/ktb_hb_rockmech_compress.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.dat +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/ktb_vb_rockmech_compress.dat +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/ktb_vb_rockmech_compress.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/ktb_vb_vlog251_temperature.dat +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/ktb_vb_vlog251_temperature.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/l06_06_nl_survey.csv +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/l06_06_nl_survey.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/l07_01_nl_excerpt.las +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/l07_01_nl_excerpt.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/mariana_1200_serpentinite_geochem.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/mariana_1200_serpentinite_geochem.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/med_160_sapropels.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/med_160_sapropels.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/nankai_megasplay_shear_strength.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/nankai_megasplay_shear_strength.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/odp_1027b_thermal_conductivity.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/odp_1027b_thermal_conductivity.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/odp_1027c_cork_temperature.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/odp_1027c_cork_temperature.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/odp_1165b_thermal_conductivity.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/odp_1165b_thermal_conductivity.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/odp_1274a_mantle_peridotite_mad.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/odp_1274a_mantle_peridotite_mad.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/odp_504b_dike_elastic_moduli.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/odp_504b_dike_elastic_moduli.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/odp_504b_leg137_borehole_fluids.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/odp_504b_leg137_borehole_fluids.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/odp_735b_gabbro_elastic_moduli.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/odp_735b_gabbro_elastic_moduli.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/peru_201_sulfate_reduction.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/peru_201_sulfate_reduction.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/scorpio_e1_sa_excerpt.las +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/scorpio_e1_sa_excerpt.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/sumatra_362_cohesion.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/sumatra_362_cohesion.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/university_6_17_no1_tx_excerpt.las +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/university_6_17_no1_tx_excerpt.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/ursa_308_xrd_mineralogy.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/ursa_308_xrd_mineralogy.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/volve_15_9_19_sr_excerpt.las +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/volve_15_9_19_sr_excerpt.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/volve_15_9_19a_core_excerpt.csv +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/volve_15_9_19a_core_excerpt.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/volve_f12_f14_production_excerpt.csv +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/volve_f12_f14_production_excerpt.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/walvis_208_petm_carbonate.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/walvis_208_petm_carbonate.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/woodlark_1109_rock_eval.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/catalog/woodlark_1109_rock_eval.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/certificates.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/config_versioning.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/correlation.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/dashboard.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/deviation.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/downhole_engine.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/drift_monitor.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/earth_model.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/example_register_map.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/fat_sat.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/files.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/follower.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/forward_model.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/gamma.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/gauge_aging.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/gauge_specs.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/gravity_reference.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/help/alarms.md +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/help/data-in.md +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/help/doctor.md +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/help/drift.md +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/help/files.md +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/help/instruments.md +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/help/notifications.md +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/help/patches.md +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/help/quality.md +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/help/site.md +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/help/start.md +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/help/transients.md +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/help/upkeep.md +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/help/well-tests.md +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/housekeeping.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/inverse_engine.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/live_ports.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/loadtest.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/matplotlib_demo.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/modbus.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/model_card.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/mqtt_port.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/notify.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/opcua_port.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/operator_app.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/patches.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/ports.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/profile_catalog.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/project.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/qt6_downhole_app.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/reconciler.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/reference/libmseed_steim.provenance.json +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/reference/libmseed_steim1_4096.mseed +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/reference/libmseed_steim2_4096.mseed +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/reference/libmseed_steim2_512.mseed +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/rock_inventory.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/sample_record.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/sample_well_profile.csv +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/sbom.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/segy.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/sensor_swap.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/service_life.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/shell.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/shut_in.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/sla_report.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/store_forward.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/strata_join.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/survey_cmd.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/survey_view.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/telemetry.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/tool_library.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/transient.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/well_assembler.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/well_test_validation.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/wits0.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea/witsml.py +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea_program.egg-info/dependency_links.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea_program.egg-info/entry_points.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea_program.egg-info/requires.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/gea_program.egg-info/top_level.txt +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/setup.cfg +0 -0
- {gea_program-0.5.0 → gea_program-0.7.0}/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.7.0
|
|
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
|
|
@@ -98,8 +98,22 @@ reaches a client document. Nothing unmeasured is ever reported as met.
|
|
|
98
98
|
lines above the local floor out, and the detectability test: one station's
|
|
99
99
|
record against a list of known rigs with positions and working windows,
|
|
100
100
|
verdict per rig, the detection radius bracketed between the farthest rig
|
|
101
|
-
heard and the nearest not heard. The
|
|
102
|
-
|
|
101
|
+
heard and the nearest not heard. The instrument response (`seismic_response.py`):
|
|
102
|
+
the station's StationXML read into its stages, evaluated as evalresp does,
|
|
103
|
+
removed with a water level - counts to m/s, m or m/s^2. The decoder is proven
|
|
104
|
+
against libmseed on a corpus of real-station files; the response against
|
|
105
|
+
evalresp on a real IRIS channel. The array step (`seismic_array.py`):
|
|
106
|
+
beamforming over a slowness grid with the array response function's width
|
|
107
|
+
beside every bearing, the crossing of bearings from several arrays with its
|
|
108
|
+
ellipse, location from lags with the velocity named as an input, and the
|
|
109
|
+
array's detectability test - did it point at each known rig. On a site the
|
|
110
|
+
leg lives on the dashboard: a Seismic page where a station or an array is
|
|
111
|
+
added by upload with its rigs list and station file, refreshed as a job,
|
|
112
|
+
and read - spectrum, lines, verdicts, bearing - with its Seismic Station
|
|
113
|
+
Report under Reports; and the SAR panel on that page, a control panel and a
|
|
114
|
+
screen that plays the leg's arithmetic forward in time on the labelled
|
|
115
|
+
synthetic scene (`seismic_film.py`), every frame stamped SIMULATION_SELF_TEST.
|
|
116
|
+
See *The second leg*.
|
|
103
117
|
|
|
104
118
|
## Quick start
|
|
105
119
|
|
|
@@ -111,8 +125,8 @@ gea dashboard --catalog-well volve_f12_f14_production_excerpt:15/9-F-12:10000 --
|
|
|
111
125
|
gea client-report --report accuracy --out client_report
|
|
112
126
|
gea model-cards --out model_cards
|
|
113
127
|
gea sbom --out sbom
|
|
114
|
-
gea accept # the product gate (
|
|
115
|
-
gea help drift # the help library, by the job (
|
|
128
|
+
gea accept # the product gate (266 checks)
|
|
129
|
+
gea help drift # the help library, by the job (16 pages; the same text is on every dashboard page)
|
|
116
130
|
gea guide # the click-by-click tester guide (docs/TESTER_GUIDE.md)
|
|
117
131
|
gea gui # the desktop window (pip install "gea-program[desktop]")
|
|
118
132
|
gea workspace --path C:\site --action init --name "Pad 3" # a site folder
|
|
@@ -240,10 +254,10 @@ text: JSON, JSON lines, CSV, Markdown, HTML.
|
|
|
240
254
|
|
|
241
255
|
### The help library
|
|
242
256
|
|
|
243
|
-
`gea help` lists
|
|
257
|
+
`gea help` lists sixteen pages indexed by the job a reader arrives with -
|
|
244
258
|
start, bring data in, quality rules, drift, well tests, alarms and the month,
|
|
245
259
|
the site, instruments, shut-ins and build-ups, seismic (the second leg),
|
|
246
|
-
patches, files, notifications, which code is running, upkeep. Each page carries four lines and stops: the
|
|
260
|
+
patches, files, notifications, which code is running, audit / update, upkeep. Each page carries four lines and stops: the
|
|
247
261
|
command, what it writes, the one number to check, and what the page will not
|
|
248
262
|
call a measurement. The pages ship inside the package (`gea/help/`), and the
|
|
249
263
|
same text is what `/api/help` serves and what the dashboard shows under every
|
|
@@ -309,7 +323,60 @@ produces the standard spectral products: the Welch PSD, a spectrogram, and
|
|
|
309
323
|
the lines that persist above a running-median floor in the band where rig
|
|
310
324
|
machinery sits (1-50 Hz by default). The decoder is proven in the acceptance
|
|
311
325
|
suite against records written by libmseed, the format's reference
|
|
312
|
-
implementation (`gea/reference/`).
|
|
326
|
+
implementation (`gea/reference/`), and `tools/seismic_reader_check.py` runs it
|
|
327
|
+
against libmseed on about ninety real-station files of every encoding and
|
|
328
|
+
byte order (the obspy test corpus, fetched with pip, never redistributed):
|
|
329
|
+
every time-series file sample-exact.
|
|
330
|
+
|
|
331
|
+
Physical units come from the station's own response file. `gea seismic
|
|
332
|
+
--action remove-response --stationxml station.xml` reads the FDSN StationXML
|
|
333
|
+
the archives serve beside the data (`fetch --with-response` fetches it),
|
|
334
|
+
builds the response from its stages - the poles and zeros of the sensor, the
|
|
335
|
+
gain of each stage, the FIR and IIR coefficients of the digitizer with their
|
|
336
|
+
delay corrections - the way evalresp builds it, and removes it in the
|
|
337
|
+
frequency domain with a water level and a pre-filter, giving velocity,
|
|
338
|
+
displacement or acceleration in SI units. The acceptance suite holds the
|
|
339
|
+
evaluation to evalresp's numbers on a real IRIS channel (IU.ANMO.10.BHZ,
|
|
340
|
+
`gea/reference/`) to one part in a hundred thousand. A station file whose
|
|
341
|
+
stages disagree with their own declared sensitivity, a polynomial stage, a
|
|
342
|
+
channel the file does not cover: refused with the reason, never patched, and
|
|
343
|
+
the record stays in counts, labelled.
|
|
344
|
+
|
|
345
|
+
One station detects; an array gives a direction. `gea seismic --action beam`
|
|
346
|
+
takes three or more sensors' records with their positions and returns the
|
|
347
|
+
back-azimuth and slowness the band's energy crossed the array with, by
|
|
348
|
+
frequency-domain beamforming over a slowness grid (the conventional Bartlett
|
|
349
|
+
beam, or Capon), refined around its maximum - and, beside the bearing, the
|
|
350
|
+
array response function's half-power width, which is the resolution the
|
|
351
|
+
geometry allows at that band, and whether the geometry has aliasing lobes
|
|
352
|
+
there, so a lone peak is not mistaken for a source. `--action array-detect`
|
|
353
|
+
is the array's form of the detectability test: for each rig on the
|
|
354
|
+
ground-truth list, in the windows it worked alone, did the array point at it
|
|
355
|
+
within its own tolerance (POINTED, NOT_POINTED, INCOHERENT). `--action
|
|
356
|
+
locate` crosses the bearings of two or more arrays, weighted by their
|
|
357
|
+
uncertainties, and returns the point with its 1-sigma ellipse, the crossing
|
|
358
|
+
angle and the residual of each bearing; a location from station-pair lags is
|
|
359
|
+
there too, with the medium velocity it needs named as the input it is. On
|
|
360
|
+
the labelled synthetic scene (`--action array-selftest`) a 1.2 km,
|
|
361
|
+
nine-sensor array points at rigs from 6 to 45 km within 0.3 degrees against
|
|
362
|
+
a 7-degree tolerance, and three arrays' bearings cross within a kilometre of
|
|
363
|
+
the rig. What none of it claims: a position from one array, a bearing to a
|
|
364
|
+
source nearer than five apertures, a direction finer than the array response
|
|
365
|
+
function, or a velocity that was not measured.
|
|
366
|
+
|
|
367
|
+
On a site the leg is a page. Seismic, beside Wells: a station (one record)
|
|
368
|
+
or an array (one record per sensor and a sensors CSV) is added by upload with
|
|
369
|
+
its position, its rigs list and, when there is one, its StationXML, and lives
|
|
370
|
+
under `seismic/<station>/` in the workspace with its files copied in verbatim
|
|
371
|
+
and hashed. Refresh - a button, or `gea workspace --action refresh-seismic`,
|
|
372
|
+
and like every other action a job with its log - reads the record, removes
|
|
373
|
+
the response when the station file is there, writes the spectrum, the
|
|
374
|
+
persistent lines, the detectability verdicts and, for an array, the beam and
|
|
375
|
+
the array verdicts under `reports/seismic/<station>/`, and the Seismic
|
|
376
|
+
Station Report beside them; the station page draws the spectrum and shows
|
|
377
|
+
the tables with the limits printed under each. The home page counts the
|
|
378
|
+
stations and the listed rigs heard. The sample report is in
|
|
379
|
+
`docs/report_samples/`.
|
|
313
380
|
|
|
314
381
|
The first number is the detectability test (`--action detect`): one station's
|
|
315
382
|
continuous record, the station's position, and a CSV of known rigs - position
|
|
@@ -330,6 +397,70 @@ a rig not on the list, and any quantity in physical units until a station's
|
|
|
330
397
|
response has been applied and named. `--action selftest` runs the test on a
|
|
331
398
|
synthetic scene and labels its output SIMULATION_SELF_TEST.
|
|
332
399
|
|
|
400
|
+
The SAR panel at the foot of the Seismic page is the control panel and the
|
|
401
|
+
screen. "Run the scene" is `gea workspace --action sar-film` as a job: the
|
|
402
|
+
labelled synthetic array scene, one frame per window, written under
|
|
403
|
+
`reports/seismic/SIMULATION/`. The screen plays it - the trace, the
|
|
404
|
+
spectrogram column arriving, the beam power map on the slowness grid swinging
|
|
405
|
+
onto the working rig, the map with the bearing and the array's tolerance
|
|
406
|
+
wedge against the rigs where the scene put them, the tally per rig, and at
|
|
407
|
+
the end the array detectability test's verdict on the whole scene, the same
|
|
408
|
+
function a real record goes through. Every frame carries SIMULATION_SELF_TEST
|
|
409
|
+
and the line "not a measurement of any ground"; a real record is refreshed on
|
|
410
|
+
its station and the page shows what it earned, never a film. `gea seismic
|
|
411
|
+
--action sar-film --out film.json` writes the same film from the command line.
|
|
412
|
+
|
|
413
|
+
### Tracks - the time dimension
|
|
414
|
+
|
|
415
|
+
The array step gives one bearing for one window. `seismic_track.py` runs it
|
|
416
|
+
window after window: a bearing history per array (a bearing with the array's
|
|
417
|
+
own tolerance where the beam was coherent, a gap where it was not, change
|
|
418
|
+
points where the bearing moved beyond the tolerance), a position history from
|
|
419
|
+
two or more arrays crossed window by window (a position only where two or
|
|
420
|
+
more arrays were coherent, the bearings crossed at 15 degrees or more and the
|
|
421
|
+
point lies in front of every array - every other window a gap with its
|
|
422
|
+
reason), and the track: the principal line through the longest continuous
|
|
423
|
+
segment of positions, with its heading, length and rate, the ellipses beside
|
|
424
|
+
every point, and segments listed apart where positions jump farther than
|
|
425
|
+
their ellipses allow (a coherent background crossing in a quiet hour is not
|
|
426
|
+
the rig an hour later). The verdict against ground truth - the lateral's
|
|
427
|
+
surveyed points or a permit's surface hole with its date, interpolated to
|
|
428
|
+
each position's time - is TRACKED, PARTIAL, NOT_TRACKED or INSUFFICIENT, with
|
|
429
|
+
the fraction and the heading difference printed. The labelled scene behind
|
|
430
|
+
`--action track-selftest` is a bit advancing along a straight lateral past
|
|
431
|
+
two arrays. On a site a track is two or more array stations and an optional
|
|
432
|
+
truth CSV, refreshed as a job into the Seismic Track Report; the track view
|
|
433
|
+
shows the map with every position's ellipse, a slider through time and the
|
|
434
|
+
bearings over time, and the SAR panel's second scene plays the same thing
|
|
435
|
+
forward with the track drawn as it is earned.
|
|
436
|
+
|
|
437
|
+
Ground truth from a permit export: `gea permits --file export.csv --out
|
|
438
|
+
rigs.csv --within LAT LON KM` finds the columns of a regulator's query (an
|
|
439
|
+
identifier, a surface position, a spud or approval date) by name, with a
|
|
440
|
+
mapping file when the guesses are wrong, and writes the rigs CSV the tests
|
|
441
|
+
read beside an import note that says which columns were used, how many rows
|
|
442
|
+
were dropped and why, and how many end dates it assumed (a permit rarely says
|
|
443
|
+
when drilling stopped). The Seismic page's add form takes a permit export in
|
|
444
|
+
place of the rigs CSV and keeps both.
|
|
445
|
+
|
|
446
|
+
### Audit / Update
|
|
447
|
+
|
|
448
|
+
The Audit / Update tab holds three things. The whole audit log
|
|
449
|
+
(`records/audit.jsonl`) with filters by who, by action and since a date, and
|
|
450
|
+
a CSV download - Administration keeps the last hundred lines and points here.
|
|
451
|
+
The program card: the running version and code path, the newest release on
|
|
452
|
+
PyPI (`current`, `behind`, or `PyPI not reachable` when the machine is
|
|
453
|
+
offline), which extras are installed here, and links to PyPI, the releases
|
|
454
|
+
with the install kits, and the CHANGELOG; "Update the program from PyPI"
|
|
455
|
+
(admin) is `gea update` as a job - pip --upgrade from the same Python, after
|
|
456
|
+
which the service must be restarted; the program never restarts itself, and
|
|
457
|
+
an offline kit is updated by installing the newer kit. The data card: every
|
|
458
|
+
report against its source - `current` or `stale` when the source changed
|
|
459
|
+
after the report was written - and "Update every report from its source"
|
|
460
|
+
(operator), which is `gea workspace --action refresh-all` as a job: the
|
|
461
|
+
dashboard for every well, then every seismic station, errors collected and
|
|
462
|
+
listed, never hidden.
|
|
463
|
+
|
|
333
464
|
### Before a site goes live
|
|
334
465
|
|
|
335
466
|
`deploy/README.md` is the checklist: keep the service on the loopback
|
|
@@ -377,12 +508,13 @@ attaches the zips to the GitHub release of that tag.
|
|
|
377
508
|
gea/ the package: engines, record layer, reports, monitor, dashboard, cli, shell, acceptance suite,
|
|
378
509
|
workspace, jobs, service, patches and web/app.html (the served dashboard)
|
|
379
510
|
gea/catalog/ 52 public archive entries, each with a provenance file
|
|
380
|
-
gea/reference/ miniSEED records written by libmseed, with
|
|
511
|
+
gea/reference/ miniSEED records written by libmseed and an IRIS StationXML with evalresp's numbers, with provenance: the independent references
|
|
381
512
|
docs/report_samples/ one rendered example of every client report, from this build (tools/render_report_samples.py; SAMPLES.md names each command)
|
|
382
513
|
docs/ TESTER_GUIDE.md, REQUIREMENTS_MATRIX.md (the scope-of-work mirror that shaped the reports), examples/ (port configs),
|
|
383
514
|
SESSION_LOG.md (the working record, session by session),
|
|
384
515
|
commercial/ (pilot proposal, bench readiness, commercial use), HISTORY.md (the ship-by-ship record)
|
|
385
|
-
tools/ standalone_check.py (the self-contained guard; run by ci and ship.ps1), build_installer.py (the kit)
|
|
516
|
+
tools/ standalone_check.py (the self-contained guard; run by ci and ship.ps1), build_installer.py (the kit),
|
|
517
|
+
render_report_samples.py (docs/report_samples), seismic_reader_check.py (the reader against libmseed)
|
|
386
518
|
CHANGELOG.md per-release summary (a tag ships only with its section); SHIP_LOG.md is written by ship.ps1
|
|
387
519
|
tests/ pytest wrapper around the acceptance suite and the standalone check
|
|
388
520
|
```
|
|
@@ -59,8 +59,22 @@ reaches a client document. Nothing unmeasured is ever reported as met.
|
|
|
59
59
|
lines above the local floor out, and the detectability test: one station's
|
|
60
60
|
record against a list of known rigs with positions and working windows,
|
|
61
61
|
verdict per rig, the detection radius bracketed between the farthest rig
|
|
62
|
-
heard and the nearest not heard. The
|
|
63
|
-
|
|
62
|
+
heard and the nearest not heard. The instrument response (`seismic_response.py`):
|
|
63
|
+
the station's StationXML read into its stages, evaluated as evalresp does,
|
|
64
|
+
removed with a water level - counts to m/s, m or m/s^2. The decoder is proven
|
|
65
|
+
against libmseed on a corpus of real-station files; the response against
|
|
66
|
+
evalresp on a real IRIS channel. The array step (`seismic_array.py`):
|
|
67
|
+
beamforming over a slowness grid with the array response function's width
|
|
68
|
+
beside every bearing, the crossing of bearings from several arrays with its
|
|
69
|
+
ellipse, location from lags with the velocity named as an input, and the
|
|
70
|
+
array's detectability test - did it point at each known rig. On a site the
|
|
71
|
+
leg lives on the dashboard: a Seismic page where a station or an array is
|
|
72
|
+
added by upload with its rigs list and station file, refreshed as a job,
|
|
73
|
+
and read - spectrum, lines, verdicts, bearing - with its Seismic Station
|
|
74
|
+
Report under Reports; and the SAR panel on that page, a control panel and a
|
|
75
|
+
screen that plays the leg's arithmetic forward in time on the labelled
|
|
76
|
+
synthetic scene (`seismic_film.py`), every frame stamped SIMULATION_SELF_TEST.
|
|
77
|
+
See *The second leg*.
|
|
64
78
|
|
|
65
79
|
## Quick start
|
|
66
80
|
|
|
@@ -72,8 +86,8 @@ gea dashboard --catalog-well volve_f12_f14_production_excerpt:15/9-F-12:10000 --
|
|
|
72
86
|
gea client-report --report accuracy --out client_report
|
|
73
87
|
gea model-cards --out model_cards
|
|
74
88
|
gea sbom --out sbom
|
|
75
|
-
gea accept # the product gate (
|
|
76
|
-
gea help drift # the help library, by the job (
|
|
89
|
+
gea accept # the product gate (266 checks)
|
|
90
|
+
gea help drift # the help library, by the job (16 pages; the same text is on every dashboard page)
|
|
77
91
|
gea guide # the click-by-click tester guide (docs/TESTER_GUIDE.md)
|
|
78
92
|
gea gui # the desktop window (pip install "gea-program[desktop]")
|
|
79
93
|
gea workspace --path C:\site --action init --name "Pad 3" # a site folder
|
|
@@ -201,10 +215,10 @@ text: JSON, JSON lines, CSV, Markdown, HTML.
|
|
|
201
215
|
|
|
202
216
|
### The help library
|
|
203
217
|
|
|
204
|
-
`gea help` lists
|
|
218
|
+
`gea help` lists sixteen pages indexed by the job a reader arrives with -
|
|
205
219
|
start, bring data in, quality rules, drift, well tests, alarms and the month,
|
|
206
220
|
the site, instruments, shut-ins and build-ups, seismic (the second leg),
|
|
207
|
-
patches, files, notifications, which code is running, upkeep. Each page carries four lines and stops: the
|
|
221
|
+
patches, files, notifications, which code is running, audit / update, upkeep. Each page carries four lines and stops: the
|
|
208
222
|
command, what it writes, the one number to check, and what the page will not
|
|
209
223
|
call a measurement. The pages ship inside the package (`gea/help/`), and the
|
|
210
224
|
same text is what `/api/help` serves and what the dashboard shows under every
|
|
@@ -270,7 +284,60 @@ produces the standard spectral products: the Welch PSD, a spectrogram, and
|
|
|
270
284
|
the lines that persist above a running-median floor in the band where rig
|
|
271
285
|
machinery sits (1-50 Hz by default). The decoder is proven in the acceptance
|
|
272
286
|
suite against records written by libmseed, the format's reference
|
|
273
|
-
implementation (`gea/reference/`).
|
|
287
|
+
implementation (`gea/reference/`), and `tools/seismic_reader_check.py` runs it
|
|
288
|
+
against libmseed on about ninety real-station files of every encoding and
|
|
289
|
+
byte order (the obspy test corpus, fetched with pip, never redistributed):
|
|
290
|
+
every time-series file sample-exact.
|
|
291
|
+
|
|
292
|
+
Physical units come from the station's own response file. `gea seismic
|
|
293
|
+
--action remove-response --stationxml station.xml` reads the FDSN StationXML
|
|
294
|
+
the archives serve beside the data (`fetch --with-response` fetches it),
|
|
295
|
+
builds the response from its stages - the poles and zeros of the sensor, the
|
|
296
|
+
gain of each stage, the FIR and IIR coefficients of the digitizer with their
|
|
297
|
+
delay corrections - the way evalresp builds it, and removes it in the
|
|
298
|
+
frequency domain with a water level and a pre-filter, giving velocity,
|
|
299
|
+
displacement or acceleration in SI units. The acceptance suite holds the
|
|
300
|
+
evaluation to evalresp's numbers on a real IRIS channel (IU.ANMO.10.BHZ,
|
|
301
|
+
`gea/reference/`) to one part in a hundred thousand. A station file whose
|
|
302
|
+
stages disagree with their own declared sensitivity, a polynomial stage, a
|
|
303
|
+
channel the file does not cover: refused with the reason, never patched, and
|
|
304
|
+
the record stays in counts, labelled.
|
|
305
|
+
|
|
306
|
+
One station detects; an array gives a direction. `gea seismic --action beam`
|
|
307
|
+
takes three or more sensors' records with their positions and returns the
|
|
308
|
+
back-azimuth and slowness the band's energy crossed the array with, by
|
|
309
|
+
frequency-domain beamforming over a slowness grid (the conventional Bartlett
|
|
310
|
+
beam, or Capon), refined around its maximum - and, beside the bearing, the
|
|
311
|
+
array response function's half-power width, which is the resolution the
|
|
312
|
+
geometry allows at that band, and whether the geometry has aliasing lobes
|
|
313
|
+
there, so a lone peak is not mistaken for a source. `--action array-detect`
|
|
314
|
+
is the array's form of the detectability test: for each rig on the
|
|
315
|
+
ground-truth list, in the windows it worked alone, did the array point at it
|
|
316
|
+
within its own tolerance (POINTED, NOT_POINTED, INCOHERENT). `--action
|
|
317
|
+
locate` crosses the bearings of two or more arrays, weighted by their
|
|
318
|
+
uncertainties, and returns the point with its 1-sigma ellipse, the crossing
|
|
319
|
+
angle and the residual of each bearing; a location from station-pair lags is
|
|
320
|
+
there too, with the medium velocity it needs named as the input it is. On
|
|
321
|
+
the labelled synthetic scene (`--action array-selftest`) a 1.2 km,
|
|
322
|
+
nine-sensor array points at rigs from 6 to 45 km within 0.3 degrees against
|
|
323
|
+
a 7-degree tolerance, and three arrays' bearings cross within a kilometre of
|
|
324
|
+
the rig. What none of it claims: a position from one array, a bearing to a
|
|
325
|
+
source nearer than five apertures, a direction finer than the array response
|
|
326
|
+
function, or a velocity that was not measured.
|
|
327
|
+
|
|
328
|
+
On a site the leg is a page. Seismic, beside Wells: a station (one record)
|
|
329
|
+
or an array (one record per sensor and a sensors CSV) is added by upload with
|
|
330
|
+
its position, its rigs list and, when there is one, its StationXML, and lives
|
|
331
|
+
under `seismic/<station>/` in the workspace with its files copied in verbatim
|
|
332
|
+
and hashed. Refresh - a button, or `gea workspace --action refresh-seismic`,
|
|
333
|
+
and like every other action a job with its log - reads the record, removes
|
|
334
|
+
the response when the station file is there, writes the spectrum, the
|
|
335
|
+
persistent lines, the detectability verdicts and, for an array, the beam and
|
|
336
|
+
the array verdicts under `reports/seismic/<station>/`, and the Seismic
|
|
337
|
+
Station Report beside them; the station page draws the spectrum and shows
|
|
338
|
+
the tables with the limits printed under each. The home page counts the
|
|
339
|
+
stations and the listed rigs heard. The sample report is in
|
|
340
|
+
`docs/report_samples/`.
|
|
274
341
|
|
|
275
342
|
The first number is the detectability test (`--action detect`): one station's
|
|
276
343
|
continuous record, the station's position, and a CSV of known rigs - position
|
|
@@ -291,6 +358,70 @@ a rig not on the list, and any quantity in physical units until a station's
|
|
|
291
358
|
response has been applied and named. `--action selftest` runs the test on a
|
|
292
359
|
synthetic scene and labels its output SIMULATION_SELF_TEST.
|
|
293
360
|
|
|
361
|
+
The SAR panel at the foot of the Seismic page is the control panel and the
|
|
362
|
+
screen. "Run the scene" is `gea workspace --action sar-film` as a job: the
|
|
363
|
+
labelled synthetic array scene, one frame per window, written under
|
|
364
|
+
`reports/seismic/SIMULATION/`. The screen plays it - the trace, the
|
|
365
|
+
spectrogram column arriving, the beam power map on the slowness grid swinging
|
|
366
|
+
onto the working rig, the map with the bearing and the array's tolerance
|
|
367
|
+
wedge against the rigs where the scene put them, the tally per rig, and at
|
|
368
|
+
the end the array detectability test's verdict on the whole scene, the same
|
|
369
|
+
function a real record goes through. Every frame carries SIMULATION_SELF_TEST
|
|
370
|
+
and the line "not a measurement of any ground"; a real record is refreshed on
|
|
371
|
+
its station and the page shows what it earned, never a film. `gea seismic
|
|
372
|
+
--action sar-film --out film.json` writes the same film from the command line.
|
|
373
|
+
|
|
374
|
+
### Tracks - the time dimension
|
|
375
|
+
|
|
376
|
+
The array step gives one bearing for one window. `seismic_track.py` runs it
|
|
377
|
+
window after window: a bearing history per array (a bearing with the array's
|
|
378
|
+
own tolerance where the beam was coherent, a gap where it was not, change
|
|
379
|
+
points where the bearing moved beyond the tolerance), a position history from
|
|
380
|
+
two or more arrays crossed window by window (a position only where two or
|
|
381
|
+
more arrays were coherent, the bearings crossed at 15 degrees or more and the
|
|
382
|
+
point lies in front of every array - every other window a gap with its
|
|
383
|
+
reason), and the track: the principal line through the longest continuous
|
|
384
|
+
segment of positions, with its heading, length and rate, the ellipses beside
|
|
385
|
+
every point, and segments listed apart where positions jump farther than
|
|
386
|
+
their ellipses allow (a coherent background crossing in a quiet hour is not
|
|
387
|
+
the rig an hour later). The verdict against ground truth - the lateral's
|
|
388
|
+
surveyed points or a permit's surface hole with its date, interpolated to
|
|
389
|
+
each position's time - is TRACKED, PARTIAL, NOT_TRACKED or INSUFFICIENT, with
|
|
390
|
+
the fraction and the heading difference printed. The labelled scene behind
|
|
391
|
+
`--action track-selftest` is a bit advancing along a straight lateral past
|
|
392
|
+
two arrays. On a site a track is two or more array stations and an optional
|
|
393
|
+
truth CSV, refreshed as a job into the Seismic Track Report; the track view
|
|
394
|
+
shows the map with every position's ellipse, a slider through time and the
|
|
395
|
+
bearings over time, and the SAR panel's second scene plays the same thing
|
|
396
|
+
forward with the track drawn as it is earned.
|
|
397
|
+
|
|
398
|
+
Ground truth from a permit export: `gea permits --file export.csv --out
|
|
399
|
+
rigs.csv --within LAT LON KM` finds the columns of a regulator's query (an
|
|
400
|
+
identifier, a surface position, a spud or approval date) by name, with a
|
|
401
|
+
mapping file when the guesses are wrong, and writes the rigs CSV the tests
|
|
402
|
+
read beside an import note that says which columns were used, how many rows
|
|
403
|
+
were dropped and why, and how many end dates it assumed (a permit rarely says
|
|
404
|
+
when drilling stopped). The Seismic page's add form takes a permit export in
|
|
405
|
+
place of the rigs CSV and keeps both.
|
|
406
|
+
|
|
407
|
+
### Audit / Update
|
|
408
|
+
|
|
409
|
+
The Audit / Update tab holds three things. The whole audit log
|
|
410
|
+
(`records/audit.jsonl`) with filters by who, by action and since a date, and
|
|
411
|
+
a CSV download - Administration keeps the last hundred lines and points here.
|
|
412
|
+
The program card: the running version and code path, the newest release on
|
|
413
|
+
PyPI (`current`, `behind`, or `PyPI not reachable` when the machine is
|
|
414
|
+
offline), which extras are installed here, and links to PyPI, the releases
|
|
415
|
+
with the install kits, and the CHANGELOG; "Update the program from PyPI"
|
|
416
|
+
(admin) is `gea update` as a job - pip --upgrade from the same Python, after
|
|
417
|
+
which the service must be restarted; the program never restarts itself, and
|
|
418
|
+
an offline kit is updated by installing the newer kit. The data card: every
|
|
419
|
+
report against its source - `current` or `stale` when the source changed
|
|
420
|
+
after the report was written - and "Update every report from its source"
|
|
421
|
+
(operator), which is `gea workspace --action refresh-all` as a job: the
|
|
422
|
+
dashboard for every well, then every seismic station, errors collected and
|
|
423
|
+
listed, never hidden.
|
|
424
|
+
|
|
294
425
|
### Before a site goes live
|
|
295
426
|
|
|
296
427
|
`deploy/README.md` is the checklist: keep the service on the loopback
|
|
@@ -338,12 +469,13 @@ attaches the zips to the GitHub release of that tag.
|
|
|
338
469
|
gea/ the package: engines, record layer, reports, monitor, dashboard, cli, shell, acceptance suite,
|
|
339
470
|
workspace, jobs, service, patches and web/app.html (the served dashboard)
|
|
340
471
|
gea/catalog/ 52 public archive entries, each with a provenance file
|
|
341
|
-
gea/reference/ miniSEED records written by libmseed, with
|
|
472
|
+
gea/reference/ miniSEED records written by libmseed and an IRIS StationXML with evalresp's numbers, with provenance: the independent references
|
|
342
473
|
docs/report_samples/ one rendered example of every client report, from this build (tools/render_report_samples.py; SAMPLES.md names each command)
|
|
343
474
|
docs/ TESTER_GUIDE.md, REQUIREMENTS_MATRIX.md (the scope-of-work mirror that shaped the reports), examples/ (port configs),
|
|
344
475
|
SESSION_LOG.md (the working record, session by session),
|
|
345
476
|
commercial/ (pilot proposal, bench readiness, commercial use), HISTORY.md (the ship-by-ship record)
|
|
346
|
-
tools/ standalone_check.py (the self-contained guard; run by ci and ship.ps1), build_installer.py (the kit)
|
|
477
|
+
tools/ standalone_check.py (the self-contained guard; run by ci and ship.ps1), build_installer.py (the kit),
|
|
478
|
+
render_report_samples.py (docs/report_samples), seismic_reader_check.py (the reader against libmseed)
|
|
347
479
|
CHANGELOG.md per-release summary (a tag ships only with its section); SHIP_LOG.md is written by ship.ps1
|
|
348
480
|
tests/ pytest wrapper around the acceptance suite and the standalone check
|
|
349
481
|
```
|
|
@@ -100,6 +100,8 @@ from .seismic import (
|
|
|
100
100
|
welch_psd, spectrogram, persistent_lines, band_power,
|
|
101
101
|
)
|
|
102
102
|
from .seismic_detect import Source as SeismicSource, detectability_test, load_sources_csv, haversine_km, DRILLING_BAND_HZ
|
|
103
|
+
from .seismic_response import read_stationxml, remove_response, transfer as response_transfer, fdsn_stationxml
|
|
104
|
+
from .seismic_array import Sensor as SeismicSensor, load_sensors_csv, beam as array_beam, array_detectability, intersect_backazimuths, locate_from_lags
|
|
103
105
|
from .bench import (
|
|
104
106
|
bench_analysis, bench_selftest,
|
|
105
107
|
)
|
|
@@ -120,7 +122,7 @@ from .profile_catalog import (
|
|
|
120
122
|
read_pangaea_txt,
|
|
121
123
|
)
|
|
122
124
|
|
|
123
|
-
__version__ = "0.
|
|
125
|
+
__version__ = "0.7.0"
|
|
124
126
|
__all__ = [
|
|
125
127
|
"aging_rate", "rate_psi_yr", "accuracy_psi",
|
|
126
128
|
"Sensor", "SimulatorConfig", "DownholeEngine",
|