shakemap-modules 1.1.4__tar.gz → 1.1.6__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 (127) hide show
  1. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/CHANGELOG.md +13 -1
  2. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/PKG-INFO +1 -1
  3. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/code.json +73 -1
  4. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/gridxml.py +25 -14
  5. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/model.py +112 -62
  6. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/shape.py +4 -5
  7. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/model.conf +11 -3
  8. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/modelspec.conf +3 -1
  9. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules.egg-info/PKG-INFO +1 -1
  10. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/.gitignore +0 -0
  11. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/.gitlab-ci.yml +0 -0
  12. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/DISCLAIMER.md +0 -0
  13. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/LICENSE.md +0 -0
  14. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/MANIFEST.in +0 -0
  15. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/README.md +0 -0
  16. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/install.sh +0 -0
  17. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/pyproject.toml +0 -0
  18. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/pytest.ini +0 -0
  19. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/setup.cfg +0 -0
  20. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/setup.py +0 -0
  21. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/base/base.py +0 -0
  22. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/base/cli.py +0 -0
  23. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/base/transfer_base.py +0 -0
  24. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/assemble.py +0 -0
  25. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/associate.py +0 -0
  26. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/augment.py +0 -0
  27. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/contour.py +0 -0
  28. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/coverage.py +0 -0
  29. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/dyfi.py +0 -0
  30. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/exception.py +0 -0
  31. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/history.py +0 -0
  32. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/info.py +0 -0
  33. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/kml.py +0 -0
  34. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/makecsv.py +0 -0
  35. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/mapping.py +0 -0
  36. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/plotregr.py +0 -0
  37. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/raster.py +0 -0
  38. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/rupture.py +0 -0
  39. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/save.py +0 -0
  40. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/sleep.py +0 -0
  41. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/sm_select.py +0 -0
  42. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/stations.py +0 -0
  43. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/transfer_email.py +0 -0
  44. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/transfer_pdl.py +0 -0
  45. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/transfer_scp.py +0 -0
  46. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/uncertaintymaps.py +0 -0
  47. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/xtestimage.py +0 -0
  48. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/xtestplot.py +0 -0
  49. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/xtestplot_multi.py +0 -0
  50. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/coremods/xtestplot_spectra.py +0 -0
  51. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/fdsn_networks.json +0 -0
  52. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/gis/WGS1984.prj +0 -0
  53. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/gis/mi.lyr +0 -0
  54. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/gis/mi.shp.xml +0 -0
  55. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/gis/pga.lyr +0 -0
  56. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/gis/pga.shp.xml +0 -0
  57. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/gis/pgv.lyr +0 -0
  58. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/gis/pgv.shp.xml +0 -0
  59. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/gis/psa0p3.lyr +0 -0
  60. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/gis/psa0p3.shp.xml +0 -0
  61. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/gis/psa1p0.lyr +0 -0
  62. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/gis/psa1p0.shp.xml +0 -0
  63. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/gis/psa3p0.lyr +0 -0
  64. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/gis/psa3p0.shp.xml +0 -0
  65. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/gmpe_sets.conf +0 -0
  66. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/layers/alaska.wkt +0 -0
  67. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/layers/australia.wkt +0 -0
  68. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/layers/california.wkt +0 -0
  69. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/layers/cascadia.wkt +0 -0
  70. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/layers/chile.wkt +0 -0
  71. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/layers/china.wkt +0 -0
  72. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/layers/europe_share.wkt +0 -0
  73. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/layers/hawaii.wkt +0 -0
  74. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/layers/induced.wkt +0 -0
  75. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/layers/japan.wkt +0 -0
  76. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/layers/new_zealand.wkt +0 -0
  77. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/layers/south_africa.wkt +0 -0
  78. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/layers/taiwan.wkt +0 -0
  79. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/logging.conf +0 -0
  80. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/loggingspec.conf +0 -0
  81. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/mapping/circle.png +0 -0
  82. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/mapping/intensity_legend.png +0 -0
  83. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/mapping/map_strings.cn +0 -0
  84. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/mapping/map_strings.en +0 -0
  85. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/mapping/map_strings.en-AU +0 -0
  86. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/mapping/map_strings.en-CA +0 -0
  87. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/mapping/map_strings.es +0 -0
  88. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/mapping/map_strings.fr-CA +0 -0
  89. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/mapping/map_strings.it +0 -0
  90. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/mapping/map_strings.tw +0 -0
  91. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/mapping/triangle.png +0 -0
  92. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/migrate.conf +0 -0
  93. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/migratespec.conf +0 -0
  94. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/modules.conf +0 -0
  95. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/modulesspec.conf +0 -0
  96. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/products.conf +0 -0
  97. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/productsspec.conf +0 -0
  98. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/queue.conf +0 -0
  99. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/queuespec.conf +0 -0
  100. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/select.conf +0 -0
  101. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/selectspec.conf +0 -0
  102. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/shake.conf +0 -0
  103. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/shakespec.conf +0 -0
  104. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/simulationspec.conf +0 -0
  105. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/transfer.conf +0 -0
  106. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/transfer_reviewed_origin.conf +0 -0
  107. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/data/transferspec.conf +0 -0
  108. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/mapping/mapmaker.py +0 -0
  109. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/mapping/mercatormap.py +0 -0
  110. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/mapping/scalebar.py +0 -0
  111. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/utils/amps.py +0 -0
  112. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/utils/comcat.py +0 -0
  113. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/utils/config.py +0 -0
  114. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/utils/dataframe.py +0 -0
  115. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/utils/generic_amp.py +0 -0
  116. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/utils/layers.py +0 -0
  117. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/utils/logging.py +0 -0
  118. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/utils/macros.py +0 -0
  119. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/utils/points_to_station.py +0 -0
  120. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/utils/probs.py +0 -0
  121. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/utils/smclone.py +0 -0
  122. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules/utils/utils.py +0 -0
  123. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules.egg-info/SOURCES.txt +0 -0
  124. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules.egg-info/dependency_links.txt +0 -0
  125. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules.egg-info/entry_points.txt +0 -0
  126. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules.egg-info/requires.txt +0 -0
  127. {shakemap_modules-1.1.4 → shakemap_modules-1.1.6}/src/shakemap_modules.egg-info/top_level.txt +0 -0
