Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
a6139b5d64 | |||
0eebfc619a | |||
70202603c3 | |||
f90fce6f67 | |||
3c71ab7ab7 | |||
157e5308bc | |||
fe474b810d | |||
e2f642c78a |
@ -48,7 +48,7 @@ def main(catalog_file, mc_file, pdf_file, m_file, m_select, mag_label, mc, m_max
|
||||
import logging
|
||||
from base_logger import getDefaultLogger
|
||||
from timeit import default_timer as timer
|
||||
from math import ceil, floor
|
||||
from math import ceil, floor, isnan
|
||||
import numpy as np
|
||||
import scipy
|
||||
import obspy
|
||||
@ -436,6 +436,10 @@ verbose: {verbose}")
|
||||
|
||||
# use dask parallel computing
|
||||
start = timer()
|
||||
|
||||
use_pp = False
|
||||
|
||||
if use_pp:
|
||||
pbar = ProgressBar()
|
||||
pbar.register()
|
||||
# iter = range(0,len(distances))
|
||||
@ -446,10 +450,25 @@ verbose: {verbose}")
|
||||
|
||||
imls = [dask.delayed(compute_IMT_exceedance)(rx_lat[i], rx_lon[i], distances[i].flatten(), fr, p, lambdas,
|
||||
forecast_len, lambdas_perc, m_range, m_pdf, m_cdf, model,
|
||||
log_level=logging.DEBUG, imt=imt, IMT_min=0.0, IMT_max=2.0,
|
||||
rx_label=i) for i in iter]
|
||||
log_level=logging.DEBUG, imt=imt, IMT_min=0.0, IMT_max=2.0, rx_label=i,
|
||||
rtol=0.1, use_cython=False) for i in iter]
|
||||
iml = dask.compute(*imls)
|
||||
iml_grid_raw.append(list(iml))
|
||||
|
||||
else:
|
||||
|
||||
iml_grid_raw = []
|
||||
iter = indices
|
||||
for imt in products:
|
||||
iml = []
|
||||
for i in iter:
|
||||
iml_i = compute_IMT_exceedance(rx_lat[i], rx_lon[i], distances[i].flatten(), fr, p, lambdas, forecast_len,
|
||||
lambdas_perc, m_range, m_pdf, m_cdf, model, imt=imt, IMT_min = 0.0,
|
||||
IMT_max = 2.0, rx_label = i, rtol = 0.1, use_cython=False)
|
||||
iml.append(iml_i)
|
||||
logger.info(f"Estimated {imt} at rx {i} is {iml_i}")
|
||||
iml_grid_raw.append(iml)
|
||||
|
||||
end = timer()
|
||||
logger.info(f"Ground motion exceedance computation time: {round(end - start, 1)} seconds")
|
||||
|
||||
@ -481,6 +500,12 @@ verbose: {verbose}")
|
||||
mode='reflect', anti_aliasing=False)
|
||||
iml_grid_hd[iml_grid_hd == 0.0] = np.nan # change zeroes back to nan
|
||||
|
||||
# trim edges so the grid is not so blocky
|
||||
vmin_hd = min(x for x in iml_grid_hd.flatten() if not isnan(x))
|
||||
vmax_hd = max(x for x in iml_grid_hd.flatten() if not isnan(x))
|
||||
trim_thresh = vmin
|
||||
iml_grid_hd[iml_grid_hd < trim_thresh] = np.nan
|
||||
|
||||
# generate image overlay
|
||||
north, south = lat.max(), lat.min() # Latitude range
|
||||
east, west = lon.max(), lon.min() # Longitude range
|
||||
@ -489,8 +514,10 @@ verbose: {verbose}")
|
||||
map_center = [np.mean([north, south]), np.mean([east, west])]
|
||||
|
||||
# Create an image from the grid
|
||||
cmap_name = 'viridis'
|
||||
cmap = plt.get_cmap(cmap_name)
|
||||
fig, ax = plt.subplots(figsize=(6, 6))
|
||||
ax.imshow(iml_grid_hd, origin='lower', cmap='viridis')
|
||||
ax.imshow(iml_grid_hd, origin='lower', cmap=cmap, vmin=vmin, vmax=vmax)
|
||||
ax.axis('off')
|
||||
|
||||
# Save the figure
|
||||
@ -499,7 +526,6 @@ verbose: {verbose}")
|
||||
plt.close(fig)
|
||||
|
||||
# Make the color bar
|
||||
cmap_name = 'viridis'
|
||||
width = 50
|
||||
height = 500
|
||||
|
||||
@ -509,14 +535,14 @@ verbose: {verbose}")
|
||||
|
||||
fig, ax = plt.subplots(figsize=((width + 40) / 100.0, (height + 20) / 100.0),
|
||||
dpi=100) # Increase fig size for labels
|
||||
ax.imshow(gradient, aspect='auto', cmap=plt.get_cmap(cmap_name),
|
||||
extent=[0, 1, vmin, vmax]) # Note: extent order is different for vertical
|
||||
ax.imshow(gradient, aspect='auto', cmap=cmap.reversed(),
|
||||
extent=[0, 1, vmin, vmax_hd]) # Note: extent order is different for vertical
|
||||
ax.set_xticks([]) # Remove x-ticks for vertical colorbar
|
||||
num_ticks = 11 # Show more ticks
|
||||
tick_positions = np.linspace(vmin, vmax, num_ticks)
|
||||
tick_positions = np.linspace(vmin, vmax_hd, num_ticks)
|
||||
ax.set_yticks(tick_positions)
|
||||
ax.set_yticklabels([f"{tick:.2f}" for tick in tick_positions]) # format tick labels
|
||||
ax.set_title(imt, pad=15)
|
||||
ax.set_title(products[j], pad=15)
|
||||
fig.subplots_adjust(left=0.25, right=0.75, bottom=0.05, top=0.95) # Adjust Layout
|
||||
fig.savefig("colorbar_" + str(j) + ".svg", bbox_inches='tight')
|
||||
plt.close(fig)
|
||||
|
Loading…
Reference in New Issue
Block a user