initial upload
This commit is contained in:
124
examples/scripts_of_plotting/5_plot_objective_function.py
Normal file
124
examples/scripts_of_plotting/5_plot_objective_function.py
Normal file
@@ -0,0 +1,124 @@
|
||||
# %%
|
||||
import sys
|
||||
sys.path.append('../utils')
|
||||
import functions_for_data as ffd
|
||||
|
||||
# %%
|
||||
# read objective function
|
||||
|
||||
path = "OUTPUT_FILES"
|
||||
full_curve, location_curve, model_curve = ffd.read_objective_function_file(path)
|
||||
|
||||
print("full_curve: ", full_curve.shape, ", the total objective function value during the inversion, including relocation and model update")
|
||||
print("location_curve: ", location_curve.shape, ", the objective function value during the relocation step")
|
||||
print("model_curve: ", model_curve.shape, ", the objective function value during the model update step")
|
||||
|
||||
print("The first index is iteraion number, the second index is the objective function value vector")
|
||||
|
||||
|
||||
# %%
|
||||
# (Option 1) objective function value
|
||||
full_obj = full_curve[:,0]
|
||||
location_obj = location_curve[:,0]
|
||||
model_obj = model_curve[:,0]
|
||||
|
||||
# (Option 2) objective function value for only traveltime
|
||||
full_obj_tt = full_curve[:,1]
|
||||
location_obj_tt = location_curve[:,1]
|
||||
model_obj_tt = model_curve[:,1]
|
||||
|
||||
# (Option 3) objective function value for only common source differential arrival time
|
||||
full_obj_cs = full_curve[:,2]
|
||||
location_obj_cs = location_curve[:,2]
|
||||
model_obj_cs = model_curve[:,2]
|
||||
|
||||
# (Option 4) objective function value for only common receiver differential arrival time
|
||||
full_obj_cr = full_curve[:,3]
|
||||
location_obj_cr = location_curve[:,3]
|
||||
model_obj_cr = model_curve[:,3]
|
||||
|
||||
# (Option 5) objective function value for teleseismic differential arrival time
|
||||
full_obj_tele = full_curve[:,4]
|
||||
location_obj_tele = location_curve[:,4]
|
||||
model_obj_tele = model_curve[:,4]
|
||||
|
||||
# (Option 6) mean value of all data residual
|
||||
full_mean = full_curve[:,5]
|
||||
location_mean = location_curve[:,5]
|
||||
model_mean = model_curve[:,5]
|
||||
|
||||
# (Option 7) standard deviation of all data residual
|
||||
full_std = full_curve[:,6]
|
||||
location_std = location_curve[:,6]
|
||||
model_std = model_curve[:,6]
|
||||
|
||||
# (Option 8) mean value of residuals of traveltime
|
||||
full_mean_tt = full_curve[:,7]
|
||||
location_mean_tt = location_curve[:,7]
|
||||
model_mean_tt = model_curve[:,7]
|
||||
|
||||
# (Option 9) standard deviation of residuals of traveltime
|
||||
full_std_tt = full_curve[:,8]
|
||||
location_std_tt = location_curve[:,8]
|
||||
model_std_tt = model_curve[:,8]
|
||||
|
||||
# (Option 10) mean value of residuals of common source differential arrival time
|
||||
full_mean_cs = full_curve[:,9]
|
||||
location_mean_cs = location_curve[:,9]
|
||||
model_mean_cs = model_curve[:,9]
|
||||
|
||||
# (Option 11) standard deviation of residuals of common source differential arrival time
|
||||
full_std_cs = full_curve[:,10]
|
||||
location_std_cs = location_curve[:,10]
|
||||
model_std_cs = model_curve[:,10]
|
||||
|
||||
# (Option 12) mean value of residuals of common receiver differential arrival time
|
||||
full_mean_cr = full_curve[:,11]
|
||||
location_mean_cr = location_curve[:,11]
|
||||
model_mean_cr = model_curve[:,11]
|
||||
|
||||
# (Option 13) standard deviation of residuals of common receiver differential arrival time
|
||||
full_std_cr = full_curve[:,12]
|
||||
location_std_cr = location_curve[:,12]
|
||||
model_std_cr = model_curve[:,12]
|
||||
|
||||
# (Option 14) mean value of residuals of teleseismic differential arrival time
|
||||
full_mean_tele = full_curve[:,13]
|
||||
location_mean_tele = location_curve[:,13]
|
||||
model_mean_tele = model_curve[:,13]
|
||||
|
||||
# (Option 15) standard deviation of residuals of teleseismic differential arrival time
|
||||
full_std_tele = full_curve[:,14]
|
||||
location_std_tele = location_curve[:,14]
|
||||
model_std_tele = model_curve[:,14]
|
||||
|
||||
|
||||
# %%
|
||||
import os
|
||||
try:
|
||||
os.mkdir("img")
|
||||
except:
|
||||
pass
|
||||
|
||||
# %%
|
||||
# plot objective functin reduction
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
|
||||
plt.figure(figsize=(10, 6))
|
||||
ax = plt.subplot(1, 1, 1)
|
||||
|
||||
ax.plot(model_obj/np.max(model_obj), label='objective function', linewidth=2)
|
||||
ax.set_xlim([-0.2, len(model_obj)-0.8])
|
||||
ax.set_ylim([0, 1.1])
|
||||
ax.grid()
|
||||
ax.set_xlabel('Iteration number',fontsize=14)
|
||||
ax.set_ylabel('Normalized value',fontsize=14)
|
||||
ax.tick_params(axis='x', labelsize=14)
|
||||
ax.tick_params(axis='y', labelsize=14)
|
||||
ax.legend(fontsize=14)
|
||||
|
||||
plt.savefig('img/5_objective_function_reduction.png', dpi=300, bbox_inches='tight', edgecolor='w', facecolor='w')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user