@@ -1,6 +1,18 @@
1
1
  # main
2
2
 
3
- ## 1.1.4 / 2025-04-07
3
+ ## 1.1.6 / 2025-07-08
4
+ Fixes:
5
+ - gridxml now correctly reports shakemap code version.
6
+ - model support for new ffsimmer parameters.
7
+ - model turn off generic amplification factors for regression plots
8
+
9
+ ## 1.1.5 / 2025-07-01
10
+ - Revving version number to fix glitch.
11
+
12
+ ## 1.1.4 / 2025-07-01
13
+ - Refactor to output data needed for realizations for all IMs.
14
+ - Fix bug where the Generic Amplification Factors were not applied by ffsimmer.
15
+ - Fix test.
4
16
  - Fixed a bug in sm_clone that prevented the preferred Atlas shakemap from being chosen by default.
5
17
  - Fixed a bug that caused sm_clone to incorrectly fail on older fault text files.
6
18
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: shakemap-modules
3
- Version: 1.1.4
3
+ Version: 1.1.6
4
4
  Summary: USGS Earthquake Impact ShakeMap Modules
5
5
  Author-email: Bruce Worden <cbworden@contractor.usgs.gov>, Eric Thompson <emthompsone@usgs.gov>, Mike Hearne <mhearne@usgs.gov>
6
6
  License: License
