gea-program 0.7.0__tar.gz → 0.8.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.
Files changed (227) hide show
  1. {gea_program-0.7.0/gea_program.egg-info → gea_program-0.8.0}/PKG-INFO +91 -6
  2. {gea_program-0.7.0 → gea_program-0.8.0}/README.md +90 -5
  3. {gea_program-0.7.0 → gea_program-0.8.0}/gea/__init__.py +1 -1
  4. {gea_program-0.7.0 → gea_program-0.8.0}/gea/__main__.py +438 -12
  5. {gea_program-0.7.0 → gea_program-0.8.0}/gea/acceptance_tests.py +971 -3
  6. {gea_program-0.7.0 → gea_program-0.8.0}/gea/client_reports.py +390 -9
  7. {gea_program-0.7.0 → gea_program-0.8.0}/gea/doctor.py +89 -0
  8. gea_program-0.8.0/gea/geodesy.py +536 -0
  9. {gea_program-0.7.0 → gea_program-0.8.0}/gea/help/doctor.md +7 -0
  10. gea_program-0.8.0/gea/help/seismic.md +13 -0
  11. gea_program-0.8.0/gea/help/site.md +53 -0
  12. gea_program-0.8.0/gea/help/sites.md +13 -0
  13. {gea_program-0.7.0 → gea_program-0.8.0}/gea/helplib.py +2 -1
  14. {gea_program-0.7.0 → gea_program-0.8.0}/gea/operator_app.py +12 -3
  15. {gea_program-0.7.0 → gea_program-0.8.0}/gea/permits.py +83 -9
  16. {gea_program-0.7.0 → gea_program-0.8.0}/gea/seismic_array.py +23 -7
  17. {gea_program-0.7.0 → gea_program-0.8.0}/gea/seismic_detect.py +20 -6
  18. gea_program-0.8.0/gea/seismic_harmonic.py +889 -0
  19. gea_program-0.8.0/gea/seismic_qc.py +517 -0
  20. gea_program-0.8.0/gea/seismic_signature.py +557 -0
  21. {gea_program-0.7.0 → gea_program-0.8.0}/gea/seismic_track.py +40 -5
  22. gea_program-0.8.0/gea/seismic_uncertainty.py +294 -0
  23. gea_program-0.8.0/gea/seismic_unlisted.py +303 -0
  24. {gea_program-0.7.0 → gea_program-0.8.0}/gea/service.py +114 -4
  25. gea_program-0.8.0/gea/supervisor.py +256 -0
  26. {gea_program-0.7.0 → gea_program-0.8.0}/gea/web/app.html +148 -3
  27. {gea_program-0.7.0 → gea_program-0.8.0}/gea/workspace.py +488 -17
  28. {gea_program-0.7.0 → gea_program-0.8.0/gea_program.egg-info}/PKG-INFO +91 -6
  29. {gea_program-0.7.0 → gea_program-0.8.0}/gea_program.egg-info/SOURCES.txt +8 -0
  30. {gea_program-0.7.0 → gea_program-0.8.0}/pyproject.toml +1 -1
  31. gea_program-0.7.0/gea/help/seismic.md +0 -13
  32. gea_program-0.7.0/gea/help/site.md +0 -15
  33. {gea_program-0.7.0 → gea_program-0.8.0}/LICENSE +0 -0
  34. {gea_program-0.7.0 → gea_program-0.8.0}/gea/BENCH_TEST_PROTOCOL.md +0 -0
  35. {gea_program-0.7.0 → gea_program-0.8.0}/gea/accuracy_statement.py +0 -0
  36. {gea_program-0.7.0 → gea_program-0.8.0}/gea/alarm_engine.py +0 -0
  37. {gea_program-0.7.0 → gea_program-0.8.0}/gea/bench.py +0 -0
  38. {gea_program-0.7.0 → gea_program-0.8.0}/gea/blind_harness.py +0 -0
  39. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/acex_lomonosov_age_depth_model.provenance.json +0 -0
  40. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/acex_lomonosov_age_depth_model.txt +0 -0
  41. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/agassiz77_canada_temperature.csv +0 -0
  42. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/agassiz77_canada_temperature.provenance.json +0 -0
  43. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/barbados_110_consolidation.provenance.json +0 -0
  44. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/barbados_110_consolidation.txt +0 -0
  45. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/bengal_u1452_grain_size.provenance.json +0 -0
  46. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/bengal_u1452_grain_size.txt +0 -0
  47. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/blake_164_methane_isotopes.provenance.json +0 -0
  48. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/blake_164_methane_isotopes.txt +0 -0
  49. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/chicxulub_m0077a_pwave_velocity.provenance.json +0 -0
  50. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/chicxulub_m0077a_pwave_velocity.txt +0 -0
  51. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/collingwood_1_28_ks_complete.las +0 -0
  52. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/collingwood_1_28_ks_complete.provenance.json +0 -0
  53. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/costa_rica_odp_friction_envelope.provenance.json +0 -0
  54. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/costa_rica_odp_friction_envelope.txt +0 -0
  55. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/dead_sea_5017_debrite_xrf_ms.provenance.json +0 -0
  56. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/dead_sea_5017_debrite_xrf_ms.txt +0 -0
  57. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/dsdp_504b_physical_properties.provenance.json +0 -0
  58. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/dsdp_504b_physical_properties.txt +0 -0
  59. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/dsdp_504b_sound_velocity.provenance.json +0 -0
  60. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/dsdp_504b_sound_velocity.txt +0 -0
  61. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/elgygytgyn_5011_turbidites.provenance.json +0 -0
  62. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/elgygytgyn_5011_turbidites.txt +0 -0
  63. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/epica_domec_co2_800kyr.provenance.json +0 -0
  64. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/epica_domec_co2_800kyr.txt +0 -0
  65. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/fram_909_organic_petrography.provenance.json +0 -0
  66. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/fram_909_organic_petrography.txt +0 -0
  67. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/gbr_325_coral_uth_ages.provenance.json +0 -0
  68. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/gbr_325_coral_uth_ages.txt +0 -0
  69. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/gisp2_greenland_temperature.csv +0 -0
  70. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/gisp2_greenland_temperature.provenance.json +0 -0
  71. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/gom_308_t2p_insitu.provenance.json +0 -0
  72. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/gom_308_t2p_insitu.txt +0 -0
  73. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/guaymas_385_dom_d13c.provenance.json +0 -0
  74. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/guaymas_385_dom_d13c.txt +0 -0
  75. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/hikurangi_u1520_friction_insitu.provenance.json +0 -0
  76. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/hikurangi_u1520_friction_insitu.txt +0 -0
  77. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/hydrate_ridge_204_ncr_hydrate.provenance.json +0 -0
  78. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/hydrate_ridge_204_ncr_hydrate.txt +0 -0
  79. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/iodp_u1324_pore_pressure.provenance.json +0 -0
  80. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/iodp_u1324_pore_pressure.txt +0 -0
  81. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/jfast_c0019_slow_slip_events.provenance.json +0 -0
  82. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/jfast_c0019_slow_slip_events.txt +0 -0
  83. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/kennetcook_2_p129_excerpt.las +0 -0
  84. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/kennetcook_2_p129_excerpt.provenance.json +0 -0
  85. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/ktb_hb_bhgm_density.dat +0 -0
  86. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/ktb_hb_bhgm_density.provenance.json +0 -0
  87. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/ktb_hb_complog_6020_excerpt.provenance.json +0 -0
  88. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/ktb_hb_complog_6020_excerpt.txt +0 -0
  89. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/ktb_hb_hlog246_temperature.dat +0 -0
  90. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/ktb_hb_hlog246_temperature.provenance.json +0 -0
  91. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/ktb_hb_rockmech_compress.dat +0 -0
  92. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/ktb_hb_rockmech_compress.provenance.json +0 -0
  93. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.dat +0 -0
  94. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.provenance.json +0 -0
  95. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/ktb_vb_rockmech_compress.dat +0 -0
  96. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/ktb_vb_rockmech_compress.provenance.json +0 -0
  97. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/ktb_vb_vlog251_temperature.dat +0 -0
  98. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/ktb_vb_vlog251_temperature.provenance.json +0 -0
  99. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/l06_06_nl_survey.csv +0 -0
  100. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/l06_06_nl_survey.provenance.json +0 -0
  101. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/l07_01_nl_excerpt.las +0 -0
  102. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/l07_01_nl_excerpt.provenance.json +0 -0
  103. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/mariana_1200_serpentinite_geochem.provenance.json +0 -0
  104. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/mariana_1200_serpentinite_geochem.txt +0 -0
  105. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/med_160_sapropels.provenance.json +0 -0
  106. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/med_160_sapropels.txt +0 -0
  107. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/nankai_megasplay_shear_strength.provenance.json +0 -0
  108. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/nankai_megasplay_shear_strength.txt +0 -0
  109. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/odp_1027b_thermal_conductivity.provenance.json +0 -0
  110. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/odp_1027b_thermal_conductivity.txt +0 -0
  111. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/odp_1027c_cork_temperature.provenance.json +0 -0
  112. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/odp_1027c_cork_temperature.txt +0 -0
  113. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/odp_1165b_thermal_conductivity.provenance.json +0 -0
  114. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/odp_1165b_thermal_conductivity.txt +0 -0
  115. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/odp_1274a_mantle_peridotite_mad.provenance.json +0 -0
  116. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/odp_1274a_mantle_peridotite_mad.txt +0 -0
  117. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/odp_504b_dike_elastic_moduli.provenance.json +0 -0
  118. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/odp_504b_dike_elastic_moduli.txt +0 -0
  119. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/odp_504b_leg137_borehole_fluids.provenance.json +0 -0
  120. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/odp_504b_leg137_borehole_fluids.txt +0 -0
  121. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/odp_735b_gabbro_elastic_moduli.provenance.json +0 -0
  122. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/odp_735b_gabbro_elastic_moduli.txt +0 -0
  123. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/peru_201_sulfate_reduction.provenance.json +0 -0
  124. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/peru_201_sulfate_reduction.txt +0 -0
  125. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/scorpio_e1_sa_excerpt.las +0 -0
  126. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/scorpio_e1_sa_excerpt.provenance.json +0 -0
  127. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/sumatra_362_cohesion.provenance.json +0 -0
  128. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/sumatra_362_cohesion.txt +0 -0
  129. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/university_6_17_no1_tx_excerpt.las +0 -0
  130. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/university_6_17_no1_tx_excerpt.provenance.json +0 -0
  131. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/ursa_308_xrd_mineralogy.provenance.json +0 -0
  132. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/ursa_308_xrd_mineralogy.txt +0 -0
  133. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/volve_15_9_19_sr_excerpt.las +0 -0
  134. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/volve_15_9_19_sr_excerpt.provenance.json +0 -0
  135. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/volve_15_9_19a_core_excerpt.csv +0 -0
  136. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/volve_15_9_19a_core_excerpt.provenance.json +0 -0
  137. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/volve_f12_f14_production_excerpt.csv +0 -0
  138. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/volve_f12_f14_production_excerpt.provenance.json +0 -0
  139. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/walvis_208_petm_carbonate.provenance.json +0 -0
  140. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/walvis_208_petm_carbonate.txt +0 -0
  141. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/woodlark_1109_rock_eval.provenance.json +0 -0
  142. {gea_program-0.7.0 → gea_program-0.8.0}/gea/catalog/woodlark_1109_rock_eval.txt +0 -0
  143. {gea_program-0.7.0 → gea_program-0.8.0}/gea/certificates.py +0 -0
  144. {gea_program-0.7.0 → gea_program-0.8.0}/gea/cli.py +0 -0
  145. {gea_program-0.7.0 → gea_program-0.8.0}/gea/config_versioning.py +0 -0
  146. {gea_program-0.7.0 → gea_program-0.8.0}/gea/correlation.py +0 -0
  147. {gea_program-0.7.0 → gea_program-0.8.0}/gea/dashboard.py +0 -0
  148. {gea_program-0.7.0 → gea_program-0.8.0}/gea/deviation.py +0 -0
  149. {gea_program-0.7.0 → gea_program-0.8.0}/gea/downhole_engine.py +0 -0
  150. {gea_program-0.7.0 → gea_program-0.8.0}/gea/drift_monitor.py +0 -0
  151. {gea_program-0.7.0 → gea_program-0.8.0}/gea/earth_model.py +0 -0
  152. {gea_program-0.7.0 → gea_program-0.8.0}/gea/example_register_map.json +0 -0
  153. {gea_program-0.7.0 → gea_program-0.8.0}/gea/fat_sat.py +0 -0
  154. {gea_program-0.7.0 → gea_program-0.8.0}/gea/files.py +0 -0
  155. {gea_program-0.7.0 → gea_program-0.8.0}/gea/follower.py +0 -0
  156. {gea_program-0.7.0 → gea_program-0.8.0}/gea/forward_model.py +0 -0
  157. {gea_program-0.7.0 → gea_program-0.8.0}/gea/gamma.py +0 -0
  158. {gea_program-0.7.0 → gea_program-0.8.0}/gea/gauge_aging.py +0 -0
  159. {gea_program-0.7.0 → gea_program-0.8.0}/gea/gauge_specs.py +0 -0
  160. {gea_program-0.7.0 → gea_program-0.8.0}/gea/gravity_reference.py +0 -0
  161. {gea_program-0.7.0 → gea_program-0.8.0}/gea/help/TESTER_GUIDE.md +0 -0
  162. {gea_program-0.7.0 → gea_program-0.8.0}/gea/help/alarms.md +0 -0
  163. {gea_program-0.7.0 → gea_program-0.8.0}/gea/help/audit-update.md +0 -0
  164. {gea_program-0.7.0 → gea_program-0.8.0}/gea/help/data-in.md +0 -0
  165. {gea_program-0.7.0 → gea_program-0.8.0}/gea/help/drift.md +0 -0
  166. {gea_program-0.7.0 → gea_program-0.8.0}/gea/help/files.md +0 -0
  167. {gea_program-0.7.0 → gea_program-0.8.0}/gea/help/instruments.md +0 -0
  168. {gea_program-0.7.0 → gea_program-0.8.0}/gea/help/notifications.md +0 -0
  169. {gea_program-0.7.0 → gea_program-0.8.0}/gea/help/patches.md +0 -0
  170. {gea_program-0.7.0 → gea_program-0.8.0}/gea/help/quality.md +0 -0
  171. {gea_program-0.7.0 → gea_program-0.8.0}/gea/help/start.md +0 -0
  172. {gea_program-0.7.0 → gea_program-0.8.0}/gea/help/transients.md +0 -0
  173. {gea_program-0.7.0 → gea_program-0.8.0}/gea/help/upkeep.md +0 -0
  174. {gea_program-0.7.0 → gea_program-0.8.0}/gea/help/well-tests.md +0 -0
  175. {gea_program-0.7.0 → gea_program-0.8.0}/gea/housekeeping.py +0 -0
  176. {gea_program-0.7.0 → gea_program-0.8.0}/gea/inverse_engine.py +0 -0
  177. {gea_program-0.7.0 → gea_program-0.8.0}/gea/jobs.py +0 -0
  178. {gea_program-0.7.0 → gea_program-0.8.0}/gea/live_ports.py +0 -0
  179. {gea_program-0.7.0 → gea_program-0.8.0}/gea/loadtest.py +0 -0
  180. {gea_program-0.7.0 → gea_program-0.8.0}/gea/matplotlib_demo.py +0 -0
  181. {gea_program-0.7.0 → gea_program-0.8.0}/gea/modbus.py +0 -0
  182. {gea_program-0.7.0 → gea_program-0.8.0}/gea/model_card.py +0 -0
  183. {gea_program-0.7.0 → gea_program-0.8.0}/gea/mqtt_port.py +0 -0
  184. {gea_program-0.7.0 → gea_program-0.8.0}/gea/notify.py +0 -0
  185. {gea_program-0.7.0 → gea_program-0.8.0}/gea/opcua_port.py +0 -0
  186. {gea_program-0.7.0 → gea_program-0.8.0}/gea/patches.py +0 -0
  187. {gea_program-0.7.0 → gea_program-0.8.0}/gea/ports.py +0 -0
  188. {gea_program-0.7.0 → gea_program-0.8.0}/gea/profile_catalog.py +0 -0
  189. {gea_program-0.7.0 → gea_program-0.8.0}/gea/project.py +0 -0
  190. {gea_program-0.7.0 → gea_program-0.8.0}/gea/qt6_downhole_app.py +0 -0
  191. {gea_program-0.7.0 → gea_program-0.8.0}/gea/reconciler.py +0 -0
  192. {gea_program-0.7.0 → gea_program-0.8.0}/gea/reference/IU_ANMO_10_BHZ_response.provenance.json +0 -0
  193. {gea_program-0.7.0 → gea_program-0.8.0}/gea/reference/IU_ANMO_10_BHZ_response.xml +0 -0
  194. {gea_program-0.7.0 → gea_program-0.8.0}/gea/reference/libmseed_steim.provenance.json +0 -0
  195. {gea_program-0.7.0 → gea_program-0.8.0}/gea/reference/libmseed_steim1_4096.mseed +0 -0
  196. {gea_program-0.7.0 → gea_program-0.8.0}/gea/reference/libmseed_steim2_4096.mseed +0 -0
  197. {gea_program-0.7.0 → gea_program-0.8.0}/gea/reference/libmseed_steim2_512.mseed +0 -0
  198. {gea_program-0.7.0 → gea_program-0.8.0}/gea/rock_inventory.py +0 -0
  199. {gea_program-0.7.0 → gea_program-0.8.0}/gea/sample_record.py +0 -0
  200. {gea_program-0.7.0 → gea_program-0.8.0}/gea/sample_well_profile.csv +0 -0
  201. {gea_program-0.7.0 → gea_program-0.8.0}/gea/sbom.py +0 -0
  202. {gea_program-0.7.0 → gea_program-0.8.0}/gea/segy.py +0 -0
  203. {gea_program-0.7.0 → gea_program-0.8.0}/gea/seismic.py +0 -0
  204. {gea_program-0.7.0 → gea_program-0.8.0}/gea/seismic_film.py +0 -0
  205. {gea_program-0.7.0 → gea_program-0.8.0}/gea/seismic_response.py +0 -0
  206. {gea_program-0.7.0 → gea_program-0.8.0}/gea/sensor_swap.py +0 -0
  207. {gea_program-0.7.0 → gea_program-0.8.0}/gea/service_life.py +0 -0
  208. {gea_program-0.7.0 → gea_program-0.8.0}/gea/shell.py +0 -0
  209. {gea_program-0.7.0 → gea_program-0.8.0}/gea/shut_in.py +0 -0
  210. {gea_program-0.7.0 → gea_program-0.8.0}/gea/sla_report.py +0 -0
  211. {gea_program-0.7.0 → gea_program-0.8.0}/gea/store_forward.py +0 -0
  212. {gea_program-0.7.0 → gea_program-0.8.0}/gea/strata_join.py +0 -0
  213. {gea_program-0.7.0 → gea_program-0.8.0}/gea/survey_cmd.py +0 -0
  214. {gea_program-0.7.0 → gea_program-0.8.0}/gea/survey_view.py +0 -0
  215. {gea_program-0.7.0 → gea_program-0.8.0}/gea/telemetry.py +0 -0
  216. {gea_program-0.7.0 → gea_program-0.8.0}/gea/tool_library.py +0 -0
  217. {gea_program-0.7.0 → gea_program-0.8.0}/gea/transient.py +0 -0
  218. {gea_program-0.7.0 → gea_program-0.8.0}/gea/well_assembler.py +0 -0
  219. {gea_program-0.7.0 → gea_program-0.8.0}/gea/well_test_validation.py +0 -0
  220. {gea_program-0.7.0 → gea_program-0.8.0}/gea/wits0.py +0 -0
  221. {gea_program-0.7.0 → gea_program-0.8.0}/gea/witsml.py +0 -0
  222. {gea_program-0.7.0 → gea_program-0.8.0}/gea_program.egg-info/dependency_links.txt +0 -0
  223. {gea_program-0.7.0 → gea_program-0.8.0}/gea_program.egg-info/entry_points.txt +0 -0
  224. {gea_program-0.7.0 → gea_program-0.8.0}/gea_program.egg-info/requires.txt +0 -0
  225. {gea_program-0.7.0 → gea_program-0.8.0}/gea_program.egg-info/top_level.txt +0 -0
  226. {gea_program-0.7.0 → gea_program-0.8.0}/setup.cfg +0 -0
  227. {gea_program-0.7.0 → gea_program-0.8.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.7.0
3
+ Version: 0.8.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 (266 checks)
128
+ gea accept # the product gate (302 checks)
129
129
  gea help drift # the help library, by the job (16 pages; the same text is on every dashboard page)
130
130
  gea guide # the click-by-click tester guide (docs/TESTER_GUIDE.md)
131
131
  gea gui # the desktop window (pip install "gea-program[desktop]")
@@ -152,12 +152,12 @@ site session is reproduced offline and how the mapping logic is tested.
152
152
  ```
153
153
  pip install "gea-program[live]" # asyncua, paho-mqtt, pymodbus, pyserial (or one extra at a time)
154
154
  gea wits0 --write-example-config wits0.json # drill floor: transport tcp | listen | serial; item codes -> tags, units
155
- gea wits0-sim --port 5001 # a WITS0 sender to rehearse with (no rig needed)
156
- gea wits0 --config wits0.json --seconds 60 --record floor/session.jsonl --out floor --stream-csv floor/stream.csv
155
+ gea wits0-sim --port 5001 # a WITS0 sender to rehearse with (no rig needed) - run it in a SECOND window and leave it running
156
+ gea wits0 --config wits0.json --seconds 60 --record floor/session.jsonl --out floor --stream-csv floor/stream.csv # in the first window, while the sender runs
157
157
  gea witsml --write-example-config witsml.json # a WITSML 1.4.1 store: url, uids, mnemonics -> tags; credentials by env name
158
- gea witsml --config witsml.json --seconds 60 --out store
158
+ gea witsml --config witsml.json --seconds 60 --out store # needs a real store: the example url is a placeholder until you edit it
159
159
  gea opcua --write-example-config opcua.json # edit: endpoint, security, credential env names, nodes
160
- gea opcua --config opcua.json --seconds 60 --record opc/session.jsonl --out opc --stream-csv opc/stream.csv
160
+ gea opcua --config opcua.json --seconds 60 --record opc/session.jsonl --out opc --stream-csv opc/stream.csv # needs a real OPC UA server, likewise
161
161
  gea mqtt --write-example-config mqtt.json # edit: broker, TLS, credential env names, topics
162
162
  gea mqtt --config mqtt.json --replay mq/session.jsonl --out mq_replay # no broker needed
163
163
  gea ingest --file floor/stream.csv # a stream CSV feeds the historian port like any other
@@ -443,6 +443,91 @@ were dropped and why, and how many end dates it assumed (a permit rarely says
443
443
  when drilling stopped). The Seismic page's add form takes a permit export in
444
444
  place of the rigs CSV and keeps both.
445
445
 
446
+ ### Several rigs at once
447
+
448
+ One bearing is one direction for every machine in the band, so when two rigs
449
+ work together the crossing of whole-band bearings means nothing. That is the
450
+ wall between "a rig" and "a field", and `seismic_signature.py` is the step
451
+ through it. While a rig works alone, the bins that stand above the local
452
+ floor in its windows and not in the quiet ones are kept as its signature -
453
+ the same lines the detectability test already prints. In the windows where
454
+ several rigs work together, the cross-spectral matrix is sliced to one rig's
455
+ lines and beamed, which gives a bearing per rig in the same window; a
456
+ machinery line arriving as one plane wave is coherent in its own bin even
457
+ when the band as a whole is noise, which is why it works.
458
+
459
+ What it refuses is as much of the method as what it claims. A rig that never
460
+ worked alone has no signature and gets no bearing. Two rigs whose lines fall
461
+ within the spectral resolution of each other are NOT_SEPARABLE, both of them,
462
+ rather than handed a bearing each. A rig whose own lines all sit above the
463
+ array's spatial Nyquist is ALIASED: the measured beam has another peak within
464
+ a tenth of the height of the one found, the geometry cannot say which is the
465
+ source, and the peaks it cannot separate are listed instead of a direction.
466
+ Run through two arrays, every rig that both pointed at in the same window
467
+ gets its own positions, ellipses and track, and a track whose extent is
468
+ inside its own ellipses says `NOT_RESOLVED` instead of reporting the heading
469
+ of a scatter as a direction of travel. `gea seismic --action signatures |
470
+ multi-beam | multi-bearings | multi-track | signature-selftest |
471
+ field-selftest`; on a site, an array station with a rigs list learns the
472
+ signatures at every refresh and a track carries a track per rig beside the
473
+ whole-band one.
474
+
475
+ ### The machine behind the lines
476
+
477
+ A signature as a list of frequencies is a list of facts about bins. A pump at
478
+ 1.7 strokes per second is one fact about a machine, and it puts energy at
479
+ 1.7, 3.4, 5.1 and 8.5 Hz. `seismic_harmonic.py` searches every line divided
480
+ by every order for the comb that explains the most of them, normalises it to
481
+ the largest spacing the orders found allow - a comb of every second tooth is
482
+ that comb at twice the spacing, and the larger one claims less - and reports
483
+ the fundamental as a rate per minute. That is a far stronger claim than the
484
+ same lines listed separately, and the module says how strong: `by chance` is
485
+ how often this record's line density puts that many lines on a comb by
486
+ accident, and a family above the ceiling is set aside rather than reported.
487
+ Fewer than three lines is not a family, because any two lines define a comb;
488
+ two spacings that explain the same lines equally well are AMBIGUOUS; and a
489
+ fundamental whose half would fall below the analysed band is flagged, because
490
+ the machine may be running at half that rate with only its even harmonics in
491
+ view.
492
+
493
+ The other half is time. A pump's rate follows the work: a line at 1.40 Hz
494
+ walks to 1.85 Hz over a tour, no single bin stands above its floor in enough
495
+ windows, and the rig all but disappears from its own signature - which is the
496
+ defect this band exists to fix. Every line is followed window to window by
497
+ nearest neighbour within a drift ceiling, each peak refined inside its bin by
498
+ a parabola so a walk smaller than the bin width can be read, and each track
499
+ carries STEADY, DRIFTING or INTERMITTENT with its drift in Hz per hour. A
500
+ drift no larger than the bin width is not called a drift. The walk is also an
501
+ observable in its own right: `rate_history` reads the rate over the record,
502
+ and a rate that moves is the machine's load changing, not a different
503
+ machine.
504
+
505
+ Both halves meet in attribution. A track belongs to a source when it passes
506
+ within tolerance of a line that source was learned on - or when it stands in
507
+ a small whole-number ratio, in a window they share, to a track that source
508
+ already claims, which is how a harmonic the fixed bins missed comes back to
509
+ its machine wherever it has walked to. A line two sources could both claim is
510
+ given to neither. A line no listed source claims is listed as exactly that:
511
+ something is making it and the program was not told what.
512
+
513
+ And it closes the loop on ground truth. Every verdict in the leg rested on
514
+ the rigs CSV's working window - the detectability test, the array test and the
515
+ track all believed it. `activity_from_signature` measures it instead: the
516
+ fraction of a source's own lines standing above their floor, window by
517
+ window, each line looked for within a fraction of its own frequency of where
518
+ it was learned, because a harmonic walks as far as its order. The spells it
519
+ finds sit beside the declared ones with AGREES or DIFFERS and the counts both
520
+ ways. A permit date is a permission, not a drilling log, so a disagreement is
521
+ a finding and not an error - and which of the two is right is not decided
522
+ here.
523
+
524
+ `gea seismic --action harmonics | harmonic-selftest`; on a site every station
525
+ refresh does all of it - a single sensor as well as an array, using its own
526
+ detectability test's lines per source when there is no array to learn from,
527
+ so one geophone can still say when each rig was working - and the Seismic
528
+ Station Report and the station page carry the section, with the tracks drawn
529
+ against time.
530
+
446
531
  ### Audit / Update
447
532
 
448
533
  The Audit / Update tab holds three things. The whole audit log
@@ -86,7 +86,7 @@ gea dashboard --catalog-well volve_f12_f14_production_excerpt:15/9-F-12:10000 --
86
86
  gea client-report --report accuracy --out client_report
87
87
  gea model-cards --out model_cards
88
88
  gea sbom --out sbom
89
- gea accept # the product gate (266 checks)
89
+ gea accept # the product gate (302 checks)
90
90
  gea help drift # the help library, by the job (16 pages; the same text is on every dashboard page)
91
91
  gea guide # the click-by-click tester guide (docs/TESTER_GUIDE.md)
92
92
  gea gui # the desktop window (pip install "gea-program[desktop]")
@@ -113,12 +113,12 @@ site session is reproduced offline and how the mapping logic is tested.
113
113
  ```
114
114
  pip install "gea-program[live]" # asyncua, paho-mqtt, pymodbus, pyserial (or one extra at a time)
115
115
  gea wits0 --write-example-config wits0.json # drill floor: transport tcp | listen | serial; item codes -> tags, units
116
- gea wits0-sim --port 5001 # a WITS0 sender to rehearse with (no rig needed)
117
- gea wits0 --config wits0.json --seconds 60 --record floor/session.jsonl --out floor --stream-csv floor/stream.csv
116
+ gea wits0-sim --port 5001 # a WITS0 sender to rehearse with (no rig needed) - run it in a SECOND window and leave it running
117
+ gea wits0 --config wits0.json --seconds 60 --record floor/session.jsonl --out floor --stream-csv floor/stream.csv # in the first window, while the sender runs
118
118
  gea witsml --write-example-config witsml.json # a WITSML 1.4.1 store: url, uids, mnemonics -> tags; credentials by env name
119
- gea witsml --config witsml.json --seconds 60 --out store
119
+ gea witsml --config witsml.json --seconds 60 --out store # needs a real store: the example url is a placeholder until you edit it
120
120
  gea opcua --write-example-config opcua.json # edit: endpoint, security, credential env names, nodes
121
- gea opcua --config opcua.json --seconds 60 --record opc/session.jsonl --out opc --stream-csv opc/stream.csv
121
+ gea opcua --config opcua.json --seconds 60 --record opc/session.jsonl --out opc --stream-csv opc/stream.csv # needs a real OPC UA server, likewise
122
122
  gea mqtt --write-example-config mqtt.json # edit: broker, TLS, credential env names, topics
123
123
  gea mqtt --config mqtt.json --replay mq/session.jsonl --out mq_replay # no broker needed
124
124
  gea ingest --file floor/stream.csv # a stream CSV feeds the historian port like any other
@@ -404,6 +404,91 @@ were dropped and why, and how many end dates it assumed (a permit rarely says
404
404
  when drilling stopped). The Seismic page's add form takes a permit export in
405
405
  place of the rigs CSV and keeps both.
406
406
 
407
+ ### Several rigs at once
408
+
409
+ One bearing is one direction for every machine in the band, so when two rigs
410
+ work together the crossing of whole-band bearings means nothing. That is the
411
+ wall between "a rig" and "a field", and `seismic_signature.py` is the step
412
+ through it. While a rig works alone, the bins that stand above the local
413
+ floor in its windows and not in the quiet ones are kept as its signature -
414
+ the same lines the detectability test already prints. In the windows where
415
+ several rigs work together, the cross-spectral matrix is sliced to one rig's
416
+ lines and beamed, which gives a bearing per rig in the same window; a
417
+ machinery line arriving as one plane wave is coherent in its own bin even
418
+ when the band as a whole is noise, which is why it works.
419
+
420
+ What it refuses is as much of the method as what it claims. A rig that never
421
+ worked alone has no signature and gets no bearing. Two rigs whose lines fall
422
+ within the spectral resolution of each other are NOT_SEPARABLE, both of them,
423
+ rather than handed a bearing each. A rig whose own lines all sit above the
424
+ array's spatial Nyquist is ALIASED: the measured beam has another peak within
425
+ a tenth of the height of the one found, the geometry cannot say which is the
426
+ source, and the peaks it cannot separate are listed instead of a direction.
427
+ Run through two arrays, every rig that both pointed at in the same window
428
+ gets its own positions, ellipses and track, and a track whose extent is
429
+ inside its own ellipses says `NOT_RESOLVED` instead of reporting the heading
430
+ of a scatter as a direction of travel. `gea seismic --action signatures |
431
+ multi-beam | multi-bearings | multi-track | signature-selftest |
432
+ field-selftest`; on a site, an array station with a rigs list learns the
433
+ signatures at every refresh and a track carries a track per rig beside the
434
+ whole-band one.
435
+
436
+ ### The machine behind the lines
437
+
438
+ A signature as a list of frequencies is a list of facts about bins. A pump at
439
+ 1.7 strokes per second is one fact about a machine, and it puts energy at
440
+ 1.7, 3.4, 5.1 and 8.5 Hz. `seismic_harmonic.py` searches every line divided
441
+ by every order for the comb that explains the most of them, normalises it to
442
+ the largest spacing the orders found allow - a comb of every second tooth is
443
+ that comb at twice the spacing, and the larger one claims less - and reports
444
+ the fundamental as a rate per minute. That is a far stronger claim than the
445
+ same lines listed separately, and the module says how strong: `by chance` is
446
+ how often this record's line density puts that many lines on a comb by
447
+ accident, and a family above the ceiling is set aside rather than reported.
448
+ Fewer than three lines is not a family, because any two lines define a comb;
449
+ two spacings that explain the same lines equally well are AMBIGUOUS; and a
450
+ fundamental whose half would fall below the analysed band is flagged, because
451
+ the machine may be running at half that rate with only its even harmonics in
452
+ view.
453
+
454
+ The other half is time. A pump's rate follows the work: a line at 1.40 Hz
455
+ walks to 1.85 Hz over a tour, no single bin stands above its floor in enough
456
+ windows, and the rig all but disappears from its own signature - which is the
457
+ defect this band exists to fix. Every line is followed window to window by
458
+ nearest neighbour within a drift ceiling, each peak refined inside its bin by
459
+ a parabola so a walk smaller than the bin width can be read, and each track
460
+ carries STEADY, DRIFTING or INTERMITTENT with its drift in Hz per hour. A
461
+ drift no larger than the bin width is not called a drift. The walk is also an
462
+ observable in its own right: `rate_history` reads the rate over the record,
463
+ and a rate that moves is the machine's load changing, not a different
464
+ machine.
465
+
466
+ Both halves meet in attribution. A track belongs to a source when it passes
467
+ within tolerance of a line that source was learned on - or when it stands in
468
+ a small whole-number ratio, in a window they share, to a track that source
469
+ already claims, which is how a harmonic the fixed bins missed comes back to
470
+ its machine wherever it has walked to. A line two sources could both claim is
471
+ given to neither. A line no listed source claims is listed as exactly that:
472
+ something is making it and the program was not told what.
473
+
474
+ And it closes the loop on ground truth. Every verdict in the leg rested on
475
+ the rigs CSV's working window - the detectability test, the array test and the
476
+ track all believed it. `activity_from_signature` measures it instead: the
477
+ fraction of a source's own lines standing above their floor, window by
478
+ window, each line looked for within a fraction of its own frequency of where
479
+ it was learned, because a harmonic walks as far as its order. The spells it
480
+ finds sit beside the declared ones with AGREES or DIFFERS and the counts both
481
+ ways. A permit date is a permission, not a drilling log, so a disagreement is
482
+ a finding and not an error - and which of the two is right is not decided
483
+ here.
484
+
485
+ `gea seismic --action harmonics | harmonic-selftest`; on a site every station
486
+ refresh does all of it - a single sensor as well as an array, using its own
487
+ detectability test's lines per source when there is no array to learn from,
488
+ so one geophone can still say when each rig was working - and the Seismic
489
+ Station Report and the station page carry the section, with the tracks drawn
490
+ against time.
491
+
407
492
  ### Audit / Update
408
493
 
409
494
  The Audit / Update tab holds three things. The whole audit log
@@ -122,7 +122,7 @@ from .profile_catalog import (
122
122
  read_pangaea_txt,
123
123
  )
124
124
 
125
- __version__ = "0.7.0"
125
+ __version__ = "0.8.0"
126
126
  __all__ = [
127
127
  "aging_rate", "rate_psi_yr", "accuracy_psi",
128
128
  "Sensor", "SimulatorConfig", "DownholeEngine",