gea-program 0.24.0__tar.gz → 0.26.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.24.0/gea_program.egg-info → gea_program-0.26.0}/PKG-INFO +30 -2
- {gea_program-0.24.0 → gea_program-0.26.0}/README.md +29 -1
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/__init__.py +1 -1
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/__main__.py +137 -5
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/acceptance_tests.py +311 -1
- gea_program-0.26.0/gea/catalog_register.py +146 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/client_reports.py +27 -0
- gea_program-0.26.0/gea/friction_priors.py +133 -0
- gea_program-0.26.0/gea/help/catalog.md +11 -0
- gea_program-0.26.0/gea/help/slip.md +11 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/helplib.py +2 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/model_card.py +4 -2
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/rock_inventory.py +26 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/service.py +47 -2
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/shapefile.py +25 -5
- gea_program-0.26.0/gea/slip.py +276 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/structure.py +1 -1
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/survey_cmd.py +9 -1
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/web/app.html +44 -5
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/workspace.py +157 -3
- {gea_program-0.24.0 → gea_program-0.26.0/gea_program.egg-info}/PKG-INFO +30 -2
- {gea_program-0.24.0 → gea_program-0.26.0}/gea_program.egg-info/SOURCES.txt +5 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/pyproject.toml +1 -1
- {gea_program-0.24.0 → gea_program-0.26.0}/LICENSE +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/BENCH_TEST_PROTOCOL.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/accuracy_statement.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/alarm_engine.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/backup.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/bench.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/blind_harness.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/acex_lomonosov_age_depth_model.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/acex_lomonosov_age_depth_model.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/agassiz77_canada_temperature.csv +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/agassiz77_canada_temperature.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/barbados_110_consolidation.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/barbados_110_consolidation.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/bengal_u1452_grain_size.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/bengal_u1452_grain_size.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/blake_164_methane_isotopes.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/blake_164_methane_isotopes.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/chicxulub_m0077a_pwave_velocity.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/chicxulub_m0077a_pwave_velocity.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/collingwood_1_28_ks_complete.las +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/collingwood_1_28_ks_complete.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/costa_rica_odp_friction_envelope.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/costa_rica_odp_friction_envelope.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/dead_sea_5017_debrite_xrf_ms.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/dead_sea_5017_debrite_xrf_ms.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/dsdp_504b_physical_properties.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/dsdp_504b_physical_properties.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/dsdp_504b_sound_velocity.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/dsdp_504b_sound_velocity.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/elgygytgyn_5011_turbidites.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/elgygytgyn_5011_turbidites.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/epica_domec_co2_800kyr.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/epica_domec_co2_800kyr.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/fram_909_organic_petrography.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/fram_909_organic_petrography.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/gbr_325_coral_uth_ages.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/gbr_325_coral_uth_ages.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/gisp2_greenland_temperature.csv +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/gisp2_greenland_temperature.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/gom_308_t2p_insitu.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/gom_308_t2p_insitu.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/guaymas_385_dom_d13c.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/guaymas_385_dom_d13c.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/hikurangi_u1520_friction_insitu.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/hikurangi_u1520_friction_insitu.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/hydrate_ridge_204_ncr_hydrate.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/hydrate_ridge_204_ncr_hydrate.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/iodp_u1324_pore_pressure.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/iodp_u1324_pore_pressure.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/jfast_c0019_slow_slip_events.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/jfast_c0019_slow_slip_events.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/kennetcook_2_p129_excerpt.las +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/kennetcook_2_p129_excerpt.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/ktb_hb_bhgm_density.dat +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/ktb_hb_bhgm_density.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/ktb_hb_complog_6020_excerpt.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/ktb_hb_complog_6020_excerpt.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/ktb_hb_hlog246_temperature.dat +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/ktb_hb_hlog246_temperature.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/ktb_hb_rockmech_compress.dat +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/ktb_hb_rockmech_compress.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.dat +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/ktb_vb_rockmech_compress.dat +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/ktb_vb_rockmech_compress.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/ktb_vb_vlog251_temperature.dat +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/ktb_vb_vlog251_temperature.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/l06_06_nl_survey.csv +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/l06_06_nl_survey.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/l07_01_nl_excerpt.las +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/l07_01_nl_excerpt.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/mariana_1200_serpentinite_geochem.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/mariana_1200_serpentinite_geochem.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/med_160_sapropels.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/med_160_sapropels.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/nankai_megasplay_shear_strength.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/nankai_megasplay_shear_strength.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/odp_1027b_thermal_conductivity.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/odp_1027b_thermal_conductivity.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/odp_1027c_cork_temperature.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/odp_1027c_cork_temperature.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/odp_1165b_thermal_conductivity.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/odp_1165b_thermal_conductivity.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/odp_1274a_mantle_peridotite_mad.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/odp_1274a_mantle_peridotite_mad.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/odp_504b_dike_elastic_moduli.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/odp_504b_dike_elastic_moduli.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/odp_504b_leg137_borehole_fluids.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/odp_504b_leg137_borehole_fluids.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/odp_735b_gabbro_elastic_moduli.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/odp_735b_gabbro_elastic_moduli.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/peru_201_sulfate_reduction.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/peru_201_sulfate_reduction.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/scorpio_e1_sa_excerpt.las +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/scorpio_e1_sa_excerpt.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/sumatra_362_cohesion.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/sumatra_362_cohesion.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/university_6_17_no1_tx_excerpt.las +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/university_6_17_no1_tx_excerpt.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/ursa_308_xrd_mineralogy.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/ursa_308_xrd_mineralogy.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/volve_15_9_19_sr_excerpt.las +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/volve_15_9_19_sr_excerpt.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/volve_15_9_19a_core_excerpt.csv +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/volve_15_9_19a_core_excerpt.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/volve_f12_f14_production_excerpt.csv +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/volve_f12_f14_production_excerpt.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/walvis_208_petm_carbonate.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/walvis_208_petm_carbonate.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/woodlark_1109_rock_eval.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/catalog/woodlark_1109_rock_eval.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/certificates.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/cli.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/config_versioning.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/conformance.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/correlation.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/dashboard.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/deviation.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/dlis.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/dnp3.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/doctor.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/downhole_engine.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/drift_monitor.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/earth_model.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/elevation.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/etp.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/etp12_schemas.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/example_register_map.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/fat_sat.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/files.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/follower.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/forward_model.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/gamma.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/gauge_aging.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/gauge_specs.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/geodesy.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/gravity_reference.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/hartip.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/TESTER_GUIDE.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/alarms.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/audit-update.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/backup.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/conformance.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/data-in.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/dlis.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/doctor.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/drift.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/etp.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/field-ports.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/files.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/historian.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/instruments.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/interval.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/month-end.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/notifications.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/osdu.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/patches.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/ppdm.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/quakeml.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/quality.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/seedlink.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/seismic.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/site.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/sites.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/soak.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/sra.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/start.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/structure.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/transients.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/upkeep.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/vibration.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/help/well-tests.md +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/housekeeping.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/interval.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/inverse_engine.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/jobs.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/live_ports.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/loadtest.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/matplotlib_demo.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/modbus.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/modbus_rtu.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/month_end.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/mqtt_port.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/notify.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/opcua_port.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/operator_app.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/osdu.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/patches.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/permits.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/piwebapi.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/ports.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/ppdm.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/profile_catalog.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/project.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/qt6_downhole_app.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/quakeml.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/reconciler.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/reference/IU_ANMO_10_BHZ_response.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/reference/IU_ANMO_10_BHZ_response.xml +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/reference/libmseed_steim.provenance.json +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/reference/libmseed_steim1_4096.mseed +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/reference/libmseed_steim2_4096.mseed +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/reference/libmseed_steim2_512.mseed +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/sample_record.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/sample_well_profile.csv +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/sbom.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/seedlink.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/segy.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/seismic.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/seismic_array.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/seismic_assoc.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/seismic_detect.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/seismic_film.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/seismic_harmonic.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/seismic_qc.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/seismic_response.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/seismic_signature.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/seismic_track.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/seismic_uncertainty.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/seismic_unlisted.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/sensor_swap.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/service_life.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/shell.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/shut_in.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/sla_report.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/soak.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/sra.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/store_forward.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/strata_join.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/supervisor.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/survey_view.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/telemetry.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/tool_library.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/transient.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/vibration.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/well_assembler.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/well_test_validation.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/wits0.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea/witsml.py +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea_program.egg-info/dependency_links.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea_program.egg-info/entry_points.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea_program.egg-info/requires.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/gea_program.egg-info/top_level.txt +0 -0
- {gea_program-0.24.0 → gea_program-0.26.0}/setup.cfg +0 -0
- {gea_program-0.24.0 → gea_program-0.26.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.26.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
|
|
@@ -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 (365 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]")
|
|
@@ -648,6 +648,34 @@ against it; `gea seedlink --config ... --hello` prints what a server says of
|
|
|
648
648
|
itself; `gea help seedlink`. A TexNet station is served by EarthScope at
|
|
649
649
|
`rtserve.iris.washington.edu:18000`, network `TX`.
|
|
650
650
|
|
|
651
|
+
### Slip tendency on the mapped faults
|
|
652
|
+
|
|
653
|
+
The stress state the site declares - the three gradients and the ambient
|
|
654
|
+
pore pressure with their source, the SHmax azimuth with its source or from
|
|
655
|
+
the World Stress Map records near the well (`add-stress-map wsm2016.csv`,
|
|
656
|
+
`wsm --lat --lon`) - resolved on every mapped fault trace within the radius
|
|
657
|
+
of a well at the depth of its declared interval: the slip tendency at the
|
|
658
|
+
ambient and the increased pore pressure, the pressure to slip, the margin
|
|
659
|
+
left after the increase, worst and best declared case. The dip comes from
|
|
660
|
+
the layer where it states one (the Hennings 2021 BEG/TexNet layers do, and
|
|
661
|
+
publish their own pressure-to-slip, printed beside this arithmetic); UTM and
|
|
662
|
+
state-plane layers are unprojected from their .prj parameters. `set-stress`,
|
|
663
|
+
`slip --well`, `gea slip`; the SRA packet's section 2e; `gea help slip`. A
|
|
664
|
+
statement on declared inputs, not a probability and not a verdict.
|
|
665
|
+
|
|
666
|
+
### The catalogue accounted for
|
|
667
|
+
|
|
668
|
+
`gea catalog --list` is the register of the 52 shipped public datasets: for
|
|
669
|
+
each, what in this program reads it, or CARRIED, NO BAND with the reason;
|
|
670
|
+
the gate holds the register to the code both ways and reads every entry.
|
|
671
|
+
`gea survey --catalog <entry>` runs the strata survey on any catalogue log
|
|
672
|
+
with its provenance; `gea catalog --friction` reads seven laboratory
|
|
673
|
+
datasets on natural fault and sediment samples as the measured friction
|
|
674
|
+
envelope (0.21-0.90 on 70 measurements, none from the Permian) against
|
|
675
|
+
Byerlee's 0.6; `gea catalog --core` checks the published sandstone range
|
|
676
|
+
against the Volve core (65 of 70 plugs inside), an evaluation on the rock
|
|
677
|
+
inventory model card. `gea help catalog`.
|
|
678
|
+
|
|
651
679
|
### The log as delivered, and the historian
|
|
652
680
|
|
|
653
681
|
A well log arrives as DLIS (API RP66 V1); `gea/dlis.py` reads the container
|
|
@@ -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 (365 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]")
|
|
@@ -609,6 +609,34 @@ against it; `gea seedlink --config ... --hello` prints what a server says of
|
|
|
609
609
|
itself; `gea help seedlink`. A TexNet station is served by EarthScope at
|
|
610
610
|
`rtserve.iris.washington.edu:18000`, network `TX`.
|
|
611
611
|
|
|
612
|
+
### Slip tendency on the mapped faults
|
|
613
|
+
|
|
614
|
+
The stress state the site declares - the three gradients and the ambient
|
|
615
|
+
pore pressure with their source, the SHmax azimuth with its source or from
|
|
616
|
+
the World Stress Map records near the well (`add-stress-map wsm2016.csv`,
|
|
617
|
+
`wsm --lat --lon`) - resolved on every mapped fault trace within the radius
|
|
618
|
+
of a well at the depth of its declared interval: the slip tendency at the
|
|
619
|
+
ambient and the increased pore pressure, the pressure to slip, the margin
|
|
620
|
+
left after the increase, worst and best declared case. The dip comes from
|
|
621
|
+
the layer where it states one (the Hennings 2021 BEG/TexNet layers do, and
|
|
622
|
+
publish their own pressure-to-slip, printed beside this arithmetic); UTM and
|
|
623
|
+
state-plane layers are unprojected from their .prj parameters. `set-stress`,
|
|
624
|
+
`slip --well`, `gea slip`; the SRA packet's section 2e; `gea help slip`. A
|
|
625
|
+
statement on declared inputs, not a probability and not a verdict.
|
|
626
|
+
|
|
627
|
+
### The catalogue accounted for
|
|
628
|
+
|
|
629
|
+
`gea catalog --list` is the register of the 52 shipped public datasets: for
|
|
630
|
+
each, what in this program reads it, or CARRIED, NO BAND with the reason;
|
|
631
|
+
the gate holds the register to the code both ways and reads every entry.
|
|
632
|
+
`gea survey --catalog <entry>` runs the strata survey on any catalogue log
|
|
633
|
+
with its provenance; `gea catalog --friction` reads seven laboratory
|
|
634
|
+
datasets on natural fault and sediment samples as the measured friction
|
|
635
|
+
envelope (0.21-0.90 on 70 measurements, none from the Permian) against
|
|
636
|
+
Byerlee's 0.6; `gea catalog --core` checks the published sandstone range
|
|
637
|
+
against the Volve core (65 of 70 plugs inside), an evaluation on the rock
|
|
638
|
+
inventory model card. `gea help catalog`.
|
|
639
|
+
|
|
612
640
|
### The log as delivered, and the historian
|
|
613
641
|
|
|
614
642
|
A well log arrives as DLIS (API RP66 V1); `gea/dlis.py` reads the container
|
|
@@ -278,6 +278,19 @@ def main(argv=None) -> int:
|
|
|
278
278
|
p_lp.add_argument("--stream-csv", type=str, default=None, help="also write a historian-style CSV the other commands ingest")
|
|
279
279
|
p_lp.add_argument("--selftest", action="store_true", help="etp: the codec round-trip and a session against the simulated store on the loopback")
|
|
280
280
|
|
|
281
|
+
p_sl = sub.add_parser("slip", help="slip tendency on the mapped faults of a layer at a position, from declared gradients: --layer --lat --lon --depth-ft --sv --shmin --shmax (--shmax-azimuth or --wsm)")
|
|
282
|
+
p_sl.add_argument("--layer", type=str, required=True); p_sl.add_argument("--member", type=str, default=None); p_sl.add_argument("--feature-kind", type=str, choices=["fault", "fold"], default=None)
|
|
283
|
+
p_sl.add_argument("--lat", type=float, required=True); p_sl.add_argument("--lon", type=float, required=True); p_sl.add_argument("--radius-km", type=float, default=25.0)
|
|
284
|
+
p_sl.add_argument("--depth-ft", type=float, required=True)
|
|
285
|
+
p_sl.add_argument("--sv", type=float, required=True); p_sl.add_argument("--shmin", type=float, required=True); p_sl.add_argument("--shmax", type=float, required=True)
|
|
286
|
+
p_sl.add_argument("--pp", type=float, default=0.433); p_sl.add_argument("--shmax-azimuth", type=float, default=None); p_sl.add_argument("--wsm", type=str, default=None, help="the WSM database CSV: the azimuth from its records within 100 km")
|
|
287
|
+
p_sl.add_argument("--dips", type=float, nargs="+", default=[60.0, 75.0, 90.0]); p_sl.add_argument("--mu", type=float, nargs="+", default=[0.6]); p_sl.add_argument("--delta-pp", type=float, default=0.0)
|
|
288
|
+
p_sl.add_argument("--json", action="store_true")
|
|
289
|
+
p_cat = sub.add_parser("catalog", help="the shipped catalogue: --list every entry with what reads it; --unused the carried ones; --check reads every entry; --friction the measured friction envelope; --core the core check; --entry X --info | --stream-csv")
|
|
290
|
+
p_cat.add_argument("--list", action="store_true"); p_cat.add_argument("--unused", action="store_true"); p_cat.add_argument("--check", action="store_true")
|
|
291
|
+
p_cat.add_argument("--friction", action="store_true"); p_cat.add_argument("--core", action="store_true")
|
|
292
|
+
p_cat.add_argument("--entry", type=str, default=None); p_cat.add_argument("--info", action="store_true"); p_cat.add_argument("--stream-csv", type=str, default=None)
|
|
293
|
+
p_cat.add_argument("--json", action="store_true")
|
|
281
294
|
p_dl = sub.add_parser("dlis", help="a DLIS (RP66 V1) well log: --info describes it (origin, channels, frames, what was skipped); --frame --out writes the frame as a historian-style CSV; --to-las writes LAS 2.0")
|
|
282
295
|
p_dl.add_argument("--file", type=str, required=True)
|
|
283
296
|
p_dl.add_argument("--info", action="store_true")
|
|
@@ -314,7 +327,8 @@ def main(argv=None) -> int:
|
|
|
314
327
|
"add-seismic", "refresh-seismic", "remove-seismic", "sar-film", "refresh-all", "add-track", "refresh-track", "remove-track",
|
|
315
328
|
"seismic-dataset", "seismic-field", "add-site", "sites", "site-report", "remove-site", "rename",
|
|
316
329
|
"set-well", "sra-define", "sra-report", "associate", "osdu-export", "quakeml-export", "well-identity", "vibration-report",
|
|
317
|
-
"add-live-station", "live-fold", "live-run", "month-end", "add-layer", "layers", "remove-layer", "structure", "interval"
|
|
330
|
+
"add-live-station", "live-fold", "live-run", "month-end", "add-layer", "layers", "remove-layer", "structure", "interval",
|
|
331
|
+
"set-stress", "add-stress-map", "wsm", "slip"])
|
|
318
332
|
p_ws.add_argument("--stations", type=str, nargs="+", default=None, help="add-track: two or more array station ids of this workspace")
|
|
319
333
|
p_ws.add_argument("--site", type=str, default=None, help="site-report/remove-site: the site id")
|
|
320
334
|
p_ws.add_argument("--api", type=str, default=None, help="set-well: the API number")
|
|
@@ -394,6 +408,18 @@ def main(argv=None) -> int:
|
|
|
394
408
|
p_ws.add_argument("--formation-name", type=str, default=None, help="add-layer: the formation a contours layer maps (Wolfcamp)")
|
|
395
409
|
p_ws.add_argument("--role", type=str, choices=["top", "isopach", "base"], default=None, help="add-layer: what the contours are of that formation: its top elevation, its thickness, or its base")
|
|
396
410
|
p_ws.add_argument("--base-interval-ft", type=float, default=None, help="set-well: base of the disposal interval, ft")
|
|
411
|
+
p_ws.add_argument("--feature-kind", type=str, choices=["fault", "fold"], default=None, help="add-layer: what every feature of a structure layer is when its attributes do not say")
|
|
412
|
+
p_ws.add_argument("--sv", type=float, default=None, help="set-stress: vertical stress gradient, psi/ft")
|
|
413
|
+
p_ws.add_argument("--shmin", type=float, default=None, help="set-stress: minimum horizontal stress gradient, psi/ft")
|
|
414
|
+
p_ws.add_argument("--shmax", type=float, default=None, help="set-stress: maximum horizontal stress gradient, psi/ft")
|
|
415
|
+
p_ws.add_argument("--pp", type=float, default=None, help="set-stress: ambient pore-pressure gradient, psi/ft (hydrostatic 0.433 unless declared)")
|
|
416
|
+
p_ws.add_argument("--shmax-azimuth", type=float, default=None, help="set-stress: SHmax azimuth, degrees from north (or leave it to the stress map)")
|
|
417
|
+
p_ws.add_argument("--azimuth-source", type=str, default=None, help="set-stress: where the azimuth came from")
|
|
418
|
+
p_ws.add_argument("--gradients-source", type=str, default=None, help="set-stress: where the gradients came from")
|
|
419
|
+
p_ws.add_argument("--dips", type=float, nargs="+", default=None, help="set-stress: the dips to run when the layer states none (default 60 75 90)")
|
|
420
|
+
p_ws.add_argument("--mu", type=float, nargs="+", default=None, help="set-stress: the friction coefficients to run (default 0.6)")
|
|
421
|
+
p_ws.add_argument("--delta-pp", type=float, default=None, help="set-stress / slip: the pore-pressure increase to judge at, psi")
|
|
422
|
+
p_ws.add_argument("--depth-ft", type=float, default=None, help="slip: the depth to judge at (default the midpoint of the declared interval)")
|
|
397
423
|
p_ws.add_argument("--depth-ref", type=str, choices=["TVD", "MD"], default=None, help="set-well: the interval depths are true vertical (TVD) or measured (MD) depth")
|
|
398
424
|
p_ws.add_argument("--ref-elev-ft", type=float, default=None, help="set-well: the reference elevation the depths are measured from, ft above sea level")
|
|
399
425
|
p_ws.add_argument("--ref-elev-datum", type=str, choices=["KB", "GL", "DF"], default=None, help="set-well: what that elevation is: kelly bushing, ground level, derrick floor")
|
|
@@ -689,6 +715,7 @@ def main(argv=None) -> int:
|
|
|
689
715
|
p_sy = sub.add_parser("survey", help="a LAS or DLIS file in, one strata report out (--demo: the bundled public KTB excerpt); --out writes report.txt + survey.json")
|
|
690
716
|
p_sy.add_argument("--file", type=str, default=None, help="LAS 2.0 or DLIS (RP66 V1) file")
|
|
691
717
|
p_sy.add_argument("--frame", type=str, default=None, help="DLIS: the frame to read when the file holds several (gea dlis --file X --info lists them)")
|
|
718
|
+
p_sy.add_argument("--catalog", type=str, default=None, help="a catalogue LAS entry instead of a file (gea catalog --list names them)")
|
|
692
719
|
p_sy.add_argument("--demo", action="store_true")
|
|
693
720
|
p_sy.add_argument("--family", type=str, default="continental_crystalline", help="prior family for the estimator")
|
|
694
721
|
p_sy.add_argument("--lat", type=float, default=None)
|
|
@@ -823,9 +850,9 @@ def main(argv=None) -> int:
|
|
|
823
850
|
elif a.cmd == "survey":
|
|
824
851
|
import json as _json
|
|
825
852
|
from .survey_cmd import run_survey
|
|
826
|
-
if not (a.file or a.demo):
|
|
827
|
-
raise SystemExit("survey needs --file <LAS or DLIS> or --demo")
|
|
828
|
-
txt, machine = run_survey(path=a.file, demo=a.demo, family=a.family, lat=a.lat, elev=a.elev, frame=a.frame)
|
|
853
|
+
if not (a.file or a.demo or a.catalog):
|
|
854
|
+
raise SystemExit("survey needs --file <LAS or DLIS>, --catalog <entry> or --demo")
|
|
855
|
+
txt, machine = run_survey(path=a.file, demo=a.demo, family=a.family, lat=a.lat, elev=a.elev, frame=a.frame, catalog=a.catalog)
|
|
829
856
|
print(txt)
|
|
830
857
|
if a.out:
|
|
831
858
|
os.makedirs(a.out, exist_ok=True)
|
|
@@ -2089,7 +2116,7 @@ def main(argv=None) -> int:
|
|
|
2089
2116
|
elif a.action == "add-layer":
|
|
2090
2117
|
if not a.layer or not a.name:
|
|
2091
2118
|
raise SystemExit("add-layer needs --name <display> and --layer <shapefile zip | folder | .shp>")
|
|
2092
|
-
L = ws.add_layer(a.layer, a.name, actor=a.actor, citation=a.citation, member=a.member, formation=a.formation_name, role=a.role)
|
|
2119
|
+
L = ws.add_layer(a.layer, a.name, actor=a.actor, citation=a.citation, member=a.member, formation=a.formation_name, role=a.role, feature_kind=a.feature_kind)
|
|
2093
2120
|
tc = ", ".join(f"{k} {v}" for k, v in list(L["type_counts"].items())[:6])
|
|
2094
2121
|
print(f"layer {L['id']} ({L['kind']}): {L['n_features']} {L['shape_type']} features, {L['crs']['kind']} {L['crs'].get('datum') or ''}, extent lon {L['bbox'][0]:.3f}..{L['bbox'][2]:.3f} lat {L['bbox'][1]:.3f}..{L['bbox'][3]:.3f}"
|
|
2095
2122
|
+ (f"; contour value {L['value_attr']}" if L.get('value_attr') else ''))
|
|
@@ -2118,6 +2145,32 @@ def main(argv=None) -> int:
|
|
|
2118
2145
|
for line in L["lines"]:
|
|
2119
2146
|
print(" " + line)
|
|
2120
2147
|
return 0 if r["status"] == "OK" else 1
|
|
2148
|
+
elif a.action == "set-stress":
|
|
2149
|
+
st = ws.set_stress({"sv_psi_ft": a.sv, "shmin_psi_ft": a.shmin, "shmax_psi_ft": a.shmax, "pp_psi_ft": a.pp, "shmax_azimuth_deg": a.shmax_azimuth,
|
|
2150
|
+
"azimuth_source": a.azimuth_source, "gradients_source": a.gradients_source, "dips_deg": a.dips, "mus": a.mu, "delta_pp_psi": a.delta_pp, "note": a.note or ""}, actor=a.actor)
|
|
2151
|
+
print(f"stress: Sv {st['sv_psi_ft']} Shmin {st['shmin_psi_ft']} SHmax {st['shmax_psi_ft']} Pp {st['pp_psi_ft']} psi/ft ({st['gradients_source']}); "
|
|
2152
|
+
f"SHmax azimuth {st.get('shmax_azimuth_deg', 'from the stress map')} ({st.get('azimuth_source', '')}); dips {st['dips_deg']}; mu {st['mus']}; delta Pp {st['delta_pp_psi']} psi"); return 0
|
|
2153
|
+
elif a.action == "add-stress-map":
|
|
2154
|
+
if not a.file:
|
|
2155
|
+
raise SystemExit("add-stress-map needs --file <wsm.csv>")
|
|
2156
|
+
r = ws.add_stress_map(a.file, actor=a.actor, citation=a.citation)
|
|
2157
|
+
print(f"stress map: {r['n_records']} records kept as {r['file']} (sha256 {r['sha256'][:16]})"); return 0
|
|
2158
|
+
elif a.action == "wsm":
|
|
2159
|
+
if a.lat is None or a.lon is None:
|
|
2160
|
+
raise SystemExit("wsm needs --lat --lon [--radius-km]")
|
|
2161
|
+
r = ws.wsm_at(a.lat, a.lon, a.radius_km if a.radius_km is not None else 100.0)
|
|
2162
|
+
print(r.get("statement") or f"{r['status']}: {r.get('note', '')}")
|
|
2163
|
+
for rec in r.get("records", [])[:10]:
|
|
2164
|
+
print(f" {rec['distance_km']:7.1f} km {rec['azimuth']:5.0f} deg {rec['quality']} {rec['regime'] or '?':3s} {rec['type']:4s} {rec['locality'][:40]}")
|
|
2165
|
+
return 0 if r.get("n") else 1
|
|
2166
|
+
elif a.action == "slip":
|
|
2167
|
+
if not a.well:
|
|
2168
|
+
raise SystemExit("slip needs --well <id>")
|
|
2169
|
+
r = ws.well_slip(a.well, a.radius_km if a.radius_km is not None else 25.0, delta_pp_psi=a.delta_pp, depth_ft=a.depth_ft, actor=a.actor)
|
|
2170
|
+
print(f"slip {a.well}: {r['status']}")
|
|
2171
|
+
for line in r["lines"]:
|
|
2172
|
+
print(" " + line)
|
|
2173
|
+
return 0 if r["status"] == "OK" else 1
|
|
2121
2174
|
elif a.action == "interval":
|
|
2122
2175
|
if not a.well:
|
|
2123
2176
|
raise SystemExit("interval needs --well <id>")
|
|
@@ -2298,6 +2351,85 @@ def main(argv=None) -> int:
|
|
|
2298
2351
|
stop.set()
|
|
2299
2352
|
print("etp-sim: stopped")
|
|
2300
2353
|
return 0
|
|
2354
|
+
elif a.cmd == "slip":
|
|
2355
|
+
import json as _json
|
|
2356
|
+
from . import shapefile as _SF, slip as _SL, friction_priors as _FP
|
|
2357
|
+
try:
|
|
2358
|
+
L = _SF.read(a.layer, member=a.member)
|
|
2359
|
+
except (ValueError, OSError) as e:
|
|
2360
|
+
raise SystemExit(f"slip: {e}")
|
|
2361
|
+
if a.feature_kind:
|
|
2362
|
+
L.declared_kind = a.feature_kind
|
|
2363
|
+
az, az_src = a.shmax_azimuth, "declared"
|
|
2364
|
+
if az is None and a.wsm:
|
|
2365
|
+
nb = _SL.wsm_nearby(_SL.read_wsm(a.wsm), a.lat, a.lon, 100.0)
|
|
2366
|
+
if not nb["n"]:
|
|
2367
|
+
raise SystemExit("slip: no World Stress Map record of quality A/B/C within 100 km; declare --shmax-azimuth with its source")
|
|
2368
|
+
az, az_src = nb["azimuth_mean"], nb["statement"]
|
|
2369
|
+
if az is None:
|
|
2370
|
+
raise SystemExit("slip: give --shmax-azimuth or --wsm <wsm.csv>")
|
|
2371
|
+
faults = _SL.faults_in_radius(L, a.lat, a.lon, a.radius_km)
|
|
2372
|
+
r = _SL.statement(faults, a.depth_ft, {"sv_psi_ft": a.sv, "shmin_psi_ft": a.shmin, "shmax_psi_ft": a.shmax, "pp_psi_ft": a.pp}, az, tuple(a.dips), tuple(a.mu), a.delta_pp,
|
|
2373
|
+
sources={"shmax_azimuth": az_src, "gradients": "the command line"})
|
|
2374
|
+
r["friction_envelope"] = _FP.envelope()
|
|
2375
|
+
if a.json:
|
|
2376
|
+
print(_json.dumps(r, indent=1, default=str)); return 0
|
|
2377
|
+
for line in r["lines"]:
|
|
2378
|
+
print(line)
|
|
2379
|
+
print(r["friction_envelope"].get("statement", ""))
|
|
2380
|
+
return 0
|
|
2381
|
+
elif a.cmd == "catalog":
|
|
2382
|
+
import json as _json
|
|
2383
|
+
from . import catalog_register as _CR
|
|
2384
|
+
if a.friction:
|
|
2385
|
+
from . import friction_priors as _FP
|
|
2386
|
+
print(_json.dumps({"measured": _FP.measured(), "envelope": _FP.envelope()}, indent=1, default=str) if a.json else _FP.text()); return 0
|
|
2387
|
+
if a.core:
|
|
2388
|
+
from .rock_inventory import core_check
|
|
2389
|
+
c = core_check()
|
|
2390
|
+
print(_json.dumps(c, indent=1) if a.json else (f"core check ({c.get('entry')}): {c.get('how')}\n grain density {c['grain_density']['min']}-{c['grain_density']['max']} g/cc, porosity "
|
|
2391
|
+
f"{c['porosity_frac']['min']:.3f}-{c['porosity_frac']['max']:.3f}, bulk {c['bulk_density']['min']}-{c['bulk_density']['max']} g/cc; {c['outside']} plug(s) outside the range\n source: {c['source']} [{c['license']}]" if c.get('status') == 'OK' else str(c)))
|
|
2392
|
+
return 0
|
|
2393
|
+
if a.check:
|
|
2394
|
+
rows = _CR.check_all()
|
|
2395
|
+
bad = [r for r in rows if not r["ok"]]
|
|
2396
|
+
for r in rows:
|
|
2397
|
+
print(f" {'ok ' if r['ok'] else 'BAD'} {r['entry']:<40s} {r['shape']}")
|
|
2398
|
+
print(f"catalog: {len(rows) - len(bad)} of {len(rows)} entries read through their own readers" + (f"; {len(bad)} did not" if bad else ""))
|
|
2399
|
+
return 0 if not bad else 1
|
|
2400
|
+
if a.entry:
|
|
2401
|
+
from .profile_catalog import CATALOG as _CAT
|
|
2402
|
+
e = _CAT.get(a.entry)
|
|
2403
|
+
if e is None:
|
|
2404
|
+
raise SystemExit(f"catalog: no entry {a.entry!r} (gea catalog --list)")
|
|
2405
|
+
if a.stream_csv:
|
|
2406
|
+
st = e.stream()
|
|
2407
|
+
import csv as _csv
|
|
2408
|
+
with open(a.stream_csv, "w", newline="", encoding="utf-8") as f:
|
|
2409
|
+
wr = _csv.writer(f)
|
|
2410
|
+
wr.writerow([st.index_kind] + list(st.channels)); wr.writerow([""] + [st.channels[c].unit for c in st.channels])
|
|
2411
|
+
for i in range(len(st.index)):
|
|
2412
|
+
wr.writerow([float(st.index[i])] + ["" if st.channels[c].values[i] != st.channels[c].values[i] else float(st.channels[c].values[i]) for c in st.channels])
|
|
2413
|
+
print(f"{a.entry}: {len(st.index)} rows x {len(st.channels)} channels -> {a.stream_csv}")
|
|
2414
|
+
reg = next(r for r in _CR.register() if r["entry"] == a.entry)
|
|
2415
|
+
if a.json:
|
|
2416
|
+
print(_json.dumps({"register": reg, "provenance": e.provenance}, indent=1, default=str))
|
|
2417
|
+
else:
|
|
2418
|
+
print(f"{a.entry}: {reg['kind']} ({reg['tier']}), {reg['file']} {reg['bytes']:,} bytes, {reg['status']}")
|
|
2419
|
+
for u in reg["used_by"]:
|
|
2420
|
+
print(" used by:", u)
|
|
2421
|
+
for k in ("well", "source_database", "source_url", "license", "fetch_date", "coverage", "purpose"):
|
|
2422
|
+
if e.provenance.get(k):
|
|
2423
|
+
print(f" {k}: {str(e.provenance[k])[:300]}")
|
|
2424
|
+
print(" reads as:", _CR.check_entry(e)["shape"])
|
|
2425
|
+
return 0
|
|
2426
|
+
rows = _CR.register()
|
|
2427
|
+
if a.json:
|
|
2428
|
+
print(_json.dumps({"entries": rows, "audit": _CR.audit()}, indent=1, default=str)); return 0
|
|
2429
|
+
print(_CR.text(rows, unused_only=a.unused))
|
|
2430
|
+
if a.unused:
|
|
2431
|
+
print(f"\n {_CR.NO_BAND_REASON}")
|
|
2432
|
+
return 0
|
|
2301
2433
|
elif a.cmd == "dlis":
|
|
2302
2434
|
import json as _json
|
|
2303
2435
|
from .dlis import DlisError, DlisFile, read as _read_dlis
|