@@ -1,4 +1,76 @@
1
1
  [
2
+ {
3
+ "name": "shakemap-modules",
4
+ "description": "ShakeMap processing modules.",
5
+ "version": "v1.1.6",
6
+ "status": "Development",
7
+ "organization": "U.S. Geological Survey",
8
+ "vcs": "git",
9
+ "repositoryURL": "https://code.usgs.gov/ghsc/esi/shakemap-modules.git",
10
+ "homepageURL": "https://code.usgs.gov/ghsc/esi/shakemap-modules",
11
+ "downloadURL": "https://code.usgs.gov/ghsc/esi/shakemap-modules/-/archive/v1.1.6/shakemap-modules-v1.1.6.zip",
12
+ "disclaimerURL": "https://code.usgs.gov/ghsc/esi/shakemap-modules/-/raw/v1.1.6/DISCLAIMER.md",
13
+ "permissions": {
14
+ "usageType": "openSource",
15
+ "licenses": [
16
+ {
17
+ "name": "Public Domain, CC0-1.0",
18
+ "URL": "https://code.usgs.gov/ghsc/esi/shakemap-modules/-/raw/v1.1.6/LICENSE.md"
19
+ }
20
+ ]
21
+ },
22
+ "laborHours": 1,
23
+ "languages": [
24
+ "python"
25
+ ],
26
+ "tags": [
27
+ "earthquake",
28
+ "utilities"
29
+ ],
30
+ "contact": {
31
+ "name": "Bruce Worden",
32
+ "email": "cbworden@contractor.usgs.gov"
33
+ },
34
+ "date": {
35
+ "metadataLastUpdated": "2025-07-08"
36
+ }
37
+ },
38
+ {
39
+ "name": "shakemap-modules",
40
+ "description": "ShakeMap processing modules.",
41
+ "version": "v1.1.5",
42
+ "status": "Development",
43
+ "organization": "U.S. Geological Survey",
44
+ "vcs": "git",
45
+ "repositoryURL": "https://code.usgs.gov/ghsc/esi/shakemap-modules.git",
46
+ "homepageURL": "https://code.usgs.gov/ghsc/esi/shakemap-modules",
47
+ "downloadURL": "https://code.usgs.gov/ghsc/esi/shakemap-modules/-/archive/v1.1.5/shakemap-modules-v1.1.5.zip",
48
+ "disclaimerURL": "https://code.usgs.gov/ghsc/esi/shakemap-modules/-/raw/v1.1.5/DISCLAIMER.md",
49
+ "permissions": {
50
+ "usageType": "openSource",
51
+ "licenses": [
52
+ {
53
+ "name": "Public Domain, CC0-1.0",
54
+ "URL": "https://code.usgs.gov/ghsc/esi/shakemap-modules/-/raw/v1.1.5/LICENSE.md"
55
+ }
56
+ ]
57
+ },
58
+ "laborHours": 1,
59
+ "languages": [
60
+ "python"
61
+ ],
62
+ "tags": [
63
+ "earthquake",
64
+ "utilities"
65
+ ],
66
+ "contact": {
67
+ "name": "Bruce Worden",
68
+ "email": "cbworden@contractor.usgs.gov"
69
+ },
70
+ "date": {
71
+ "metadataLastUpdated": "2025-07-01"
72
+ }
73
+ },
2
74
  {
3
75
  "name": "shakemap-modules",
4
76
  "description": "ShakeMap processing modules.",
@@ -32,7 +104,7 @@
32
104
  "email": "cbworden@contractor.usgs.gov"
33
105
  },
34
106
  "date": {
35
- "metadataLastUpdated": "2025-03-20"
107
+ "metadataLastUpdated": "2025-07-01"
36
108
  }
37
109
  },
38
110
  {
@@ -90,9 +90,13 @@ class GridXMLModule(CoreModule):
90
90
  """
91
91
  if self.process == "shakemap":
92
92
  install_path, data_path = get_config_paths()
93
- datadir = os.path.join(data_path, self._eventid, "current", "products")
93
+ datadir = os.path.join(
94
+ data_path, self._eventid, "current", "products"
95
+ )
94
96
  if not os.path.isdir(datadir):
95
- raise NotADirectoryError(f"{datadir} is not a valid directory.")
97
+ raise NotADirectoryError(
98
+ f"{datadir} is not a valid directory."
99
+ )
96
100
  datafile = os.path.join(datadir, "shake_result.hdf")
97
101
  else:
98
102
  if datafile is None:
@@ -178,15 +182,15 @@ class GridXMLModule(CoreModule):
178
182
  event_info["origin_time"], constants.ALT_TIMEFMT
179
183
  )
180
184
  event_dict["event_description"] = event_info["location"]
181
- event_dict["event_network"] = info["input"]["event_information"][
182
- "eventsource"
183
- ]
185
+ event_dict["event_network"] = info["input"][
186
+ "event_information"
187
+ ]["eventsource"]
184
188
  event_dict["intensity_observations"] = info["input"][
185
189
  "event_information"
186
190
  ]["intensity_observations"]
187
- event_dict["seismic_stations"] = info["input"]["event_information"][
188
- "seismic_stations"
189
- ]
191
+ event_dict["seismic_stations"] = info["input"][
192
+ "event_information"
193
+ ]["seismic_stations"]
190
194
  if info["input"]["event_information"]["fault_ref"] == "Origin":
191
195
  event_dict["point_source"] = "True"
192
196
  else:
@@ -199,10 +203,10 @@ class GridXMLModule(CoreModule):
199
203
  shake_dict["shakemap_version"] = info["processing"][
200
204
  "shakemap_versions"
201
205
  ]["map_version"]
202
- shake_dict["code_version"] = "4.1.5"
203
- # shake_dict["code_version"] = info["processing"]["shakemap_versions"][
204
- # "shakemap_revision"
205
- # ]
206
+ # shake_dict["code_version"] = "4.1.5"
207
+ shake_dict["code_version"] = info["processing"][
208
+ "shakemap_versions"
209
+ ]["shakemap_revision"]
206
210
  ptime = info["processing"]["shakemap_versions"]["process_time"]
207
211
  try:
208
212
  shake_dict["process_timestamp"] = datetime.strptime(
@@ -213,14 +217,21 @@ class GridXMLModule(CoreModule):
213
217
  ptime, constants.ALT_TIMEFMT
214
218
  )
215
219
 
216
- shake_dict["shakemap_originator"] = config["system"]["source_network"]
220
+ shake_dict["shakemap_originator"] = config["system"][
221
+ "source_network"
222
+ ]
217
223
  shake_dict["map_status"] = config["system"]["map_status"]
218
224
  shake_dict["shakemap_event_type"] = "ACTUAL"
219
225
  if event_dict["event_id"].endswith("_se"):
220
226
  shake_dict["shakemap_event_type"] = "SCENARIO"
221
227
 
222
228
  shake_grid = ShakeGrid(
223
- layers, geodict, event_dict, shake_dict, {}, field_keys=field_keys
229
+ layers,
230
+ geodict,
231
+ event_dict,
232
+ shake_dict,
233
+ {},
234
+ field_keys=field_keys,
224
235
  )
225
236
  if component == "GREATER_OF_TWO_HORIZONTAL":
226
237
  fname = f"{xml_type}.xml"
@@ -265,10 +265,10 @@ class ModelModule(CoreModule):
265
265
  self.do_grid = True
266
266
  self.sites_obj_out = None
267
267
  self.max_workers = None
268
- self.mmi_add_uncertainty = None
269
- self.mmi_sigma_hh_yd = None
270
- self.mmi_c = None
271
- self.mmi_sta_per_ix = None
268
+ self.rez_add_uncertainty = {}
269
+ self.rez_sigma_hh_yd = {}
270
+ self.rez_c = {}
271
+ self.rez_sta_per_ix = {}
272
272
  self.directivity = None
273
273
  self.info = {"multigmpe": {}}
274
274
  # self.rng_seed = secrets.randbits(128)
@@ -436,7 +436,7 @@ class ModelModule(CoreModule):
436
436
  self.rx = self.rupture_obj.getRuptureContext([self.default_gmpe])
437
437
 
438
438
  # ---------------------------------------------------------------------
439
- # Add mechanism and tectonic regine to origin
439
+ # Add mechanism and tectonic regime to origin
440
440
  # ---------------------------------------------------------------------
441
441
  try:
442
442
  strecdata = self.ic.getStrecJson()
@@ -463,10 +463,16 @@ class ModelModule(CoreModule):
463
463
  max_dip=self.config["modeling"]["ffsim_max_dip"],
464
464
  dx_min_frac=self.config["modeling"]["ffsim_dx_min_frac"],
465
465
  dx_max_frac=self.config["modeling"]["ffsim_dx_max_frac"],
466
- delta_depth=self.config["modeling"]["ffsim_delta_depth"],
467
466
  ztor=self.config["modeling"]["ffsim_ztor"],
467
+ aspect_ratio=self.config["modeling"]["ffsim_aspect_ratio"],
468
+ min_sz_depth=self.config["modeling"]["ffsim_min_sz_depth"],
469
+ max_sz_depth=self.config["modeling"]["ffsim_max_sz_depth"],
468
470
  seed=self.rng_seed,
469
471
  )
472
+ # with open("rupt_quads.txt", "wt", encoding="utf-8") as f:
473
+ # for irupt in self.rff.rupts:
474
+ # irupt.writeTextFile(f)
475
+
470
476
  if self.config["modeling"]["ffsim_true_grid"] is True:
471
477
  self.true_grid = True
472
478
 
@@ -685,6 +691,13 @@ class ModelModule(CoreModule):
685
691
  self.gmpe_dict,
686
692
  list(self.oqimt_dict.values()),
687
693
  )
694
+ if self.apply_gafs:
695
+ for oqimt in self.oqimt_dict.values():
696
+ gafs = get_generic_amp_factors(
697
+ self.dx_out, str(oqimt)
698
+ )
699
+ if gafs is not None:
700
+ griddict[oqimt]["mean"] += gafs
688
701
  else:
689
702
  griddict = ffsim.compute_grid(
690
703
  vs30grid,
@@ -702,6 +715,12 @@ class ModelModule(CoreModule):
702
715
  griddict[oqpga]["mean"],
703
716
  oqimt,
704
717
  )
718
+ if self.apply_gafs:
719
+ gafs = get_generic_amp_factors(
720
+ self.dx_out, str(oqimt)
721
+ )
722
+ if gafs is not None:
723
+ amp_grid += gafs
705
724
  griddict[oqimt]["mean"] = amp_grid
706
725
  else:
707
726
  shapes = []
@@ -724,11 +743,17 @@ class ModelModule(CoreModule):
724
743
  griddict[oqimt] = {}
725
744
  for kk, vv in ptdict[oqimt]["site"].items():
726
745
  griddict[oqimt][kk] = vv.reshape(orig_shape)
746
+ if self.apply_gafs and kk == "mean":
747
+ gafs = get_generic_amp_factors(
748
+ self.dx_out, str(oqimt)
749
+ )
750
+ if gafs is not None:
751
+ griddict[oqimt][kk] += gafs
727
752
  # Compute MMI from PGMs or IPE
728
753
  if do_mmi:
729
754
  immi = imt.MMI()
755
+ griddict[immi] = {}
730
756
  if isinstance(self.ipe, VirtualIPE):
731
- griddict[immi] = {}
732
757
  gmice_imt = self.ipe.imt
733
758
  griddict[immi]["mean"], dmda = self.gmice.getMIfromGM(
734
759
  griddict[gmice_imt]["mean"],
@@ -738,6 +763,11 @@ class ModelModule(CoreModule):
738
763
  )
739
764
  gm2mi_var = (self.gmice.getGM2MIsd()[gmice_imt]) ** 2
740
765
  dmda *= dmda
766
+
767
+ if self.apply_gafs:
768
+ gafs = get_generic_amp_factors(self.dx_out, str(immi))
769
+ if gafs is not None:
770
+ griddict[immi]["mean"] += gafs
741
771
  for sdt in stddev_types:
742
772
  if sdt not in griddict[gmice_imt]:
743
773
  continue
@@ -750,19 +780,39 @@ class ModelModule(CoreModule):
750
780
  )
751
781
  else:
752
782
  ffsim = FFSimmer(self.rff, measure="mean")
753
- if self.true_grid:
754
- mmidict = ffsim.true_grid(
755
- self.sites_obj_out.getVs30Grid(),
756
- {immi: self.ipe},
757
- [immi],
758
- )
783
+ if self.do_grid:
784
+ if self.true_grid:
785
+ mmidict = ffsim.true_grid(
786
+ self.sites_obj_out.getVs30Grid(),
787
+ {immi: self.ipe},
788
+ [immi],
789
+ )
790
+ else:
791
+ mmidict = ffsim.compute_grid(
792
+ self.sites_obj_out.getVs30Grid(),
793
+ {immi: self.ipe},
794
+ [immi],
795
+ )
796
+ for sdt in mmidict[immi]:
797
+ griddict[immi][sdt] = mmidict[immi][sdt]
798
+ if self.apply_gafs:
799
+ gafs = get_generic_amp_factors(
800
+ self.dx_out, str(immi)
801
+ )
802
+ if gafs is not None:
803
+ griddict[immi]["mean"] += gafs
759
804
  else:
760
- mmidict = ffsim.compute_grid(
761
- self.sites_obj_out.getVs30Grid(),
762
- {immi: self.ipe},
763
- [immi],
805
+ ptdict = ffsim.compute_points(
806
+ self.sx_out, {immi: self.ipe}, [immi]
764
807
  )
765
- griddict[immi] = mmidict[immi]
808
+ for sdt in ptdict[immi]["site"]:
809
+ griddict[immi][sdt] = ptdict[immi]["site"][sdt]
810
+ if self.apply_gafs and sdt == "mean":
811
+ gafs = get_generic_amp_factors(
812
+ self.dx_out, str(immi)
813
+ )
814
+ if gafs is not None:
815
+ griddict[immi][sdt] += gafs
766
816
  else:
767
817
  griddict = {}
768
818
  shapes = []
@@ -820,7 +870,7 @@ class ModelModule(CoreModule):
820
870
  self.atten_sx_rock,
821
871
  self.atten_dx,
822
872
  oqimt,
823
- self.apply_gafs,
873
+ False,
824
874
  )
825
875
  self.atten_rock_mean[imt_str] = x_mean
826
876
  self.atten_rock_sd[imt_str] = x_sd[0]
@@ -829,7 +879,7 @@ class ModelModule(CoreModule):
829
879
  self.atten_sx_soil,
830
880
  self.atten_dx,
831
881
  oqimt,
832
- self.apply_gafs,
882
+ False,
833
883
  )
834
884
  self.atten_soil_mean[imt_str] = x_mean
835
885
  self.atten_soil_sd[imt_str] = x_sd[0]
@@ -2045,13 +2095,11 @@ class ModelModule(CoreModule):
2045
2095
  self.outsd[imtstr] = pout_sd[0]
2046
2096
  self.outphi[imtstr] = self.psd[imtstr]
2047
2097
  self.outtau[imtstr] = self.tsd[imtstr]
2048
- # Special stuff for the MMI priors. When we make this apply to
2049
- # other IMTs we'll need to mess around with this block
2050
- if imtstr == "MMI":
2051
- self.mmi_add_uncertainty = np.array([])
2052
- self.mmi_sigma_hh_yd = np.array([])
2053
- self.mmi_c = np.array([])
2054
- self.mmi_sta_per_ix = np.array([])
2098
+ # Special stuff for the IMT priors.
2099
+ self.rez_add_uncertainty[imtstr] = np.array([])
2100
+ self.rez_sigma_hh_yd[imtstr] = np.array([])
2101
+ self.rez_c[imtstr] = np.array([])
2102
+ self.rez_sta_per_ix[imtstr] = np.array([])
2055
2103
  return
2056
2104
 
2057
2105
  pout_sd2_phi = np.power(self.psd[imtstr], 2.0)
@@ -2096,14 +2144,8 @@ class ModelModule(CoreModule):
2096
2144
  sdsta_phi = sta_phi.flatten()
2097
2145
  matrix12_phi = np.empty(t2_12.shape, dtype=np.double)
2098
2146
  rcmatrix_phi = np.empty(t2_12.shape, dtype=np.double)
2099
- # Allocate the full big_c matrix only for the desired IMT (MMI). This
2100
- # is for generating realizations. Someday we will want to make this
2101
- # apply to other IMTs and become an optional flag for this module
2102
- # where we save the priors optionally
2103
- # Note: We would have to set up c_complete = {} at the top of the
2104
- # module, and then here, it would be c_complete[imtstr] = ...
2105
- if imtstr == "MMI":
2106
- c_complete = np.empty_like(t_y0)
2147
+ # Allocate the full big_c matrix only for the desired IMTs
2148
+ c_complete = np.empty_like(t_y0)
2107
2149
  for iy in range(self.smny):
2108
2150
  ss = iy * self.smnx
2109
2151
  se = (iy + 1) * self.smnx
@@ -2180,11 +2222,8 @@ class ModelModule(CoreModule):
2180
2222
  sdgrid_tau[iy, :] = np.sum(
2181
2223
  np.multiply(c_tmp1, big_c, out=c_tmp2), out=s_tmp3, axis=1
2182
2224
  )
2183
- # This is where we would have a flag if we were saving the priors
2184
- # as an option
2185
- if imtstr == "MMI":
2186
- # Save big_c to complete full size big_c
2187
- c_complete[ss:se, :] = big_c
2225
+ # Save big_c to complete full size big_c
2226
+ c_complete[ss:se, :] = big_c
2188
2227
 
2189
2228
  #
2190
2229
  # This processing can result in MMI values that go beyond
@@ -2209,13 +2248,11 @@ class ModelModule(CoreModule):
2209
2248
  self.outphi[imtstr] = self.psd[imtstr]
2210
2249
  self.outtau[imtstr] = np.sqrt(sdgrid_tau, out=sdgrid_tau)
2211
2250
 
2212
- # Special stuff for the MMI priors. When we make this apply to other
2213
- # IMTs we'll need to mess around with this block
2214
- if imtstr == "MMI":
2215
- self.mmi_add_uncertainty = self.sta_sig_extra[imtstr]
2216
- self.mmi_sigma_hh_yd = self.cov_hh_yd[imtstr]
2217
- self.mmi_c = c_complete
2218
- self.mmi_sta_per_ix = sta_per_ix
2251
+ # Special stuff for the IMT priors.
2252
+ self.rez_add_uncertainty[imtstr] = self.sta_sig_extra[imtstr]
2253
+ self.rez_sigma_hh_yd[imtstr] = self.cov_hh_yd[imtstr]
2254
+ self.rez_c[imtstr] = c_complete
2255
+ self.rez_sta_per_ix[imtstr] = sta_per_ix
2219
2256
 
2220
2257
  def _apply_custom_mask(self):
2221
2258
  """Apply custom masks to IMT grid outputs."""
@@ -2897,6 +2934,10 @@ class ModelModule(CoreModule):
2897
2934
  dm_arr = getattr(self.dx_out, dm, None)
2898
2935
  if dm_arr is not None:
2899
2936
  oc.setArray(["distances"], dm, dm_arr, metadata=metadata)
2937
+ metadata["units"] = "seconds"
2938
+ metadata["digits"] = 1
2939
+ oc.setArray([], "imt_periods", self.imt_per, metadata=metadata)
2940
+ oc.setDictionary([], "imt_per_ix", self.imt_per_ix)
2900
2941
 
2901
2942
  #
2902
2943
  # Output the data and uncertainty grids
@@ -2923,21 +2964,17 @@ class ModelModule(CoreModule):
2923
2964
  self.outphi[key],
2924
2965
  self.outtau[key],
2925
2966
  )
2926
- if key == "MMI":
2927
- sub_groups = ["imts", component, key]
2928
- oc.setArray(
2929
- sub_groups, "add_uncertainty", self.mmi_add_uncertainty
2930
- )
2931
- oc.setArray(sub_groups, "Sigma_HH_YD", self.mmi_sigma_hh_yd)
2932
- oc.setArray(sub_groups, "C", self.mmi_c)
2933
- oc.setArray(sub_groups, "sta_per_ix", self.mmi_sta_per_ix)
2934
- oc.setArray(sub_groups, "sta_phi", self.sta_phi["MMI"])
2935
- oc.setArray(
2936
- sub_groups, "sta_lons_rad", self.sta_lons_rad["MMI"]
2937
- )
2938
- oc.setArray(
2939
- sub_groups, "sta_lats_rad", self.sta_lats_rad["MMI"]
2940
- )
2967
+ # Realizations stuff
2968
+ sub_groups = ["imts", component, key]
2969
+ oc.setArray(
2970
+ sub_groups, "add_uncertainty", self.rez_add_uncertainty[key]
2971
+ )
2972
+ oc.setArray(sub_groups, "Sigma_HH_YD", self.rez_sigma_hh_yd[key])
2973
+ oc.setArray(sub_groups, "C", self.rez_c[key])
2974
+ oc.setArray(sub_groups, "sta_per_ix", self.rez_sta_per_ix[key])
2975
+ oc.setArray(sub_groups, "sta_phi", self.sta_phi[key])
2976
+ oc.setArray(sub_groups, "sta_lons_rad", self.sta_lons_rad[key])
2977
+ oc.setArray(sub_groups, "sta_lats_rad", self.sta_lats_rad[key])
2941
2978
  #
2942
2979
  # Directivity
2943
2980
  #
@@ -2991,6 +3028,9 @@ class ModelModule(CoreModule):
2991
3028
  #
2992
3029
  # Store the IMTs
2993
3030
  #
3031
+ period_metadata = {"units": "seconds", "digits": 1}
3032
+ oc.setArray([], "imt_periods", self.imt_per, metadata=period_metadata)
3033
+ oc.setDictionary([], "imt_per_ix", self.imt_per_ix)
2994
3034
  ascii_ids = np.array(
2995
3035
  [np.char.encode(x, encoding="ascii") for x in self.idents]
2996
3036
  ).flatten()
@@ -3027,6 +3067,16 @@ class ModelModule(CoreModule):
3027
3067
  self.pred_out_sd[key].flatten(),
3028
3068
  std_metadata,
3029
3069
  )
3070
+ sub_groups = ["imts", component, key]
3071
+ oc.setArray(
3072
+ sub_groups, "add_uncertainty", self.rez_add_uncertainty[key]
3073
+ )
3074
+ oc.setArray(sub_groups, "Sigma_HH_YD", self.rez_sigma_hh_yd[key])
3075
+ oc.setArray(sub_groups, "C", self.rez_c[key])
3076
+ oc.setArray(sub_groups, "sta_per_ix", self.rez_sta_per_ix[key])
3077
+ oc.setArray(sub_groups, "sta_phi", self.sta_phi[key])
3078
+ oc.setArray(sub_groups, "sta_lons_rad", self.sta_lons_rad[key])
3079
+ oc.setArray(sub_groups, "sta_lats_rad", self.sta_lats_rad[key])
3030
3080
 
3031
3081
  def _store_attenuation_data(self, oc):
3032
3082
  """
@@ -146,7 +146,7 @@ def create_polygons(container, datadir, logger, max_workers, method="pcontour"):
146
146
  gmice_imts = []
147
147
  gmice_pers = []
148
148
  else:
149
- gmice_imts = gmice.DEFINED_FOR_INTENSITY_MEASURE_TYPES
149
+ gmice_imts = [imt.__name__ for imt in gmice.DEFINED_FOR_INTENSITY_MEASURE_TYPES]
150
150
  gmice_pers = gmice.DEFINED_FOR_SA_PERIODS
151
151
 
152
152
  component = list(container.getComponents())[0]
@@ -218,10 +218,9 @@ def create_polygons(container, datadir, logger, max_workers, method="pcontour"):
218
218
  contour_levels = None
219
219
  # but wants gmice info
220
220
  oqimt = OQIMT.from_string(imt)
221
- if (
222
- imt == "MMI"
223
- or not isinstance(oqimt, tuple(gmice_imts))
224
- or (isinstance(oqimt, OQIMT.SA) and oqimt.period not in gmice_pers)
221
+ if imt == "MMI" or (
222
+ imt not in gmice_imts
223
+ and ("SA" not in gmice_imts or oqimt.period not in gmice_pers)
225
224
  ):
226
225
  my_gmice = None
227
226
  else:
@@ -275,13 +275,21 @@
275
275
  # (between 0 and 1, default 0).
276
276
  # ffsim_dx_max_frac: The fraction of the along strike distance to stop
277
277
  # (between 0 and 1, default 1).
278
- # ffsim_delta_depth: The depth range of the hypocenter will be drawn from
279
- # hypo_depth - ffsim_delta_depth to hypo_depth + ffsim_delta_depth.
280
- # Units are km. The default is 20.
281
278
  # ffsim_ztor: Set the top of rupture (TOR) to a fixed depth. Typically, this
282
279
  # parameter would be used to set the TOR to 0 for events with
283
280
  # known surface faulting. Depth is positive downward. Units are km.
284
281
  # (Any negative value (the default is -1) allows the TOR to float.)
282
+ # ffsim_aspect_ratio: Sets the starting aspect ratio (length/width) of
283
+ # the rupture plane. This is a weak constraint: the aspect ratio
284
+ # will not be less than this, but could be greater since once the
285
+ # rupture reaches its maximum width the length wii be increased
286
+ # to meet the area computed for the rupture plane. The default is
287
+ # calculated using Huang et al. () equations 2 & 3.
288
+ # ffsim_min_sz_depth: The minimum seismogenic depth. The default is 0 (the
289
+ # surface).
290
+ # ffsim_max_sz_depth: The maximum seismogenic depth. The default is dependent
291
+ # on the tectonic regime.
292
+ #
285
293
  # WARNING: Set *both* ffsim_min_dip and ffsim_max_dip or set *neither*. Don't
286
294
  # just set one of them.
287
295
  #
@@ -64,8 +64,10 @@
64
64
  ffsim_max_dip = float(min=0.0, max=90.0, default=None)
65
65
  ffsim_dx_min_frac = float(min=0.0, max=1.0, default=0.0)
66
66
  ffsim_dx_max_frac = float(min=0.0, max=1.0, default=1.0)
67
- ffsim_delta_depth = float(min=0.0, default=20.0)
68
67
  ffsim_ztor = float(default=-1.0)
68
+ ffsim_aspect_ratio = float(default = -1)
69
+ ffsim_min_sz_depth = float(min = 0, default = 0)
70
+ ffsim_max_sz_depth = float(default = -1)
69
71
 
70
72
  [[bias]]
71
73
  do_bias = boolean(default=True)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: shakemap-modules
3
- Version: 1.1.4
3
+ Version: 1.1.6
4
4
  Summary: USGS Earthquake Impact ShakeMap Modules
5
5
  Author-email: Bruce Worden <cbworden@contractor.usgs.gov>, Eric Thompson <emthompsone@usgs.gov>, Mike Hearne <mhearne@usgs.gov>
6
6
  License: License