From 4f6e4f7703c68db0cbd3763332432086ead88050 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 29 Feb 2024 21:36:05 +0100 Subject: [PATCH 01/59] PEP8 and small fixes --- openquake/smt/comparison/utils_compare_gmpes.py | 4 ++-- openquake/smt/residuals/gmpe_residuals.py | 10 +++++----- openquake/smt/sm_database.py | 5 +++-- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/openquake/smt/comparison/utils_compare_gmpes.py b/openquake/smt/comparison/utils_compare_gmpes.py index e1e2effe7..da1872ca2 100644 --- a/openquake/smt/comparison/utils_compare_gmpes.py +++ b/openquake/smt/comparison/utils_compare_gmpes.py @@ -317,7 +317,7 @@ def compute_matrix_gmpes(trt, ztor, imt_list, mag_list, gmpe_list, rake, strike, dist_type, trt, up_or_down_dip) # Get means further than minR - idx = np.argwhere(r_vals>minR).flatten() + idx = np.argwhere(r_vals>=minR).flatten() mean = [mean[0][0][idx]] std = [std[0][0][idx]] tau = [tau[0][0][idx]] @@ -331,7 +331,7 @@ def compute_matrix_gmpes(trt, ztor, imt_list, mag_list, gmpe_list, rake, strike, if mtxs_type == '16th_perc': Nstd = 1 # Median - 1std = ~16th percentile medians = np.append(medians, (np.exp(mean-Nstd*std[0]))) - sigmas = np.append(sigmas,std[0]) + sigmas = np.append(sigmas, std[0]) matrix_medians[:][g]= medians mtxs_median[n] = matrix_medians diff --git a/openquake/smt/residuals/gmpe_residuals.py b/openquake/smt/residuals/gmpe_residuals.py index 9464ace51..29e3b379b 100755 --- a/openquake/smt/residuals/gmpe_residuals.py +++ b/openquake/smt/residuals/gmpe_residuals.py @@ -480,28 +480,28 @@ def get_expected_motions(self, context): """ Calculate the expected ground motions from the context """ - # TODO Rake hack will be removed!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! if not context["Ctx"].rake: - context["Ctx"].rake = 0.0 + context["Ctx"].rake = 0.0 # Assume strike expected = OrderedDict([(gmpe, {}) for gmpe in self.gmpe_list]) # Period range for GSIM for gmpe in self.gmpe_list: expected[gmpe] = OrderedDict([(imtx, {}) for imtx in self.imts]) for imtx in self.imts: gsim = self.gmpe_list[gmpe] - gsim_orig = gsim # If gsim into mgmpe retain pot. region for ctx + gsim_orig = gsim # Retain before using mgmpe if "SA(" in imtx: period = imt.from_string(imtx).period if period < self.gmpe_sa_limits[gmpe][0] or\ period > self.gmpe_sa_limits[gmpe][1]: expected[gmpe][imtx] = None continue - # Check if gsim needs appending with mgmpe + # Check if gsim needs modifying with mgmpe gsim = mgmpe_check(gsim) # Add region parameter to sites context if specified in gsim if 'eshm20_region' in gsim_orig.kwargs: context["Ctx"].region = gsim_orig.kwargs['eshm20_region'] - if 'region' in gsim_orig.kwargs and 'eshm20_region' not in gsim.kwargs: + if ('region' in gsim_orig.kwargs and + 'eshm20_region' not in gsim.kwargs): context["Ctx"].region = gsim_orig.kwargs['region'] # Get expected motions mean, stddev = gsim.get_mean_and_stddevs( diff --git a/openquake/smt/sm_database.py b/openquake/smt/sm_database.py index cd6684221..05c862a7d 100755 --- a/openquake/smt/sm_database.py +++ b/openquake/smt/sm_database.py @@ -995,7 +995,8 @@ def get_event_and_records(self): SCALAR_IMTS = ["PGA", "PGV"] def get_observations(self, imtx, records, component="Geometric"): - """Return observed values for the given imt, as numpy array. + """ + Return observed values for the given imt, as numpy array. See superclass docstring for details """ @@ -1236,7 +1237,7 @@ def _get_event_id_list(self): def _get_site_id(self, str_id): """ - TODO + Get site id """ if str_id not in self.site_ids: self.site_ids.append(str_id) From fc4172b8b0eef0dd48e0a612c4ffd77e982cdbec Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 29 Feb 2024 22:36:29 +0100 Subject: [PATCH 02/59] update --- openquake/smt/comparison/utils_compare_gmpes.py | 2 +- openquake/smt/demos/demo_residuals_script.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/openquake/smt/comparison/utils_compare_gmpes.py b/openquake/smt/comparison/utils_compare_gmpes.py index da1872ca2..5f7a25651 100644 --- a/openquake/smt/comparison/utils_compare_gmpes.py +++ b/openquake/smt/comparison/utils_compare_gmpes.py @@ -290,7 +290,7 @@ def compute_matrix_gmpes(trt, ztor, imt_list, mag_list, gmpe_list, rake, strike, mtxs_median = {} d_step = 1 Z1, Z25 = get_z1_z25(Z1, Z25, Vs30, region) - for n, i in enumerate(imt_list): # Iterate though imt_list + for n, i in enumerate(imt_list): # Iterate through imt_list matrix_medians=np.zeros((len(gmpe_list), (len(mag_list)*int((maxR-minR)/d_step)))) diff --git a/openquake/smt/demos/demo_residuals_script.py b/openquake/smt/demos/demo_residuals_script.py index 2268901a5..711ab5427 100644 --- a/openquake/smt/demos/demo_residuals_script.py +++ b/openquake/smt/demos/demo_residuals_script.py @@ -96,6 +96,8 @@ def get_residuals(): rspl.plot_residual_pdf_with_spectral_period(residuals, fi_pdf) rspl.pdf_table(residuals, fi_pdf_table) + return residuals + def main(): """ @@ -106,7 +108,7 @@ def main(): parse_into_metadata() # Get the residuals per trt - res_per_trt = get_residuals() + res = get_residuals() if __name__ == '__main__': From d1c47b2b376431b8c385d804ad575cf50b4beb98 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 1 Mar 2024 10:19:44 +0100 Subject: [PATCH 03/59] renaming parsers and cleaning (confusing for ESM parsers) --- openquake/smt/demos/demo_residuals_script.py | 7 +- ...e_parser.py => esm_url_flatfile_parser.py} | 674 +++++++++--------- ...le_parser.py => esm_ws_flatfile_parser.py} | 376 +++++----- ...reece_test.csv => ESM_URL_Greece_test.csv} | 0 ...t.csv => ESM_WS_Albania_filtered_test.csv} | 0 ...est.py => esm_url_flatfile_parser_test.py} | 23 +- ...test.py => esm_ws_flatfile_parser_test.py} | 23 +- ...st.py => ngawest2_flatfile_parser_test.py} | 0 8 files changed, 550 insertions(+), 553 deletions(-) rename openquake/smt/parsers/{esm23_flatfile_parser.py => esm_url_flatfile_parser.py} (67%) rename openquake/smt/parsers/{esm22_flatfile_parser.py => esm_ws_flatfile_parser.py} (82%) rename openquake/smt/tests/parsers/data/{ESM23_Greece_test.csv => ESM_URL_Greece_test.csv} (100%) rename openquake/smt/tests/parsers/data/{ESM22_Albania_filtered_test.csv => ESM_WS_Albania_filtered_test.csv} (100%) rename openquake/smt/tests/parsers/{esm23_flatfile_parser_test.py => esm_url_flatfile_parser_test.py} (74%) rename openquake/smt/tests/parsers/{esm22_flatfile_parser_test.py => esm_ws_flatfile_parser_test.py} (74%) rename openquake/smt/tests/parsers/{ngaw2_flatfile_parser_test.py => ngawest2_flatfile_parser_test.py} (100%) diff --git a/openquake/smt/demos/demo_residuals_script.py b/openquake/smt/demos/demo_residuals_script.py index 711ab5427..32805d68b 100644 --- a/openquake/smt/demos/demo_residuals_script.py +++ b/openquake/smt/demos/demo_residuals_script.py @@ -10,7 +10,7 @@ import pickle from openquake.baselib import sap -from openquake.smt.parsers.esm23_flatfile_parser import ESM23FlatfileParser +from openquake.smt.parsers.esm_url_flatfile_parser import ESMFlatfileParserURL from openquake.smt.residuals import gmpe_residuals as res from openquake.smt.residuals import residual_plotter as rspl @@ -37,7 +37,7 @@ def parse_into_metadata(): shutil.rmtree(metadata_dir) # Parse the metadata - ESM23FlatfileParser.autobuild("000", 'db', metadata_dir, db) + ESMFlatfileParserURL.autobuild("000", 'db', metadata_dir, db) def get_residuals(): @@ -103,8 +103,7 @@ def main(): """ Run the demo workflow """ - - # Parse each flatfile into metadata + # Parse flatfile into metadata parse_into_metadata() # Get the residuals per trt diff --git a/openquake/smt/parsers/esm23_flatfile_parser.py b/openquake/smt/parsers/esm_url_flatfile_parser.py similarity index 67% rename from openquake/smt/parsers/esm23_flatfile_parser.py rename to openquake/smt/parsers/esm_url_flatfile_parser.py index c60f77bd5..46703a76f 100644 --- a/openquake/smt/parsers/esm23_flatfile_parser.py +++ b/openquake/smt/parsers/esm_url_flatfile_parser.py @@ -16,8 +16,7 @@ # You should have received a copy of the GNU Affero General Public License # along with OpenQuake. If not, see . """ -Parser for the ESM23 flatfile format (i.e. flatfile downloaded from custom -header URL) to SMT +Parser for a flatfile downloaded from the ESM custom url database This parser assumes you have selected all available headers in your URL search when downloading the flatfile @@ -91,7 +90,7 @@ "UA": "Ukraine", "US": "United States", "UZ": "Uzbekistan", "VU": "Vanuatu", "XK": "Kosovo", "YE": "Yemen"} -class ESM23FlatfileParser(SMDatabaseReader): +class ESMFlatfileParserURL(SMDatabaseReader): """ Parses the ESM metadata from the flatfile to a set of metadata objects @@ -136,25 +135,24 @@ def parse(self, location='./'): counter += 1 @classmethod - def autobuild(cls, dbid, dbname, output_location, - ESM23_flatfile_directory): + def autobuild(cls, dbid, dbname, output_location, ESM_flatfile_directory): """ Quick and dirty full database builder! """ - # Import ESM 2023 format strong-motion flatfile - ESM23 = pd.read_csv(ESM23_flatfile_directory) + # Import ESM URL format strong-motion flatfile + ESM = pd.read_csv(ESM_flatfile_directory) - # Create default values for headers not considered in ESM23 format - default_string = pd.Series(np.full(np.size(ESM23.esm_event_id), "")) + # Create default values + default_string = pd.Series(np.full(np.size(ESM.esm_event_id), "")) # Assign strike-slip to unknown faulting mechanism - r_fm_type = ESM23.fm_type_code.fillna('SS') + r_fm_type = ESM.fm_type_code.fillna('SS') # Reformat datetime - r_datetime = ESM23.event_time.str.replace('T',' ') + r_datetime = ESM.event_time.str.replace('T',' ') converted_base_data_path=_get_ESM18_headers( - ESM23, default_string, r_fm_type, r_datetime) + ESM, default_string, r_fm_type, r_datetime) if os.path.exists(output_location): raise IOError("Target database directory %s already exists!" @@ -585,364 +583,364 @@ def _retreive_ground_motion_from_row(self, row, header_list): scalars["U"][key] * scalars["V"][key]) return scalars, spectra -def _get_ESM18_headers(ESM23, default_string, r_fm_type, r_datetime): + +def _get_ESM18_headers(ESM, default_string, r_fm_type, r_datetime): """ - Convert from ESM23 format flatfile to ESM18 format flatfile + Convert from ESM URL format flatfile to ESM18 format flatfile """ # Construct dataframe with original ESM format ESM_original_headers = pd.DataFrame( { # Non-GMIM headers - "event_id":ESM23.esm_event_id, + "event_id":ESM.esm_event_id, "event_time":r_datetime, - "ISC_ev_id":ESM23.isc_event_id, - "USGS_ev_id":ESM23.usgs_event_id, - "INGV_ev_id":ESM23.ingv_event_id, - "EMSC_ev_id":ESM23.emsc_event_id, - "ev_nation_code":ESM23.ev_nation_code, - "ev_latitude":ESM23.ev_latitude, - "ev_longitude":ESM23.ev_longitude, - "ev_depth_km":ESM23.ev_depth_km, + "ISC_ev_id":ESM.isc_event_id, + "USGS_ev_id":ESM.usgs_event_id, + "INGV_ev_id":ESM.ingv_event_id, + "EMSC_ev_id":ESM.emsc_event_id, + "ev_nation_code":ESM.ev_nation_code, + "ev_latitude":ESM.ev_latitude, + "ev_longitude":ESM.ev_longitude, + "ev_depth_km":ESM.ev_depth_km, "ev_hyp_ref":default_string, "fm_type_code":r_fm_type, - "ML":ESM23.ml, - "ML_ref":ESM23.ml_ref, - "Mw":ESM23.mw, - "Mw_ref":ESM23.mw_ref, - "Ms":ESM23.ms, - "Ms_ref":ESM23.ms_ref, - "EMEC_Mw":ESM23.emec_mw, - "EMEC_Mw_type":ESM23.emec_mw_type, - "EMEC_Mw_ref":ESM23.emec_mw_ref, - "event_source_id":ESM23.event_source_id, - - "es_strike":ESM23.es_strike, - "es_dip":ESM23.es_dip, - "es_rake":ESM23.es_rake, + "ML":ESM.ml, + "ML_ref":ESM.ml_ref, + "Mw":ESM.mw, + "Mw_ref":ESM.mw_ref, + "Ms":ESM.ms, + "Ms_ref":ESM.ms_ref, + "EMEC_Mw":ESM.emec_mw, + "EMEC_Mw_type":ESM.emec_mw_type, + "EMEC_Mw_ref":ESM.emec_mw_ref, + "event_source_id":ESM.event_source_id, + + "es_strike":ESM.es_strike, + "es_dip":ESM.es_dip, + "es_rake":ESM.es_rake, "es_strike_dip_rake_ref":default_string, - "es_z_top":ESM23.z_top, - "es_z_top_ref":ESM23.es_z_top_ref, - "es_length":ESM23.es_length, - "es_width":ESM23.es_width, - "es_geometry_ref":ESM23.es_geometry_ref, + "es_z_top":ESM.z_top, + "es_z_top_ref":ESM.es_z_top_ref, + "es_length":ESM.es_length, + "es_width":ESM.es_width, + "es_geometry_ref":ESM.es_geometry_ref, - "network_code":ESM23.network_code, - "station_code":ESM23.station_code, - "location_code":ESM23.location_code, - "instrument_code":ESM23.instrument_type_code, - "sensor_depth_m":ESM23.sensor_depth_m, - "proximity_code":ESM23.proximity, - "housing_code":ESM23.hounsing, # Currently typo in their database header - "installation_code":ESM23.installation, - "st_nation_code":ESM23.st_nation_code, - "st_latitude":ESM23.st_latitude, - "st_longitude":ESM23.st_longitude, - "st_elevation":ESM23.st_elevation, + "network_code":ESM.network_code, + "station_code":ESM.station_code, + "location_code":ESM.location_code, + "instrument_code":ESM.instrument_type_code, + "sensor_depth_m":ESM.sensor_depth_m, + "proximity_code":ESM.proximity, + "housing_code":ESM.hounsing, # Currently typo in their database header + "installation_code":ESM.installation, + "st_nation_code":ESM.st_nation_code, + "st_latitude":ESM.st_latitude, + "st_longitude":ESM.st_longitude, + "st_elevation":ESM.st_elevation, - "ec8_code":ESM23.ec8_code, + "ec8_code":ESM.ec8_code, "ec8_code_method":default_string, "ec8_code_ref":default_string, - "vs30_m_sec":ESM23.vs30_m_s, + "vs30_m_sec":ESM.vs30_m_s, "vs30_ref":default_string, "vs30_calc_method":default_string, - "vs30_meas_type":ESM23.vs30_meas_type, - "slope_deg":ESM23.slope_deg, - "vs30_m_sec_WA":ESM23.vs30_m_s_wa, + "vs30_meas_type":ESM.vs30_meas_type, + "slope_deg":ESM.slope_deg, + "vs30_m_sec_WA":ESM.vs30_m_s_wa, - "epi_dist":ESM23.epi_dist, - "epi_az":ESM23.epi_az, - "JB_dist":ESM23.jb_dist, - "rup_dist":ESM23.rup_dist, - "Rx_dist":ESM23.rx_dist, - "Ry0_dist":ESM23.ry0_dist, + "epi_dist":ESM.epi_dist, + "epi_az":ESM.epi_az, + "JB_dist":ESM.jb_dist, + "rup_dist":ESM.rup_dist, + "Rx_dist":ESM.rx_dist, + "Ry0_dist":ESM.ry0_dist, - "instrument_type_code":ESM23.instrument_type_code, - "late_triggered_flag_01":ESM23.late_triggered_event_01, - "U_channel_code":ESM23.u_channel_code, - "U_azimuth_deg":ESM23.u_azimuth_deg, - "V_channel_code":ESM23.v_channel_code, - "V_azimuth_deg":ESM23.v_azimuth_deg, - "W_channel_code":ESM23.w_channel_code, + "instrument_type_code":ESM.instrument_type_code, + "late_triggered_flag_01":ESM.late_triggered_event_01, + "U_channel_code":ESM.u_channel_code, + "U_azimuth_deg":ESM.u_azimuth_deg, + "V_channel_code":ESM.v_channel_code, + "V_azimuth_deg":ESM.v_azimuth_deg, + "W_channel_code":ESM.w_channel_code, - "U_hp":ESM23.u_hp, - "V_hp":ESM23.v_hp, - "W_hp":ESM23.w_hp, - "U_lp":ESM23.u_lp, - "V_lp":ESM23.v_lp, - "W_lp":ESM23.w_lp, + "U_hp":ESM.u_hp, + "V_hp":ESM.v_hp, + "W_hp":ESM.w_hp, + "U_lp":ESM.u_lp, + "V_lp":ESM.v_lp, + "W_lp":ESM.w_lp, - "U_pga":ESM23.u_pga, - "V_pga":ESM23.v_pga, - "W_pga":ESM23.w_pga, - "rotD50_pga":ESM23.rotd50_pga, - "rotD100_pga":ESM23.rotd100_pga, - "rotD00_pga":ESM23.rotd00_pga, - "U_pgv":ESM23.u_pgv, - "V_pgv":ESM23.v_pgv, - "W_pgv":ESM23.w_pgv, - "rotD50_pgv":ESM23.rotd50_pgv, - "rotD100_pgv":ESM23.rotd100_pgv, - "rotD00_pgv":ESM23.rotd00_pgv, - "U_pgd":ESM23.u_pgd, - "V_pgd":ESM23.v_pgd, - "W_pgd":ESM23.w_pgd, - "rotD50_pgd":ESM23.rotd50_pgd, - "rotD100_pgd":ESM23.rotd100_pgd, - "rotD00_pgd":ESM23.rotd00_pgv, - "U_T90":ESM23.u_t90, - "V_T90":ESM23.v_t90, - "W_T90":ESM23.w_t90, - "rotD50_T90":ESM23.rotd50_t90, - "rotD100_T90":ESM23.rotd100_t90, - "rotD00_T90":ESM23.rot_d00_t90, # This header has typo in current db version - "U_housner":ESM23.u_housner, - "V_housner":ESM23.v_housner, - "W_housner":ESM23.w_housner, - "rotD50_housner":ESM23.rotd50_housner, - "rotD100_housner":ESM23.rotd100_housner, - "rotD00_housner":ESM23.rotd00_housner, - "U_CAV":ESM23.u_cav, - "V_CAV":ESM23.v_cav, - "W_CAV":ESM23.w_cav, - "rotD50_CAV":ESM23.rotd50_cav, - "rotD100_CAV":ESM23.rotd100_cav, - "rotD00_CAV":ESM23.rotd00_cav, - "U_ia":ESM23.u_ia, - "V_ia":ESM23.v_ia, - "W_ia":ESM23.w_ia, - "rotD50_ia":ESM23.rotd50_ia, - "rotD100_ia":ESM23.rotd100_ia, - "rotD00_ia":ESM23.rotd00_ia, + "U_pga":ESM.u_pga, + "V_pga":ESM.v_pga, + "W_pga":ESM.w_pga, + "rotD50_pga":ESM.rotd50_pga, + "rotD100_pga":ESM.rotd100_pga, + "rotD00_pga":ESM.rotd00_pga, + "U_pgv":ESM.u_pgv, + "V_pgv":ESM.v_pgv, + "W_pgv":ESM.w_pgv, + "rotD50_pgv":ESM.rotd50_pgv, + "rotD100_pgv":ESM.rotd100_pgv, + "rotD00_pgv":ESM.rotd00_pgv, + "U_pgd":ESM.u_pgd, + "V_pgd":ESM.v_pgd, + "W_pgd":ESM.w_pgd, + "rotD50_pgd":ESM.rotd50_pgd, + "rotD100_pgd":ESM.rotd100_pgd, + "rotD00_pgd":ESM.rotd00_pgv, + "U_T90":ESM.u_t90, + "V_T90":ESM.v_t90, + "W_T90":ESM.w_t90, + "rotD50_T90":ESM.rotd50_t90, + "rotD100_T90":ESM.rotd100_t90, + "rotD00_T90":ESM.rot_d00_t90, # This header has typo in current db version + "U_housner":ESM.u_housner, + "V_housner":ESM.v_housner, + "W_housner":ESM.w_housner, + "rotD50_housner":ESM.rotd50_housner, + "rotD100_housner":ESM.rotd100_housner, + "rotD00_housner":ESM.rotd00_housner, + "U_CAV":ESM.u_cav, + "V_CAV":ESM.v_cav, + "W_CAV":ESM.w_cav, + "rotD50_CAV":ESM.rotd50_cav, + "rotD100_CAV":ESM.rotd100_cav, + "rotD00_CAV":ESM.rotd00_cav, + "U_ia":ESM.u_ia, + "V_ia":ESM.v_ia, + "W_ia":ESM.w_ia, + "rotD50_ia":ESM.rotd50_ia, + "rotD100_ia":ESM.rotd100_ia, + "rotD00_ia":ESM.rotd00_ia, - "U_T0_010":ESM23.u_t0_010, - "U_T0_025":ESM23.u_t0_025, - "U_T0_040":ESM23.u_t0_040, - "U_T0_050":ESM23.u_t0_050, - "U_T0_070":ESM23.u_t0_070, - "U_T0_100":ESM23.u_t0_100, - "U_T0_150":ESM23.u_t0_150, - "U_T0_200":ESM23.u_t0_200, - "U_T0_250":ESM23.u_t0_250, - "U_T0_300":ESM23.u_t0_300, - "U_T0_350":ESM23.u_t0_350, - "U_T0_400":ESM23.u_t0_400, - "U_T0_450":ESM23.u_t0_450, - "U_T0_500":ESM23.u_t0_500, - "U_T0_600":ESM23.u_t0_600, - "U_T0_700":ESM23.u_t0_700, - "U_T0_750":ESM23.u_t0_750, - "U_T0_800":ESM23.u_t0_800, - "U_T0_900":ESM23.u_t0_900, - "U_T1_000":ESM23.u_t1_000, - "U_T1_200":ESM23.u_t1_200, - "U_T1_400":ESM23.u_t1_400, - "U_T1_600":ESM23.u_t1_600, - "U_T1_800":ESM23.u_t1_800, - "U_T2_000":ESM23.u_t2_000, - "U_T2_500":ESM23.u_t2_500, - "U_T3_000":ESM23.u_t3_000, - "U_T3_500":ESM23.u_t3_500, - "U_T4_000":ESM23.u_t4_000, - "U_T4_500":ESM23.u_t4_500, - "U_T5_000":ESM23.u_t5_000, - "U_T6_000":ESM23.u_t6_000, - "U_T7_000":ESM23.u_t7_000, - "U_T8_000":ESM23.u_t8_000, - "U_T9_000":ESM23.u_t9_000, - "U_T10_000":ESM23.u_t10_000, + "U_T0_010":ESM.u_t0_010, + "U_T0_025":ESM.u_t0_025, + "U_T0_040":ESM.u_t0_040, + "U_T0_050":ESM.u_t0_050, + "U_T0_070":ESM.u_t0_070, + "U_T0_100":ESM.u_t0_100, + "U_T0_150":ESM.u_t0_150, + "U_T0_200":ESM.u_t0_200, + "U_T0_250":ESM.u_t0_250, + "U_T0_300":ESM.u_t0_300, + "U_T0_350":ESM.u_t0_350, + "U_T0_400":ESM.u_t0_400, + "U_T0_450":ESM.u_t0_450, + "U_T0_500":ESM.u_t0_500, + "U_T0_600":ESM.u_t0_600, + "U_T0_700":ESM.u_t0_700, + "U_T0_750":ESM.u_t0_750, + "U_T0_800":ESM.u_t0_800, + "U_T0_900":ESM.u_t0_900, + "U_T1_000":ESM.u_t1_000, + "U_T1_200":ESM.u_t1_200, + "U_T1_400":ESM.u_t1_400, + "U_T1_600":ESM.u_t1_600, + "U_T1_800":ESM.u_t1_800, + "U_T2_000":ESM.u_t2_000, + "U_T2_500":ESM.u_t2_500, + "U_T3_000":ESM.u_t3_000, + "U_T3_500":ESM.u_t3_500, + "U_T4_000":ESM.u_t4_000, + "U_T4_500":ESM.u_t4_500, + "U_T5_000":ESM.u_t5_000, + "U_T6_000":ESM.u_t6_000, + "U_T7_000":ESM.u_t7_000, + "U_T8_000":ESM.u_t8_000, + "U_T9_000":ESM.u_t9_000, + "U_T10_000":ESM.u_t10_000, - "V_T0_010":ESM23.v_t0_010, - "V_T0_025":ESM23.v_t0_025, - "V_T0_040":ESM23.v_t0_040, - "V_T0_050":ESM23.v_t0_050, - "V_T0_070":ESM23.v_t0_070, - "V_T0_100":ESM23.v_t0_100, - "V_T0_150":ESM23.v_t0_150, - "V_T0_200":ESM23.v_t0_200, - "V_T0_250":ESM23.v_t0_250, - "V_T0_300":ESM23.v_t0_300, - "V_T0_350":ESM23.v_t0_350, - "V_T0_400":ESM23.v_t0_400, - "V_T0_450":ESM23.v_t0_450, - "V_T0_500":ESM23.v_t0_500, - "V_T0_600":ESM23.v_t0_600, - "V_T0_700":ESM23.v_t0_700, - "V_T0_750":ESM23.v_t0_750, - "V_T0_800":ESM23.v_t0_800, - "V_T0_900":ESM23.v_t0_900, - "V_T1_000":ESM23.v_t1_000, - "V_T1_200":ESM23.v_t1_200, - "V_T1_400":ESM23.v_t1_400, - "V_T1_600":ESM23.v_t1_600, - "V_T1_800":ESM23.v_t1_800, - "V_T2_000":ESM23.v_t2_000, - "V_T2_500":ESM23.v_t2_500, - "V_T3_000":ESM23.v_t3_000, - "V_T3_500":ESM23.v_t3_500, - "V_T4_000":ESM23.v_t4_000, - "V_T4_500":ESM23.v_t4_500, - "V_T5_000":ESM23.v_t5_000, - "V_T6_000":ESM23.v_t6_000, - "V_T7_000":ESM23.v_t7_000, - "V_T8_000":ESM23.v_t8_000, - "V_T9_000":ESM23.v_t9_000, - "V_T10_000":ESM23.v_t10_000, + "V_T0_010":ESM.v_t0_010, + "V_T0_025":ESM.v_t0_025, + "V_T0_040":ESM.v_t0_040, + "V_T0_050":ESM.v_t0_050, + "V_T0_070":ESM.v_t0_070, + "V_T0_100":ESM.v_t0_100, + "V_T0_150":ESM.v_t0_150, + "V_T0_200":ESM.v_t0_200, + "V_T0_250":ESM.v_t0_250, + "V_T0_300":ESM.v_t0_300, + "V_T0_350":ESM.v_t0_350, + "V_T0_400":ESM.v_t0_400, + "V_T0_450":ESM.v_t0_450, + "V_T0_500":ESM.v_t0_500, + "V_T0_600":ESM.v_t0_600, + "V_T0_700":ESM.v_t0_700, + "V_T0_750":ESM.v_t0_750, + "V_T0_800":ESM.v_t0_800, + "V_T0_900":ESM.v_t0_900, + "V_T1_000":ESM.v_t1_000, + "V_T1_200":ESM.v_t1_200, + "V_T1_400":ESM.v_t1_400, + "V_T1_600":ESM.v_t1_600, + "V_T1_800":ESM.v_t1_800, + "V_T2_000":ESM.v_t2_000, + "V_T2_500":ESM.v_t2_500, + "V_T3_000":ESM.v_t3_000, + "V_T3_500":ESM.v_t3_500, + "V_T4_000":ESM.v_t4_000, + "V_T4_500":ESM.v_t4_500, + "V_T5_000":ESM.v_t5_000, + "V_T6_000":ESM.v_t6_000, + "V_T7_000":ESM.v_t7_000, + "V_T8_000":ESM.v_t8_000, + "V_T9_000":ESM.v_t9_000, + "V_T10_000":ESM.v_t10_000, - "W_T0_010":ESM23.w_t0_010, - "W_T0_025":ESM23.w_t0_025, - "W_T0_040":ESM23.w_t0_040, - "W_T0_050":ESM23.w_t0_050, - "W_T0_070":ESM23.w_t0_070, - "W_T0_100":ESM23.w_t0_100, - "W_T0_150":ESM23.w_t0_150, - "W_T0_200":ESM23.w_t0_200, - "W_T0_250":ESM23.w_t0_250, - "W_T0_300":ESM23.w_t0_300, - "W_T0_350":ESM23.w_t0_350, - "W_T0_400":ESM23.w_t0_400, - "W_T0_450":ESM23.w_t0_450, - "W_T0_500":ESM23.w_t0_500, - "W_T0_600":ESM23.w_t0_600, - "W_T0_700":ESM23.w_t0_700, - "W_T0_750":ESM23.w_t0_750, - "W_T0_800":ESM23.w_t0_800, - "W_T0_900":ESM23.w_t0_900, - "W_T1_000":ESM23.w_t1_000, - "W_T1_200":ESM23.w_t1_200, - "W_T1_400":ESM23.w_t1_400, - "W_T1_600":ESM23.w_t1_600, - "W_T1_800":ESM23.w_t1_800, - "W_T2_000":ESM23.w_t2_000, - "W_T2_500":ESM23.w_t2_500, - "W_T3_000":ESM23.w_t3_000, - "W_T3_500":ESM23.w_t3_500, - "W_T4_000":ESM23.w_t4_000, - "W_T4_500":ESM23.w_t4_500, - "W_T5_000":ESM23.w_t5_000, - "W_T6_000":ESM23.w_t6_000, - "W_T7_000":ESM23.w_t7_000, - "W_T8_000":ESM23.w_t8_000, - "W_T9_000":ESM23.w_t9_000, - "W_T10_000":ESM23.w_t10_000, + "W_T0_010":ESM.w_t0_010, + "W_T0_025":ESM.w_t0_025, + "W_T0_040":ESM.w_t0_040, + "W_T0_050":ESM.w_t0_050, + "W_T0_070":ESM.w_t0_070, + "W_T0_100":ESM.w_t0_100, + "W_T0_150":ESM.w_t0_150, + "W_T0_200":ESM.w_t0_200, + "W_T0_250":ESM.w_t0_250, + "W_T0_300":ESM.w_t0_300, + "W_T0_350":ESM.w_t0_350, + "W_T0_400":ESM.w_t0_400, + "W_T0_450":ESM.w_t0_450, + "W_T0_500":ESM.w_t0_500, + "W_T0_600":ESM.w_t0_600, + "W_T0_700":ESM.w_t0_700, + "W_T0_750":ESM.w_t0_750, + "W_T0_800":ESM.w_t0_800, + "W_T0_900":ESM.w_t0_900, + "W_T1_000":ESM.w_t1_000, + "W_T1_200":ESM.w_t1_200, + "W_T1_400":ESM.w_t1_400, + "W_T1_600":ESM.w_t1_600, + "W_T1_800":ESM.w_t1_800, + "W_T2_000":ESM.w_t2_000, + "W_T2_500":ESM.w_t2_500, + "W_T3_000":ESM.w_t3_000, + "W_T3_500":ESM.w_t3_500, + "W_T4_000":ESM.w_t4_000, + "W_T4_500":ESM.w_t4_500, + "W_T5_000":ESM.w_t5_000, + "W_T6_000":ESM.w_t6_000, + "W_T7_000":ESM.w_t7_000, + "W_T8_000":ESM.w_t8_000, + "W_T9_000":ESM.w_t9_000, + "W_T10_000":ESM.w_t10_000, - "rotD50_T0_010":ESM23.rotd50_t0_010, - "rotD50_T0_025":ESM23.rotd50_t0_025, - "rotD50_T0_040":ESM23.rotd50_t0_040, - "rotD50_T0_050":ESM23.rotd50_t0_050, - "rotD50_T0_070":ESM23.rotd50_t0_070, - "rotD50_T0_100":ESM23.rotd50_t0_100, - "rotD50_T0_150":ESM23.rotd50_t0_150, - "rotD50_T0_200":ESM23.rotd50_t0_200, - "rotD50_T0_250":ESM23.rotd50_t0_250, - "rotD50_T0_300":ESM23.rotd50_t0_300, - "rotD50_T0_350":ESM23.rotd50_t0_350, - "rotD50_T0_400":ESM23.rotd50_t0_400, - "rotD50_T0_450":ESM23.rotd50_t0_450, - "rotD50_T0_500":ESM23.rotd50_t0_500, - "rotD50_T0_600":ESM23.rotd50_t0_600, - "rotD50_T0_700":ESM23.rotd50_t0_700, - "rotD50_T0_750":ESM23.rotd50_t0_750, - "rotD50_T0_800":ESM23.rotd50_t0_800, - "rotD50_T0_900":ESM23.rotd50_t0_900, - "rotD50_T1_000":ESM23.rotd50_t1_000, - "rotD50_T1_200":ESM23.rotd50_t1_200, - "rotD50_T1_400":ESM23.rotd50_t1_400, - "rotD50_T1_600":ESM23.rotd50_t1_600, - "rotD50_T1_800":ESM23.rotd50_t1_800, - "rotD50_T2_000":ESM23.rotd50_t2_000, - "rotD50_T2_500":ESM23.rotd50_t2_500, - "rotD50_T3_000":ESM23.rotd50_t3_000, - "rotD50_T3_500":ESM23.rotd50_t3_500, - "rotD50_T4_000":ESM23.rotd50_t4_000, - "rotD50_T4_500":ESM23.rotd50_t4_500, - "rotD50_T5_000":ESM23.rotd50_t5_000, - "rotD50_T6_000":ESM23.rotd50_t6_000, - "rotD50_T7_000":ESM23.rotd50_t7_000, - "rotD50_T8_000":ESM23.rotd50_t8_000, - "rotD50_T9_000":ESM23.rotd50_t9_000, - "rotD50_T10_000":ESM23.rotd50_t10_000, + "rotD50_T0_010":ESM.rotd50_t0_010, + "rotD50_T0_025":ESM.rotd50_t0_025, + "rotD50_T0_040":ESM.rotd50_t0_040, + "rotD50_T0_050":ESM.rotd50_t0_050, + "rotD50_T0_070":ESM.rotd50_t0_070, + "rotD50_T0_100":ESM.rotd50_t0_100, + "rotD50_T0_150":ESM.rotd50_t0_150, + "rotD50_T0_200":ESM.rotd50_t0_200, + "rotD50_T0_250":ESM.rotd50_t0_250, + "rotD50_T0_300":ESM.rotd50_t0_300, + "rotD50_T0_350":ESM.rotd50_t0_350, + "rotD50_T0_400":ESM.rotd50_t0_400, + "rotD50_T0_450":ESM.rotd50_t0_450, + "rotD50_T0_500":ESM.rotd50_t0_500, + "rotD50_T0_600":ESM.rotd50_t0_600, + "rotD50_T0_700":ESM.rotd50_t0_700, + "rotD50_T0_750":ESM.rotd50_t0_750, + "rotD50_T0_800":ESM.rotd50_t0_800, + "rotD50_T0_900":ESM.rotd50_t0_900, + "rotD50_T1_000":ESM.rotd50_t1_000, + "rotD50_T1_200":ESM.rotd50_t1_200, + "rotD50_T1_400":ESM.rotd50_t1_400, + "rotD50_T1_600":ESM.rotd50_t1_600, + "rotD50_T1_800":ESM.rotd50_t1_800, + "rotD50_T2_000":ESM.rotd50_t2_000, + "rotD50_T2_500":ESM.rotd50_t2_500, + "rotD50_T3_000":ESM.rotd50_t3_000, + "rotD50_T3_500":ESM.rotd50_t3_500, + "rotD50_T4_000":ESM.rotd50_t4_000, + "rotD50_T4_500":ESM.rotd50_t4_500, + "rotD50_T5_000":ESM.rotd50_t5_000, + "rotD50_T6_000":ESM.rotd50_t6_000, + "rotD50_T7_000":ESM.rotd50_t7_000, + "rotD50_T8_000":ESM.rotd50_t8_000, + "rotD50_T9_000":ESM.rotd50_t9_000, + "rotD50_T10_000":ESM.rotd50_t10_000, - "rotD100_T0_010":ESM23.rotd100_t0_010, - "rotD100_T0_025":ESM23.rotd100_t0_025, - "rotD100_T0_040":ESM23.rotd100_t0_040, - "rotD100_T0_050":ESM23.rotd100_t0_050, - "rotD100_T0_070":ESM23.rotd100_t0_070, - "rotD100_T0_100":ESM23.rotd100_t0_100, - "rotD100_T0_150":ESM23.rotd100_t0_150, - "rotD100_T0_200":ESM23.rotd100_t0_200, - "rotD100_T0_250":ESM23.rotd100_t0_250, - "rotD100_T0_300":ESM23.rotd100_t0_300, - "rotD100_T0_350":ESM23.rotd100_t0_350, - "rotD100_T0_400":ESM23.rotd100_t0_400, - "rotD100_T0_450":ESM23.rotd100_t0_450, - "rotD100_T0_500":ESM23.rotd100_t0_500, - "rotD100_T0_600":ESM23.rotd100_t0_600, - "rotD100_T0_700":ESM23.rotd100_t0_700, - "rotD100_T0_750":ESM23.rotd100_t0_750, - "rotD100_T0_800":ESM23.rotd100_t0_800, - "rotD100_T0_900":ESM23.rotd100_t0_900, - "rotD100_T1_000":ESM23.rotd100_t1_000, - "rotD100_T1_200":ESM23.rotd100_t1_200, - "rotD100_T1_400":ESM23.rotd100_t1_400, - "rotD100_T1_600":ESM23.rotd100_t1_600, - "rotD100_T1_800":ESM23.rotd100_t1_800, - "rotD100_T2_000":ESM23.rotd100_t2_000, - "rotD100_T2_500":ESM23.rotd100_t2_500, - "rotD100_T3_000":ESM23.rotd100_t3_000, - "rotD100_T3_500":ESM23.rotd100_t3_500, - "rotD100_T4_000":ESM23.rotd100_t4_000, - "rotD100_T4_500":ESM23.rotd100_t4_500, - "rotD100_T5_000":ESM23.rotd100_t5_000, - "rotD100_T6_000":ESM23.rotd100_t6_000, - "rotD100_T7_000":ESM23.rotd100_t7_000, - "rotD100_T8_000":ESM23.rotd100_t8_000, - "rotD100_T9_000":ESM23.rotd100_t9_000, - "rotD100_T10_000":ESM23.rotd100_t10_000, + "rotD100_T0_010":ESM.rotd100_t0_010, + "rotD100_T0_025":ESM.rotd100_t0_025, + "rotD100_T0_040":ESM.rotd100_t0_040, + "rotD100_T0_050":ESM.rotd100_t0_050, + "rotD100_T0_070":ESM.rotd100_t0_070, + "rotD100_T0_100":ESM.rotd100_t0_100, + "rotD100_T0_150":ESM.rotd100_t0_150, + "rotD100_T0_200":ESM.rotd100_t0_200, + "rotD100_T0_250":ESM.rotd100_t0_250, + "rotD100_T0_300":ESM.rotd100_t0_300, + "rotD100_T0_350":ESM.rotd100_t0_350, + "rotD100_T0_400":ESM.rotd100_t0_400, + "rotD100_T0_450":ESM.rotd100_t0_450, + "rotD100_T0_500":ESM.rotd100_t0_500, + "rotD100_T0_600":ESM.rotd100_t0_600, + "rotD100_T0_700":ESM.rotd100_t0_700, + "rotD100_T0_750":ESM.rotd100_t0_750, + "rotD100_T0_800":ESM.rotd100_t0_800, + "rotD100_T0_900":ESM.rotd100_t0_900, + "rotD100_T1_000":ESM.rotd100_t1_000, + "rotD100_T1_200":ESM.rotd100_t1_200, + "rotD100_T1_400":ESM.rotd100_t1_400, + "rotD100_T1_600":ESM.rotd100_t1_600, + "rotD100_T1_800":ESM.rotd100_t1_800, + "rotD100_T2_000":ESM.rotd100_t2_000, + "rotD100_T2_500":ESM.rotd100_t2_500, + "rotD100_T3_000":ESM.rotd100_t3_000, + "rotD100_T3_500":ESM.rotd100_t3_500, + "rotD100_T4_000":ESM.rotd100_t4_000, + "rotD100_T4_500":ESM.rotd100_t4_500, + "rotD100_T5_000":ESM.rotd100_t5_000, + "rotD100_T6_000":ESM.rotd100_t6_000, + "rotD100_T7_000":ESM.rotd100_t7_000, + "rotD100_T8_000":ESM.rotd100_t8_000, + "rotD100_T9_000":ESM.rotd100_t9_000, + "rotD100_T10_000":ESM.rotd100_t10_000, - "rotD00_T0_010":ESM23.rotd00_t0_010, - "rotD00_T0_025":ESM23.rotd00_t0_025, - "rotD00_T0_040":ESM23.rotd00_t0_040, - "rotD00_T0_050":ESM23.rotd00_t0_050, - "rotD00_T0_070":ESM23.rotd00_t0_070, - "rotD00_T0_100":ESM23.rotd00_t0_100, - "rotD00_T0_150":ESM23.rotd00_t0_150, - "rotD00_T0_200":ESM23.rotd00_t0_200, - "rotD00_T0_250":ESM23.rotd00_t0_250, - "rotD00_T0_300":ESM23.rotd00_t0_300, - "rotD00_T0_350":ESM23.rotd00_t0_350, - "rotD00_T0_400":ESM23.rotd00_t0_400, - "rotD00_T0_450":ESM23.rotd00_t0_450, - "rotD00_T0_500":ESM23.rotd00_t0_500, - "rotD00_T0_600":ESM23.rotd00_t0_600, - "rotD00_T0_700":ESM23.rotd00_t0_700, - "rotD00_T0_750":ESM23.rotd00_t0_750, - "rotD00_T0_800":ESM23.rotd00_t0_800, - "rotD00_T0_900":ESM23.rotd00_t0_900, - "rotD00_T1_000":ESM23.rotd00_t1_000, - "rotD00_T1_200":ESM23.rotd00_t1_200, - "rotD00_T1_400":ESM23.rotd00_t1_400, - "rotD00_T1_600":ESM23.rotd00_t1_600, - "rotD00_T1_800":ESM23.rotd00_t1_800, - "rotD00_T2_000":ESM23.rotd00_t2_000, - "rotD00_T2_500":ESM23.rotd00_t2_500, - "rotD00_T3_000":ESM23.rotd00_t3_000, - "rotD00_T3_500":ESM23.rotd00_t3_500, - "rotD00_T4_000":ESM23.rotd00_t4_000, - "rotD00_T4_500":ESM23.rotd00_t4_500, - "rotD00_T5_000":ESM23.rotd00_t5_000, - "rotD00_T6_000":ESM23.rotd00_t6_000, - "rotD00_T7_000":ESM23.rotd00_t7_000, - "rotD00_T8_000":ESM23.rotd00_t8_000, - "rotD00_T9_000":ESM23.rotd00_t9_000, - "rotD00_T10_000":ESM23.rotd00_t10_000}) + "rotD00_T0_010":ESM.rotd00_t0_010, + "rotD00_T0_025":ESM.rotd00_t0_025, + "rotD00_T0_040":ESM.rotd00_t0_040, + "rotD00_T0_050":ESM.rotd00_t0_050, + "rotD00_T0_070":ESM.rotd00_t0_070, + "rotD00_T0_100":ESM.rotd00_t0_100, + "rotD00_T0_150":ESM.rotd00_t0_150, + "rotD00_T0_200":ESM.rotd00_t0_200, + "rotD00_T0_250":ESM.rotd00_t0_250, + "rotD00_T0_300":ESM.rotd00_t0_300, + "rotD00_T0_350":ESM.rotd00_t0_350, + "rotD00_T0_400":ESM.rotd00_t0_400, + "rotD00_T0_450":ESM.rotd00_t0_450, + "rotD00_T0_500":ESM.rotd00_t0_500, + "rotD00_T0_600":ESM.rotd00_t0_600, + "rotD00_T0_700":ESM.rotd00_t0_700, + "rotD00_T0_750":ESM.rotd00_t0_750, + "rotD00_T0_800":ESM.rotd00_t0_800, + "rotD00_T0_900":ESM.rotd00_t0_900, + "rotD00_T1_000":ESM.rotd00_t1_000, + "rotD00_T1_200":ESM.rotd00_t1_200, + "rotD00_T1_400":ESM.rotd00_t1_400, + "rotD00_T1_600":ESM.rotd00_t1_600, + "rotD00_T1_800":ESM.rotd00_t1_800, + "rotD00_T2_000":ESM.rotd00_t2_000, + "rotD00_T2_500":ESM.rotd00_t2_500, + "rotD00_T3_000":ESM.rotd00_t3_000, + "rotD00_T3_500":ESM.rotd00_t3_500, + "rotD00_T4_000":ESM.rotd00_t4_000, + "rotD00_T4_500":ESM.rotd00_t4_500, + "rotD00_T5_000":ESM.rotd00_t5_000, + "rotD00_T6_000":ESM.rotd00_t6_000, + "rotD00_T7_000":ESM.rotd00_t7_000, + "rotD00_T8_000":ESM.rotd00_t8_000, + "rotD00_T9_000":ESM.rotd00_t9_000, + "rotD00_T10_000":ESM.rotd00_t10_000}) # Output to folder where converted flatfile read into parser DATA = os.path.abspath('') tmp = tempfile.mkdtemp() - converted_base_data_path = os.path.join(DATA, tmp, - 'converted_flatfile.csv') + converted_base_data_path = os.path.join(DATA, tmp, 'converted_flatfile.csv') ESM_original_headers.to_csv(converted_base_data_path, sep=';') return converted_base_data_path \ No newline at end of file diff --git a/openquake/smt/parsers/esm22_flatfile_parser.py b/openquake/smt/parsers/esm_ws_flatfile_parser.py similarity index 82% rename from openquake/smt/parsers/esm22_flatfile_parser.py rename to openquake/smt/parsers/esm_ws_flatfile_parser.py index 719e08d1e..e7cdef129 100644 --- a/openquake/smt/parsers/esm22_flatfile_parser.py +++ b/openquake/smt/parsers/esm_ws_flatfile_parser.py @@ -16,8 +16,7 @@ # You should have received a copy of the GNU Affero General Public License # along with OpenQuake. If not, see . """ -Parser for the ESM22 flatfile format (i.e. flatfile downloaded from web -service) to SMT +Parser for a flatfile downloaded from the ESM web service """ import pandas as pd import os, sys @@ -81,7 +80,7 @@ "UA": "Ukraine", "UZ": "Uzbekistan", "XK": "Kosovo"} -class ESM22FlatfileParser(SMDatabaseReader): +class ESMFlatfileParserWS(SMDatabaseReader): """ Parses the ESM metadata from the flatfile to a set of metadata objects @@ -126,25 +125,24 @@ def parse(self, location='./'): counter += 1 @classmethod - def autobuild(cls, dbid, dbname, output_location, ESM22_flatfile_directory): + def autobuild(cls, dbid, dbname, output_location, ESM_flatfile_directory): """ Quick and dirty full database builder! """ - - # Import ESM 2022 format strong-motion flatfile - ESM22 = pd.read_csv(ESM22_flatfile_directory) #Need to specify ESM22_flatfile_directory and filename + # Import ESM web service format strong-motion flatfile + ESM = pd.read_csv(ESM_flatfile_directory) - # Create default values for headers not considered in ESM22 flatfile format - default_string = pd.Series(np.full(np.size(ESM22.event_id),str(""))) + # Create default values + default_string = pd.Series(np.full(np.size(ESM.event_id),str(""))) # Assign strike-slip to unknown faulting mechanism - r_fm_type = ESM22.fm_type_code.fillna('SS') + r_fm_type = ESM.fm_type_code.fillna('SS') #Reformat datetime - r_datetime = ESM22.event_time.str.replace('T',' ') + r_datetime = ESM.event_time.str.replace('T',' ') converted_base_data_path=_get_ESM18_headers( - ESM22,default_string,r_fm_type,r_datetime) + ESM, default_string, r_fm_type, r_datetime) if os.path.exists(output_location): raise IOError("Target database directory %s already exists!" @@ -575,40 +573,39 @@ def _retreive_ground_motion_from_row(self, row, header_list): scalars["U"][key] * scalars["V"][key]) return scalars, spectra -def _get_ESM18_headers(ESM22,default_string,r_fm_type,r_datetime): - + +def _get_ESM18_headers(ESM, default_string, r_fm_type, r_datetime): """ - Convert first from ESM22 format flatfile to ESM18 format flatfile + Convert from ESM web service format flatfile to ESM18 format flatfile """ - - #Construct dataframe with original ESM format + # Construct dataframe with original ESM format ESM_original_headers = pd.DataFrame( { - #Non-GMIM headers - "event_id":ESM22.event_id, + # Non-GMIM headers + "event_id":ESM.event_id, "event_time":r_datetime, "ISC_ev_id":default_string, "USGS_ev_id":default_string, "INGV_ev_id":default_string, "EMSC_ev_id":default_string, - "ev_nation_code":ESM22.ev_nation_code, - "ev_latitude":ESM22.ev_latitude, - "ev_longitude":ESM22.ev_longitude, - "ev_depth_km":ESM22.ev_depth_km, + "ev_nation_code":ESM.ev_nation_code, + "ev_latitude":ESM.ev_latitude, + "ev_longitude":ESM.ev_longitude, + "ev_depth_km":ESM.ev_depth_km, "ev_hyp_ref":default_string, "fm_type_code":r_fm_type, - "ML":ESM22.ML, + "ML":ESM.ML, "ML_ref":default_string, - "Mw":ESM22.MW, + "Mw":ESM.MW, "Mw_ref":default_string, "Ms":default_string, "Ms_ref":default_string, - "EMEC_Mw":ESM22.MW, + "EMEC_Mw":ESM.MW, "EMEC_Mw_type":default_string, "EMEC_Mw_ref":default_string, "event_source_id":default_string, - # Rupture plane information not provided in ESM22 format flatfile + # Nodal plane information not provided in ESM web service format flatfile "es_strike":default_string, "es_dip":default_string, "es_rake":default_string, @@ -619,78 +616,78 @@ def _get_ESM18_headers(ESM22,default_string,r_fm_type,r_datetime): "es_width":default_string, "es_geometry_ref":default_string, - "network_code":ESM22.network_code, - "station_code":ESM22.station_code, - "location_code":ESM22.location_code, - "instrument_code":ESM22.instrument_type, - "sensor_depth_m":ESM22.sensor_depth_m, - "proximity_code":ESM22.proximity, - "housing_code":ESM22.housing, - "installation_code":ESM22.installation, - "st_nation_code":ESM22.st_nation_code, - "st_latitude":ESM22.st_latitude, - "st_longitude":ESM22.st_longitude, - "st_elevation":ESM22.st_elevation, + "network_code":ESM.network_code, + "station_code":ESM.station_code, + "location_code":ESM.location_code, + "instrument_code":ESM.instrument_type, + "sensor_depth_m":ESM.sensor_depth_m, + "proximity_code":ESM.proximity, + "housing_code":ESM.housing, + "installation_code":ESM.installation, + "st_nation_code":ESM.st_nation_code, + "st_latitude":ESM.st_latitude, + "st_longitude":ESM.st_longitude, + "st_elevation":ESM.st_elevation, - "ec8_code":ESM22.preferred_ec8_code, - "ec8_code_method":ESM22.method_ec8_vs30, + "ec8_code":ESM.preferred_ec8_code, + "ec8_code_method":ESM.method_ec8_vs30, "ec8_code_ref":default_string, - "vs30_m_sec":ESM22.preferred_vs30_m_s, + "vs30_m_sec":ESM.preferred_vs30_m_s, "vs30_ref":default_string, "vs30_calc_method":default_string, "vs30_meas_type":default_string, "slope_deg":default_string, "vs30_m_sec_WA":default_string, - "epi_dist":ESM22.epi_dist, + "epi_dist":ESM.epi_dist, "epi_az":default_string, - "JB_dist":ESM22.JB_dist, - "rup_dist":ESM22.rup_dist, + "JB_dist":ESM.JB_dist, + "rup_dist":ESM.rup_dist, "Rx_dist":default_string, "Ry0_dist":default_string, - "instrument_type_code":ESM22.instrument_type_code, - "late_triggered_flag_01":ESM22.Late_triggered, - "U_channel_code":ESM22.U_channel_code, - "U_azimuth_deg":ESM22.U_azimuth_deg, - "V_channel_code":ESM22.V_channel_code, - "V_azimuth_deg":ESM22.V_azimuth_deg, - "W_channel_code":ESM22.W_channel_code, + "instrument_type_code":ESM.instrument_type_code, + "late_triggered_flag_01":ESM.Late_triggered, + "U_channel_code":ESM.U_channel_code, + "U_azimuth_deg":ESM.U_azimuth_deg, + "V_channel_code":ESM.V_channel_code, + "V_azimuth_deg":ESM.V_azimuth_deg, + "W_channel_code":ESM.W_channel_code, - "U_hp":ESM22.U_hp, - "V_hp":ESM22.V_hp, - "W_hp":ESM22.W_hp, - "U_lp":ESM22.U_lp, - "V_lp":ESM22.V_lp, - "W_lp":ESM22.W_lp, + "U_hp":ESM.U_hp, + "V_hp":ESM.V_hp, + "W_hp":ESM.W_hp, + "U_lp":ESM.U_lp, + "V_lp":ESM.V_lp, + "W_lp":ESM.W_lp, - "U_pga":ESM22.U_pga, - "V_pga":ESM22.V_pga, - "W_pga":ESM22.W_pga, + "U_pga":ESM.U_pga, + "V_pga":ESM.V_pga, + "W_pga":ESM.W_pga, "rotD50_pga":default_string, "rotD100_pga":default_string, "rotD00_pga":default_string, - "U_pgv":ESM22.U_pgv, - "V_pgv":ESM22.V_pgv, - "W_pgv":ESM22.W_pgv, + "U_pgv":ESM.U_pgv, + "V_pgv":ESM.V_pgv, + "W_pgv":ESM.W_pgv, "rotD50_pgv":default_string, "rotD100_pgv":default_string, "rotD00_pgv":default_string, - "U_pgd":ESM22.U_pgd, - "V_pgd":ESM22.V_pgd, - "W_pgd":ESM22.W_pgd, + "U_pgd":ESM.U_pgd, + "V_pgd":ESM.V_pgd, + "W_pgd":ESM.W_pgd, "rotD50_pgd":default_string, "rotD100_pgd":default_string, "rotD00_pgd":default_string, - "U_T90":ESM22.U_T90, - "V_T90":ESM22.V_T90, - "W_T90":ESM22.W_T90, + "U_T90":ESM.U_T90, + "V_T90":ESM.V_T90, + "W_T90":ESM.W_T90, "rotD50_T90":default_string, "rotD100_T90":default_string, "rotD00_T90":default_string, - "U_housner":ESM22.U_housner, - "V_housner":ESM22.V_housner, - "W_housner":ESM22.W_housner, + "U_housner":ESM.U_housner, + "V_housner":ESM.V_housner, + "W_housner":ESM.W_housner, "rotD50_housner":default_string, "rotD100_housner":default_string, "rotD00_housner":default_string, @@ -700,124 +697,125 @@ def _get_ESM18_headers(ESM22,default_string,r_fm_type,r_datetime): "rotD50_CAV":default_string, "rotD100_CAV":default_string, "rotD00_CAV":default_string, - "U_ia":ESM22.U_ia, - "V_ia":ESM22.V_ia, - "W_ia":ESM22.W_ia, - "rotD50_ia":ESM22.U_ia, - "rotD100_ia":ESM22.V_ia, - "rotD00_ia":ESM22.W_ia, + "U_ia":ESM.U_ia, + "V_ia":ESM.V_ia, + "W_ia":ESM.W_ia, + "rotD50_ia":ESM.U_ia, + "rotD100_ia":ESM.V_ia, + "rotD00_ia":ESM.W_ia, - "U_T0_010":ESM22.U_T0_010, - "U_T0_025":ESM22.U_T0_025, - "U_T0_040":ESM22.U_T0_040, - "U_T0_050":ESM22.U_T0_050, - "U_T0_070":ESM22.U_T0_070, - "U_T0_100":ESM22.U_T0_100, - "U_T0_150":ESM22.U_T0_150, - "U_T0_200":ESM22.U_T0_200, - "U_T0_250":ESM22.U_T0_250, - "U_T0_300":ESM22.U_T0_300, - "U_T0_350":ESM22.U_T0_350, - "U_T0_400":ESM22.U_T0_400, - "U_T0_450":ESM22.U_T0_450, - "U_T0_500":ESM22.U_T0_500, - "U_T0_600":ESM22.U_T0_600, - "U_T0_700":ESM22.U_T0_700, - "U_T0_750":ESM22.U_T0_750, - "U_T0_800":ESM22.U_T0_800, - "U_T0_900":ESM22.U_T0_900, - "U_T1_000":ESM22.U_T1_000, - "U_T1_200":ESM22.U_T1_200, - "U_T1_400":ESM22.U_T1_400, - "U_T1_600":ESM22.U_T1_600, - "U_T1_800":ESM22.U_T1_800, - "U_T2_000":ESM22.U_T2_000, - "U_T2_500":ESM22.U_T2_500, - "U_T3_000":ESM22.U_T3_000, - "U_T3_500":ESM22.U_T3_500, - "U_T4_000":ESM22.U_T4_000, - "U_T4_500":ESM22.U_T4_500, - "U_T5_000":ESM22.U_T5_000, - "U_T6_000":ESM22.U_T6_000, - "U_T7_000":ESM22.U_T7_000, - "U_T8_000":ESM22.U_T8_000, - "U_T9_000":ESM22.U_T9_000, - "U_T10_000":ESM22.U_T10_000, + "U_T0_010":ESM.U_T0_010, + "U_T0_025":ESM.U_T0_025, + "U_T0_040":ESM.U_T0_040, + "U_T0_050":ESM.U_T0_050, + "U_T0_070":ESM.U_T0_070, + "U_T0_100":ESM.U_T0_100, + "U_T0_150":ESM.U_T0_150, + "U_T0_200":ESM.U_T0_200, + "U_T0_250":ESM.U_T0_250, + "U_T0_300":ESM.U_T0_300, + "U_T0_350":ESM.U_T0_350, + "U_T0_400":ESM.U_T0_400, + "U_T0_450":ESM.U_T0_450, + "U_T0_500":ESM.U_T0_500, + "U_T0_600":ESM.U_T0_600, + "U_T0_700":ESM.U_T0_700, + "U_T0_750":ESM.U_T0_750, + "U_T0_800":ESM.U_T0_800, + "U_T0_900":ESM.U_T0_900, + "U_T1_000":ESM.U_T1_000, + "U_T1_200":ESM.U_T1_200, + "U_T1_400":ESM.U_T1_400, + "U_T1_600":ESM.U_T1_600, + "U_T1_800":ESM.U_T1_800, + "U_T2_000":ESM.U_T2_000, + "U_T2_500":ESM.U_T2_500, + "U_T3_000":ESM.U_T3_000, + "U_T3_500":ESM.U_T3_500, + "U_T4_000":ESM.U_T4_000, + "U_T4_500":ESM.U_T4_500, + "U_T5_000":ESM.U_T5_000, + "U_T6_000":ESM.U_T6_000, + "U_T7_000":ESM.U_T7_000, + "U_T8_000":ESM.U_T8_000, + "U_T9_000":ESM.U_T9_000, + "U_T10_000":ESM.U_T10_000, - "V_T0_010":ESM22.V_T0_010, - "V_T0_025":ESM22.V_T0_025, - "V_T0_040":ESM22.V_T0_040, - "V_T0_050":ESM22.V_T0_050, - "V_T0_070":ESM22.V_T0_070, - "V_T0_100":ESM22.V_T0_100, - "V_T0_150":ESM22.V_T0_150, - "V_T0_200":ESM22.V_T0_200, - "V_T0_250":ESM22.V_T0_250, - "V_T0_300":ESM22.V_T0_300, - "V_T0_350":ESM22.V_T0_350, - "V_T0_400":ESM22.V_T0_400, - "V_T0_450":ESM22.V_T0_450, - "V_T0_500":ESM22.V_T0_500, - "V_T0_600":ESM22.V_T0_600, - "V_T0_700":ESM22.V_T0_700, - "V_T0_750":ESM22.V_T0_750, - "V_T0_800":ESM22.V_T0_800, - "V_T0_900":ESM22.V_T0_900, - "V_T1_000":ESM22.V_T1_000, - "V_T1_200":ESM22.V_T1_200, - "V_T1_400":ESM22.V_T1_400, - "V_T1_600":ESM22.V_T1_600, - "V_T1_800":ESM22.V_T1_800, - "V_T2_000":ESM22.V_T2_000, - "V_T2_500":ESM22.V_T2_500, - "V_T3_000":ESM22.V_T3_000, - "V_T3_500":ESM22.V_T3_500, - "V_T4_000":ESM22.V_T4_000, - "V_T4_500":ESM22.V_T4_500, - "V_T5_000":ESM22.V_T5_000, - "V_T6_000":ESM22.V_T6_000, - "V_T7_000":ESM22.V_T7_000, - "V_T8_000":ESM22.V_T8_000, - "V_T9_000":ESM22.V_T9_000, - "V_T10_000":ESM22.V_T10_000, + "V_T0_010":ESM.V_T0_010, + "V_T0_025":ESM.V_T0_025, + "V_T0_040":ESM.V_T0_040, + "V_T0_050":ESM.V_T0_050, + "V_T0_070":ESM.V_T0_070, + "V_T0_100":ESM.V_T0_100, + "V_T0_150":ESM.V_T0_150, + "V_T0_200":ESM.V_T0_200, + "V_T0_250":ESM.V_T0_250, + "V_T0_300":ESM.V_T0_300, + "V_T0_350":ESM.V_T0_350, + "V_T0_400":ESM.V_T0_400, + "V_T0_450":ESM.V_T0_450, + "V_T0_500":ESM.V_T0_500, + "V_T0_600":ESM.V_T0_600, + "V_T0_700":ESM.V_T0_700, + "V_T0_750":ESM.V_T0_750, + "V_T0_800":ESM.V_T0_800, + "V_T0_900":ESM.V_T0_900, + "V_T1_000":ESM.V_T1_000, + "V_T1_200":ESM.V_T1_200, + "V_T1_400":ESM.V_T1_400, + "V_T1_600":ESM.V_T1_600, + "V_T1_800":ESM.V_T1_800, + "V_T2_000":ESM.V_T2_000, + "V_T2_500":ESM.V_T2_500, + "V_T3_000":ESM.V_T3_000, + "V_T3_500":ESM.V_T3_500, + "V_T4_000":ESM.V_T4_000, + "V_T4_500":ESM.V_T4_500, + "V_T5_000":ESM.V_T5_000, + "V_T6_000":ESM.V_T6_000, + "V_T7_000":ESM.V_T7_000, + "V_T8_000":ESM.V_T8_000, + "V_T9_000":ESM.V_T9_000, + "V_T10_000":ESM.V_T10_000, - "W_T0_010":ESM22.W_T0_010, - "W_T0_025":ESM22.W_T0_025, - "W_T0_040":ESM22.W_T0_040, - "W_T0_050":ESM22.W_T0_050, - "W_T0_070":ESM22.W_T0_070, - "W_T0_100":ESM22.W_T0_100, - "W_T0_150":ESM22.W_T0_150, - "W_T0_200":ESM22.W_T0_200, - "W_T0_250":ESM22.W_T0_250, - "W_T0_300":ESM22.W_T0_300, - "W_T0_350":ESM22.W_T0_350, - "W_T0_400":ESM22.W_T0_400, - "W_T0_450":ESM22.W_T0_450, - "W_T0_500":ESM22.W_T0_500, - "W_T0_600":ESM22.W_T0_600, - "W_T0_700":ESM22.W_T0_700, - "W_T0_750":ESM22.W_T0_750, - "W_T0_800":ESM22.W_T0_800, - "W_T0_900":ESM22.W_T0_900, - "W_T1_000":ESM22.W_T1_000, - "W_T1_200":ESM22.W_T1_200, - "W_T1_400":ESM22.W_T1_400, - "W_T1_600":ESM22.W_T1_600, - "W_T1_800":ESM22.W_T1_800, - "W_T2_000":ESM22.W_T2_000, - "W_T2_500":ESM22.W_T2_500, - "W_T3_000":ESM22.W_T3_000, - "W_T3_500":ESM22.W_T3_500, - "W_T4_000":ESM22.W_T4_000, - "W_T4_500":ESM22.W_T4_500, - "W_T5_000":ESM22.W_T5_000, - "W_T6_000":ESM22.W_T6_000, - "W_T7_000":ESM22.W_T7_000, - "W_T8_000":ESM22.W_T8_000, - "W_T9_000":ESM22.W_T9_000, - "W_T10_000":ESM22.W_T10_000, + "W_T0_010":ESM.W_T0_010, + "W_T0_025":ESM.W_T0_025, + "W_T0_040":ESM.W_T0_040, + "W_T0_050":ESM.W_T0_050, + "W_T0_070":ESM.W_T0_070, + "W_T0_100":ESM.W_T0_100, + "W_T0_150":ESM.W_T0_150, + "W_T0_200":ESM.W_T0_200, + "W_T0_250":ESM.W_T0_250, + "W_T0_300":ESM.W_T0_300, + "W_T0_350":ESM.W_T0_350, + "W_T0_400":ESM.W_T0_400, + "W_T0_450":ESM.W_T0_450, + "W_T0_500":ESM.W_T0_500, + "W_T0_600":ESM.W_T0_600, + "W_T0_700":ESM.W_T0_700, + "W_T0_750":ESM.W_T0_750, + "W_T0_800":ESM.W_T0_800, + "W_T0_900":ESM.W_T0_900, + "W_T1_000":ESM.W_T1_000, + "W_T1_200":ESM.W_T1_200, + "W_T1_400":ESM.W_T1_400, + "W_T1_600":ESM.W_T1_600, + "W_T1_800":ESM.W_T1_800, + "W_T2_000":ESM.W_T2_000, + "W_T2_500":ESM.W_T2_500, + "W_T3_000":ESM.W_T3_000, + "W_T3_500":ESM.W_T3_500, + "W_T4_000":ESM.W_T4_000, + "W_T4_500":ESM.W_T4_500, + "W_T5_000":ESM.W_T5_000, + "W_T6_000":ESM.W_T6_000, + "W_T7_000":ESM.W_T7_000, + "W_T8_000":ESM.W_T8_000, + "W_T9_000":ESM.W_T9_000, + "W_T10_000":ESM.W_T10_000, + # No RotD intensity measures provided in web service format ESM flatfile "rotD50_T0_010":default_string, "rotD50_T0_025":default_string, "rotD50_T0_040":default_string, @@ -932,8 +930,8 @@ def _get_ESM18_headers(ESM22,default_string,r_fm_type,r_datetime): # Output to folder where converted flatfile read into parser DATA = os.path.abspath('') temp_folder=tempfile.mkdtemp() - converted_base_data_path = os.path.join(DATA,temp_folder, + converted_base_data_path = os.path.join(DATA,temp_folder, 'converted_flatfile.csv') - ESM_original_headers.to_csv(converted_base_data_path,sep=';') + ESM_original_headers.to_csv(converted_base_data_path, sep=';') return converted_base_data_path \ No newline at end of file diff --git a/openquake/smt/tests/parsers/data/ESM23_Greece_test.csv b/openquake/smt/tests/parsers/data/ESM_URL_Greece_test.csv similarity index 100% rename from openquake/smt/tests/parsers/data/ESM23_Greece_test.csv rename to openquake/smt/tests/parsers/data/ESM_URL_Greece_test.csv diff --git a/openquake/smt/tests/parsers/data/ESM22_Albania_filtered_test.csv b/openquake/smt/tests/parsers/data/ESM_WS_Albania_filtered_test.csv similarity index 100% rename from openquake/smt/tests/parsers/data/ESM22_Albania_filtered_test.csv rename to openquake/smt/tests/parsers/data/ESM_WS_Albania_filtered_test.csv diff --git a/openquake/smt/tests/parsers/esm23_flatfile_parser_test.py b/openquake/smt/tests/parsers/esm_url_flatfile_parser_test.py similarity index 74% rename from openquake/smt/tests/parsers/esm23_flatfile_parser_test.py rename to openquake/smt/tests/parsers/esm_url_flatfile_parser_test.py index 4b47ab314..df5164fcb 100644 --- a/openquake/smt/tests/parsers/esm23_flatfile_parser_test.py +++ b/openquake/smt/tests/parsers/esm_url_flatfile_parser_test.py @@ -16,8 +16,7 @@ # You should have received a copy of the GNU Affero General Public License # along with OpenQuake. If not, see . """ -Tests parsing of the ESM23 flatfile format (i.e. flatfile downloaded from custom -header URL) in SMT +Tests parsing of a flatfile downloaded from ESM custom URL database This parser assumes you have selected all available headers in your URL search when downloading the flatfile @@ -26,7 +25,7 @@ import sys import shutil import unittest -from openquake.smt.parsers.esm23_flatfile_parser import ESM23FlatfileParser +from openquake.smt.parsers.esm_url_flatfile_parser import ESMFlatfileParserURL if sys.version_info[0] >= 3: import pickle @@ -48,21 +47,23 @@ #Specify base directory BASE_DATA_PATH = os.path.join(os.path.dirname(__file__), "data") -class ESM23FlatfileParserTestCase(unittest.TestCase): +class ESMFlatfileParserURLTestCase(unittest.TestCase): """ - Tests the parsing of the reformatted ESM23 flatfile + Tests the parsing of an ESM URL format flatfile """ @classmethod def setUpClass(cls): - cls.ESM23_flatfile_directory = os.path.join(BASE_DATA_PATH,"ESM23_Greece_test.csv") - cls.db_file = os.path.join(BASE_DATA_PATH, "ESM23_conversion_test_metadata") + cls.ESM_flatfile_directory = os.path.join(BASE_DATA_PATH, + "ESM_URL_Greece_test.csv") + cls.db_file = os.path.join(BASE_DATA_PATH, + "ESM_URL_conversion_test_metadata") - def test_esm23_flatfile_parser(self): + def test_esm_flatfile_parser(self): """ - Tests the parsing of the reformatted ESM23 flatfile + Tests the parsing of the reformatted ESM flatfile """ - parser = ESM23FlatfileParser.autobuild("000", "ESM23_conversion_test", - self.db_file, self.ESM23_flatfile_directory) + parser = ESMFlatfileParserURL.autobuild("000", "ESM_conversion_test", + self.db_file, self.ESM_flatfile_directory) with open(os.path.join(self.db_file, "metadatafile.pkl"), "rb") as f: db = pickle.load(f) # Should contain 9 records diff --git a/openquake/smt/tests/parsers/esm22_flatfile_parser_test.py b/openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py similarity index 74% rename from openquake/smt/tests/parsers/esm22_flatfile_parser_test.py rename to openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py index ceae9ba99..3d3e33c57 100644 --- a/openquake/smt/tests/parsers/esm22_flatfile_parser_test.py +++ b/openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py @@ -16,13 +16,13 @@ # You should have received a copy of the GNU Affero General Public License # along with OpenQuake. If not, see . """ -Tests parsing of the ESM22 flatfile format (i.e. flatfile downloaded from web service) in SMT +Tests parsing of the ESM flatfile format (i.e. flatfile downloaded from web service) in SMT """ import os import sys import shutil import unittest -from openquake.smt.parsers.esm22_flatfile_parser import ESM22FlatfileParser +from openquake.smt.parsers.esm_ws_flatfile_parser import ESMFlatfileParserWS if sys.version_info[0] >= 3: import pickle @@ -54,22 +54,23 @@ BASE_DATA_PATH = os.path.join(os.path.dirname(__file__), "data") -class ESM22FlatfileParserTestCase(unittest.TestCase): +class ESMFlatfileParserWSTestCase(unittest.TestCase): """ - Tests the parsing of the reformatted ESM22 flatfile + Tests the parsing of a flatfile downloaded from the ESM web service """ @classmethod def setUpClass(cls): - #Specify base directory - cls.ESM22_flatfile_directory = os.path.join(BASE_DATA_PATH,"ESM22_Albania_filtered_test.csv") - cls.db_file = os.path.join(BASE_DATA_PATH, "ESM22_conversion_test_metadata") + # Specify base directory + cls.ESM_flatfile_directory = os.path.join( + BASE_DATA_PATH, "ESM_WS_Albania_filtered_test.csv") + cls.db_file = os.path.join(BASE_DATA_PATH, "ESM_ws_conversion_test_metadata") - def test_esm22_flatfile_parser(self): + def test_esm_flatfile_parser(self): """ - Tests the parsing of the reformatted ESM22 flatfile + Tests the parsing of the reformatted ESM flatfile """ - parser = ESM22FlatfileParser.autobuild("000", "ESM22_conversion_test", - self.db_file, self.ESM22_flatfile_directory) + parser = ESMFlatfileParserWS.autobuild("000", "ESM_conversion_test", + self.db_file, self.ESM_flatfile_directory) with open(os.path.join(self.db_file, "metadatafile.pkl"), "rb") as f: db = pickle.load(f) # Should contain 19 records diff --git a/openquake/smt/tests/parsers/ngaw2_flatfile_parser_test.py b/openquake/smt/tests/parsers/ngawest2_flatfile_parser_test.py similarity index 100% rename from openquake/smt/tests/parsers/ngaw2_flatfile_parser_test.py rename to openquake/smt/tests/parsers/ngawest2_flatfile_parser_test.py From 91e4b6e6b90d92bb7a80a5ada131dfb15f5b474b Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 1 Mar 2024 10:32:35 +0100 Subject: [PATCH 04/59] renaming parsers and cleaning (confusing for ESM parsers) --- docsrc/contents/smt.rst | 3 --- docsrc/contents/smt_images/sigma.png | Bin 724217 -> 0 bytes 2 files changed, 3 deletions(-) delete mode 100644 docsrc/contents/smt_images/sigma.png diff --git a/docsrc/contents/smt.rst b/docsrc/contents/smt.rst index 2dd645e3a..112b1c616 100644 --- a/docsrc/contents/smt.rst +++ b/docsrc/contents/smt.rst @@ -581,9 +581,6 @@ Comparing GMPEs Response spectra plots for input parameters specified in toml file: .. image:: /contents/smt_images/ResponseSpectra.png - - GMPE sigma spectra plots for input parameters specified in toml file: - .. image:: /contents/smt_images/sigma.png 5. Sammon's Maps diff --git a/docsrc/contents/smt_images/sigma.png b/docsrc/contents/smt_images/sigma.png deleted file mode 100644 index ce9339a4c2237ca0b608a92b18d07ac5f18b5fd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 724217 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%0A0J}A25rt=142ZJEeL7eZ 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

0cft!EvK1w;>5DshnRSY1dzGs^HJ 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

mOB{k}WqW+X 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 z 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¬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 z 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 cDCI2d86)JOUIYXV0VBg{i#R+13EXR!N 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

ijNTGP~TC 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

^a%$R7d%x445U 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%0ADCKN$7?WlZ4cP|xTJZmmY_c9xa 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 From 76295dbecad2e746a6e1a4a45fcd70dc4d3df098 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 1 Mar 2024 10:35:05 +0100 Subject: [PATCH 05/59] renaming parsers and cleaning (confusing for ESM parsers) --- openquake/smt/parsers/esm_url_flatfile_parser.py | 3 ++- openquake/smt/tests/parsers/esm_url_flatfile_parser_test.py | 1 + openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/openquake/smt/parsers/esm_url_flatfile_parser.py b/openquake/smt/parsers/esm_url_flatfile_parser.py index 46703a76f..b988a20b3 100644 --- a/openquake/smt/parsers/esm_url_flatfile_parser.py +++ b/openquake/smt/parsers/esm_url_flatfile_parser.py @@ -16,7 +16,8 @@ # You should have received a copy of the GNU Affero General Public License # along with OpenQuake. If not, see . """ -Parser for a flatfile downloaded from the ESM custom url database +Parser for a flatfile downloaded from the ESM custom url database +--> (https://esm-db.eu/esmws/flatfile/1/) This parser assumes you have selected all available headers in your URL search when downloading the flatfile diff --git a/openquake/smt/tests/parsers/esm_url_flatfile_parser_test.py b/openquake/smt/tests/parsers/esm_url_flatfile_parser_test.py index df5164fcb..29ae111b6 100644 --- a/openquake/smt/tests/parsers/esm_url_flatfile_parser_test.py +++ b/openquake/smt/tests/parsers/esm_url_flatfile_parser_test.py @@ -17,6 +17,7 @@ # along with OpenQuake. If not, see . """ Tests parsing of a flatfile downloaded from ESM custom URL database +--> (https://esm-db.eu/esmws/flatfile/1/) This parser assumes you have selected all available headers in your URL search when downloading the flatfile diff --git a/openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py b/openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py index 3d3e33c57..22cac05e9 100644 --- a/openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py +++ b/openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py @@ -16,7 +16,8 @@ # You should have received a copy of the GNU Affero General Public License # along with OpenQuake. If not, see . """ -Tests parsing of the ESM flatfile format (i.e. flatfile downloaded from web service) in SMT +Tests parsing of the ESM flatfile format (i.e. flatfile downloaded from ESM +web service) """ import os import sys From 31966502bd7dc61f501f083fd1596afd92809b30 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 1 Mar 2024 10:52:45 +0100 Subject: [PATCH 06/59] renaming parsers and cleaning (confusing for ESM parsers) --- openquake/smt/parsers/esm_ws_flatfile_parser.py | 5 +++-- openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/openquake/smt/parsers/esm_ws_flatfile_parser.py b/openquake/smt/parsers/esm_ws_flatfile_parser.py index e7cdef129..b751006f7 100644 --- a/openquake/smt/parsers/esm_ws_flatfile_parser.py +++ b/openquake/smt/parsers/esm_ws_flatfile_parser.py @@ -17,6 +17,7 @@ # along with OpenQuake. If not, see . """ Parser for a flatfile downloaded from the ESM web service +--> https://esm-db.eu/#/waveform/search """ import pandas as pd import os, sys @@ -605,7 +606,7 @@ def _get_ESM18_headers(ESM, default_string, r_fm_type, r_datetime): "EMEC_Mw_ref":default_string, "event_source_id":default_string, - # Nodal plane information not provided in ESM web service format flatfile + # Nodal plane information not provided in raw ESM web service format flatfile "es_strike":default_string, "es_dip":default_string, "es_rake":default_string, @@ -815,7 +816,7 @@ def _get_ESM18_headers(ESM, default_string, r_fm_type, r_datetime): "W_T9_000":ESM.W_T9_000, "W_T10_000":ESM.W_T10_000, - # No RotD intensity measures provided in web service format ESM flatfile + # No RotD intensity measures provided in raw web service format ESM flatfile "rotD50_T0_010":default_string, "rotD50_T0_025":default_string, "rotD50_T0_040":default_string, diff --git a/openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py b/openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py index 22cac05e9..b1683b246 100644 --- a/openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py +++ b/openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py @@ -18,6 +18,7 @@ """ Tests parsing of the ESM flatfile format (i.e. flatfile downloaded from ESM web service) +--> https://esm-db.eu/#/waveform/search """ import os import sys From c2f351fe3b6e8d05da4500279c9b6d970093adf8 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 1 Mar 2024 10:56:54 +0100 Subject: [PATCH 07/59] renaming parsers and cleaning (confusing for ESM parsers) --- openquake/smt/residuals/gmpe_residuals.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openquake/smt/residuals/gmpe_residuals.py b/openquake/smt/residuals/gmpe_residuals.py index 29e3b379b..19cc9eb96 100755 --- a/openquake/smt/residuals/gmpe_residuals.py +++ b/openquake/smt/residuals/gmpe_residuals.py @@ -297,7 +297,6 @@ def __init__(self, gmpe_list, imts): :param imts: A list e.g. ['PGA', 'SA(0.1)', 'SA(1.0)'] """ - # Residuals object self.gmpe_list = check_gsim_list(gmpe_list) self.number_gmpes = len(self.gmpe_list) @@ -312,8 +311,8 @@ def __init__(self, gmpe_list, imts): gmpe_dict_1 = OrderedDict([]) gmpe_dict_2 = OrderedDict([]) self.unique_indices[gmpe] = {} + # Get the period range and the coefficient types - # gmpe_i = GSIM_LIST[gmpe]() gmpe_i = self.gmpe_list[gmpe] for c in dir(gmpe_i): if 'COEFFS' in c: @@ -348,6 +347,7 @@ def __init__(self, gmpe_list, imts): gmpe_dict_2[imtx][res_type] = [] self.types[gmpe][imtx].append(res_type) gmpe_dict_2[imtx]["Mean"] = [] + # For handling of GMPEs with total sigma only else: for res_type in self.gmpe_list[ From 6deddd4ba488b070fc59391d67a64a6fcdb249d0 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 1 Mar 2024 10:58:24 +0100 Subject: [PATCH 08/59] renaming parsers and cleaning (confusing for ESM parsers) --- openquake/smt/residuals/gmpe_residuals.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openquake/smt/residuals/gmpe_residuals.py b/openquake/smt/residuals/gmpe_residuals.py index 19cc9eb96..a261eb180 100755 --- a/openquake/smt/residuals/gmpe_residuals.py +++ b/openquake/smt/residuals/gmpe_residuals.py @@ -59,7 +59,6 @@ def get_geometric_mean(fle): :param fle: Instance of :class: h5py.File """ - # periods = fle["IMS/X/Spectra/Response/Periods"].value if not ("H" in fle["IMS"].keys()): # Horizontal spectra not in record x_spc = fle["IMS/X/Spectra/Response/Acceleration/damping_05"].values From 7627ad41c5802d02edab3b281633a6aa5c275d18 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 1 Mar 2024 10:58:53 +0100 Subject: [PATCH 09/59] renaming parsers and cleaning (confusing for ESM parsers) --- openquake/smt/residuals/gmpe_residuals.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openquake/smt/residuals/gmpe_residuals.py b/openquake/smt/residuals/gmpe_residuals.py index a261eb180..40c533c5f 100755 --- a/openquake/smt/residuals/gmpe_residuals.py +++ b/openquake/smt/residuals/gmpe_residuals.py @@ -402,7 +402,7 @@ def get_residuals(self, ctx_database, nodal_plane_index=1, See e.g., :class:`openquake.smt.sm_database.GroundMotionDatabase` for an example """ - + # Get contexts contexts = ctx_database.get_contexts(nodal_plane_index, self.imts, component) From 57ff307ac8289b71f756432b6573d85e6184694f Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 1 Mar 2024 11:05:22 +0100 Subject: [PATCH 10/59] renaming parsers and cleaning (confusing for ESM parsers) --- docsrc/contents/smt.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docsrc/contents/smt.rst b/docsrc/contents/smt.rst index 112b1c616..945dfcb6f 100644 --- a/docsrc/contents/smt.rst +++ b/docsrc/contents/smt.rst @@ -338,7 +338,7 @@ Single Station Residual Analysis Finally, the standard deviation of the :math:`\delta W_{o,es}` term (:math:`\phi_{SS}`) is representative of the single-station standard deviation of the GMPE, and is an estimate of the non-ergodic standard deviation of the model. - As previously, we can specify the GMPEs and intensity measures to compute the residuals per site for using either a GMPE list and intensity measure list, or from a .toml file. + As previously, we can specify the GMPEs and intensity measures to compute the residuals per site for using either a GMPE list and intensity measure list, or from a ``.toml`` file. .. code-block:: ini From 9af6eebed25d897c1c9028cd2be251c26926fbb6 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 1 Mar 2024 13:27:24 +0100 Subject: [PATCH 11/59] ask14 fix for ensuring regionalisation without needing to manually specify region when should be inherent from class name --- docsrc/contents/smt.rst | 5 ----- openquake/smt/comparison/utils_gmpes.py | 25 +++++++++++++++++++------ 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/docsrc/contents/smt.rst b/docsrc/contents/smt.rst index 945dfcb6f..6110b80f8 100644 --- a/docsrc/contents/smt.rst +++ b/docsrc/contents/smt.rst @@ -110,11 +110,6 @@ We can specify the inputs to perform a residual analysis with as follows: [models.2-AbrahamsonGulerce2020SInter] region = "CAS" - [models.AbrahamsonEtAl2014] - - [models.AbrahamsonEtAl2014RegJPN] - region = "JPN" # nb currently a bug for specifically this gmm in the SMT where the user must still specify the region param despite the class name differentiating as regionalised variant (will be fixed!) - [models.BooreEtAl2014] [models.BooreEtAl2014LowQ] diff --git a/openquake/smt/comparison/utils_gmpes.py b/openquake/smt/comparison/utils_gmpes.py index 59bb72435..7e2502e84 100644 --- a/openquake/smt/comparison/utils_gmpes.py +++ b/openquake/smt/comparison/utils_gmpes.py @@ -292,7 +292,7 @@ def mgmpe_check(gmpe): # Preserve original GMPE prior and create base version of GMPE orig_gmpe = gmpe base_gsim = gmpe.__class__.__name__ - + # Get the additional params if specified inputs = pd.Series(str(gmpe).splitlines()[1:], dtype='object') add_inputs = {} @@ -339,15 +339,28 @@ def mgmpe_check(gmpe): else: val = float(par.split('=')[1]) add_inputs[key] = val - - # reconstruct the gmpe as kwargs + + # Crude workaround for retaining ASK14 gsim regionalisation parameter + # without needing to specify the region param in the toml (this issue + # is very specific to this gsim because of how add_alias is used in + # the ASK14 gsim in combination with how gsims are read in from tomls) + if ('Reg' in orig_gmpe._toml and + orig_gmpe.__class__.__name__ == 'AbrahamsonEtAl2014'): + if 'RegTWN' in orig_gmpe._toml: + add_inputs['region'] = 'TWN' + if 'RegCHN' in orig_gmpe._toml: + add_inputs['region'] = 'CHN' + if 'RegJPN' in orig_gmpe._toml: + add_inputs['region'] = 'JPN' + + # Reconstruct the gmpe as kwargs kwargs = {'gmpe': {base_gsim: add_inputs}} # Al Atik 2015 sigma model if 'al_atik_2015_sigma' in str(orig_gmpe): - kwargs['sigma_model_alatik2015'] = {"tau_model": "global", - "ergodic": False} - + kwargs['sigma_model_alatik2015'] = { + "tau_model": "global", "ergodic": False} + # Fix total sigma per imt if 'fix_total_sigma' in str(orig_gmpe): kwargs['set_fixed_total_sigma'] = {'total_sigma': fixed_sigma_vector} From 87350deb7617873bf590c669f88386128268198f Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 1 Mar 2024 13:56:20 +0100 Subject: [PATCH 12/59] update --- openquake/smt/residuals/gmpe_residuals.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openquake/smt/residuals/gmpe_residuals.py b/openquake/smt/residuals/gmpe_residuals.py index 40c533c5f..2a2efb764 100755 --- a/openquake/smt/residuals/gmpe_residuals.py +++ b/openquake/smt/residuals/gmpe_residuals.py @@ -368,7 +368,7 @@ def __init__(self, gmpe_list, imts): def from_toml(cls, filename): """ Read in gmpe_list and imts from .toml file. This method allows use of - non-ergodic GMPEs and gmpes with additional input files within SMT + gmpes with additional parameters and input files within SMT """ # Read in toml file with dict of gmpes and subdict of imts config_file = toml.load(filename) From 6f2fa3f225ddf970fab2c17c105f98481746f6d6 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 1 Mar 2024 14:23:04 +0100 Subject: [PATCH 13/59] more parser tidying + cleaning --- openquake/smt/demos/demo_residuals_script.py | 2 +- .../{ngaw2_flatfile_parser.py => ngawest2_flatfile_parser.py} | 0 openquake/smt/residuals/gmpe_residuals.py | 4 ++-- openquake/smt/tests/parsers/ngawest2_flatfile_parser_test.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) rename openquake/smt/parsers/{ngaw2_flatfile_parser.py => ngawest2_flatfile_parser.py} (100%) diff --git a/openquake/smt/demos/demo_residuals_script.py b/openquake/smt/demos/demo_residuals_script.py index 32805d68b..47e3914b3 100644 --- a/openquake/smt/demos/demo_residuals_script.py +++ b/openquake/smt/demos/demo_residuals_script.py @@ -61,7 +61,7 @@ def get_residuals(): for gmm in residuals.gmpe_list: # Create output directory - gmm_dir = residuals.gmpe_list[gmm].__class__.__name__ + gmm_dir = residuals.gmpe_list[gmm]._toml out = os.path.join('residuals', gmm_dir) if not os.path.exists(out): os.makedirs(out) diff --git a/openquake/smt/parsers/ngaw2_flatfile_parser.py b/openquake/smt/parsers/ngawest2_flatfile_parser.py similarity index 100% rename from openquake/smt/parsers/ngaw2_flatfile_parser.py rename to openquake/smt/parsers/ngawest2_flatfile_parser.py diff --git a/openquake/smt/residuals/gmpe_residuals.py b/openquake/smt/residuals/gmpe_residuals.py index 2a2efb764..04f7fcdaa 100755 --- a/openquake/smt/residuals/gmpe_residuals.py +++ b/openquake/smt/residuals/gmpe_residuals.py @@ -368,7 +368,7 @@ def __init__(self, gmpe_list, imts): def from_toml(cls, filename): """ Read in gmpe_list and imts from .toml file. This method allows use of - gmpes with additional parameters and input files within SMT + gmpes with additional parameters and input files within the SMT """ # Read in toml file with dict of gmpes and subdict of imts config_file = toml.load(filename) @@ -1219,7 +1219,7 @@ def __init__(self, site_id_list, gmpe_list, imts): def from_toml(cls, site_id_list, filename): """ Read in gmpe_list and imts from .toml file. This method allows use of - non-ergodic GMPEs and gmpes with additional input files within SMT + gmpes with additional parameters and input files within the SMT """ # Read in toml file with dict of gmpes and subdict of imts config_file = toml.load(filename) diff --git a/openquake/smt/tests/parsers/ngawest2_flatfile_parser_test.py b/openquake/smt/tests/parsers/ngawest2_flatfile_parser_test.py index f1d7e7a2a..529d5fcc2 100644 --- a/openquake/smt/tests/parsers/ngawest2_flatfile_parser_test.py +++ b/openquake/smt/tests/parsers/ngawest2_flatfile_parser_test.py @@ -22,7 +22,7 @@ import sys import shutil import unittest -from openquake.smt.parsers.ngaw2_flatfile_parser import NGAWest2FlatfileParser +from openquake.smt.parsers.ngawest2_flatfile_parser import NGAWest2FlatfileParser if sys.version_info[0] >= 3: import pickle From a9bd81d5d1ee49bfee5dce92825a27cbce4a0cbb Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 1 Mar 2024 14:41:12 +0100 Subject: [PATCH 14/59] update --- openquake/smt/comparison/utils_gmpes.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/openquake/smt/comparison/utils_gmpes.py b/openquake/smt/comparison/utils_gmpes.py index 7e2502e84..78936d6eb 100644 --- a/openquake/smt/comparison/utils_gmpes.py +++ b/openquake/smt/comparison/utils_gmpes.py @@ -340,10 +340,10 @@ def mgmpe_check(gmpe): val = float(par.split('=')[1]) add_inputs[key] = val - # Crude workaround for retaining ASK14 gsim regionalisation parameter - # without needing to specify the region param in the toml (this issue - # is very specific to this gsim because of how add_alias is used in - # the ASK14 gsim in combination with how gsims are read in from tomls) + # Crude workaround for ensuring retention of the ASK14 gsim regionalisation + # parameter without needing to specify the region param in the toml (this + # issue is specific to this gsim because of how add_alias is used in the + # ASK14 gsim in combination with how gsims are read in from tomls) if ('Reg' in orig_gmpe._toml and orig_gmpe.__class__.__name__ == 'AbrahamsonEtAl2014'): if 'RegTWN' in orig_gmpe._toml: From 7fd6456aed00dbf48fafc92877a0c3c5aa281514 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 2 Mar 2024 08:00:59 +0100 Subject: [PATCH 15/59] update --- openquake/smt/comparison/utils_gmpes.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/openquake/smt/comparison/utils_gmpes.py b/openquake/smt/comparison/utils_gmpes.py index 78936d6eb..84783709d 100644 --- a/openquake/smt/comparison/utils_gmpes.py +++ b/openquake/smt/comparison/utils_gmpes.py @@ -340,10 +340,7 @@ def mgmpe_check(gmpe): val = float(par.split('=')[1]) add_inputs[key] = val - # Crude workaround for ensuring retention of the ASK14 gsim regionalisation - # parameter without needing to specify the region param in the toml (this - # issue is specific to this gsim because of how add_alias is used in the - # ASK14 gsim in combination with how gsims are read in from tomls) + # Crude workaround to ensure regionalisation of the ASK14 gmm if ('Reg' in orig_gmpe._toml and orig_gmpe.__class__.__name__ == 'AbrahamsonEtAl2014'): if 'RegTWN' in orig_gmpe._toml: From 5a3f2aa240e46043cb300e1c10eb6b4675f131c3 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 2 Mar 2024 09:41:40 +0100 Subject: [PATCH 16/59] update --- openquake/smt/comparison/utils_gmpes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openquake/smt/comparison/utils_gmpes.py b/openquake/smt/comparison/utils_gmpes.py index 84783709d..04abfd77d 100644 --- a/openquake/smt/comparison/utils_gmpes.py +++ b/openquake/smt/comparison/utils_gmpes.py @@ -340,7 +340,7 @@ def mgmpe_check(gmpe): val = float(par.split('=')[1]) add_inputs[key] = val - # Crude workaround to ensure regionalisation of the ASK14 gmm + # Workaround to ensure regionalisation of the ASK14 gmm if ('Reg' in orig_gmpe._toml and orig_gmpe.__class__.__name__ == 'AbrahamsonEtAl2014'): if 'RegTWN' in orig_gmpe._toml: From 7d680ff7acbd701cfc3ede5fe26c38b5438880ec Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 2 Mar 2024 09:44:06 +0100 Subject: [PATCH 17/59] update --- openquake/smt/demos/demo_residuals_script.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openquake/smt/demos/demo_residuals_script.py b/openquake/smt/demos/demo_residuals_script.py index 47e3914b3..69921120d 100644 --- a/openquake/smt/demos/demo_residuals_script.py +++ b/openquake/smt/demos/demo_residuals_script.py @@ -1,6 +1,6 @@ """ This demo script runs a residual analysis using a subset of the ESM flatfile -filtered geographically to Albania + a 100 km buffer. +filtered geographically to Albania + an approximately 100 km buffer. The results generated by this workflow can be used to deduce which of the preselected GMMs perform best for Albania. From 1cba990101d2d8101ad30086fd6deafe9ec125ce Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 2 Mar 2024 11:41:29 +0100 Subject: [PATCH 18/59] cleaning --- openquake/smt/residuals/gmpe_residuals.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openquake/smt/residuals/gmpe_residuals.py b/openquake/smt/residuals/gmpe_residuals.py index 04f7fcdaa..a9c4eb0e2 100755 --- a/openquake/smt/residuals/gmpe_residuals.py +++ b/openquake/smt/residuals/gmpe_residuals.py @@ -480,7 +480,7 @@ def get_expected_motions(self, context): Calculate the expected ground motions from the context """ if not context["Ctx"].rake: - context["Ctx"].rake = 0.0 # Assume strike + context["Ctx"].rake = 0.0 # Assume strike-slip expected = OrderedDict([(gmpe, {}) for gmpe in self.gmpe_list]) # Period range for GSIM for gmpe in self.gmpe_list: From 226fb55b5c0f0d3603cc68920bd7908080f9da15 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 2 Mar 2024 18:27:18 +0100 Subject: [PATCH 19/59] update --- docsrc/contents/smt.rst | 2 +- openquake/smt/comparison/utils_gmpes.py | 22 +++++++++---------- .../comparison/data/compare_gmpe_inputs.toml | 4 ++-- .../tests/comparison/data/mgmpe_inputs.toml | 4 ++-- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docsrc/contents/smt.rst b/docsrc/contents/smt.rst index 6110b80f8..d9999e5a6 100644 --- a/docsrc/contents/smt.rst +++ b/docsrc/contents/smt.rst @@ -488,7 +488,7 @@ Comparing GMPEs ztor = 'None' # Set to string of 'None' to NOT consider otherwise specify as array matching number of mag and depth values strike = -999 dip = 60 - rake = 90 # (+90 for compression, -90 for extension) + rake = 90 # Must be provided. Strike and dip can be approximated if either set to -999 aratio = 2 # If set to -999 the user-provided trt string will be used to assign a trt-dependent aratio trellis_and_rs_mag_list = [5, 6, 7] # mags used only for trellis and response spectra trellis_and_rs_depths = [20, 20, 20] # depth per magnitude for trellis and response spectra diff --git a/openquake/smt/comparison/utils_gmpes.py b/openquake/smt/comparison/utils_gmpes.py index 04abfd77d..50309a4e6 100644 --- a/openquake/smt/comparison/utils_gmpes.py +++ b/openquake/smt/comparison/utils_gmpes.py @@ -242,8 +242,8 @@ def _get_z25(Vs30, region): def _param_gmpes(strike, dip, depth, aratio, rake, trt): """ - Get (crude) proxies for strike, dip, depth and aspect ratio if not provided - by the user. + Get (crude) proxies for strike, dip, rake, depth and aspect ratio if not + provided by the user. """ # Strike if strike == -999: @@ -253,32 +253,32 @@ def _param_gmpes(strike, dip, depth, aratio, rake, trt): # Dip if dip == -999: - if rake == 0: - dip_s = 90 # strike slip + if rake == 0 or rake == 180: + dip_s = 90 # Strike slip else: - dip_s = 45 # reverse or normal fault + dip_s = 45 # Reverse or normal fault else: dip_s = dip # Depth if depth == -999: if trt == 'Interface': - depth_s = 30 + depth_s = 40 if trt == 'InSlab': - depth_s = 50 + depth_s = 150 else: - depth_s = 15 + depth_s = 15 # Crustal else: depth_s = depth - # a-ratio + # Aspect ratio if aratio > -999.0 and np.isfinite(aratio): aratio_s = aratio else: - if trt == 'InSlab' or trt == 'Interface': + if trt in ['InSlab', 'Interface']: aratio_s = 5 else: - aratio_s = 2 + aratio_s = 2 # Crustal return strike_s, dip_s, depth_s, aratio_s diff --git a/openquake/smt/tests/comparison/data/compare_gmpe_inputs.toml b/openquake/smt/tests/comparison/data/compare_gmpe_inputs.toml index 968f8335b..c10e25c2f 100644 --- a/openquake/smt/tests/comparison/data/compare_gmpe_inputs.toml +++ b/openquake/smt/tests/comparison/data/compare_gmpe_inputs.toml @@ -7,7 +7,7 @@ minR = 0 # min dist. used in trellis, Sammon's, clusters and matrix plots maxR = 300 # max dist. used in trellis, Sammon's, clusters and matrix plots dist_type = 'rrup' # specify distance metric used in trellis plots dist_list = [10, 50, 200] # distances for use in response spectra + sigma wrt period plots -eshm20_region = 0 # region for ESHM20 GMMs +eshm20_region = 0 # region for ESHM20 GMM Nstd = 2 # number of standard deviations to sample from sigma distribution [site_properties] @@ -22,7 +22,7 @@ trt = 'ASCR' ztor = 'None' # Set to string of 'None' to NOT consider strike = -999 dip = -999 -rake = 60 +rake = 60 # Must be provided. Strike and dip can be approximated if set to -999 aratio = 2 trellis_and_rs_mag_list = [5,6,7] # mags used only for trellis trellis_and_rs_depths = [20,25,30] # depth per magnitude for trellis diff --git a/openquake/smt/tests/comparison/data/mgmpe_inputs.toml b/openquake/smt/tests/comparison/data/mgmpe_inputs.toml index 0975d84ba..b265e2a86 100644 --- a/openquake/smt/tests/comparison/data/mgmpe_inputs.toml +++ b/openquake/smt/tests/comparison/data/mgmpe_inputs.toml @@ -7,7 +7,7 @@ minR = 0 # min dist. used in trellis, Sammon's, clusters and matrix plots maxR = 300 # max dist. used in trellis, Sammon's, clusters and matrix plots dist_type = 'rrup' # specify distance metric used in trellis plots dist_list = [10, 50, 200] # distances for use in response spectra + sigma wrt period plots -eshm20_region = 0 # region for ESHM20 GMMs +eshm20_region = 0 # region for ESHM20 GMM Nstd = 1 # number of standard deviations to sample from sigma distribution [site_properties] @@ -22,7 +22,7 @@ trt = 'ASCR' ztor = 'None' # Set to string of 'None' to NOT consider strike = -999 dip = -999 -rake = 60 +rake = 60 # Must be provided. Strike and dip can be approximated if set to -999 aratio = 2 trellis_and_rs_mag_list = [5,6,7] # mags used only for trellis trellis_and_rs_depths = [20,25,30] # depth per magnitude for trellis From a0c307bad67812ee5234d937a64055c7fad0ff69 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 2 Mar 2024 18:33:42 +0100 Subject: [PATCH 20/59] update --- openquake/smt/comparison/utils_gmpes.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/openquake/smt/comparison/utils_gmpes.py b/openquake/smt/comparison/utils_gmpes.py index 50309a4e6..9e43c86f2 100644 --- a/openquake/smt/comparison/utils_gmpes.py +++ b/openquake/smt/comparison/utils_gmpes.py @@ -340,14 +340,14 @@ def mgmpe_check(gmpe): val = float(par.split('=')[1]) add_inputs[key] = val - # Workaround to ensure regionalisation of the ASK14 gmm - if ('Reg' in orig_gmpe._toml and - orig_gmpe.__class__.__name__ == 'AbrahamsonEtAl2014'): - if 'RegTWN' in orig_gmpe._toml: + # Workaround to ensure regionalisation of the ASK14 gmm (add_alias use in + # this gsim causes bug where region param not read in from gsim class name) + if 'AbrahamsonEtAl2014Reg' in orig_gmpe.__class__.__name__: + if 'TWN' in orig_gmpe._toml: add_inputs['region'] = 'TWN' - if 'RegCHN' in orig_gmpe._toml: + if 'CHN' in orig_gmpe._toml: add_inputs['region'] = 'CHN' - if 'RegJPN' in orig_gmpe._toml: + if 'JPN' in orig_gmpe._toml: add_inputs['region'] = 'JPN' # Reconstruct the gmpe as kwargs From bb62a43098c6b7fa4fb398622ca8feece7e3cf6e Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 2 Mar 2024 18:59:20 +0100 Subject: [PATCH 21/59] update --- docsrc/contents/smt.rst | 9 +++++++-- openquake/smt/comparison/utils_gmpes.py | 12 +----------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/docsrc/contents/smt.rst b/docsrc/contents/smt.rst index d9999e5a6..09ec3df02 100644 --- a/docsrc/contents/smt.rst +++ b/docsrc/contents/smt.rst @@ -110,6 +110,11 @@ We can specify the inputs to perform a residual analysis with as follows: [models.2-AbrahamsonGulerce2020SInter] region = "CAS" + [models.AbrahamsonEtAl2014] + + [models.AbrahamsonEtAl2014RegJPN] + region = "JPN" # NB currently a bug for specifically this gmm in the SMT where the user must still specify the region param despite the class name differentiating as regionalised variant (will be fixed!) + [models.BooreEtAl2014] [models.BooreEtAl2014LowQ] @@ -126,10 +131,10 @@ We can specify the inputs to perform a residual analysis with as follows: [models.3-CampbellBozorgnia2014] set_between_epsilon = 0.5 # Shift the mean with formula mean --> mean + epsilon_tau * between event - [models.1-AbrahamsonEtAl2014] + [models.1-ChiouYoungs2014] median_scaling_scalar = 1.4 # scale median by factor of 1.4 over all imts - [models.2-AbrahamsonEtAl2014] + [models.2-ChiouYoungs2014] median_scaling_vector = "{'PGA': 1.10, 'SA(0.1)': 1.15, 'SA(0.5)': 1.20}" # scale median by imt-dependent factor [models.1-KothaEtAl2020] diff --git a/openquake/smt/comparison/utils_gmpes.py b/openquake/smt/comparison/utils_gmpes.py index 9e43c86f2..094bfe33d 100644 --- a/openquake/smt/comparison/utils_gmpes.py +++ b/openquake/smt/comparison/utils_gmpes.py @@ -339,16 +339,6 @@ def mgmpe_check(gmpe): else: val = float(par.split('=')[1]) add_inputs[key] = val - - # Workaround to ensure regionalisation of the ASK14 gmm (add_alias use in - # this gsim causes bug where region param not read in from gsim class name) - if 'AbrahamsonEtAl2014Reg' in orig_gmpe.__class__.__name__: - if 'TWN' in orig_gmpe._toml: - add_inputs['region'] = 'TWN' - if 'CHN' in orig_gmpe._toml: - add_inputs['region'] = 'CHN' - if 'JPN' in orig_gmpe._toml: - add_inputs['region'] = 'JPN' # Reconstruct the gmpe as kwargs kwargs = {'gmpe': {base_gsim: add_inputs}} @@ -402,6 +392,6 @@ def mgmpe_check(gmpe): if 'NRCan15SiteTermLinear' in str(orig_gmpe): kwargs['nrcan15_site_term'] = {'kind': 'linear'} - gmpe = mgmpe.ModifiableGMPE(**kwargs) # remake gmpe using mgmpe + gmpe = mgmpe.ModifiableGMPE(**kwargs) # Remake gmpe using mgmpe return gmpe From 85effa4b41caea3eec8f1c2acd7a6d6d2ce26704 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 3 Mar 2024 23:16:47 +0100 Subject: [PATCH 22/59] cleaning NGAWest2 parser --- .../smt/parsers/ngawest2_flatfile_parser.py | 395 +++++------------- 1 file changed, 103 insertions(+), 292 deletions(-) diff --git a/openquake/smt/parsers/ngawest2_flatfile_parser.py b/openquake/smt/parsers/ngawest2_flatfile_parser.py index 1a8567114..134a46f0f 100644 --- a/openquake/smt/parsers/ngawest2_flatfile_parser.py +++ b/openquake/smt/parsers/ngawest2_flatfile_parser.py @@ -45,41 +45,22 @@ # Import the ESM dictionaries from .esm_dictionaries import * -SCALAR_LIST = ["PGA", "PGV", "PGD", "CAV", "CAV5", "Ia", "D5-95"] - -HEADER_STR = "event_id;event_time;ISC_ev_id;USGS_ev_id;INGV_ev_id;"\ - "EMSC_ev_id;ev_nation_code;ev_latitude;ev_longitude;"\ - "ev_depth_km;ev_hyp_ref;fm_type_code;ML;ML_ref;Mw;Mw_ref;Ms;"\ - "Ms_ref;EMEC_Mw;EMEC_Mw_type;EMEC_Mw_ref;event_source_id;"\ - "es_strike;es_dip;es_rake;es_strike_dip_rake_ref;es_z_top;"\ - "es_z_top_ref;es_length;es_width;es_geometry_ref;network_code;"\ - "station_code;location_code;instrument_code;sensor_depth_m;"\ - "proximity_code;housing_code;installation_code;st_nation_code;"\ - "st_latitude;st_longitude;st_elevation;ec8_code;"\ - "ec8_code_method;ec8_code_ref;vs30_m_sec;vs30_ref;"\ - "vs30_calc_method;vs30_meas_type;slope_deg;vs30_m_sec_WA;"\ - "epi_dist;epi_az;JB_dist;rup_dist;Rx_dist;Ry0_dist;"\ +SCALAR_LIST = ["PGA", "PGV", "PGD"] + +HEADER_STR = "event_id;event_time;ev_nation_code;ev_latitude;ev_longitude;"\ + "ev_depth_km;fm_type_code;ML;ML_ref;Mw;Mw_ref;Ms;Ms_ref;EMEC_Mw;"\ + "EMEC_Mw_type;EMEC_Mw_ref;event_source_id;es_strike;es_dip;"\ + "es_rake;es_strike_dip_rake_ref;es_z_top;es_length;es_width;"\ + "network_code;station_code;location_code;instrument_code;"\ + "sensor_depth_m;proximity_code;housing_code;st_nation_code;"\ + "st_latitude;st_longitude;st_elevation;vs30_m_sec;slope_deg;"\ + "vs30_m_sec_WA;epi_dist;epi_az;JB_dist;rup_dist;Rx_dist;Ry0_dist;"\ "instrument_type_code;late_triggered_flag_01;U_channel_code;"\ "U_azimuth_deg;V_channel_code;V_azimuth_deg;W_channel_code;"\ "U_hp;V_hp;W_hp;U_lp;V_lp;W_lp" HEADERS = set(HEADER_STR.split(";")) -COUNTRY_CODES = {"AL": "Albania", "AM": "Armenia", "AT": "Austria", - "AZ": "Azerbaijan", "BA": "Bosnia and Herzegowina", - "BG": "Bulgaria", "CH": "Switzerland", "CY": "Cyprus", - "CZ": "Czech Republic", "DE": "Germany", "DZ": "Algeria", - "ES": "Spain", "FR": "France", "GE": "Georgia", - "GR": "Greece", "HR": "Croatia", "HU": "Hungary", - "IL": "Israel", "IR": "Iran", "IS": "Iceland", "IT": "Italy", - "JO": "Jordan", "LI": "Lichtenstein", "MA": "Morocco", - "MC": "Monaco", "MD": "Moldova", "ME": "Montenegro", - "MK": "Macedonia", "MT": "Malta", "PL": "Poland", - "PT": "Portugal", "RO": "Romania", "RS": "Serbia", - "RU": "Russia", "SI": "Slovenia", "SM": "San Marino", - "SY": "Syria", "TM": "Turkmenistan", "TR": "Turkey", - "UA": "Ukraine", "UZ": "Uzbekistan", "XK": "Kosovo"} - class NGAWest2FlatfileParser(SMDatabaseReader): @@ -206,7 +187,7 @@ def autobuild(cls, dbid, dbname, output_location, NGAWest2_vertical = NGAWest2_vertical.reset_index().drop( columns='index') - #Remove records with no seismic moment to compute moment magnitude from + # Remove records with no seismic moment to compute moment magnitude from Index_to_drop=np.array(NGAWest2.loc[NGAWest2['Mo (dyne.cm)']==-999][ 'Mo (dyne.cm)'].index) NGAWest2=NGAWest2.drop(Index_to_drop) @@ -358,12 +339,7 @@ def _parse_event_data(self, metadata): # ID and Name (name not in file so use ID again) eq_id = metadata["event_id"] eq_name = metadata["event_id"] - # Country - cntry_code = metadata["ev_nation_code"].strip() - if cntry_code and cntry_code in COUNTRY_CODES: - eq_country = COUNTRY_CODES[cntry_code] - else: - eq_country = None + # Date and time eq_datetime = valid.date_time(metadata["event_time"], "%Y-%m-%d %H:%M:%S") @@ -372,10 +348,10 @@ def _parse_event_data(self, metadata): eq_lon = valid.longitude(metadata["ev_longitude"]) eq_depth = valid.positive_float(metadata["ev_depth_km"], "ev_depth_km") if not eq_depth: - eq_depth = 0.0 + raise ValueError('Depth missing for one or more events in flatfile') eqk = Earthquake(eq_id, eq_name, eq_datetime, eq_lon, eq_lat, eq_depth, - None, # Magnitude not defined yet - eq_country=eq_country) + magnitude=None, eq_country=None) + # Get preferred magnitude and list pref_mag, magnitude_list = self._parse_magnitudes(metadata) eqk.magnitude = pref_mag @@ -538,15 +514,9 @@ def _parse_site_data(self, metadata): vs30_measured = False else: vs30_measured = False - st_nation_code = metadata["st_nation_code"].strip() - if st_nation_code: - st_country = COUNTRY_CODES[st_nation_code] - else: - st_country = None site = RecordSite(site_id, station_code, station_code, site_lon, site_lat, elevation, vs30, vs30_measured, - network_code=network_code, - country=st_country) + network_code=network_code, country=None) site.slope = valid.vfloat(metadata["slope_deg"], "slope_deg") site.sensor_depth = valid.vfloat(metadata["sensor_depth_m"], "sensor_depth_m") @@ -843,15 +813,10 @@ def _get_ESM18_headers(NGAWest2, NGAWest2_vertical, Initial_NGAWest2_size): # Non-GMIM headers "event_id":NGAWest2['event_id_reformatted'], "event_time":NGAWest2['event_time_reformatted'], - "ISC_ev_id":default_string, - "USGS_ev_id":default_string, - "INGV_ev_id":default_string, - "EMSC_ev_id":default_string, "ev_nation_code":default_nation_code, "ev_latitude":NGAWest2['Hypocenter Latitude (deg)'], "ev_longitude":NGAWest2['Hypocenter Longitude (deg)'], "ev_depth_km":NGAWest2['Hypocenter Depth (km)'], - "ev_hyp_ref":default_string, "fm_type_code":NGAWest2['fm_type'], "ML":default_string, "ML_ref":default_string, @@ -869,10 +834,8 @@ def _get_ESM18_headers(NGAWest2, NGAWest2_vertical, Initial_NGAWest2_size): "es_rake":NGAWest2['Rake Angle (deg)'], "es_strike_dip_rake_ref":default_string, "es_z_top":NGAWest2['Depth to Top Of Fault Rupture Model'], - "es_z_top_ref":default_string, - "es_length":default_string, - "es_width":default_string, - "es_geometry_ref":default_string, + "es_length":NGAWest2['Fault Rupture Length for Calculation of Ry (km)'], + "es_width":NGAWest2['Fault Rupture Width (km)'], "network_code": NGAWest2['Owner'], "station_code":NGAWest2['station_id'], @@ -881,19 +844,12 @@ def _get_ESM18_headers(NGAWest2, NGAWest2_vertical, Initial_NGAWest2_size): "sensor_depth_m":default_string, "proximity_code":default_string, "housing_code":default_string, - "installation_code":default_string, "st_nation_code":default_string, "st_latitude":NGAWest2['Station Latitude'], "st_longitude":NGAWest2['Station Longitude'], "st_elevation":default_string, - "ec8_code":default_string, - "ec8_code_method":default_string, - "ec8_code_ref":default_string, "vs30_m_sec":NGAWest2['Vs30 (m/s) selected for analysis'], - "vs30_ref":default_string, - "vs30_calc_method":default_string, - "vs30_meas_type":default_string, "slope_deg":default_string, "vs30_m_sec_WA":default_string, @@ -912,130 +868,96 @@ def _get_ESM18_headers(NGAWest2, NGAWest2_vertical, Initial_NGAWest2_size): "V_azimuth_deg":NGAWest2['H2 azimith (degrees)'], "W_channel_code":default_V_string, - "U_hp":default_string, - "V_hp":default_string, - "W_hp":default_string, - "U_lp":default_string, - "V_lp":default_string, - "W_lp":default_string, + "U_hp":NGAWest2['HP-H1 (Hz)'], + "V_hp":NGAWest2['HP-H2 (Hz)'], + "W_hp":NGAWest2_vertical['HP-V (Hz)'], + "U_lp":NGAWest2['LP-H1 (Hz)'], + "V_lp":NGAWest2['LP-H2 (Hz)'], + "W_lp":NGAWest2_vertical['LP-V (Hz)'], - "U_pga":default_string, - "V_pga":default_string, + "U_pga":NGAWest2['PGA (g)']*981, + "V_pga":NGAWest2['PGA (g)']*981, "W_pga":NGAWest2_vertical['PGA (g)']*981, - "rotD50_pga":NGAWest2['PGA (g)']*981, - "rotD100_pga":default_string, - "rotD00_pga":default_string, - "U_pgv":default_string, - "V_pgv":default_string, + "U_pgv":NGAWest2['PGV (cm/sec)'], + "V_pgv":NGAWest2['PGV (cm/sec)'], "W_pgv":NGAWest2_vertical['PGV (cm/sec)'], - "rotD50_pgv":NGAWest2['PGV (cm/sec)'], - "rotD100_pgv":default_string, - "rotD00_pgv":default_string, - "U_pgd":default_string, - "V_pgd":default_string, + "U_pgd":NGAWest2['PGD (cm)'], + "V_pgd":NGAWest2['PGD (cm)'], "W_pgd":NGAWest2_vertical['PGD (cm)'], - "rotD50_pgd":NGAWest2['PGD (cm)'], - "rotD100_pgd":default_string, - "rotD00_pgd":default_string, - "U_T90":default_string, - "V_T90":default_string, - "W_T90":default_string, - "rotD50_T90":default_string, - "rotD100_T90":default_string, - "rotD00_T90":default_string, - "U_housner":default_string, - "V_housner":default_string, - "W_housner":default_string, - "rotD50_housner":default_string, - "rotD100_housner":default_string, - "rotD00_housner":default_string, - "U_CAV":default_string, - "V_CAV":default_string, - "W_CAV":default_string, - "rotD50_CAV":default_string, - "rotD100_CAV":default_string, - "rotD00_CAV":default_string, - "U_ia":default_string, - "V_ia":default_string, - "W_ia":default_string, - "rotD50_ia":default_string, - "rotD100_ia":default_string, - "rotD00_ia":default_string, - - "U_T0_010":default_string, - "U_T0_025":default_string, - "U_T0_040":default_string, - "U_T0_050":default_string, - "U_T0_070":default_string, - "U_T0_100":default_string, - "U_T0_150":default_string, - "U_T0_200":default_string, - "U_T0_250":default_string, - "U_T0_300":default_string, - "U_T0_350":default_string, - "U_T0_400":default_string, - "U_T0_450":default_string, - "U_T0_500":default_string, - "U_T0_600":default_string, - "U_T0_700":default_string, - "U_T0_750":default_string, - "U_T0_800":default_string, - "U_T0_900":default_string, - "U_T1_000":default_string, - "U_T1_200":default_string, - "U_T1_400":default_string, - "U_T1_600":default_string, - "U_T1_800":default_string, - "U_T2_000":default_string, - "U_T2_500":default_string, - "U_T3_000":default_string, - "U_T3_500":default_string, - "U_T4_000":default_string, - "U_T4_500":default_string, - "U_T5_000":default_string, - "U_T6_000":default_string, - "U_T7_000":default_string, - "U_T8_000":default_string, - "U_T9_000":default_string, - "U_T10_000":default_string, + "U_T0_010":NGAWest2['T0.010S']*981, + "U_T0_025":NGAWest2['T0.025S']*981, + "U_T0_040":NGAWest2['T0.040S']*981, + "U_T0_050":NGAWest2['T0.050S']*981, + "U_T0_070":NGAWest2['T0.070S']*981, + "U_T0_100":NGAWest2['T0.100S']*981, + "U_T0_150":NGAWest2['T0.150S']*981, + "U_T0_200":NGAWest2['T0.200S']*981, + "U_T0_250":NGAWest2['T0.250S']*981, + "U_T0_300":NGAWest2['T0.300S']*981, + "U_T0_350":NGAWest2['T0.350S']*981, + "U_T0_400":NGAWest2['T0.400S']*981, + "U_T0_450":NGAWest2['T0.450S']*981, + "U_T0_500":NGAWest2['T0.500S']*981, + "U_T0_600":NGAWest2['T0.600S']*981, + "U_T0_700":NGAWest2['T0.700S']*981, + "U_T0_750":NGAWest2['T0.750S']*981, + "U_T0_800":NGAWest2['T0.800S']*981, + "U_T0_900":NGAWest2['T0.900S']*981, + "U_T1_000":NGAWest2['T1.000S']*981, + "U_T1_200":NGAWest2['T1.200S']*981, + "U_T1_400":NGAWest2['T1.400S']*981, + "U_T1_600":NGAWest2['T1.600S']*981, + "U_T1_800":NGAWest2['T1.800S']*981, + "U_T2_000":NGAWest2['T2.000S']*981, + "U_T2_500":NGAWest2['T2.500S']*981, + "U_T3_000":NGAWest2['T3.000S']*981, + "U_T3_500":NGAWest2['T3.500S']*981, + "U_T4_000":NGAWest2['T4.000S']*981, + "U_T4_500":NGAWest2['T4.500S']*981, + "U_T5_000":NGAWest2['T5.000S']*981, + "U_T6_000":NGAWest2['T6.000S']*981, + "U_T7_000":NGAWest2['T7.000S']*981, + "U_T8_000":NGAWest2['T8.000S']*981, + "U_T9_000":NGAWest2['T9.000S']*981, + "U_T10_000":NGAWest2['T10.000S']*981, - "V_T0_010":default_string, - "V_T0_025":default_string, - "V_T0_040":default_string, - "V_T0_050":default_string, - "V_T0_070":default_string, - "V_T0_100":default_string, - "V_T0_150":default_string, - "V_T0_200":default_string, - "V_T0_250":default_string, - "V_T0_300":default_string, - "V_T0_350":default_string, - "V_T0_400":default_string, - "V_T0_450":default_string, - "V_T0_500":default_string, - "V_T0_600":default_string, - "V_T0_700":default_string, - "V_T0_750":default_string, - "V_T0_800":default_string, - "V_T0_900":default_string, - "V_T1_000":default_string, - "V_T1_200":default_string, - "V_T1_400":default_string, - "V_T1_600":default_string, - "V_T1_800":default_string, - "V_T2_000":default_string, - "V_T2_500":default_string, - "V_T3_000":default_string, - "V_T3_500":default_string, - "V_T4_000":default_string, - "V_T4_500":default_string, - "V_T5_000":default_string, - "V_T6_000":default_string, - "V_T7_000":default_string, - "V_T8_000":default_string, - "V_T9_000":default_string, - "V_T10_000":default_string, + "V_T0_010":NGAWest2['T0.010S']*981, + "V_T0_025":NGAWest2['T0.025S']*981, + "V_T0_040":NGAWest2['T0.040S']*981, + "V_T0_050":NGAWest2['T0.050S']*981, + "V_T0_070":NGAWest2['T0.070S']*981, + "V_T0_100":NGAWest2['T0.100S']*981, + "V_T0_150":NGAWest2['T0.150S']*981, + "V_T0_200":NGAWest2['T0.200S']*981, + "V_T0_250":NGAWest2['T0.250S']*981, + "V_T0_300":NGAWest2['T0.300S']*981, + "V_T0_350":NGAWest2['T0.350S']*981, + "V_T0_400":NGAWest2['T0.400S']*981, + "V_T0_450":NGAWest2['T0.450S']*981, + "V_T0_500":NGAWest2['T0.500S']*981, + "V_T0_600":NGAWest2['T0.600S']*981, + "V_T0_700":NGAWest2['T0.700S']*981, + "V_T0_750":NGAWest2['T0.750S']*981, + "V_T0_800":NGAWest2['T0.800S']*981, + "V_T0_900":NGAWest2['T0.900S']*981, + "V_T1_000":NGAWest2['T1.000S']*981, + "V_T1_200":NGAWest2['T1.200S']*981, + "V_T1_400":NGAWest2['T1.400S']*981, + "V_T1_600":NGAWest2['T1.600S']*981, + "V_T1_800":NGAWest2['T1.800S']*981, + "V_T2_000":NGAWest2['T2.000S']*981, + "V_T2_500":NGAWest2['T2.500S']*981, + "V_T3_000":NGAWest2['T3.000S']*981, + "V_T3_500":NGAWest2['T3.500S']*981, + "V_T4_000":NGAWest2['T4.000S']*981, + "V_T4_500":NGAWest2['T4.500S']*981, + "V_T5_000":NGAWest2['T5.000S']*981, + "V_T6_000":NGAWest2['T6.000S']*981, + "V_T7_000":NGAWest2['T7.000S']*981, + "V_T8_000":NGAWest2['T8.000S']*981, + "V_T9_000":NGAWest2['T9.000S']*981, + "V_T10_000":NGAWest2['T10.000S']*981, "W_T0_010":NGAWest2_vertical['T0.010S']*981, "W_T0_025":NGAWest2_vertical['T0.025S']*981, @@ -1072,118 +994,7 @@ def _get_ESM18_headers(NGAWest2, NGAWest2_vertical, Initial_NGAWest2_size): "W_T7_000":NGAWest2_vertical['T7.000S']*981, "W_T8_000":NGAWest2_vertical['T8.000S']*981, "W_T9_000":NGAWest2_vertical['T9.000S']*981, - "W_T10_000":NGAWest2_vertical['T10.000S']*981, - - "rotD50_T0_010":NGAWest2['T0.010S']*981, - "rotD50_T0_025":NGAWest2['T0.025S']*981, - "rotD50_T0_040":NGAWest2['T0.040S']*981, - "rotD50_T0_050":NGAWest2['T0.050S']*981, - "rotD50_T0_070":NGAWest2['T0.070S']*981, - "rotD50_T0_100":NGAWest2['T0.100S']*981, - "rotD50_T0_150":NGAWest2['T0.150S']*981, - "rotD50_T0_200":NGAWest2['T0.200S']*981, - "rotD50_T0_250":NGAWest2['T0.250S']*981, - "rotD50_T0_300":NGAWest2['T0.300S']*981, - "rotD50_T0_350":NGAWest2['T0.350S']*981, - "rotD50_T0_400":NGAWest2['T0.400S']*981, - "rotD50_T0_450":NGAWest2['T0.450S']*981, - "rotD50_T0_500":NGAWest2['T0.500S']*981, - "rotD50_T0_600":NGAWest2['T0.600S']*981, - "rotD50_T0_700":NGAWest2['T0.700S']*981, - "rotD50_T0_750":NGAWest2['T0.750S']*981, - "rotD50_T0_800":NGAWest2['T0.800S']*981, - "rotD50_T0_900":NGAWest2['T0.900S']*981, - "rotD50_T1_000":NGAWest2['T1.000S']*981, - "rotD50_T1_200":NGAWest2['T1.200S']*981, - "rotD50_T1_400":NGAWest2['T1.400S']*981, - "rotD50_T1_600":NGAWest2['T1.600S']*981, - "rotD50_T1_800":NGAWest2['T1.800S']*981, - "rotD50_T2_000":NGAWest2['T2.000S']*981, - "rotD50_T2_500":NGAWest2['T2.500S']*981, - "rotD50_T3_000":NGAWest2['T3.000S']*981, - "rotD50_T3_500":NGAWest2['T3.500S']*981, - "rotD50_T4_000":NGAWest2['T4.000S']*981, - "rotD50_T4_500":NGAWest2['T4.500S']*981, - "rotD50_T5_000":NGAWest2['T5.000S']*981, - "rotD50_T6_000":NGAWest2['T6.000S']*981, - "rotD50_T7_000":NGAWest2['T7.000S']*981, - "rotD50_T8_000":NGAWest2['T8.000S']*981, - "rotD50_T9_000":NGAWest2['T9.000S']*981, - "rotD50_T10_000":NGAWest2['T10.000S']*981, - - "rotD00_T0_010":default_string, - "rotD00_T0_025":default_string, - "rotD00_T0_040":default_string, - "rotD00_T0_050":default_string, - "rotD00_T0_070":default_string, - "rotD00_T0_100":default_string, - "rotD00_T0_150":default_string, - "rotD00_T0_200":default_string, - "rotD00_T0_250":default_string, - "rotD00_T0_300":default_string, - "rotD00_T0_350":default_string, - "rotD00_T0_400":default_string, - "rotD00_T0_450":default_string, - "rotD00_T0_500":default_string, - "rotD00_T0_600":default_string, - "rotD00_T0_700":default_string, - "rotD00_T0_750":default_string, - "rotD00_T0_800":default_string, - "rotD00_T0_900":default_string, - "rotD00_T1_000":default_string, - "rotD00_T1_200":default_string, - "rotD00_T1_400":default_string, - "rotD00_T1_600":default_string, - "rotD00_T1_800":default_string, - "rotD00_T2_000":default_string, - "rotD00_T2_500":default_string, - "rotD00_T3_000":default_string, - "rotD00_T3_500":default_string, - "rotD00_T4_000":default_string, - "rotD00_T4_500":default_string, - "rotD00_T5_000":default_string, - "rotD00_T6_000":default_string, - "rotD00_T7_000":default_string, - "rotD00_T8_000":default_string, - "rotD00_T9_000":default_string, - "rotD00_T10_000":default_string, - - "rotD100_T0_010":default_string, - "rotD100_T0_025":default_string, - "rotD100_T0_040":default_string, - "rotD100_T0_050":default_string, - "rotD100_T0_070":default_string, - "rotD100_T0_100":default_string, - "rotD100_T0_150":default_string, - "rotD100_T0_200":default_string, - "rotD100_T0_250":default_string, - "rotD100_T0_300":default_string, - "rotD100_T0_350":default_string, - "rotD100_T0_400":default_string, - "rotD100_T0_450":default_string, - "rotD100_T0_500":default_string, - "rotD100_T0_600":default_string, - "rotD100_T0_700":default_string, - "rotD100_T0_750":default_string, - "rotD100_T0_800":default_string, - "rotD100_T0_900":default_string, - "rotD100_T1_000":default_string, - "rotD100_T1_200":default_string, - "rotD100_T1_400":default_string, - "rotD100_T1_600":default_string, - "rotD100_T1_800":default_string, - "rotD100_T2_000":default_string, - "rotD100_T2_500":default_string, - "rotD100_T3_000":default_string, - "rotD100_T3_500":default_string, - "rotD100_T4_000":default_string, - "rotD100_T4_500":default_string, - "rotD100_T5_000":default_string, - "rotD100_T6_000":default_string, - "rotD100_T7_000":default_string, - "rotD100_T8_000":default_string, - "rotD100_T9_000":default_string, - "rotD100_T10_000":default_string}) + "W_T10_000":NGAWest2_vertical['T10.000S']*981}) # Output to folder where converted flatfile read into parser DATA = os.path.abspath('') From 661cb203b1fea4e27c472dd2b98c5f61efed3c55 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 3 Mar 2024 23:21:05 +0100 Subject: [PATCH 23/59] update --- openquake/smt/parsers/ngawest2_flatfile_parser.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openquake/smt/parsers/ngawest2_flatfile_parser.py b/openquake/smt/parsers/ngawest2_flatfile_parser.py index 134a46f0f..ca7aab3d3 100644 --- a/openquake/smt/parsers/ngawest2_flatfile_parser.py +++ b/openquake/smt/parsers/ngawest2_flatfile_parser.py @@ -875,6 +875,7 @@ def _get_ESM18_headers(NGAWest2, NGAWest2_vertical, Initial_NGAWest2_size): "V_lp":NGAWest2['LP-H2 (Hz)'], "W_lp":NGAWest2_vertical['LP-V (Hz)'], + # In effect taking RotD50 as proxy for geometric mean of horizontal comps "U_pga":NGAWest2['PGA (g)']*981, "V_pga":NGAWest2['PGA (g)']*981, "W_pga":NGAWest2_vertical['PGA (g)']*981, From 868224af8c91c62edce4287713221febac4819c9 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 4 Mar 2024 10:11:16 +0100 Subject: [PATCH 24/59] update --- .../smt/parsers/esm_ws_flatfile_parser.py | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/openquake/smt/parsers/esm_ws_flatfile_parser.py b/openquake/smt/parsers/esm_ws_flatfile_parser.py index b751006f7..47e6be975 100644 --- a/openquake/smt/parsers/esm_ws_flatfile_parser.py +++ b/openquake/smt/parsers/esm_ws_flatfile_parser.py @@ -66,19 +66,26 @@ HEADERS = set(HEADER_STR.split(";")) COUNTRY_CODES = {"AL": "Albania", "AM": "Armenia", "AT": "Austria", - "AZ": "Azerbaijan", "BA": "Bosnia and Herzegowina", - "BG": "Bulgaria", "CH": "Switzerland", "CY": "Cyprus", - "CZ": "Czech Republic", "DE": "Germany", "DZ": "Algeria", - "ES": "Spain", "FR": "France", "GE": "Georgia", - "GR": "Greece", "HR": "Croatia", "HU": "Hungary", - "IL": "Israel", "IR": "Iran", "IS": "Iceland", "IT": "Italy", - "JO": "Jordan", "LI": "Lichtenstein", "MA": "Morocco", - "MC": "Monaco", "MD": "Moldova", "ME": "Montenegro", - "MK": "Macedonia", "MT": "Malta", "PL": "Poland", - "PT": "Portugal", "RO": "Romania", "RS": "Serbia", - "RU": "Russia", "SI": "Slovenia", "SM": "San Marino", - "SY": "Syria", "TM": "Turkmenistan", "TR": "Turkey", - "UA": "Ukraine", "UZ": "Uzbekistan", "XK": "Kosovo"} + "AR": "Argentina", "AZ": "Azerbaijan", + "BA": "Bosnia and Herzegowina", "BG": "Bulgaria", + "CH": "Switzerland", "CL": "Chile", "CN": "China", + "CR": "Costa Rica", "CY": "Cyprus", "CZ": "Czech Republic", + "DE": "Germany", "DJ": "Djibouti", "DZ": "Algeria", + "ES": "Spain", "FR": "France", "GE": "Georgia", "GH": "Ghana", + "GR": "Greece", "HR": "Croatia", "HU": "Hungary", + "IL": "Israel", "ID": "Indonesia", "IR": "Iran", + "IS": "Iceland", "IT": "Italy", "JO": "Jordan", "KE":"Kenya", + "KG": "Kyrgyzstan", "KZ": "Kazakhstan", "LI": "Lichtenstein", + "MA": "Morocco", "MC": "Monaco", "MD": "Moldova", + "ME": "Montenegro", "MK": "Macedonia", "MM": "Myanmar", + "MT": "Malta", "MX": "Mexico", "NI": "Nicaragua", + "NO": "Norway", "PA": "Panama", "PG": "Papa New Guinea", + "PL": "Poland", "PT": "Portugal", "PS": "Palestine", + "RO": "Romania", "RS": "Serbia", "RU": "Russia", + "SI": "Slovenia", "SM": "San Marino", "SY": "Syria", + "TM": "Turkmenistan", "TR": "Turkey", "TW": "Taiwan", + "UA": "Ukraine", "US": "United States", "UZ": "Uzbekistan", + "VU": "Vanuatu", "XK": "Kosovo", "YE": "Yemen"} class ESMFlatfileParserWS(SMDatabaseReader): From 9ee6e51f114564d51e71fe0cb59e059eaa1a2b0c Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 4 Mar 2024 11:37:15 +0100 Subject: [PATCH 25/59] update --- docsrc/contents/smt.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docsrc/contents/smt.rst b/docsrc/contents/smt.rst index 09ec3df02..5f3572194 100644 --- a/docsrc/contents/smt.rst +++ b/docsrc/contents/smt.rst @@ -113,7 +113,7 @@ We can specify the inputs to perform a residual analysis with as follows: [models.AbrahamsonEtAl2014] [models.AbrahamsonEtAl2014RegJPN] - region = "JPN" # NB currently a bug for specifically this gmm in the SMT where the user must still specify the region param despite the class name differentiating as regionalised variant (will be fixed!) + region = "JPN" # nb currently a bug for specifically this gmm in the SMT where the user must still specify the region param despite the class name differentiating as regionalised variant (will be fixed!) [models.BooreEtAl2014] From a7b9e7024500f4f62368ab16d2558483d6c3ef73 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 4 Mar 2024 11:43:25 +0100 Subject: [PATCH 26/59] update --- openquake/smt/tests/parsers/esm_url_flatfile_parser_test.py | 2 +- openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/openquake/smt/tests/parsers/esm_url_flatfile_parser_test.py b/openquake/smt/tests/parsers/esm_url_flatfile_parser_test.py index 29ae111b6..aaee79bf4 100644 --- a/openquake/smt/tests/parsers/esm_url_flatfile_parser_test.py +++ b/openquake/smt/tests/parsers/esm_url_flatfile_parser_test.py @@ -59,7 +59,7 @@ def setUpClass(cls): cls.db_file = os.path.join(BASE_DATA_PATH, "ESM_URL_conversion_test_metadata") - def test_esm_flatfile_parser(self): + def test_esm_url_flatfile_parser(self): """ Tests the parsing of the reformatted ESM flatfile """ diff --git a/openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py b/openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py index b1683b246..253307f39 100644 --- a/openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py +++ b/openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py @@ -67,7 +67,7 @@ def setUpClass(cls): BASE_DATA_PATH, "ESM_WS_Albania_filtered_test.csv") cls.db_file = os.path.join(BASE_DATA_PATH, "ESM_ws_conversion_test_metadata") - def test_esm_flatfile_parser(self): + def test_esm_ws_flatfile_parser(self): """ Tests the parsing of the reformatted ESM flatfile """ From a5d6d5e3deafdd5519eda88900f75b3b38ce0978 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 4 Mar 2024 21:40:32 +0100 Subject: [PATCH 27/59] update --- openquake/smt/demos/demo_residuals_script.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openquake/smt/demos/demo_residuals_script.py b/openquake/smt/demos/demo_residuals_script.py index 69921120d..298984b1c 100644 --- a/openquake/smt/demos/demo_residuals_script.py +++ b/openquake/smt/demos/demo_residuals_script.py @@ -61,7 +61,7 @@ def get_residuals(): for gmm in residuals.gmpe_list: # Create output directory - gmm_dir = residuals.gmpe_list[gmm]._toml + gmm_dir = residuals.gmpe_list[gmm]._toml.split('\n')[0] out = os.path.join('residuals', gmm_dir) if not os.path.exists(out): os.makedirs(out) From 94ec88e88122db3ac023d3b0b06455518c79448c Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 5 Mar 2024 12:41:48 +0100 Subject: [PATCH 28/59] update --- openquake/smt/demos/demo_comparison_script.py | 2 ++ openquake/smt/demos/demo_residuals_script.py | 3 +++ 2 files changed, 5 insertions(+) diff --git a/openquake/smt/demos/demo_comparison_script.py b/openquake/smt/demos/demo_comparison_script.py index 6cf6a029d..1b0b0ef51 100644 --- a/openquake/smt/demos/demo_comparison_script.py +++ b/openquake/smt/demos/demo_comparison_script.py @@ -8,6 +8,8 @@ import toml from openquake.smt.comparison import compare_gmpes as comp +import warnings +warnings.filterwarnings("ignore") # User input (can add more input tomls to run multiple analyses if required) file_list = ['demo_comparison_analysis_inputs.toml'] diff --git a/openquake/smt/demos/demo_residuals_script.py b/openquake/smt/demos/demo_residuals_script.py index 298984b1c..cbc5941fe 100644 --- a/openquake/smt/demos/demo_residuals_script.py +++ b/openquake/smt/demos/demo_residuals_script.py @@ -14,6 +14,9 @@ from openquake.smt.residuals import gmpe_residuals as res from openquake.smt.residuals import residual_plotter as rspl +import warnings +warnings.filterwarnings("ignore") + """USER INPUTS""" #Specify absolute path From 2b9ca08c848a4fe3ae3365cb0b34999385880296 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 7 Mar 2024 12:05:32 +0100 Subject: [PATCH 29/59] update --- docsrc/contents/smt.rst | 2 +- openquake/smt/comparison/compare_gmpes.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docsrc/contents/smt.rst b/docsrc/contents/smt.rst index 5f3572194..484501e9b 100644 --- a/docsrc/contents/smt.rst +++ b/docsrc/contents/smt.rst @@ -572,7 +572,7 @@ Comparing GMPEs 4. Spectra Plots - We can also plot response spectra. Note that a spectra computed from a recorded ground-motion and the corresponding ground-motions predicted by the considered GMPEs can be plotted (instead of iterating through the provided magnitudes and distances) by specifying the path to a ``.csv`` of the spectra using the ``obs_spectra`` variable (see the example spectra file in openquake.smt.tests.file_samples, and the functions within openquake.smt.comparison for more details): + We can also plot response spectra. Note that a spectra computed from a recorded ground-motion and the corresponding ground-motions predicted by the considered GMPEs can be plotted (instead of iterating through the provided magnitudes and distances) by specifying the path to a ``.csv`` of the spectra using the ``obs_spectra`` input variable for the spectra plotting function(see the example spectra file in openquake.smt.tests.file_samples, and the functions within openquake.smt.comparison for more details): .. code-block:: ini diff --git a/openquake/smt/comparison/compare_gmpes.py b/openquake/smt/comparison/compare_gmpes.py index f8eaf62e4..3ab2f5c4e 100644 --- a/openquake/smt/comparison/compare_gmpes.py +++ b/openquake/smt/comparison/compare_gmpes.py @@ -201,7 +201,7 @@ def plot_trellis(filename, output_directory): config.up_or_down_dip) -def plot_spectra(filename, output_directory, obs_spectra = None): +def plot_spectra(filename, output_directory, obs_spectra=None): """ Plot response spectra and GMPE sigma wrt spectral period for given run configuration From ef52e1b08f3b2e1a56821d5b292337db26690e3e Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 7 Mar 2024 12:11:44 +0100 Subject: [PATCH 30/59] update --- docsrc/contents/smt.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docsrc/contents/smt.rst b/docsrc/contents/smt.rst index 484501e9b..bba3c6d35 100644 --- a/docsrc/contents/smt.rst +++ b/docsrc/contents/smt.rst @@ -572,7 +572,7 @@ Comparing GMPEs 4. Spectra Plots - We can also plot response spectra. Note that a spectra computed from a recorded ground-motion and the corresponding ground-motions predicted by the considered GMPEs can be plotted (instead of iterating through the provided magnitudes and distances) by specifying the path to a ``.csv`` of the spectra using the ``obs_spectra`` input variable for the spectra plotting function(see the example spectra file in openquake.smt.tests.file_samples, and the functions within openquake.smt.comparison for more details): + We can also plot response spectra. Note that a spectra computed from a recorded ground-motion and the corresponding ground-motions predicted by the considered GMPEs can be plotted (instead of iterating through the provided magnitudes and distances) by specifying the path to a ``.csv`` of the spectra using the ``obs_spectra`` input variable for the spectra plotting function (see the example spectra file in openquake.smt.tests.file_samples, and the functions within openquake.smt.comparison for more details): .. code-block:: ini From 9fdf97bef7d312047cfe28f8b94934925cbbfe81 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 7 Mar 2024 14:12:17 +0100 Subject: [PATCH 31/59] update --- docsrc/contents/smt_images/Obs_Spectra.png | Bin 0 -> 169634 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docsrc/contents/smt_images/Obs_Spectra.png diff --git a/docsrc/contents/smt_images/Obs_Spectra.png b/docsrc/contents/smt_images/Obs_Spectra.png new file mode 100644 index 0000000000000000000000000000000000000000..2ff6ee014ef2db8f1c16ca1addb1ba8d54d9709d GIT binary patch literal 169634 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Ξ%`&<-Tyk|Nu_vJRBw;8143J~=?Kn}q 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

41B@# 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%0DgTOZ>CID?n-b`KT4W7h!v#AAt^s)gwL-PAkCuT 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 literal 0 HcmV?d00001 From 2b775df6bb579c2c0dcc35ceeeef083bcf4cbce0 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 7 Mar 2024 14:47:35 +0100 Subject: [PATCH 32/59] update --- docsrc/contents/smt.rst | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/docsrc/contents/smt.rst b/docsrc/contents/smt.rst index bba3c6d35..0767d74ac 100644 --- a/docsrc/contents/smt.rst +++ b/docsrc/contents/smt.rst @@ -9,7 +9,7 @@ Here, we will demonstrate how each of these components can be implemented, in th Please note that this documentation assumes an elementary knowledge of GMPEs, residual analysis and ground-motion characterisation. Therefore, this documentation's purpose is to facilitate the application of the smt by user who is already familiar with the underlying theory. References are provided throughout for useful overviews of such theory! -Performing a Residual Analysis within the smt +Performing a Residual Analysis ********************************************* The smt provides capabilities (parsers) for the parsing of an inputted dataset into metadata for the performing of a residual analysis, so as to evaluate GMPE performance against the inputted dataset. @@ -572,7 +572,7 @@ Comparing GMPEs 4. Spectra Plots - We can also plot response spectra. Note that a spectra computed from a recorded ground-motion and the corresponding ground-motions predicted by the considered GMPEs can be plotted (instead of iterating through the provided magnitudes and distances) by specifying the path to a ``.csv`` of the spectra using the ``obs_spectra`` input variable for the spectra plotting function (see the example spectra file in openquake.smt.tests.file_samples, and the functions within openquake.smt.comparison for more details): + We can also plot response spectra: .. code-block:: ini @@ -581,8 +581,21 @@ Comparing GMPEs Response spectra plots for input parameters specified in toml file: .. image:: /contents/smt_images/ResponseSpectra.png - -5. Sammon's Maps + +5. Plot of Spectra from a Record + + The spectra of a processed record can also be plotted along with predictions by the selected GMMs for the same ground-shaking scenario. An example of the input for the record spectra is provided in the demo files: + + .. code-block:: ini + + > # Generate plot of observed spectra and predictions by GMMs + > comp.plot_spectra(filename, output_directory, obs_spectra = 'spectra_chamoli_1991_station_UKHI.csv') + + Response spectra plots for input parameters specified in toml file: + .. image:: /contents/smt_images/ObsSpectra.png + + +6. Sammon's Maps We can plot Sammon's Maps to examine how similar the medians (and 16th and 84th percentiles) of predicted ground-motion of each GMPE are (see Sammon, 1969 and Scherbaum et al. 2010 for more details on the Sammon's mapping procedure). @@ -598,7 +611,7 @@ Comparing GMPEs Sammon's Maps (median predicted ground-motion) for input parameters specified in toml file: .. image:: /contents/smt_images/Median_SammonMaps.png -6. Hierarchical Clustering +7. Hierarchical Clustering Dendrograms can be plotted as an alternative tool to evaluate how similarly the predicted ground-motion is by each GMPE. @@ -614,7 +627,7 @@ Comparing GMPEs Dendrograms (median predicted ground-motion) for input parameters specified in toml file: .. image:: /contents/smt_images/Median_Clustering.png -7. Matrix Plots of Euclidean Distance +8. Matrix Plots of Euclidean Distance In addition to Sammon's Maps and hierarchical clustering, we can also plot the Euclidean distance between the predicted ground-motions by each GMPE in a matrix plot. From bf34bc7ddb836c2b65b52090dd57cfccff5d9369 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 7 Mar 2024 14:49:13 +0100 Subject: [PATCH 33/59] update --- openquake/smt/comparison/utils_compare_gmpes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openquake/smt/comparison/utils_compare_gmpes.py b/openquake/smt/comparison/utils_compare_gmpes.py index 5f7a25651..b9f5c0ce8 100644 --- a/openquake/smt/comparison/utils_compare_gmpes.py +++ b/openquake/smt/comparison/utils_compare_gmpes.py @@ -971,7 +971,7 @@ def update_spec_plots(ax1, ax2, m, i, n, l, dist_list): ax1.set_xlabel('Period (s)', fontsize=16) ax2.set_xlabel('Period (s)', fontsize=16) if l == 0: # left row only - ax1.set_ylabel('Sa (g)', fontsize=16) + ax1.set_ylabel('SA (g)', fontsize=16) ax2.set_ylabel(r'$\sigma$', fontsize=16) From 475d7abbdf6a42d9a97390aab22e6ca958e1ed15 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 7 Mar 2024 14:56:19 +0100 Subject: [PATCH 34/59] update --- .../smt_images/{Obs_Spectra.png => ObsSpectra.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename docsrc/contents/smt_images/{Obs_Spectra.png => ObsSpectra.png} (100%) diff --git a/docsrc/contents/smt_images/Obs_Spectra.png b/docsrc/contents/smt_images/ObsSpectra.png similarity index 100% rename from docsrc/contents/smt_images/Obs_Spectra.png rename to docsrc/contents/smt_images/ObsSpectra.png From ac64ffe1bf5ec55facbadfa4c9a8775e456259ea Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 7 Mar 2024 15:14:25 +0100 Subject: [PATCH 35/59] update --- docsrc/contents/smt.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docsrc/contents/smt.rst b/docsrc/contents/smt.rst index 0767d74ac..b14ca5f57 100644 --- a/docsrc/contents/smt.rst +++ b/docsrc/contents/smt.rst @@ -589,6 +589,8 @@ Comparing GMPEs .. code-block:: ini > # Generate plot of observed spectra and predictions by GMMs + > # Note we use spectra from a record for the 1991 Chamoli EQ in this + > # example rather than from a record from an earthquake in/near Albania > comp.plot_spectra(filename, output_directory, obs_spectra = 'spectra_chamoli_1991_station_UKHI.csv') Response spectra plots for input parameters specified in toml file: From 81267f4a27ffb93ee230fcc89476e9395ccc793d Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 7 Mar 2024 20:04:18 +0100 Subject: [PATCH 36/59] demo for single station residual analysis --- .../smt/demos/demo_single_station_analysis.py | 135 ++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 openquake/smt/demos/demo_single_station_analysis.py diff --git a/openquake/smt/demos/demo_single_station_analysis.py b/openquake/smt/demos/demo_single_station_analysis.py new file mode 100644 index 000000000..24aa7e28f --- /dev/null +++ b/openquake/smt/demos/demo_single_station_analysis.py @@ -0,0 +1,135 @@ +""" +This demo script runs a single stationresidual analysis using a subset of the +ESM flatfile filtered geographically to Albania + an approximately 100 km buffer. +""" +import os +import numpy as np +import pandas as pd +import pickle +import shutil +import toml + +from openquake.baselib import sap +from openquake.smt.parsers.esm_url_flatfile_parser import ESMFlatfileParserURL +import openquake.smt.residuals.gmpe_residuals as res +import openquake.smt.residuals.residual_plotter as rspl +from openquake.smt.strong_motion_selector import rank_sites_by_record_count + +import warnings +warnings.filterwarnings("ignore") + +"""USER INPUTS""" + +# Flatfile to use +db = 'demo_flatfile.csv' + +# Specify .toml file with GMPEs and imts to use +gmms_imts = 'demo_residual_analysis_inputs.toml' + +# Specify results folder name +run_folder = 'results_single_station_analysis' + +# Minimum number of records for a site to be considered in SSA +threshold = 45 + + +def get_residuals(): + """ + Compute the residuals from the example flatfile, GMMs and imts + """ + # Create metadata directory + metadata_dir = 'metadata' + if os.path.exists(metadata_dir): + shutil.rmtree(metadata_dir) + + # Parse the metadata + ESMFlatfileParserURL.autobuild("000", 'db', metadata_dir, db) + + # Get inputs + metadata = os.path.join('metadata', 'metadatafile.pkl') + sm_database = pickle.load(open(metadata,"rb")) + + # If output directory for residuals exists remove and remake + if os.path.exists('residuals'): + shutil.rmtree('residuals') + + # Get residuals + residuals = res.Residuals.from_toml(gmms_imts) + residuals.get_residuals(sm_database) + + # Create results folder for single station analysis + if os.path.exists(run_folder): + shutil.rmtree(run_folder) + os.mkdir(run_folder) + + return sm_database + + +def single_station_analysis(sm_database): + """ + Perform the analysis using the demo files + """ + # Find sites with threshold minimum for number of records + top_sites = rank_sites_by_record_count(sm_database, threshold) + + # For each station print some info + msg = 'Sites with required threshold of at least %s records' %(threshold) + print(msg) + for idx, site_id in enumerate(top_sites.keys()): + print(" Site ID: %s Name: %s, Number of Records: %s" %( + site_id, top_sites[site_id]["Name"], top_sites [site_id]["Count"])) + + # Create SingleStationAnalysis object + ssa1 = res.SingleStationAnalysis.from_toml(top_sites.keys(), gmms_imts) + + # Compute the total, inter-event and intra-event residuals for each site + ssa1.get_site_residuals(sm_database) + + # Output for summary csv + csv_output = os.path.join(run_folder, 'ssa_results.csv') + + # Get summary of statistics and output them + ssa1.residual_statistics(True, csv_output) + + # Output plots + for gmpe in ssa1.gmpe_list: + for imt in ssa1.imts: + + # Create folder for the GMM + gmpe_folder_name = str(ssa1.gmpe_list[gmpe]).split( + '(')[0].replace('\n','_').replace(' ','').replace('"','') + + gmpe_folder = os.path.join(run_folder, gmpe_folder_name) + + if not os.path.exists(gmpe_folder): + os.mkdir(gmpe_folder) + + # Filenames + output_all_res_with_site = os.path.join( + gmpe_folder, gmpe_folder_name + '_' + imt + '_' + + 'AllResPerSite.jpg') + output_intra_res_components_with_site = os.path.join( + gmpe_folder, gmpe_folder_name + '_' + imt + '_' + + 'IntraResCompPerSite.jpg') + + # Create the plots and save + rspl.ResidualWithSite(ssa1, gmpe, imt, + output_all_res_with_site, filetype='jpg') + rspl.IntraEventResidualWithSite( + ssa1, gmpe, imt, output_intra_res_components_with_site, + iletype='jpg') + + +def main(): + """ + Run the demo for single station residual analysis + """ + # Get residuals + sm_database = get_residuals() + + # Run the single station analysis + single_station_analysis(sm_database) + + +if __name__ == '__main__': + sap.run(main) \ No newline at end of file From baf522383491ca5308f67bcfdc89936b62cd8f42 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 7 Mar 2024 20:10:14 +0100 Subject: [PATCH 37/59] update --- openquake/smt/demos/demo_single_station_analysis.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/openquake/smt/demos/demo_single_station_analysis.py b/openquake/smt/demos/demo_single_station_analysis.py index 24aa7e28f..0cdfc1fac 100644 --- a/openquake/smt/demos/demo_single_station_analysis.py +++ b/openquake/smt/demos/demo_single_station_analysis.py @@ -3,11 +3,8 @@ ESM flatfile filtered geographically to Albania + an approximately 100 km buffer. """ import os -import numpy as np -import pandas as pd import pickle import shutil -import toml from openquake.baselib import sap from openquake.smt.parsers.esm_url_flatfile_parser import ESMFlatfileParserURL From a7f92d7a5b2287453fecf7003d952cf327d97153 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 8 Mar 2024 09:51:42 +0100 Subject: [PATCH 38/59] more cleaning --- openquake/smt/parsers/esm_flatfile_parser.py | 39 ++++++--------- .../smt/parsers/esm_url_flatfile_parser.py | 37 ++++++-------- .../smt/parsers/esm_ws_flatfile_parser.py | 36 +++++--------- .../smt/parsers/ngawest2_flatfile_parser.py | 49 ++++++++----------- 4 files changed, 64 insertions(+), 97 deletions(-) diff --git a/openquake/smt/parsers/esm_flatfile_parser.py b/openquake/smt/parsers/esm_flatfile_parser.py index 6e95d2dca..e2ef59006 100644 --- a/openquake/smt/parsers/esm_flatfile_parser.py +++ b/openquake/smt/parsers/esm_flatfile_parser.py @@ -89,7 +89,7 @@ class ESMFlatfileParser(SMDatabaseReader): def parse(self, location="./"): """ - + Parse the metadata """ assert os.path.isfile(self.filename) headers = getline(self.filename, 1).rstrip("\n").split(";") @@ -99,24 +99,22 @@ def parse(self, location="./"): % hdr) # Read in csv reader = csv.DictReader(open(self.filename, "r"), delimiter=";") - metadata = [] self.database = GroundMotionDatabase(self.id, self.name) counter = 0 for row in reader: - if self._sanitise(row, reader): - # Build the metadata - record = self._parse_record(row) - if record: - # Parse the strong motion - record = self._parse_ground_motion( - os.path.join(location, "records"), - row, record, headers) - self.database.records.append(record) + # Build the metadata + record = self._parse_record(row) + if record: + # Parse the strong motion + record = self._parse_ground_motion( + os.path.join(location, "records"), + row, record, headers) + self.database.records.append(record) - else: - print("Record with sequence number %s is null/invalid" - % "{:s}-{:s}".format(row["event_id"], - row["station_code"])) + else: + print("Record with sequence number %s is null/invalid" + % "{:s}-{:s}".format(row["event_id"], + row["station_code"])) if (counter % 100) == 0: print("Processed record %s - %s" % (str(counter), record.id)) @@ -146,13 +144,10 @@ def autobuild(cls, dbid, dbname, output_location, flatfile_location): pickle.dump(database.database, f) return database - def _sanitise(self, row, reader): + def _parse_record(self, metadata): """ - TODO - Not implemented yet! + Parse a record """ - return True - - def _parse_record(self, metadata): # Waveform ID not provided in file so concatenate Event and Station ID wfid = "_".join([metadata["event_id"], metadata["network_code"], metadata["station_code"], metadata["location_code"]]) @@ -345,7 +340,6 @@ def _parse_site_data(self, metadata): network_code = metadata["network_code"].strip() station_code = metadata["station_code"].strip() site_id = "{:s}-{:s}".format(network_code, station_code) - location_code = metadata["location_code"].strip() site_lon = valid.longitude(metadata["st_longitude"]) site_lat = valid.latitude(metadata["st_latitude"]) elevation = valid.vfloat(metadata["st_elevation"], "st_elevation") @@ -497,10 +491,9 @@ def _parse_ground_motion(self, location, row, record, headers): record.datafile = filename return record - def _retreive_ground_motion_from_row(self, row, header_list): """ - + Get the ground motion data from a row (record) in the database """ imts = ["U", "V", "W", "rotD00", "rotD100", "rotD50"] spectra = [] diff --git a/openquake/smt/parsers/esm_url_flatfile_parser.py b/openquake/smt/parsers/esm_url_flatfile_parser.py index b988a20b3..2dd8b3ce8 100644 --- a/openquake/smt/parsers/esm_url_flatfile_parser.py +++ b/openquake/smt/parsers/esm_url_flatfile_parser.py @@ -111,24 +111,22 @@ def parse(self, location='./'): % hdr) # Read in csv reader = csv.DictReader(open(self.filename, "r"), delimiter=";") - metadata = [] self.database = GroundMotionDatabase(self.id, self.name) counter = 0 for row in reader: - if self._sanitise(row, reader): - # Build the metadata - record = self._parse_record(row) - if record: - # Parse the strong motion - record = self._parse_ground_motion( - os.path.join(location, "records"), - row, record, headers) - self.database.records.append(record) + # Build the metadata + record = self._parse_record(row) + if record: + # Parse the strong motion + record = self._parse_ground_motion( + os.path.join(location, "records"), + row, record, headers) + self.database.records.append(record) - else: - print("Record with sequence number %s is null/invalid" - % "{:s}-{:s}".format(row["event_id"], - row["station_code"])) + else: + print("Record with sequence number %s is null/invalid" + % "{:s}-{:s}".format(row["event_id"], + row["station_code"])) if (counter % 100) == 0: print("Processed record %s - %s" % (str(counter), record.id)) @@ -174,13 +172,10 @@ def autobuild(cls, dbid, dbname, output_location, ESM_flatfile_directory): return database - def _sanitise(self, row, reader): + def _parse_record(self, metadata): """ - TODO - Not implemented yet! + Parse a record """ - return True - - def _parse_record(self, metadata): # Waveform ID not provided in file so concatenate Event and Station ID wfid = "_".join([metadata["event_id"], metadata["network_code"], metadata["station_code"], metadata["location_code"]]) @@ -373,7 +368,6 @@ def _parse_site_data(self, metadata): network_code = metadata["network_code"].strip() station_code = metadata["station_code"].strip() site_id = "{:s}-{:s}".format(network_code, station_code) - location_code = metadata["location_code"].strip() site_lon = valid.longitude(metadata["st_longitude"]) site_lat = valid.latitude(metadata["st_latitude"]) elevation = valid.vfloat(metadata["st_elevation"], "st_elevation") @@ -528,7 +522,7 @@ def _parse_ground_motion(self, location, row, record, headers): def _retreive_ground_motion_from_row(self, row, header_list): """ - + Get the ground-motion data from a row (record) in the database """ imts = ["U", "V", "W", "rotD00", "rotD100", "rotD50"] spectra = [] @@ -563,7 +557,6 @@ def _retreive_ground_motion_from_row(self, row, header_list): values.append(np.fabs(float(value))) else: values.append(np.nan) - #values.append(np.fabs(float(row[header].strip()))) periods = np.array(periods) values = np.array(values) idx = np.argsort(periods) diff --git a/openquake/smt/parsers/esm_ws_flatfile_parser.py b/openquake/smt/parsers/esm_ws_flatfile_parser.py index 47e6be975..432bba3bc 100644 --- a/openquake/smt/parsers/esm_ws_flatfile_parser.py +++ b/openquake/smt/parsers/esm_ws_flatfile_parser.py @@ -108,24 +108,22 @@ def parse(self, location='./'): % hdr) # Read in csv reader = csv.DictReader(open(self.filename, "r"), delimiter=";") - metadata = [] self.database = GroundMotionDatabase(self.id, self.name) counter = 0 for row in reader: - if self._sanitise(row, reader): - # Build the metadata - record = self._parse_record(row) - if record: - # Parse the strong motion - record = self._parse_ground_motion( - os.path.join(location, "records"), - row, record, headers) - self.database.records.append(record) + # Build the metadata + record = self._parse_record(row) + if record: + # Parse the strong motion + record = self._parse_ground_motion( + os.path.join(location, "records"), + row, record, headers) + self.database.records.append(record) - else: - print("Record with sequence number %s is null/invalid" - % "{:s}-{:s}".format(row["event_id"], - row["station_code"])) + else: + print("Record with sequence number %s is null/invalid" + % "{:s}-{:s}".format(row["event_id"], + row["station_code"])) if (counter % 100) == 0: print("Processed record %s - %s" % (str(counter), record.id)) @@ -171,12 +169,6 @@ def autobuild(cls, dbid, dbname, output_location, ESM_flatfile_directory): return database - def _sanitise(self, row, reader): - """ - TODO - Not implemented yet! - """ - return True - def _parse_record(self, metadata): # Waveform ID not provided in file so concatenate Event and Station ID wfid = "_".join([metadata["event_id"], metadata["network_code"], @@ -370,7 +362,6 @@ def _parse_site_data(self, metadata): network_code = metadata["network_code"].strip() station_code = metadata["station_code"].strip() site_id = "{:s}-{:s}".format(network_code, station_code) - location_code = metadata["location_code"].strip() site_lon = valid.longitude(metadata["st_longitude"]) site_lat = valid.latitude(metadata["st_latitude"]) elevation = valid.vfloat(metadata["st_elevation"], "st_elevation") @@ -525,7 +516,7 @@ def _parse_ground_motion(self, location, row, record, headers): def _retreive_ground_motion_from_row(self, row, header_list): """ - + Get the ground-motion data from a row (record) in the database """ imts = ["U", "V", "W", "rotD00", "rotD100", "rotD50"] spectra = [] @@ -560,7 +551,6 @@ def _retreive_ground_motion_from_row(self, row, header_list): values.append(np.fabs(float(value))) else: values.append(np.nan) - #values.append(np.fabs(float(row[header].strip()))) periods = np.array(periods) values = np.array(values) idx = np.argsort(periods) diff --git a/openquake/smt/parsers/ngawest2_flatfile_parser.py b/openquake/smt/parsers/ngawest2_flatfile_parser.py index ca7aab3d3..5579e743b 100644 --- a/openquake/smt/parsers/ngawest2_flatfile_parser.py +++ b/openquake/smt/parsers/ngawest2_flatfile_parser.py @@ -73,6 +73,7 @@ class NGAWest2FlatfileParser(SMDatabaseReader): def parse(self, location='./'): """ + Parse the metadata """ assert os.path.isfile(self.filename) headers = getline(self.filename, 1).rstrip("\n").split(";") @@ -82,24 +83,22 @@ def parse(self, location='./'): % hdr) # Read in csv reader = csv.DictReader(open(self.filename, "r"), delimiter=";") - metadata = [] self.database = GroundMotionDatabase(self.id, self.name) counter = 0 for row in reader: - if self._sanitise(row, reader): - # Build the metadata - record = self._parse_record(row) - if record: - # Parse the strong motion - record = self._parse_ground_motion( - os.path.join(location, "records"), - row, record, headers) - self.database.records.append(record) + # Build the metadata + record = self._parse_record(row) + if record: + # Parse the strong motion + record = self._parse_ground_motion( + os.path.join(location, "records"), + row, record, headers) + self.database.records.append(record) - else: - print("Record with sequence number %s is null/invalid" - % "{:s}-{:s}".format(row["event_id"], - row["station_code"])) + else: + print("Record with sequence number %s is null/invalid" + % "{:s}-{:s}".format(row["event_id"], + row["station_code"])) if (counter % 100) == 0: print("Processed record %s - %s" % (str(counter), record.id)) @@ -302,18 +301,10 @@ def autobuild(cls, dbid, dbname, output_location, return database - def _sanitise(self, row, reader): + def _parse_record(self, metadata): """ - TODO - Not implemented yet! + Parse a record """ - return True - - def _parse_record(self, metadata): - # Conc. NGAWest2 record info to identify each record in flatfile: - # --> event_id = NGAWest2['Earthquake Name'] - # --> station_id = NGAWest2['Station Name'] - # --> network_code = NGAWest2['Owner'] - # --> location_code = NGAWest2['Station ID No.'] wfid = "_".join([metadata["event_id"], metadata["network_code"], metadata["station_code"], metadata["location_code"]]) wfid = wfid.replace("-", "_") @@ -331,7 +322,6 @@ def _parse_record(self, metadata): xcomp, ycomp, vertical=vertical) - def _parse_event_data(self, metadata): """ Parses the event metadata @@ -500,7 +490,6 @@ def _parse_site_data(self, metadata): network_code = metadata["network_code"].strip() station_code = metadata["station_code"].strip() site_id = "{:s}-{:s}".format(network_code, station_code) - location_code = metadata["location_code"].strip() site_lon = valid.longitude(metadata["st_longitude"]) site_lat = valid.latitude(metadata["st_latitude"]) elevation = valid.vfloat(metadata["st_elevation"], "st_elevation") @@ -650,7 +639,7 @@ def _parse_ground_motion(self, location, row, record, headers): def _retreive_ground_motion_from_row(self, row, header_list): """ - + Get the ground-motion data from a row (record) in the database """ imts = ["U", "V", "W", "rotD00", "rotD100", "rotD50"] spectra = [] @@ -685,7 +674,6 @@ def _retreive_ground_motion_from_row(self, row, header_list): values.append(np.fabs(float(value))) else: values.append(np.nan) - #values.append(np.fabs(float(row[header].strip()))) periods = np.array(periods) values = np.array(values) idx = np.argsort(periods) @@ -706,6 +694,7 @@ def _retreive_ground_motion_from_row(self, row, header_list): scalars["U"][key] * scalars["V"][key]) return scalars, spectra + def _get_ESM18_headers(NGAWest2, NGAWest2_vertical, Initial_NGAWest2_size): """ @@ -875,7 +864,9 @@ def _get_ESM18_headers(NGAWest2, NGAWest2_vertical, Initial_NGAWest2_size): "V_lp":NGAWest2['LP-H2 (Hz)'], "W_lp":NGAWest2_vertical['LP-V (Hz)'], - # In effect taking RotD50 as proxy for geometric mean of horizontal comps + # SMT uses GM of two horizontal components so place RotD50 in both to use + # in computation of residuals (should improve SMT to use definition const. + # with the GMM rather than always using the values provided in H1 and H2). "U_pga":NGAWest2['PGA (g)']*981, "V_pga":NGAWest2['PGA (g)']*981, "W_pga":NGAWest2_vertical['PGA (g)']*981, From d21d243cd6e36d2ade45a216c42e24c2aaf3ba49 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 8 Mar 2024 10:13:59 +0100 Subject: [PATCH 39/59] update --- openquake/smt/parsers/ngawest2_flatfile_parser.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/openquake/smt/parsers/ngawest2_flatfile_parser.py b/openquake/smt/parsers/ngawest2_flatfile_parser.py index 5579e743b..611b7fac2 100644 --- a/openquake/smt/parsers/ngawest2_flatfile_parser.py +++ b/openquake/smt/parsers/ngawest2_flatfile_parser.py @@ -864,9 +864,7 @@ def _get_ESM18_headers(NGAWest2, NGAWest2_vertical, Initial_NGAWest2_size): "V_lp":NGAWest2['LP-H2 (Hz)'], "W_lp":NGAWest2_vertical['LP-V (Hz)'], - # SMT uses GM of two horizontal components so place RotD50 in both to use - # in computation of residuals (should improve SMT to use definition const. - # with the GMM rather than always using the values provided in H1 and H2). + # SMT uses GM of two horizontal components so place RotD50 here "U_pga":NGAWest2['PGA (g)']*981, "V_pga":NGAWest2['PGA (g)']*981, "W_pga":NGAWest2_vertical['PGA (g)']*981, From ddc8b5cc15cc116b9708253fa9d787be8e37bf87 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 8 Mar 2024 15:09:10 +0100 Subject: [PATCH 40/59] update --- openquake/smt/comparison/compare_gmpes.py | 2 +- .../smt/comparison/utils_compare_gmpes.py | 2 +- openquake/smt/comparison/utils_gmpes.py | 2 +- openquake/smt/data_default.py | 3 +- openquake/smt/database_visualiser.py | 4 +-- openquake/smt/intensity_measures.py | 4 +-- openquake/smt/parsers/asa_database_parser.py | 2 +- openquake/smt/parsers/base_database_parser.py | 2 +- openquake/smt/parsers/esm_database_parser.py | 2 +- openquake/smt/parsers/esm_dictionaries.py | 2 +- openquake/smt/parsers/esm_flatfile_parser.py | 4 +-- .../smt/parsers/esm_url_flatfile_parser.py | 2 +- .../smt/parsers/esm_ws_flatfile_parser.py | 2 +- .../smt/parsers/general_flatfile_parser.py | 2 +- .../smt/parsers/ngawest2_flatfile_parser.py | 2 +- .../smt/parsers/sigma_database_parser.py | 2 +- .../smt/parsers/simple_flatfile_parser.py | 2 +- .../parsers/simple_flatfile_parser_sara.py | 2 +- openquake/smt/parsers/valid.py | 2 +- openquake/smt/residuals/context_db.py | 17 +++++++++ openquake/smt/residuals/gmpe_residuals.py | 2 +- openquake/smt/residuals/residual_plots.py | 2 +- openquake/smt/residuals/residual_plotter.py | 2 +- openquake/smt/response_spectrum.py | 4 +-- openquake/smt/sm_database.py | 4 +-- openquake/smt/sm_database_builder.py | 4 +-- openquake/smt/sm_utils.py | 3 +- openquake/smt/smoothing/base.py | 2 +- openquake/smt/smoothing/konno_ohmachi.py | 2 +- openquake/smt/strong_motion_selector.py | 4 +-- openquake/smt/surface_utils.py | 3 +- .../smt/tests/comparison/comparison_test.py | 36 +++++++------------ .../tests/comparison/mgmpe_from_toml_test.py | 2 +- openquake/smt/tests/database_io_test.py | 2 +- .../smt/tests/intensity_measures_test.py | 2 +- .../tests/parsers/esm_flatfile_parser_test.py | 2 +- .../parsers/esm_url_flatfile_parser_test.py | 2 +- .../parsers/esm_ws_flatfile_parser_test.py | 2 +- .../parsers/ngawest2_flatfile_parser_test.py | 2 +- .../tests/residuals/residual_plots_test.py | 17 +++++++++ .../tests/residuals/residual_plotter_test.py | 17 +++++++++ .../residuals_ranking_metrics_test.py | 20 +++++++++++ .../smt/tests/residuals/residuals_test.py | 17 +++++++++ .../residuals_test_table_and_database.py | 17 +++++++++ openquake/smt/tests/sm_utils_test.py | 2 +- 45 files changed, 157 insertions(+), 77 deletions(-) diff --git a/openquake/smt/comparison/compare_gmpes.py b/openquake/smt/comparison/compare_gmpes.py index 3ab2f5c4e..8a1e44da5 100644 --- a/openquake/smt/comparison/compare_gmpes.py +++ b/openquake/smt/comparison/compare_gmpes.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2023 GEM Foundation +# Copyright (C) 2014-2024 GEM Foundation # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/comparison/utils_compare_gmpes.py b/openquake/smt/comparison/utils_compare_gmpes.py index b9f5c0ce8..2bc80e752 100644 --- a/openquake/smt/comparison/utils_compare_gmpes.py +++ b/openquake/smt/comparison/utils_compare_gmpes.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2023 GEM Foundation +# Copyright (C) 2014-2024 GEM Foundation # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/comparison/utils_gmpes.py b/openquake/smt/comparison/utils_gmpes.py index 094bfe33d..50836346f 100644 --- a/openquake/smt/comparison/utils_gmpes.py +++ b/openquake/smt/comparison/utils_gmpes.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2023 GEM Foundation +# Copyright (C) 2014-2024 GEM Foundation # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/data_default.py b/openquake/smt/data_default.py index 5ffa67b38..e7e338ec6 100644 --- a/openquake/smt/data_default.py +++ b/openquake/smt/data_default.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published @@ -15,7 +15,6 @@ # # You should have received a copy of the GNU Affero General Public License # along with OpenQuake. If not, see . - """ IMS IMS/V diff --git a/openquake/smt/database_visualiser.py b/openquake/smt/database_visualiser.py index f7fc8e214..a8d2f0157 100755 --- a/openquake/smt/database_visualiser.py +++ b/openquake/smt/database_visualiser.py @@ -1,8 +1,7 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published @@ -16,7 +15,6 @@ # # You should have received a copy of the GNU Affero General Public License # along with OpenQuake. If not, see . - """ Tool for creating visualisation of database information """ diff --git a/openquake/smt/intensity_measures.py b/openquake/smt/intensity_measures.py index 987631393..46a75cdbd 100755 --- a/openquake/smt/intensity_measures.py +++ b/openquake/smt/intensity_measures.py @@ -1,8 +1,7 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published @@ -16,7 +15,6 @@ # # You should have received a copy of the GNU Affero General Public License # along with OpenQuake. If not, see . - """ General Class for extracting Ground Motion Intensity Measures (IMs) from a set of acceleration time series diff --git a/openquake/smt/parsers/asa_database_parser.py b/openquake/smt/parsers/asa_database_parser.py index 734671705..b4517df85 100755 --- a/openquake/smt/parsers/asa_database_parser.py +++ b/openquake/smt/parsers/asa_database_parser.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/parsers/base_database_parser.py b/openquake/smt/parsers/base_database_parser.py index 220dc638a..7e0beec36 100755 --- a/openquake/smt/parsers/base_database_parser.py +++ b/openquake/smt/parsers/base_database_parser.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/parsers/esm_database_parser.py b/openquake/smt/parsers/esm_database_parser.py index dfbb4a685..c5adeaa0b 100755 --- a/openquake/smt/parsers/esm_database_parser.py +++ b/openquake/smt/parsers/esm_database_parser.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/parsers/esm_dictionaries.py b/openquake/smt/parsers/esm_dictionaries.py index 82a89959f..284dcfe92 100644 --- a/openquake/smt/parsers/esm_dictionaries.py +++ b/openquake/smt/parsers/esm_dictionaries.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/parsers/esm_flatfile_parser.py b/openquake/smt/parsers/esm_flatfile_parser.py index e2ef59006..259a17d2a 100644 --- a/openquake/smt/parsers/esm_flatfile_parser.py +++ b/openquake/smt/parsers/esm_flatfile_parser.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with OpenQuake. If not, see . """ -Parser from the ESM Flatfile to SMT +Parse ESM format flatfile into SMT metadata """ import os, sys import csv diff --git a/openquake/smt/parsers/esm_url_flatfile_parser.py b/openquake/smt/parsers/esm_url_flatfile_parser.py index 2dd8b3ce8..b38239130 100644 --- a/openquake/smt/parsers/esm_url_flatfile_parser.py +++ b/openquake/smt/parsers/esm_url_flatfile_parser.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/parsers/esm_ws_flatfile_parser.py b/openquake/smt/parsers/esm_ws_flatfile_parser.py index 432bba3bc..de0c2ffc9 100644 --- a/openquake/smt/parsers/esm_ws_flatfile_parser.py +++ b/openquake/smt/parsers/esm_ws_flatfile_parser.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/parsers/general_flatfile_parser.py b/openquake/smt/parsers/general_flatfile_parser.py index d7229195e..087b1db99 100755 --- a/openquake/smt/parsers/general_flatfile_parser.py +++ b/openquake/smt/parsers/general_flatfile_parser.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/parsers/ngawest2_flatfile_parser.py b/openquake/smt/parsers/ngawest2_flatfile_parser.py index 611b7fac2..67e10609b 100644 --- a/openquake/smt/parsers/ngawest2_flatfile_parser.py +++ b/openquake/smt/parsers/ngawest2_flatfile_parser.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/parsers/sigma_database_parser.py b/openquake/smt/parsers/sigma_database_parser.py index 5a297a6db..f233f920b 100755 --- a/openquake/smt/parsers/sigma_database_parser.py +++ b/openquake/smt/parsers/sigma_database_parser.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/parsers/simple_flatfile_parser.py b/openquake/smt/parsers/simple_flatfile_parser.py index 048f33109..870af8d58 100755 --- a/openquake/smt/parsers/simple_flatfile_parser.py +++ b/openquake/smt/parsers/simple_flatfile_parser.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/parsers/simple_flatfile_parser_sara.py b/openquake/smt/parsers/simple_flatfile_parser_sara.py index f7f56cb0b..b3df64d91 100755 --- a/openquake/smt/parsers/simple_flatfile_parser_sara.py +++ b/openquake/smt/parsers/simple_flatfile_parser_sara.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/parsers/valid.py b/openquake/smt/parsers/valid.py index 345d22a14..6d0d12a4e 100644 --- a/openquake/smt/parsers/valid.py +++ b/openquake/smt/parsers/valid.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/residuals/context_db.py b/openquake/smt/residuals/context_db.py index 66819753b..643e3d2f0 100644 --- a/openquake/smt/residuals/context_db.py +++ b/openquake/smt/residuals/context_db.py @@ -1,3 +1,20 @@ +# -*- coding: utf-8 -*- +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill +# +# OpenQuake is free software: you can redistribute it and/or modify it +# under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# OpenQuake is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with OpenQuake. If not, see . """ Module defining the interface of a Context Database (ContextDB), a database of data capable of yielding Contexts and Observations suitable for Residual analysis diff --git a/openquake/smt/residuals/gmpe_residuals.py b/openquake/smt/residuals/gmpe_residuals.py index a9c4eb0e2..43c1289ba 100755 --- a/openquake/smt/residuals/gmpe_residuals.py +++ b/openquake/smt/residuals/gmpe_residuals.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/residuals/residual_plots.py b/openquake/smt/residuals/residual_plots.py index b7187b1fd..e91f2e765 100755 --- a/openquake/smt/residuals/residual_plots.py +++ b/openquake/smt/residuals/residual_plots.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/residuals/residual_plotter.py b/openquake/smt/residuals/residual_plotter.py index 839c6abc2..60b7926b4 100755 --- a/openquake/smt/residuals/residual_plotter.py +++ b/openquake/smt/residuals/residual_plotter.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/response_spectrum.py b/openquake/smt/response_spectrum.py index 23e320299..fdafec747 100755 --- a/openquake/smt/response_spectrum.py +++ b/openquake/smt/response_spectrum.py @@ -1,8 +1,7 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published @@ -16,7 +15,6 @@ # # You should have received a copy of the GNU Affero General Public License # along with OpenQuake. If not, see . - """ Simple Python Script to integrate a strong motion record using the Newmark-Beta method diff --git a/openquake/smt/sm_database.py b/openquake/smt/sm_database.py index 05c862a7d..f73a47041 100755 --- a/openquake/smt/sm_database.py +++ b/openquake/smt/sm_database.py @@ -1,8 +1,7 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published @@ -16,7 +15,6 @@ # # You should have received a copy of the GNU Affero General Public License # along with OpenQuake. If not, see . - """ Basic Pseudo-database built on top of hdf5 for a set of processed strong motion records diff --git a/openquake/smt/sm_database_builder.py b/openquake/smt/sm_database_builder.py index 627ebbcca..34dab6db9 100755 --- a/openquake/smt/sm_database_builder.py +++ b/openquake/smt/sm_database_builder.py @@ -1,8 +1,7 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2018 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published @@ -16,7 +15,6 @@ # # You should have received a copy of the GNU Affero General Public License # along with OpenQuake. If not, see . - """ Constructs the HDF5 database """ diff --git a/openquake/smt/sm_utils.py b/openquake/smt/sm_utils.py index b86f4d933..93c61e090 100755 --- a/openquake/smt/sm_utils.py +++ b/openquake/smt/sm_utils.py @@ -1,8 +1,7 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/smoothing/base.py b/openquake/smt/smoothing/base.py index 0e621e700..48b59a71d 100755 --- a/openquake/smt/smoothing/base.py +++ b/openquake/smt/smoothing/base.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/smoothing/konno_ohmachi.py b/openquake/smt/smoothing/konno_ohmachi.py index d4078ba89..ae11e45c6 100755 --- a/openquake/smt/smoothing/konno_ohmachi.py +++ b/openquake/smt/smoothing/konno_ohmachi.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/strong_motion_selector.py b/openquake/smt/strong_motion_selector.py index b95a6f704..cb149f360 100755 --- a/openquake/smt/strong_motion_selector.py +++ b/openquake/smt/strong_motion_selector.py @@ -1,8 +1,7 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published @@ -16,7 +15,6 @@ # # You should have received a copy of the GNU Affero General Public License # along with OpenQuake. If not, see . - """ Strong motion record selection tools """ diff --git a/openquake/smt/surface_utils.py b/openquake/smt/surface_utils.py index 2f027ecb4..455d4629d 100755 --- a/openquake/smt/surface_utils.py +++ b/openquake/smt/surface_utils.py @@ -1,8 +1,7 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/tests/comparison/comparison_test.py b/openquake/smt/tests/comparison/comparison_test.py index 19ed2313d..32f207270 100644 --- a/openquake/smt/tests/comparison/comparison_test.py +++ b/openquake/smt/tests/comparison/comparison_test.py @@ -1,30 +1,20 @@ -# ------------------- The OpenQuake Model Building Toolkit -------------------- -# Copyright (C) 2022 GEM Foundation -# _______ _______ __ __ _______ _______ ___ _ -# | || | | |_| || _ || || | | | -# | _ || _ | ____ | || |_| ||_ _|| |_| | -# | | | || | | ||____|| || | | | | _| -# | |_| || |_| | | || _ | | | | |_ -# | || | | ||_|| || |_| | | | | _ | -# |_______||____||_| |_| |_||_______| |___| |___| |_| +# -*- coding: utf-8 -*- +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# +# Copyright (C) 2014-2014 GEM Foundation # -# This program is free software: you can redistribute it and/or modify it under -# the terms of the GNU Affero General Public License as published by the Free -# Software Foundation, either version 3 of the License, or (at your option) any -# later version. +# OpenQuake is free software: you can redistribute it and/or modify it +# under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # -# This program is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more -# details. +# OpenQuake is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# ----------------------------------------------------------------------------- -# vim: tabstop=4 shiftwidth=4 softtabstop=4 -# coding: utf-8 - - +# along with OpenQuake. If not, see . """ Tests for execution of comparison module """ diff --git a/openquake/smt/tests/comparison/mgmpe_from_toml_test.py b/openquake/smt/tests/comparison/mgmpe_from_toml_test.py index f566ffffc..43d11a24b 100644 --- a/openquake/smt/tests/comparison/mgmpe_from_toml_test.py +++ b/openquake/smt/tests/comparison/mgmpe_from_toml_test.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2023 GEM Foundation +# Copyright (C) 2014-2024 GEM Foundation # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/tests/database_io_test.py b/openquake/smt/tests/database_io_test.py index 377610105..b6d0c2b12 100644 --- a/openquake/smt/tests/database_io_test.py +++ b/openquake/smt/tests/database_io_test.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/tests/intensity_measures_test.py b/openquake/smt/tests/intensity_measures_test.py index d713eba8e..807853074 100644 --- a/openquake/smt/tests/intensity_measures_test.py +++ b/openquake/smt/tests/intensity_measures_test.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/tests/parsers/esm_flatfile_parser_test.py b/openquake/smt/tests/parsers/esm_flatfile_parser_test.py index 0e61fd93f..60e187348 100644 --- a/openquake/smt/tests/parsers/esm_flatfile_parser_test.py +++ b/openquake/smt/tests/parsers/esm_flatfile_parser_test.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2018 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/tests/parsers/esm_url_flatfile_parser_test.py b/openquake/smt/tests/parsers/esm_url_flatfile_parser_test.py index aaee79bf4..213c22e8f 100644 --- a/openquake/smt/tests/parsers/esm_url_flatfile_parser_test.py +++ b/openquake/smt/tests/parsers/esm_url_flatfile_parser_test.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2018 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py b/openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py index 253307f39..f814fb3b5 100644 --- a/openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py +++ b/openquake/smt/tests/parsers/esm_ws_flatfile_parser_test.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2018 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/tests/parsers/ngawest2_flatfile_parser_test.py b/openquake/smt/tests/parsers/ngawest2_flatfile_parser_test.py index 529d5fcc2..d98d90e28 100644 --- a/openquake/smt/tests/parsers/ngawest2_flatfile_parser_test.py +++ b/openquake/smt/tests/parsers/ngawest2_flatfile_parser_test.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2018 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published diff --git a/openquake/smt/tests/residuals/residual_plots_test.py b/openquake/smt/tests/residuals/residual_plots_test.py index bb66ae43f..d7a7e7f7f 100644 --- a/openquake/smt/tests/residuals/residual_plots_test.py +++ b/openquake/smt/tests/residuals/residual_plots_test.py @@ -1,3 +1,20 @@ +# -*- coding: utf-8 -*- +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill +# +# OpenQuake is free software: you can redistribute it and/or modify it +# under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# OpenQuake is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with OpenQuake. If not, see . """ Test suite for the `residual_plots` module responsible for calculating the data used for plotting (see `residual_plotter`) diff --git a/openquake/smt/tests/residuals/residual_plotter_test.py b/openquake/smt/tests/residuals/residual_plotter_test.py index 5b76f21a7..aff7c67c1 100644 --- a/openquake/smt/tests/residuals/residual_plotter_test.py +++ b/openquake/smt/tests/residuals/residual_plotter_test.py @@ -1,3 +1,20 @@ +# -*- coding: utf-8 -*- +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill +# +# OpenQuake is free software: you can redistribute it and/or modify it +# under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# OpenQuake is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with OpenQuake. If not, see . """ Test suite for the `residual_plotter` module responsible for plotting the plot data defined in `residual_plots` diff --git a/openquake/smt/tests/residuals/residuals_ranking_metrics_test.py b/openquake/smt/tests/residuals/residuals_ranking_metrics_test.py index b5939f5d2..f186fda1e 100644 --- a/openquake/smt/tests/residuals/residuals_ranking_metrics_test.py +++ b/openquake/smt/tests/residuals/residuals_ranking_metrics_test.py @@ -1,3 +1,23 @@ +# -*- coding: utf-8 -*- +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill +# +# OpenQuake is free software: you can redistribute it and/or modify it +# under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# OpenQuake is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with OpenQuake. If not, see . +""" +Tests for GMPE ranking metrics in the SMT +""" import os import sys import shutil diff --git a/openquake/smt/tests/residuals/residuals_test.py b/openquake/smt/tests/residuals/residuals_test.py index f0848a6af..f6db1e552 100644 --- a/openquake/smt/tests/residuals/residuals_test.py +++ b/openquake/smt/tests/residuals/residuals_test.py @@ -1,3 +1,20 @@ +# -*- coding: utf-8 -*- +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill +# +# OpenQuake is free software: you can redistribute it and/or modify it +# under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# OpenQuake is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with OpenQuake. If not, see . """ Core test suite for the database and residuals construction """ diff --git a/openquake/smt/tests/residuals/residuals_test_table_and_database.py b/openquake/smt/tests/residuals/residuals_test_table_and_database.py index 05fda356a..be8220473 100644 --- a/openquake/smt/tests/residuals/residuals_test_table_and_database.py +++ b/openquake/smt/tests/residuals/residuals_test_table_and_database.py @@ -1,3 +1,20 @@ +# -*- coding: utf-8 -*- +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill +# +# OpenQuake is free software: you can redistribute it and/or modify it +# under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# OpenQuake is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with OpenQuake. If not, see . """ Core test suite for the database and residuals construction when created from sm_database.GroundMotionDatabase and diff --git a/openquake/smt/tests/sm_utils_test.py b/openquake/smt/tests/sm_utils_test.py index f2bc9284d..be56323c6 100644 --- a/openquake/smt/tests/sm_utils_test.py +++ b/openquake/smt/tests/sm_utils_test.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2017 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published From ce8beef032c4705a5d3bd4eccbf1f804d54df514 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 8 Mar 2024 17:00:48 +0100 Subject: [PATCH 41/59] cleaning parsers and removing generic parser as is actually for ngawest2 it appears -> has own fully functioning parser in the SMT now --- openquake/smt/parsers/asa_database_parser.py | 9 +- openquake/smt/parsers/esm_database_parser.py | 3 +- openquake/smt/parsers/esm_flatfile_parser.py | 6 +- .../smt/parsers/esm_url_flatfile_parser.py | 4 +- .../smt/parsers/esm_ws_flatfile_parser.py | 6 +- openquake/smt/parsers/gem_flatfile_parser.py | 552 ++++++++++++++++++ .../smt/parsers/general_flatfile_parser.py | 391 ------------- .../smt/parsers/ngawest2_flatfile_parser.py | 4 +- .../smt/parsers/sigma_database_parser.py | 15 +- .../smt/parsers/simple_flatfile_parser.py | 15 +- .../parsers/simple_flatfile_parser_sara.py | 4 +- openquake/smt/parsers/valid.py | 2 +- 12 files changed, 570 insertions(+), 441 deletions(-) create mode 100644 openquake/smt/parsers/gem_flatfile_parser.py delete mode 100755 openquake/smt/parsers/general_flatfile_parser.py diff --git a/openquake/smt/parsers/asa_database_parser.py b/openquake/smt/parsers/asa_database_parser.py index b4517df85..828349791 100755 --- a/openquake/smt/parsers/asa_database_parser.py +++ b/openquake/smt/parsers/asa_database_parser.py @@ -66,7 +66,6 @@ def _get_metadata_from_file(file_str): version as an ordered dictionary. Note that every file contains the metadata corresponding to all 3 components. """ - metadata = {} for i in range(7, 81): # Exclude lines with "==", websites, and with lenghts < 42 @@ -94,7 +93,6 @@ def _get_metadata_from_file(file_str): class ASADatabaseMetadataReader(SMDatabaseReader): - """ Reader for the metadata database of the UNAM and CICESE files (ASA format) """ @@ -102,7 +100,7 @@ class ASADatabaseMetadataReader(SMDatabaseReader): def parse(self): """ - Parses the record + Parse the record """ self.database = GroundMotionDatabase(self.id, self.name) self._sort_files() @@ -140,7 +138,6 @@ def parse_metadata(self, metadata, file_dict): """ Parses the metadata dictionary """ - file_str = metadata["NOMBRE DEL ARCHIVO"] file_info = _get_info_from_archive_name(file_str) @@ -178,7 +175,6 @@ def _parse_event(self, metadata, file_str): openquake.smt.sm_database.Earthquake. Coordinates in western hemisphere are returned as negative values. """ - months = {'ENERO': 1, 'FEBRERO': 2, 'MARZO': 3, 'ABRIL': 4, 'MAYO': 5, 'JUNIO': 6, 'JULIO': 7, 'AGOSTO': 8, 'SEPTIEMBRE': 9, 'OCTUBURE': 10, 'NOVIEMBRE': 11, 'DICIEMBRE': 12} @@ -328,7 +324,6 @@ def _parse_distance_data(self, metadata, file_str, eqk): openquake.smt.sm_database.RecordDistance. Coordinates in western hemisphere are converted to negative values. """ - epi_lon = -get_float( metadata["COORDENADAS DEL EPICENTRO"].split(" ")[3]) epi_lat = get_float( @@ -431,7 +426,6 @@ def parse_records(self, record=None): """ Parses the time series """ - time_series = OrderedDict([ ("X", {"Original": {}, "SDOF": {}}), ("Y", {"Original": {}, "SDOF": {}}), @@ -454,7 +448,6 @@ def _parse_time_history(self, ifile, component2parse): components are defined with various names, and are not always given in the same order """ - # The components are definied using the following names comp_names = {'X': ['ENE', 'N90E', 'N90E;', 'N90W', 'N90W;', 'S90E', 'S90W', 'E--W', 'S9OE'], diff --git a/openquake/smt/parsers/esm_database_parser.py b/openquake/smt/parsers/esm_database_parser.py index c5adeaa0b..9a7518bba 100755 --- a/openquake/smt/parsers/esm_database_parser.py +++ b/openquake/smt/parsers/esm_database_parser.py @@ -431,8 +431,7 @@ def _parse_component_data(self, wfid, metadata): class ESMTimeSeriesParser(SMTimeSeriesReader): """ Parses time series in the European Strong Motion Database Format - """ - + """ def parse_records(self, record=None): """ Parses the time series diff --git a/openquake/smt/parsers/esm_flatfile_parser.py b/openquake/smt/parsers/esm_flatfile_parser.py index 259a17d2a..029479ddc 100644 --- a/openquake/smt/parsers/esm_flatfile_parser.py +++ b/openquake/smt/parsers/esm_flatfile_parser.py @@ -82,7 +82,7 @@ class ESMFlatfileParser(SMDatabaseReader): """ - Parses the ESM metadata from the flatfile to a set of metadata objects + Parses the data from the flatfile to a set of metadata objects """ M_PRECEDENCE = ["EMEC_Mw", "Mw", "Ms", "ML"] BUILD_FINITE_DISTANCES = False @@ -234,7 +234,6 @@ def _parse_rupture_mechanism(self, metadata, eq_id, eq_name, mag, depth): """ If rupture data is available - parse it, otherwise return None """ - sof = metadata["fm_type_code"] if not metadata["event_source_id"].strip(): # No rupture model available. Mechanism is limited to a style @@ -547,5 +546,4 @@ def _retreive_ground_motion_from_row(self, row, header_list): if scalars["U"][key] and scalars["V"][key]: scalars["Geometric"][key] = np.sqrt( scalars["U"][key] * scalars["V"][key]) - return scalars, spectra - + return scalars, spectra \ No newline at end of file diff --git a/openquake/smt/parsers/esm_url_flatfile_parser.py b/openquake/smt/parsers/esm_url_flatfile_parser.py index b38239130..b3c04e223 100644 --- a/openquake/smt/parsers/esm_url_flatfile_parser.py +++ b/openquake/smt/parsers/esm_url_flatfile_parser.py @@ -92,11 +92,9 @@ "VU": "Vanuatu", "XK": "Kosovo", "YE": "Yemen"} class ESMFlatfileParserURL(SMDatabaseReader): - """ - Parses the ESM metadata from the flatfile to a set of metadata objects + Parses the data from the flatfile to a set of metadata objects """ - M_PRECEDENCE = ["EMEC_Mw", "Mw", "Ms", "ML"] BUILD_FINITE_DISTANCES = False diff --git a/openquake/smt/parsers/esm_ws_flatfile_parser.py b/openquake/smt/parsers/esm_ws_flatfile_parser.py index de0c2ffc9..b2ae88eb9 100644 --- a/openquake/smt/parsers/esm_ws_flatfile_parser.py +++ b/openquake/smt/parsers/esm_ws_flatfile_parser.py @@ -88,12 +88,10 @@ "VU": "Vanuatu", "XK": "Kosovo", "YE": "Yemen"} -class ESMFlatfileParserWS(SMDatabaseReader): - +class ESMFlatfileParserWS(SMDatabaseReader): """ - Parses the ESM metadata from the flatfile to a set of metadata objects + Parses the data from the flatfile to a set of metadata objects """ - M_PRECEDENCE = ["EMEC_Mw", "Mw", "Ms", "ML"] BUILD_FINITE_DISTANCES = False diff --git a/openquake/smt/parsers/gem_flatfile_parser.py b/openquake/smt/parsers/gem_flatfile_parser.py new file mode 100644 index 000000000..74b2a81d3 --- /dev/null +++ b/openquake/smt/parsers/gem_flatfile_parser.py @@ -0,0 +1,552 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# +# Copyright (C) 2014-2024 GEM Foundation +# +# OpenQuake is free software: you can redistribute it and/or modify it +# under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# OpenQuake is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with OpenQuake. If not, see . +""" +Parse the GEM globally homogenised flatfile (currently internal use only) into +SMT data +""" +import os, sys +import csv +import numpy as np +import copy +import h5py +from math import sqrt +from linecache import getline +from collections import OrderedDict + +from openquake.smt.sm_database import GroundMotionDatabase, GroundMotionRecord,\ + Earthquake, Magnitude, Rupture, FocalMechanism, GCMTNodalPlanes,\ + Component, RecordSite, RecordDistance +from openquake.smt.sm_utils import MECHANISM_TYPE, DIP_TYPE, vs30_to_z1pt0_cy14,\ + vs30_to_z2pt5_cb14 +from openquake.smt.parsers import valid +from openquake.smt.parsers.base_database_parser import SMDatabaseReader + +if sys.version_info[0] >= 3: + import pickle +else: + import cPickle as pickle + +# Import the ESM dictionaries +from .esm_dictionaries import * + +SCALAR_LIST = ["PGA", "PGV", "PGD", "CAV", "CAV5", "Ia", "D5-95"] + +HEADER_STR = "event_id;event_time;ISC_ev_id;USGS_ev_id;INGV_ev_id;"\ + "EMSC_ev_id;ev_nation_code;ev_latitude;ev_longitude;"\ + "ev_depth_km;ev_hyp_ref;fm_type_code;ML;ML_ref;Mw;Mw_ref;Ms;"\ + "Ms_ref;EMEC_Mw;EMEC_Mw_type;EMEC_Mw_ref;event_source_id;"\ + "es_strike;es_dip;es_rake;es_strike_dip_rake_ref;es_z_top;"\ + "es_z_top_ref;es_length;es_width;es_geometry_ref;network_code;"\ + "station_code;location_code;instrument_code;sensor_depth_m;"\ + "proximity_code;housing_code;installation_code;st_nation_code;"\ + "st_latitude;st_longitude;st_elevation;ec8_code;"\ + "ec8_code_method;ec8_code_ref;vs30_m_sec;vs30_ref;"\ + "vs30_calc_method;vs30_meas_type;slope_deg;vs30_m_sec_WA;"\ + "epi_dist;epi_az;JB_dist;rup_dist;Rx_dist;Ry0_dist;"\ + "instrument_type_code;late_triggered_flag_01;U_channel_code;"\ + "U_azimuth_deg;V_channel_code;V_azimuth_deg;W_channel_code;"\ + "U_hp;V_hp;W_hp;U_lp;V_lp;W_lp" + +HEADERS = set(HEADER_STR.split(";")) + +COUNTRY_CODES = {"AL": "Albania", "AM": "Armenia", "AT": "Austria", + "AZ": "Azerbaijan", "BA": "Bosnia and Herzegowina", + "BG": "Bulgaria", "CH": "Switzerland", "CY": "Cyprus", + "CZ": "Czech Republic", "DE": "Germany", "DZ": "Algeria", + "ES": "Spain", "FR": "France", "GE": "Georgia", + "GR": "Greece", "HR": "Croatia", "HU": "Hungary", + "IL": "Israel", "IR": "Iran", "IS": "Iceland", "IT": "Italy", + "JO": "Jordan", "LI": "Lichtenstein", "MA": "Morocco", + "MC": "Monaco", "MD": "Moldova", "ME": "Montenegro", + "MK": "Macedonia", "MT": "Malta", "PL": "Poland", + "PT": "Portugal", "RO": "Romania", "RS": "Serbia", + "RU": "Russia", "SI": "Slovenia", "SM": "San Marino", + "SY": "Syria", "TM": "Turkmenistan", "TR": "Turkey", + "UA": "Ukraine", "UZ": "Uzbekistan", "XK": "Kosovo"} + + +class FlatfileParser(SMDatabaseReader): + """ + Parses the data from the ESM flatfile to a set of metadata objects + """ + M_PRECEDENCE = ["EMEC_Mw", "Mw", "Ms", "ML"] + BUILD_FINITE_DISTANCES = False + + def parse(self, location="./"): + """ + Parse the metadata + """ + assert os.path.isfile(self.filename) + headers = getline(self.filename, 1).rstrip("\n").split(";") + for hdr in HEADERS: + if hdr not in headers: + raise ValueError("Required header %s is missing in file" + % hdr) + # Read in csv + reader = csv.DictReader(open(self.filename, "r"), delimiter=";") + self.database = GroundMotionDatabase(self.id, self.name) + counter = 0 + for row in reader: + # Build the metadata + record = self._parse_record(row) + if record: + # Parse the strong motion + record = self._parse_ground_motion( + os.path.join(location, "records"), + row, record, headers) + self.database.records.append(record) + + else: + print("Record with sequence number %s is null/invalid" + % "{:s}-{:s}".format(row["event_id"], + row["station_code"])) + if (counter % 100) == 0: + print("Processed record %s - %s" % (str(counter), + record.id)) + + counter += 1 + + @classmethod + def autobuild(cls, dbid, dbname, output_location, flatfile_location): + """ + Quick and dirty full database builder! + """ + if os.path.exists(output_location): + raise IOError("Target database directory %s already exists!" + % output_location) + os.mkdir(output_location) + # Add on the records folder + os.mkdir(os.path.join(output_location, "records")) + # Create an instance of the parser class + database = cls(dbid, dbname, flatfile_location) + # Parse the records + print("Parsing Records ...") + database.parse(location=output_location) + # Save itself to file + metadata_file = os.path.join(output_location, "metadatafile.pkl") + print("Storing metadata to file %s" % metadata_file) + with open(metadata_file, "wb+") as f: + pickle.dump(database.database, f) + return database + + def _parse_record(self, metadata): + """ + Parse a record + """ + # Waveform ID not provided in file so concatenate Event and Station ID + wfid = "_".join([metadata["event_id"], metadata["network_code"], + metadata["station_code"], metadata["location_code"]]) + wfid = wfid.replace("-", "_") + # Parse the event metadata + event = self._parse_event_data(metadata) + # Parse the distance metadata + distances = self._parse_distances(metadata, event.depth) + # Parse the station metadata + site = self._parse_site_data(metadata) + # Parse waveform data + xcomp, ycomp, vertical = self._parse_waveform_data(metadata, wfid) + return GroundMotionRecord(wfid, + [None, None, None], + event, distances, site, + xcomp, ycomp, + vertical=vertical) + + + def _parse_event_data(self, metadata): + """ + Parses the event metadata + """ + # ID and Name (name not in file so use ID again) + eq_id = metadata["event_id"] + eq_name = metadata["event_id"] + # Country + cntry_code = metadata["ev_nation_code"].strip() + if cntry_code and cntry_code in COUNTRY_CODES: + eq_country = COUNTRY_CODES[cntry_code] + else: + eq_country = None + # Date and time + eq_datetime = valid.date_time(metadata["event_time"], + "%Y-%m-%d %H:%M:%S") + # Latitude, longitude and depth + eq_lat = valid.latitude(metadata["ev_latitude"]) + eq_lon = valid.longitude(metadata["ev_longitude"]) + eq_depth = valid.positive_float(metadata["ev_depth_km"], "ev_depth_km") + if not eq_depth: + eq_depth = 0.0 + eqk = Earthquake(eq_id, eq_name, eq_datetime, eq_lon, eq_lat, eq_depth, + None, # Magnitude not defined yet + eq_country=eq_country) + # Get preferred magnitude and list + pref_mag, magnitude_list = self._parse_magnitudes(metadata) + eqk.magnitude = pref_mag + eqk.magnitude_list = magnitude_list + eqk.rupture, eqk.mechanism = self._parse_rupture_mechanism(metadata, + eq_id, + eq_name, + pref_mag, + eq_depth) + return eqk + + def _parse_magnitudes(self, metadata): + """ + So, here things get tricky. Up to four magnitudes are defined in the + flatfile (EMEC Mw, MW, Ms and ML). An order of precedence is required + and the preferred magnitude will be the highest found + """ + pref_mag = None + mag_list = [] + for key in self.M_PRECEDENCE: + mvalue = metadata[key].strip() + if mvalue: + if key == "EMEC_Mw": + mtype = "Mw" + msource = "EMEC({:s}|{:s})".format( + metadata["EMEC_Mw_type"], + metadata["EMEC_Mw_ref"]) + else: + mtype = key + msource = metadata[key + "_ref"].strip() + mag = Magnitude(float(mvalue), + mtype, + source=msource) + if not pref_mag: + pref_mag = copy.deepcopy(mag) + mag_list.append(mag) + return pref_mag, mag_list + + def _parse_rupture_mechanism(self, metadata, eq_id, eq_name, mag, depth): + """ + If rupture data is available - parse it, otherwise return None + """ + + sof = metadata["fm_type_code"] + if not metadata["event_source_id"].strip(): + # No rupture model available. Mechanism is limited to a style + # of faulting only + rupture = Rupture(eq_id, eq_name, mag, None, None, depth) + mechanism = FocalMechanism( + eq_id, eq_name, GCMTNodalPlanes(), None, + mechanism_type=sof) + # See if focal mechanism exists + fm_set = [] + for key in ["strike_1", "dip_1", "rake_1"]: + if key in metadata: + fm_param = valid.vfloat(metadata[key], key) + if fm_param is not None: + fm_set.append(fm_param) + if len(fm_set) == 3: + # Have one valid focal mechanism + mechanism.nodal_planes.nodal_plane_1 = {"strike": fm_set[0], + "dip": fm_set[1], + "rake": fm_set[2]} + fm_set = [] + for key in ["strike_2", "dip_2", "rake_2"]: + if key in metadata: + fm_param = valid.vfloat(metadata[key], key) + if fm_param is not None: + fm_set.append(fm_param) + if len(fm_set) == 3: + # Have one valid focal mechanism + mechanism.nodal_planes.nodal_plane_2 = {"strike": fm_set[0], + "dip": fm_set[1], + "rake": fm_set[2]} + + if not mechanism.nodal_planes.nodal_plane_1 and not\ + mechanism.nodal_planes.nodal_plane_2: + # Absolutely no information - base on stye-of-faulting + mechanism.nodal_planes.nodal_plane_1 = { + "strike": 0.0, # Basically unused + "dip": DIP_TYPE[sof], + "rake": MECHANISM_TYPE[sof] + } + return rupture, mechanism + + strike = valid.strike(metadata["es_strike"]) + dip = valid.dip(metadata["es_dip"]) + rake = valid.rake(metadata["es_rake"]) + ztor = valid.positive_float(metadata["es_z_top"], "es_z_top") + length = valid.positive_float(metadata["es_length"], "es_length") + width = valid.positive_float(metadata["es_width"], "es_width") + rupture = Rupture(eq_id, eq_name, mag, length, width, ztor) + + # Get mechanism type and focal mechanism + # No nodal planes, eigenvalues moment tensor initially + mechanism = FocalMechanism( + eq_id, eq_name, GCMTNodalPlanes(), None, + mechanism_type=metadata["fm_type_code"]) + if strike is None: + strike = 0.0 + if dip is None: + dip = DIP_TYPE[sof] + if rake is None: + rake = MECHANISM_TYPE[sof] + # if strike is not None and dip is not None and rake is not None: + mechanism.nodal_planes.nodal_plane_1 = {"strike": strike, + "dip": dip, + "rake": rake} + return rupture, mechanism + + def _parse_distances(self, metadata, hypo_depth): + """ + Parse the distances + """ + repi = valid.positive_float(metadata["epi_dist"], "epi_dist") + razim = valid.positive_float(metadata["epi_az"], "epi_az") + rjb = valid.positive_float(metadata["JB_dist"], "JB_dist") + rrup = valid.positive_float(metadata["rup_dist"], "rup_dist") + r_x = valid.vfloat(metadata["Rx_dist"], "Rx_dist") + ry0 = valid.positive_float(metadata["Ry0_dist"], "Ry0_dist") + rhypo = sqrt(repi ** 2. + hypo_depth ** 2.) + if not isinstance(rjb, float): + # In the first case Rjb == Repi + rjb = copy.copy(repi) + + if not isinstance(rrup, float): + # In the first case Rrup == Rhypo + rrup = copy.copy(rhypo) + + if not isinstance(r_x, float): + # In the first case Rx == -Repi (collapse to point and turn off + # any hanging wall effect) + r_x = copy.copy(-repi) + + if not isinstance(ry0, float): + # In the first case Ry0 == Repi + ry0 = copy.copy(repi) + distances = RecordDistance(repi, rhypo, rjb, rrup, r_x, ry0) + distances.azimuth = razim + return distances + + def _parse_site_data(self, metadata): + """ + Parses the site information + """ + network_code = metadata["network_code"].strip() + station_code = metadata["station_code"].strip() + site_id = "{:s}-{:s}".format(network_code, station_code) + site_lon = valid.longitude(metadata["st_longitude"]) + site_lat = valid.latitude(metadata["st_latitude"]) + elevation = valid.vfloat(metadata["st_elevation"], "st_elevation") + + vs30 = valid.vfloat(metadata["vs30_m_sec"], "vs30_m_sec") + vs30_topo = valid.vfloat(metadata["vs30_m_sec_WA"], "vs30_m_sec_WA") + if vs30: + vs30_measured = True + elif vs30_topo: + vs30 = vs30_topo + vs30_measured = False + else: + vs30_measured = False + st_nation_code = metadata["st_nation_code"].strip() + if st_nation_code: + st_country = COUNTRY_CODES[st_nation_code] + else: + st_country = None + site = RecordSite(site_id, station_code, station_code, site_lon, + site_lat, elevation, vs30, vs30_measured, + network_code=network_code, + country=st_country) + site.slope = valid.vfloat(metadata["slope_deg"], "slope_deg") + site.sensor_depth = valid.vfloat(metadata["sensor_depth_m"], + "sensor_depth_m") + site.instrument_type = metadata["instrument_code"].strip() + if site.vs30: + site.z1pt0 = vs30_to_z1pt0_cy14(vs30) + site.z2pt5 = vs30_to_z2pt5_cb14(vs30) + housing_code = metadata["housing_code"].strip() + if housing_code and (housing_code in HOUSING): + site.building_structure = HOUSING[housing_code] + return site + + def _parse_waveform_data(self, metadata, wfid): + """ + Parse the waveform data + """ + late_trigger = valid.vint(metadata["late_triggered_flag_01"], + "late_triggered_flag_01") + # U channel - usually east + xorientation = metadata["U_channel_code"].strip() + xazimuth = valid.vfloat(metadata["U_azimuth_deg"], "U_azimuth_deg") + xfilter = {"Low-Cut": valid.vfloat(metadata["U_hp"], "U_hp"), + "High-Cut": valid.vfloat(metadata["U_lp"], "U_lp")} + xcomp = Component(wfid, xazimuth, waveform_filter=xfilter, + units="cm/s/s") + xcomp.late_trigger = late_trigger + # V channel - usually North + vorientation = metadata["V_channel_code"].strip() + vazimuth = valid.vfloat(metadata["V_azimuth_deg"], "V_azimuth_deg") + vfilter = {"Low-Cut": valid.vfloat(metadata["V_hp"], "V_hp"), + "High-Cut": valid.vfloat(metadata["V_lp"], "V_lp")} + vcomp = Component(wfid, vazimuth, waveform_filter=vfilter, + units="cm/s/s") + vcomp.late_trigger = late_trigger + zorientation = metadata["W_channel_code"].strip() + if zorientation: + zfilter = {"Low-Cut": valid.vfloat(metadata["W_hp"], "W_hp"), + "High-Cut": valid.vfloat(metadata["W_lp"], "W_lp")} + zcomp = Component(wfid, None, waveform_filter=zfilter, + units="cm/s/s") + zcomp.late_trigger = late_trigger + else: + zcomp = None + + return xcomp, vcomp, zcomp + + def _parse_ground_motion(self, location, row, record, headers): + """ + In this case we parse the information from the flatfile directly + to hdf5 at the metadata stage + """ + # Get the data + scalars, spectra = self._retreive_ground_motion_from_row(row, headers) + # Build the hdf5 files + filename = os.path.join(location, "{:s}.hdf5".format(record.id)) + fle = h5py.File(filename, "w-") + ims_grp = fle.create_group("IMS") + for comp, key in [("X", "U"), ("Y", "V"), ("V", "W")]: + comp_grp = ims_grp.create_group(comp) + # Add on the scalars + scalar_grp = comp_grp.create_group("Scalar") + for imt in scalars[key]: + if imt in ["ia", "housner"]: + # In the smt convention it is "Ia" and "Housner" + ikey = imt[0].upper() + imt[1:] + else: + # Everything else to upper case (PGA, PGV, PGD, T90, CAV) + ikey = imt.upper() + dset = scalar_grp.create_dataset(ikey, (1,), dtype="f") + dset[:] = scalars[key][imt] + # Add on the spectra + spectra_grp = comp_grp.create_group("Spectra") + response = spectra_grp.create_group("Response") + accel = response.create_group("Acceleration") + accel.attrs["Units"] = "cm/s/s" + # Add on the periods + pers = spectra[key]["Periods"] + periods = response.create_dataset("Periods", pers.shape, dtype="f") + periods[:] = pers + periods.attrs["Low Period"] = np.min(pers) + periods.attrs["High Period"] = np.max(pers) + periods.attrs["Number Periods"] = len(pers) + + # Add on the values + values = spectra[key]["Values"] + spectra_dset = accel.create_dataset("damping_05", values.shape, + dtype="f") + spectra_dset[:] = np.copy(values) + spectra_dset.attrs["Damping"] = 5.0 + # Add on the horizontal values + hcomp = ims_grp.create_group("H") + # Scalars - just geometric mean for now + hscalar = hcomp.create_group("Scalar") + for imt in scalars["Geometric"]: + if imt in ["ia", "housner"]: + # In the smt convention it is "Ia" and "Housner" + key = imt[0].upper() + imt[1:] + else: + # Everything else to upper case (PGA, PGV, PGD, T90, CAV) + key = imt.upper() + dset = hscalar.create_dataset(key, (1,), dtype="f") + dset[:] = scalars["Geometric"][imt] + # For Spectra - can support multiple components + hspectra = hcomp.create_group("Spectra") + hresponse = hspectra.create_group("Response") + pers = spectra["Geometric"]["Periods"] + hpers_dset = hresponse.create_dataset("Periods", pers.shape, dtype="f") + hpers_dset[:] = np.copy(pers) + hpers_dset.attrs["Low Period"] = np.min(pers) + hpers_dset.attrs["High Period"] = np.max(pers) + hpers_dset.attrs["Number Periods"] = len(pers) + haccel = hresponse.create_group("Acceleration") + for htype in ["Geometric", "rotD00", "rotD50", "rotD100"]: + if np.all(np.isnan(spectra[htype]["Values"])): + # Component not determined + continue + if not (htype == "Geometric"): + key = htype[0].upper() + htype[1:] + else: + key = copy.deepcopy(htype) + htype_grp = haccel.create_group(htype) + hvals = spectra[htype]["Values"] + hspec_dset = htype_grp.create_dataset("damping_05", hvals.shape, + dtype="f") + hspec_dset[:] = hvals + hspec_dset.attrs["Units"] = "cm/s/s" + record.datafile = filename + return record + + def _retreive_ground_motion_from_row(self, row, header_list): + """ + Get the ground motion data from a row (record) in the database + """ + imts = ["U", "V", "W", "rotD00", "rotD100", "rotD50"] + spectra = [] + scalar_imts = ["pga", "pgv", "pgd", "T90", "housner", "ia", "CAV"] + scalars = [] + for imt in imts: + periods = [] + values = [] + key = "{:s}_T".format(imt) + scalar_dict = {} + for header in header_list: + # Deal with the scalar case + for scalar in scalar_imts: + if header == "{:s}_{:s}".format(imt, scalar): + # The value is a scalar + value = row[header].strip() + if value: + scalar_dict[scalar] = np.fabs(float(value)) + else: + scalar_dict[scalar] = None + scalars.append((imt, scalar_dict)) + for header in header_list: + if key in header: + if header == "{:s}90".format(key): + # Not a spectral period but T90 + continue + iky = header.replace(key, "").replace("_", ".") + #print imt, key, header, iky + periods.append(float(iky)) + value = row[header].strip() + if value: + values.append(np.fabs(float(value))) + else: + values.append(np.nan) + #values.append(np.fabs(float(row[header].strip()))) + periods = np.array(periods) + values = np.array(values) + idx = np.argsort(periods) + spectra.append((imt, {"Periods": periods[idx], + "Values": values[idx]})) + # Add on the as-recorded geometric mean + spectra = OrderedDict(spectra) + scalars = OrderedDict(scalars) + spectra["Geometric"] = { + "Values": np.sqrt(spectra["U"]["Values"] * + spectra["V"]["Values"]), + "Periods": np.copy(spectra["U"]["Periods"]) + } + scalars["Geometric"] = dict([(key, None) for key in scalars["U"]]) + for key in scalars["U"]: + if scalars["U"][key] and scalars["V"][key]: + scalars["Geometric"][key] = np.sqrt( + scalars["U"][key] * scalars["V"][key]) + return scalars, spectra + diff --git a/openquake/smt/parsers/general_flatfile_parser.py b/openquake/smt/parsers/general_flatfile_parser.py deleted file mode 100755 index 087b1db99..000000000 --- a/openquake/smt/parsers/general_flatfile_parser.py +++ /dev/null @@ -1,391 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# vim: tabstop=4 shiftwidth=4 softtabstop=4 -# -# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill -# -# OpenQuake is free software: you can redistribute it and/or modify it -# under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# OpenQuake is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with OpenQuake. If not, see . - -""" -General Flatfile Only Parser - to handle the cases in which the only strong -motion input is in the form of a flatfile -""" -import csv -import numpy as np -import copy -from linecache import getline - -from openquake.hazardlib.scalerel.wc1994 import WC1994 -from openquake.hazardlib.geo.mesh import Mesh -from openquake.hazardlib.geo.point import Point -from openquake.hazardlib.geo.line import Line -from openquake.hazardlib.geo.surface.simple_fault import SimpleFaultSurface -from openquake.smt.sm_database import * -from openquake.smt.parsers.base_database_parser import (get_float, - get_positive_float) -from openquake.smt.parsers.simple_flatfile_parser_sara import SimpleFlatfileParserV9 - -from openquake.smt.sm_utils import create_planar_surface, get_hypocentre_on_planar_surface - -SCALAR_LIST = ["PGA", "PGV", "PGD", "CAV", "CAV5", "Ia", "D5-95"] - -HEADER_LIST = set([ - 'Record Sequence Number', 'EQID', 'Earthquake Name', 'Country', 'Year', - 'Month', 'Day', 'Hour', 'Minute', 'Second', - 'Epicenter Latitude (deg; positive N)', - 'Epicenter Longitude (deg; positive E)', 'Hypocenter Depth (km)', - 'Magnitude', 'Magnitude type', 'Magnitude uncertainty', 'Mo (dyne.cm)', - 'Tectonic environment (Crustal; Inslab; Interface; Stable; Geothermal; Volcanic; Oceanic_crust)', - 'Earthquake in Extensional Regime: 1=Yes; 0=No', - 'Nodal Plane 1 Strike (deg)', - 'Nodal Plane 1 Dip (deg)', 'Nodal Plane 1 Rake Angle (deg)', - 'Nodal Plane 2 Strike (deg)', 'Nodal Plane 2 Dip (deg)', - 'Nodal Plane 2 Rake Angle (deg)', 'Fault Plane (1; 2; X)', - 'Style-of-Faulting (S; R; N; U)', 'Fault Name', - 'Depth to Top Of Fault Rupture Model', - 'Fault Rupture Length (km)', 'Fault Rupture Width (km)', - 'Along-strike Hypocenter location on the fault (fraction between 0 and 1)', - 'Along-width Hypocenter location on the fault (fraction between 0 and 1)', - 'Static Stress Drop (bars)', 'Type Static Stress Drop', - 'Directivity flag (Y; N; U)', 'Station ID', 'Station Code', - 'Station Latitude (deg positive N)', 'Station Longitude (deg positive E)', - 'Station Elevation (m)', - 'Site Class (Hard Rock; Rock; Stiff Soil; Soft Soil)', - 'Preferred NEHRP Based on Vs30', 'Preferred Vs30 (m/s)', - 'Measured(1)/Inferred(2) Class', 'Sigma of Vs30 (in natural log Units)', - 'Depth to Basement Rock', 'Z1 (m)','Z2.5 (m)', 'Epicentral Distance (km)', - 'Hypocentral Distance (km)', 'Joyner-Boore Distance (km)', - 'Rupture Distance (km)', 'Rx (km)', 'Ry0 (km)', - 'Source to Site Azimuth (deg)', 'FW/HW Indicator', - 'Forearc/Backarc for subduction events', 'File Name (Horizontal 1)', - 'File Name (Horizontal 2)','File Name (Vertical)', - 'Digital (D)/Analog (A) Recording', 'Acceleration (A)/Velocity (V)', - 'Unit (cm/s/s; m/s/s; g)', 'File format', 'Processing flag', - 'Type of Filter','npass','nroll','HP-H1 (Hz)','HP-H2 (Hz)', - 'LP-H1 (Hz)', 'LP-H2 (Hz)', 'Factor', 'Lowest Usable Freq - H1 (Hz)', - 'Lowest Usable Freq - H2 (Hz)', 'Lowest Usable Freq - Ave. Component (Hz)', - 'Maximum Usable Freq - Ave. Component (Hz)', 'HP-V (Hz)', 'LP-V (Hz)', - 'Lowest Usable Freq - V (Hz)','Comments']) - - -def valid_positive(value): - """ - Returns True if the value is positive or zero, false otherwise - """ - if value and value >= 0.0: - return True - print("Positive value (or 0) is needed - %s is given" % str(value)) - return False - -def valid_longitude(lon): - """ - Returns True if the longitude is valid, False otherwise - """ - if not lon: - return False - if (lon >= -180.0) and (lon <= 180.0): - return True - print("Longitude %s is outside of range -180 <= lon <= 180" % str(lon)) - return False - -def valid_latitude(lat): - """ - Returns True if the latitude is valid, False otherwise - """ - if not lat: - print("Latitude is missing") - return False - if (lat >= -90.0) and (lat <= 90.0): - return True - print("Latitude %s is outside of range -90 <= lat <= 90" % str(lat)) - return False - -def valid_date(year, month, day): - """ - Checks that the year is given and greater than 0, that month is in the - range 1 - 12, and day is in the range 1 - 31 - """ - if all([year > 0, month > 0, month <= 12, day > 0, day <= 31]): - return True - print("Date %s/%s/%s is not valid" % (str(year), str(month), str(day))) - return False - - - -class GeneralFlatfileParser(SimpleFlatfileParserV9): - """ - Operates in the same manner as for SARA Simple Flatfile parser, albeit - with Rx and Ry0 added as explicit columns - """ - def parse(self): - """ - Parses the database - """ - HEADER_LIST1 = copy.deepcopy(HEADER_LIST) - self._header_check(HEADER_LIST1) - # Read in csv - reader = csv.DictReader(open(self.filename, "r")) - metadata = [] - self.database = GroundMotionDatabase(self.id, self.name) - self._get_site_id = self.database._get_site_id - counter = 0 - for row in reader: - #print(row["Record Sequence Number"]) - #if (counter % 100) == 0: - # print("%s - %s" % (str(counter), row["Record Sequence Number"])) - - if self._sanitise(row, reader): - record = self._parse_record(row) - if record: - self.database.records.append(record) - else: - print("Record with sequence number %s is null/invalid" - % str(row["Record Sequence Number"])) - counter += 1 - return self.database - - - def _sanitise(self, row, reader): - """ - If all of the strong motion values are negative the record is null - and should be removed - """ - iml_vals = [] - for fname in reader.fieldnames: - if fname.startswith("SA(") or fname in SCALAR_LIST: - # Ground motion value - iml = get_float(row[fname]) - if iml: - iml_vals.append(iml) - else: - iml_vals.append(-999.0) - # If all ground motion values are negative then the record is null - # return false - if np.all(np.array(iml_vals) < 0.0): - return False - else: - return True - - def _parse_record(self, metadata): - """ - Parses the record information and returns an instance of the - :class: openquake.smt.sm_database.GroundMotionRecord - """ - # Waveform ID - wfid = metadata["Record Sequence Number"] - # Event information - # Verify datetime - event = self._parse_event_data(metadata) - if not self._verify_event(event, wfid): - print("Record Number %s has invalid event!" % wfid) - return False - # Site information - site = self._parse_site_data(metadata) - # Distance Information - distances = self._parse_distance_data(event, site, metadata) - # Components - x_comp, y_comp, vertical = self._parse_processing_data(wfid, metadata) - # Return record metadata - lup = get_float(metadata["Lowest Usable Freq - Ave. Component (Hz)"]) - if lup: - lup = 1. / lup - sup = get_float(metadata["Maximum Usable Freq - Ave. Component (Hz)"]) - if sup: - sup = 1. / sup - return GroundMotionRecord(wfid, - [metadata["File Name (Horizontal 1)"], - metadata["File Name (Horizontal 2)"], - metadata["File Name (Vertical)"]], - event, - distances, - site, - x_comp, - y_comp, - longest_period=lup, - shortest_period=sup) - - def _verify_event(self, event, wfid): - """ - Some basic checks are needed to ensure that the event is usable! - 1. Year, month and day should be valid - 2. Magnitude should be present and valid > -10.0! - 3. Epicentre should be in valid range (-180.0 <= lon <= 180, - -90.0 <= lat <= 180) - 4. Depth should be in valid range (>= 0) - """ - is_valid = valid_date(event.datetime.year, event.datetime.month, - event.datetime.day) and\ - valid_longitude(event.longitude) and\ - valid_latitude(event.latitude) and\ - valid_positive(event.depth) - if not is_valid: - return False - - # Magnitude check - if not event.magnitude.value or event.magnitude.value < -10.0: - # Invalid or missing event - print("Record Number %s has invalid magnitude value %s" - % (str(wfid), str(event.magnitude.value))) - return False - return True - - - def _header_check(self, headerslist): - """ - Checks to see if any of the headers are missing, raises error if so. - Also informs the user of redundent headers in the input file. - """ - # Check which of the pre-defined headers are missing - headers = set((getline(self.filename, 1).rstrip("\n")).split(",")) - missing_headers = headerslist.difference(headers) - if len(missing_headers) > 0: - output_string = ", ".join([value for value in missing_headers]) - raise IOError("The following headers are missing from the input " - "file: %s" % output_string) - - additional_headers = headers.difference(headerslist) - if len(additional_headers) > 0: - for header in additional_headers: - if ("SA(" in header) or ("PGA" in header) or ("PGV" in header)\ - or ("PGD" in header): - continue - else: - print("Header %s not recognised - ignoring this data!" %\ - header) - -# @staticmethod -# def _validate_datetime(metadata): -# """ -# NGA West 2 flatfile is badly formatted w.r.t. date and time - this -# bit of defensive coding should prevent it from crashing out with -# errors -# """ -# year = get_int(metadata["Year"]) -# month = get_int(metadata["Month"]) -# # Month values given incorrectly for many records -# if month > 12: -# month = (month % 12) -# if month == 0: -# month = 12 -# -# day = get_int(metadata["Day"]) -# hour = get_int(metadata["Hour"]) -# minute = get_int(metadata["Minute"]) -# second = get_int(metadata["Second"]) -# return year, month, day, hour, minute, second - - def _parse_distance_data(self, event, site, metadata): - """ - Read in the distance related metadata and return an instance of the - :class: openquake.smt.sm_database.RecordDistance - """ - # Compute various distance metrics - # Add calculation of Repi, Rhypo from event and station localizations - # (latitudes, longitudes, depth, elevation)? - target_site = Mesh(np.array([site.longitude]), - np.array([site.latitude]), - np.array([-site.altitude / 1000.0])) - # Warning ratio fixed to 1.5 - ratio=1.5 - if not event.rupture.area: - event.rupture.area = WC1994().get_median_area(event.magnitude.value, - None) - surface_modeled = create_planar_surface( - Point(event.longitude, event.latitude, event.depth), - event.mechanism.nodal_planes.nodal_plane_1['strike'], - event.mechanism.nodal_planes.nodal_plane_1['dip'], - event.rupture.area, - ratio) - hypocenter = get_hypocentre_on_planar_surface(surface_modeled, - event.rupture.hypo_loc) - try: - surface_modeled._create_mesh() - except: - dip = surface_modeled.get_dip() - dip_dir = (surface_modeled.get_strike() - 90.) % 360. - ztor = surface_modeled.top_left.depth - d_x = ztor * np.tan(np.radians(90.0 - dip)) - top_left_surface = surface_modeled.top_left.point_at(d_x, - -ztor, - dip_dir) - top_left_surface.depth = 0. - top_right_surface = surface_modeled.top_right.point_at(d_x, - -ztor, - dip_dir) - top_right_surface.depth = 0. - surface_modeled = SimpleFaultSurface.from_fault_data( - Line([top_left_surface, top_right_surface]), - surface_modeled.top_left.depth, - surface_modeled.bottom_left.depth, - surface_modeled.get_dip(), - 1.0) - - # Rhypo - Rhypo, Repi, Rrup, Rjb, Ry0 = tuple(map( - get_positive_float, [metadata[key] for key in [ - "Hypocentral Distance (km)", "Epicentral Distance (km)", - "Rupture Distance (km)", "Joyner-Boore Distance (km)", - "Ry0 (km)"]])) - Rx = get_float(metadata["Rx (km)"]) # Rx can be negative - - #Rhypo = get_float(metadata["Hypocentral Distance (km)"]) - if Rhypo is None or Rhypo < 0.0: - Rhypo = hypocenter.distance_to_mesh(target_site) - # Repi - #Repi = get_float(metadata["Epicentral Distance (km)"]) - if Repi is None or Repi < 0.0: - Repi= hypocenter.distance_to_mesh(target_site, with_depths=False) - # Rrup - #Rrup = get_float(metadata["Rupture Distance (km)"]) - if Rrup is None or Rrup < 0.0: - Rrup = surface_modeled.get_min_distance(target_site)[0] - # Rjb - #Rjb = get_float(metadata["Joyner-Boore Distance (km)"]) - if Rjb is None or Rjb < 0.0: - Rjb = surface_modeled.get_joyner_boore_distance( - target_site)[0] - # Need to check if Rx and Ry0 are consistant with the other metrics - # when those are coming from the flatfile? - # Rx - #Rx = get_float(metadata["Rx (km)"]) - if Rx is None or Rx < 0.0: - Rx = surface_modeled.get_rx_distance(target_site)[0] - # Ry0 - Ry0 = get_float(metadata["Ry0 (km)"]) - if Ry0 is None or Ry0 < 0.0: - Ry0 = surface_modeled.get_ry0_distance(target_site)[0] - - distance = RecordDistance( - repi = Repi, - rhypo = Rhypo, - rjb = Rjb, - rrup = Rrup, - r_x = Rx, - ry0 = Ry0) - distance.azimuth = get_float(metadata["Source to Site Azimuth (deg)"]) - #distance.hanging_wall = get_float(metadata["FW/HW Indicator"]) - if metadata["FW/HW Indicator"] == "HW": - distance.hanging_wall = True - elif metadata["FW/HW Indicator"] == "FW": - distance.hanging_wall = False - else: - pass - - return distance - - return -#class GeneralFlatfileSpectraReader(SMSpectraReader): -# """ -# This -# """ diff --git a/openquake/smt/parsers/ngawest2_flatfile_parser.py b/openquake/smt/parsers/ngawest2_flatfile_parser.py index 67e10609b..41c876c78 100644 --- a/openquake/smt/parsers/ngawest2_flatfile_parser.py +++ b/openquake/smt/parsers/ngawest2_flatfile_parser.py @@ -63,11 +63,9 @@ class NGAWest2FlatfileParser(SMDatabaseReader): - """ - Parses the metadata from the flatfile to a set of metadata objects + Parses the data from flatfile to a set of metadata objects """ - M_PRECEDENCE = ["EMEC_Mw", "Mw", "Ms", "ML"] BUILD_FINITE_DISTANCES = False diff --git a/openquake/smt/parsers/sigma_database_parser.py b/openquake/smt/parsers/sigma_database_parser.py index f233f920b..40549872d 100755 --- a/openquake/smt/parsers/sigma_database_parser.py +++ b/openquake/smt/parsers/sigma_database_parser.py @@ -44,10 +44,9 @@ class SigmaDatabaseMetadataReader(SMDatabaseReader): def parse(self): """ - + Parse the database """ file_list = os.listdir(self.filename) - num_files = len(file_list) self.database = GroundMotionDatabase(self.id, self.name) for file_str in file_list: if "DS_Store" in file_str: @@ -177,7 +176,7 @@ def _parse_focal_mechanism(self, eq_id, eq_name, metadata): def _parse_rupture(self, eq_id, eq_name, magnitude, metadata): """ - + Parse rupture """ return Rupture(eq_id, eq_name, @@ -345,9 +344,8 @@ def parse_records(self, record=None): def _parse_time_history(self, ifile): """ - + Parse time history """ - output = {} acc_hist = [] cases = {0: self._get_datetime, @@ -454,14 +452,11 @@ def _get_pga(self, output, line): def _get_units(self, output, line): """ - + # Get units """ output['Units'] = "cm/s/s" return output def _get_timehist_line(self, line): - """ - - """ idx = np.arange(0, len(line) + 14, 14) - return [float(line[idx[i]:idx[i + 1]]) for i in range(len(idx) - 1)] + return [float(line[idx[i]:idx[i + 1]]) for i in range(len(idx) - 1)] \ No newline at end of file diff --git a/openquake/smt/parsers/simple_flatfile_parser.py b/openquake/smt/parsers/simple_flatfile_parser.py index 870af8d58..4e6099743 100755 --- a/openquake/smt/parsers/simple_flatfile_parser.py +++ b/openquake/smt/parsers/simple_flatfile_parser.py @@ -198,9 +198,6 @@ def _parse_event_data(self, metadata): length, width, ztor) - # get_float(metadata["Fault Rupture Length (km)"]), - # get_float(metadata["Fault Rupture Width (km)"]), - # get_float(metadata["Depth to Top Of Fault Rupture Model"])) eqk.rupture.get_area() return eqk @@ -234,7 +231,8 @@ def _parse_distance_data(self, event, site, metadata): :class: openquake.smt.sm_database.RecordDistance """ # Compute various distance metrics - # Add calculation of Repi, Rhypo from event and station localizations (latitudes, longitudes, depth, elevation)? + # Add calculation of Repi, Rhypo from event and station localizations + # (latitudes, longitudes, depth, elevation)? target_site = Mesh(np.array([site.longitude]), np.array([site.latitude]), np.array([0.0])) @@ -281,13 +279,6 @@ def _parse_distance_data(self, event, site, metadata): ry0 = float(Ry0)) distance.azimuth = get_float(metadata["Source to Site Azimuth (deg)"]) distance.hanging_wall = get_float(metadata["FW/HW Indicator"]) -# distance = RecordDistance( -# get_float(metadata["EpiD (km)"]), -# get_float(metadata["HypD (km)"]), -# get_float(metadata["Joyner-Boore Dist. (km)"]), -# get_float(metadata["Campbell R Dist. (km)"])) -# distance.azimuth = get_float(metadata["Source to Site Azimuth (deg)"]) -# distance.hanging_wall = get_float(metadata["FW/HW Indicator"]) return distance def _parse_site_data(self, metadata): @@ -411,4 +402,4 @@ def _parse_time_history(self, ifile): output["Number Steps"] = int(nvals) output["Units"] = "cm/s/s" output["PGA"] = np.max(np.fabs(output["Acceleration"])) - return output + return output \ No newline at end of file diff --git a/openquake/smt/parsers/simple_flatfile_parser_sara.py b/openquake/smt/parsers/simple_flatfile_parser_sara.py index b3df64d91..3eb55e1f5 100755 --- a/openquake/smt/parsers/simple_flatfile_parser_sara.py +++ b/openquake/smt/parsers/simple_flatfile_parser_sara.py @@ -574,8 +574,6 @@ def _parse_processing_data(self, wfid, metadata): return xcomp, ycomp, None - - class NearFaultFlatFileParser(SimpleFlatfileParserV9): def parse(self): @@ -731,4 +729,4 @@ def _parse_time_history(self, ifile, units="cm/s/s"): output["Number Steps"] = int(nvals) output["Units"] = units output["PGA"] = np.max(np.fabs(output["Acceleration"])) - return output + return output \ No newline at end of file diff --git a/openquake/smt/parsers/valid.py b/openquake/smt/parsers/valid.py index 6d0d12a4e..f9008b9a2 100644 --- a/openquake/smt/parsers/valid.py +++ b/openquake/smt/parsers/valid.py @@ -153,4 +153,4 @@ def rake(value): if rake and (rake >= -180.0) and (rake <= 180.0): return rake print("Rake %s is not in range -180 - 180" % value) - return None + return None \ No newline at end of file From 57093f4fa26787572c45f1f9d147b6370f9ac63d Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 8 Mar 2024 17:05:05 +0100 Subject: [PATCH 42/59] cleaning parsers and removing generic parser as is actually for ngawest2 it appears -> has own fully functioning parser in the SMT now --- .../smt/parsers/esm_url_flatfile_parser.py | 6 +- .../smt/parsers/esm_ws_flatfile_parser.py | 4 +- openquake/smt/parsers/gem_flatfile_parser.py | 131 ++++++++++++++---- 3 files changed, 110 insertions(+), 31 deletions(-) diff --git a/openquake/smt/parsers/esm_url_flatfile_parser.py b/openquake/smt/parsers/esm_url_flatfile_parser.py index b3c04e223..ae36ab4ba 100644 --- a/openquake/smt/parsers/esm_url_flatfile_parser.py +++ b/openquake/smt/parsers/esm_url_flatfile_parser.py @@ -49,6 +49,9 @@ # Import the ESM dictionaries from .esm_dictionaries import * +# Define base path +DATA = os.path.abspath('') + SCALAR_LIST = ["PGA", "PGV", "PGD", "CAV", "CAV5", "Ia", "D5-95"] HEADER_STR = "event_id;event_time;ISC_ev_id;USGS_ev_id;INGV_ev_id;"\ @@ -929,8 +932,7 @@ def _get_ESM18_headers(ESM, default_string, r_fm_type, r_datetime): "rotD00_T9_000":ESM.rotd00_t9_000, "rotD00_T10_000":ESM.rotd00_t10_000}) - # Output to folder where converted flatfile read into parser - DATA = os.path.abspath('') + # Output to folder where converted flatfile read into parser tmp = tempfile.mkdtemp() converted_base_data_path = os.path.join(DATA, tmp, 'converted_flatfile.csv') ESM_original_headers.to_csv(converted_base_data_path, sep=';') diff --git a/openquake/smt/parsers/esm_ws_flatfile_parser.py b/openquake/smt/parsers/esm_ws_flatfile_parser.py index b2ae88eb9..238c454b0 100644 --- a/openquake/smt/parsers/esm_ws_flatfile_parser.py +++ b/openquake/smt/parsers/esm_ws_flatfile_parser.py @@ -45,6 +45,9 @@ # Import the ESM dictionaries from .esm_dictionaries import * +# Define base path +DATA = os.path.abspath('') + SCALAR_LIST = ["PGA", "PGV", "PGD", "CAV", "CAV5", "Ia", "D5-95"] HEADER_STR = "event_id;event_time;ISC_ev_id;USGS_ev_id;INGV_ev_id;"\ @@ -924,7 +927,6 @@ def _get_ESM18_headers(ESM, default_string, r_fm_type, r_datetime): "rotD00_T10_000":default_string}) # Output to folder where converted flatfile read into parser - DATA = os.path.abspath('') temp_folder=tempfile.mkdtemp() converted_base_data_path = os.path.join(DATA,temp_folder, 'converted_flatfile.csv') diff --git a/openquake/smt/parsers/gem_flatfile_parser.py b/openquake/smt/parsers/gem_flatfile_parser.py index 74b2a81d3..ba0ad3462 100644 --- a/openquake/smt/parsers/gem_flatfile_parser.py +++ b/openquake/smt/parsers/gem_flatfile_parser.py @@ -1,8 +1,7 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2024 GEM Foundation +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published @@ -17,10 +16,15 @@ # You should have received a copy of the GNU Affero General Public License # along with OpenQuake. If not, see . """ -Parse the GEM globally homogenised flatfile (currently internal use only) into -SMT data +Parser for a flatfile downloaded from the ESM custom url database +--> (https://esm-db.eu/esmws/flatfile/1/) + +This parser assumes you have selected all available headers in your URL search +when downloading the flatfile """ +import pandas as pd import os, sys +import tempfile import csv import numpy as np import copy @@ -45,6 +49,9 @@ # Import the ESM dictionaries from .esm_dictionaries import * +# Base path +DATA = os.path.abspath('') + SCALAR_LIST = ["PGA", "PGV", "PGD", "CAV", "CAV5", "Ia", "D5-95"] HEADER_STR = "event_id;event_time;ISC_ev_id;USGS_ev_id;INGV_ev_id;"\ @@ -66,31 +73,36 @@ HEADERS = set(HEADER_STR.split(";")) COUNTRY_CODES = {"AL": "Albania", "AM": "Armenia", "AT": "Austria", - "AZ": "Azerbaijan", "BA": "Bosnia and Herzegowina", - "BG": "Bulgaria", "CH": "Switzerland", "CY": "Cyprus", - "CZ": "Czech Republic", "DE": "Germany", "DZ": "Algeria", - "ES": "Spain", "FR": "France", "GE": "Georgia", - "GR": "Greece", "HR": "Croatia", "HU": "Hungary", - "IL": "Israel", "IR": "Iran", "IS": "Iceland", "IT": "Italy", - "JO": "Jordan", "LI": "Lichtenstein", "MA": "Morocco", - "MC": "Monaco", "MD": "Moldova", "ME": "Montenegro", - "MK": "Macedonia", "MT": "Malta", "PL": "Poland", - "PT": "Portugal", "RO": "Romania", "RS": "Serbia", - "RU": "Russia", "SI": "Slovenia", "SM": "San Marino", - "SY": "Syria", "TM": "Turkmenistan", "TR": "Turkey", - "UA": "Ukraine", "UZ": "Uzbekistan", "XK": "Kosovo"} - - -class FlatfileParser(SMDatabaseReader): + "AR": "Argentina", "AZ": "Azerbaijan", + "BA": "Bosnia and Herzegowina", "BG": "Bulgaria", + "CH": "Switzerland", "CL": "Chile", "CN": "China", + "CR": "Costa Rica", "CY": "Cyprus", "CZ": "Czech Republic", + "DE": "Germany", "DJ": "Djibouti", "DZ": "Algeria", + "ES": "Spain", "FR": "France", "GE": "Georgia", "GH": "Ghana", + "GR": "Greece", "HR": "Croatia", "HU": "Hungary", + "IL": "Israel", "ID": "Indonesia", "IR": "Iran", + "IS": "Iceland", "IT": "Italy", "JO": "Jordan", "KE":"Kenya", + "KG": "Kyrgyzstan", "KZ": "Kazakhstan", "LI": "Lichtenstein", + "MA": "Morocco", "MC": "Monaco", "MD": "Moldova", + "ME": "Montenegro", "MK": "Macedonia", "MM": "Myanmar", + "MT": "Malta", "MX": "Mexico", "NI": "Nicaragua", + "NO": "Norway", "PA": "Panama", "PG": "Papa New Guinea", + "PL": "Poland", "PT": "Portugal", "PS": "Palestine", + "RO": "Romania", "RS": "Serbia", "RU": "Russia", + "SI": "Slovenia", "SM": "San Marino", "SY": "Syria", + "TM": "Turkmenistan", "TR": "Turkey", "TW": "Taiwan", + "UA": "Ukraine", "US": "United States", "UZ": "Uzbekistan", + "VU": "Vanuatu", "XK": "Kosovo", "YE": "Yemen"} + +class ESMFlatfileParserURL(SMDatabaseReader): """ - Parses the data from the ESM flatfile to a set of metadata objects + Parses the data from the flatfile to a set of metadata objects """ M_PRECEDENCE = ["EMEC_Mw", "Mw", "Ms", "ML"] BUILD_FINITE_DISTANCES = False - def parse(self, location="./"): + def parse(self, location='./'): """ - Parse the metadata """ assert os.path.isfile(self.filename) headers = getline(self.filename, 1).rstrip("\n").split(";") @@ -119,14 +131,29 @@ def parse(self, location="./"): if (counter % 100) == 0: print("Processed record %s - %s" % (str(counter), record.id)) - + counter += 1 @classmethod - def autobuild(cls, dbid, dbname, output_location, flatfile_location): + def autobuild(cls, dbid, dbname, output_location, ESM_flatfile_directory): """ Quick and dirty full database builder! """ + # Import ESM URL format strong-motion flatfile + ESM = pd.read_csv(ESM_flatfile_directory) + + # Create default values + default_string = pd.Series(np.full(np.size(ESM.esm_event_id), "")) + + # Assign strike-slip to unknown faulting mechanism + r_fm_type = ESM.fm_type_code.fillna('SS') + + # Reformat datetime + r_datetime = ESM.event_time.str.replace('T',' ') + + converted_base_data_path=_get_ESM18_headers( + ESM, default_string, r_fm_type, r_datetime) + if os.path.exists(output_location): raise IOError("Target database directory %s already exists!" % output_location) @@ -134,7 +161,7 @@ def autobuild(cls, dbid, dbname, output_location, flatfile_location): # Add on the records folder os.mkdir(os.path.join(output_location, "records")) # Create an instance of the parser class - database = cls(dbid, dbname, flatfile_location) + database = cls(dbid, dbname, converted_base_data_path) # Parse the records print("Parsing Records ...") database.parse(location=output_location) @@ -143,6 +170,7 @@ def autobuild(cls, dbid, dbname, output_location, flatfile_location): print("Storing metadata to file %s" % metadata_file) with open(metadata_file, "wb+") as f: pickle.dump(database.database, f) + return database def _parse_record(self, metadata): @@ -492,9 +520,10 @@ def _parse_ground_motion(self, location, row, record, headers): record.datafile = filename return record + def _retreive_ground_motion_from_row(self, row, header_list): """ - Get the ground motion data from a row (record) in the database + Get the ground-motion data from a row (record) in the database """ imts = ["U", "V", "W", "rotD00", "rotD100", "rotD50"] spectra = [] @@ -529,7 +558,6 @@ def _retreive_ground_motion_from_row(self, row, header_list): values.append(np.fabs(float(value))) else: values.append(np.nan) - #values.append(np.fabs(float(row[header].strip()))) periods = np.array(periods) values = np.array(values) idx = np.argsort(periods) @@ -550,3 +578,50 @@ def _retreive_ground_motion_from_row(self, row, header_list): scalars["U"][key] * scalars["V"][key]) return scalars, spectra + +def prioritise_rotd50(df, removal=None): + """ + If a record has RotD50 take this instead of geometric mean from the global + flatfile. If no RotD50 use the horizontal components if available (crude + proxy). If no horizontal components log the record or remove is specified. + + :param removal: + If set to true records with out acceleration values for all of the + required spectral periods are removed, else the number of records + lacking this information will be printed instead + """ + log = [] + for idx, rec in df.iterrows(): + print(idx) + for col in rec.index: + if 'U_T' in col or 'V_T' in col or 'U_pga' in col or 'V_pga' in col: + if 'T90' not in col: + if 'U_' in col: + rotd50_col = col.replace('U_', 'rotD50_') + if 'V_' in col: + rotd50_col = col.replace('V_', 'rotD50_') + + if not pd.isnull(rec[rotd50_col]): # If RotD50... + df[col].iloc[idx] = rec[rotd50_col] # Assign to H1, H2 + else: + log.append(idx) + + # Drop if required, else just inform number of records missing acc values + no_vals = len(pd.Series(log).unique()) + if removal is True and log!= []: + df = df.drop(log).reset_index() + msg = 'Records without acc. values at required periods have been' + msg =+ ' removed from flatfile (%s records)' % no_vals + print(msg) + if len(df) == 0: + raise ValueError('All records have been removed from the flatfile') + + elif log != []: + print('%s records do not have acc. values at required periods' % no_vals) + + # Output to folder where converted flatfile read into parser + tmp = tempfile.mkdtemp() + converted_base_data_path = os.path.join(DATA, tmp, 'converted_flatfile.csv') + df.to_csv(converted_base_data_path, sep=';') + + return converted_base_data_path \ No newline at end of file From d5640e3ccd3dd086e5f89559e00c7b750b2ccb66 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 8 Mar 2024 18:37:32 +0100 Subject: [PATCH 43/59] adding parser for GEM global flatfile --- .../smt/parsers/esm_url_flatfile_parser.py | 66 ++++------------ .../smt/parsers/esm_ws_flatfile_parser.py | 65 ++++------------ openquake/smt/parsers/gem_flatfile_parser.py | 78 ++++--------------- .../smt/parsers/ngawest2_flatfile_parser.py | 3 +- .../tests/parsers/data/GEM_flatfile_test.csv | 6 ++ .../tests/parsers/gem_flatfile_parser_test.py | 75 ++++++++++++++++++ 6 files changed, 132 insertions(+), 161 deletions(-) create mode 100644 openquake/smt/tests/parsers/data/GEM_flatfile_test.csv create mode 100644 openquake/smt/tests/parsers/gem_flatfile_parser_test.py diff --git a/openquake/smt/parsers/esm_url_flatfile_parser.py b/openquake/smt/parsers/esm_url_flatfile_parser.py index ae36ab4ba..7528fd3d2 100644 --- a/openquake/smt/parsers/esm_url_flatfile_parser.py +++ b/openquake/smt/parsers/esm_url_flatfile_parser.py @@ -72,28 +72,6 @@ HEADERS = set(HEADER_STR.split(";")) -COUNTRY_CODES = {"AL": "Albania", "AM": "Armenia", "AT": "Austria", - "AR": "Argentina", "AZ": "Azerbaijan", - "BA": "Bosnia and Herzegowina", "BG": "Bulgaria", - "CH": "Switzerland", "CL": "Chile", "CN": "China", - "CR": "Costa Rica", "CY": "Cyprus", "CZ": "Czech Republic", - "DE": "Germany", "DJ": "Djibouti", "DZ": "Algeria", - "ES": "Spain", "FR": "France", "GE": "Georgia", "GH": "Ghana", - "GR": "Greece", "HR": "Croatia", "HU": "Hungary", - "IL": "Israel", "ID": "Indonesia", "IR": "Iran", - "IS": "Iceland", "IT": "Italy", "JO": "Jordan", "KE":"Kenya", - "KG": "Kyrgyzstan", "KZ": "Kazakhstan", "LI": "Lichtenstein", - "MA": "Morocco", "MC": "Monaco", "MD": "Moldova", - "ME": "Montenegro", "MK": "Macedonia", "MM": "Myanmar", - "MT": "Malta", "MX": "Mexico", "NI": "Nicaragua", - "NO": "Norway", "PA": "Panama", "PG": "Papa New Guinea", - "PL": "Poland", "PT": "Portugal", "PS": "Palestine", - "RO": "Romania", "RS": "Serbia", "RU": "Russia", - "SI": "Slovenia", "SM": "San Marino", "SY": "Syria", - "TM": "Turkmenistan", "TR": "Turkey", "TW": "Taiwan", - "UA": "Ukraine", "US": "United States", "UZ": "Uzbekistan", - "VU": "Vanuatu", "XK": "Kosovo", "YE": "Yemen"} - class ESMFlatfileParserURL(SMDatabaseReader): """ Parses the data from the flatfile to a set of metadata objects @@ -141,18 +119,9 @@ def autobuild(cls, dbid, dbname, output_location, ESM_flatfile_directory): """ # Import ESM URL format strong-motion flatfile ESM = pd.read_csv(ESM_flatfile_directory) - - # Create default values - default_string = pd.Series(np.full(np.size(ESM.esm_event_id), "")) - - # Assign strike-slip to unknown faulting mechanism - r_fm_type = ESM.fm_type_code.fillna('SS') - # Reformat datetime - r_datetime = ESM.event_time.str.replace('T',' ') - - converted_base_data_path=_get_ESM18_headers( - ESM, default_string, r_fm_type, r_datetime) + # Get path to tmp csv once modified dataframe + converted_base_data_path=_get_ESM18_headers(ESM) if os.path.exists(output_location): raise IOError("Target database directory %s already exists!" @@ -195,7 +164,6 @@ def _parse_record(self, metadata): xcomp, ycomp, vertical=vertical) - def _parse_event_data(self, metadata): """ Parses the event metadata @@ -203,12 +171,7 @@ def _parse_event_data(self, metadata): # ID and Name (name not in file so use ID again) eq_id = metadata["event_id"] eq_name = metadata["event_id"] - # Country - cntry_code = metadata["ev_nation_code"].strip() - if cntry_code and cntry_code in COUNTRY_CODES: - eq_country = COUNTRY_CODES[cntry_code] - else: - eq_country = None + # Date and time eq_datetime = valid.date_time(metadata["event_time"], "%Y-%m-%d %H:%M:%S") @@ -220,7 +183,7 @@ def _parse_event_data(self, metadata): eq_depth = 0.0 eqk = Earthquake(eq_id, eq_name, eq_datetime, eq_lon, eq_lat, eq_depth, None, # Magnitude not defined yet - eq_country=eq_country) + eq_country=None) # Get preferred magnitude and list pref_mag, magnitude_list = self._parse_magnitudes(metadata) eqk.magnitude = pref_mag @@ -382,15 +345,9 @@ def _parse_site_data(self, metadata): vs30_measured = False else: vs30_measured = False - st_nation_code = metadata["st_nation_code"].strip() - if st_nation_code: - st_country = COUNTRY_CODES[st_nation_code] - else: - st_country = None site = RecordSite(site_id, station_code, station_code, site_lon, site_lat, elevation, vs30, vs30_measured, - network_code=network_code, - country=st_country) + network_code=network_code, country=None) site.slope = valid.vfloat(metadata["slope_deg"], "slope_deg") site.sensor_depth = valid.vfloat(metadata["sensor_depth_m"], "sensor_depth_m") @@ -579,11 +536,20 @@ def _retreive_ground_motion_from_row(self, row, header_list): return scalars, spectra -def _get_ESM18_headers(ESM, default_string, r_fm_type, r_datetime): +def _get_ESM18_headers(ESM): """ Convert from ESM URL format flatfile to ESM18 format flatfile """ + # Create default values + default_string = pd.Series(np.full(np.size(ESM.esm_event_id), "")) + + # Reformat datetime + r_datetime = ESM.event_time.str.replace('T',' ') + + # Assign unknown to NaN values for faulting mechanism + ESM['fm_type_code'] = ESM.fm_type_code.fillna('U') + # Construct dataframe with original ESM format ESM_original_headers = pd.DataFrame( { @@ -599,7 +565,7 @@ def _get_ESM18_headers(ESM, default_string, r_fm_type, r_datetime): "ev_longitude":ESM.ev_longitude, "ev_depth_km":ESM.ev_depth_km, "ev_hyp_ref":default_string, - "fm_type_code":r_fm_type, + "fm_type_code":ESM.fm_type_code, "ML":ESM.ml, "ML_ref":ESM.ml_ref, "Mw":ESM.mw, diff --git a/openquake/smt/parsers/esm_ws_flatfile_parser.py b/openquake/smt/parsers/esm_ws_flatfile_parser.py index 238c454b0..63654e9b2 100644 --- a/openquake/smt/parsers/esm_ws_flatfile_parser.py +++ b/openquake/smt/parsers/esm_ws_flatfile_parser.py @@ -68,28 +68,6 @@ HEADERS = set(HEADER_STR.split(";")) -COUNTRY_CODES = {"AL": "Albania", "AM": "Armenia", "AT": "Austria", - "AR": "Argentina", "AZ": "Azerbaijan", - "BA": "Bosnia and Herzegowina", "BG": "Bulgaria", - "CH": "Switzerland", "CL": "Chile", "CN": "China", - "CR": "Costa Rica", "CY": "Cyprus", "CZ": "Czech Republic", - "DE": "Germany", "DJ": "Djibouti", "DZ": "Algeria", - "ES": "Spain", "FR": "France", "GE": "Georgia", "GH": "Ghana", - "GR": "Greece", "HR": "Croatia", "HU": "Hungary", - "IL": "Israel", "ID": "Indonesia", "IR": "Iran", - "IS": "Iceland", "IT": "Italy", "JO": "Jordan", "KE":"Kenya", - "KG": "Kyrgyzstan", "KZ": "Kazakhstan", "LI": "Lichtenstein", - "MA": "Morocco", "MC": "Monaco", "MD": "Moldova", - "ME": "Montenegro", "MK": "Macedonia", "MM": "Myanmar", - "MT": "Malta", "MX": "Mexico", "NI": "Nicaragua", - "NO": "Norway", "PA": "Panama", "PG": "Papa New Guinea", - "PL": "Poland", "PT": "Portugal", "PS": "Palestine", - "RO": "Romania", "RS": "Serbia", "RU": "Russia", - "SI": "Slovenia", "SM": "San Marino", "SY": "Syria", - "TM": "Turkmenistan", "TR": "Turkey", "TW": "Taiwan", - "UA": "Ukraine", "US": "United States", "UZ": "Uzbekistan", - "VU": "Vanuatu", "XK": "Kosovo", "YE": "Yemen"} - class ESMFlatfileParserWS(SMDatabaseReader): """ @@ -139,17 +117,8 @@ def autobuild(cls, dbid, dbname, output_location, ESM_flatfile_directory): # Import ESM web service format strong-motion flatfile ESM = pd.read_csv(ESM_flatfile_directory) - # Create default values - default_string = pd.Series(np.full(np.size(ESM.event_id),str(""))) - - # Assign strike-slip to unknown faulting mechanism - r_fm_type = ESM.fm_type_code.fillna('SS') - - #Reformat datetime - r_datetime = ESM.event_time.str.replace('T',' ') - - converted_base_data_path=_get_ESM18_headers( - ESM, default_string, r_fm_type, r_datetime) + # Get path to tmp csv once modified dataframe + converted_base_data_path=_get_ESM18_headers(ESM) if os.path.exists(output_location): raise IOError("Target database directory %s already exists!" @@ -197,12 +166,7 @@ def _parse_event_data(self, metadata): # ID and Name (name not in file so use ID again) eq_id = metadata["event_id"] eq_name = metadata["event_id"] - # Country - cntry_code = metadata["ev_nation_code"].strip() - if cntry_code and cntry_code in COUNTRY_CODES: - eq_country = COUNTRY_CODES[cntry_code] - else: - eq_country = None + # Date and time eq_datetime = valid.date_time(metadata["event_time"], "%Y-%m-%d %H:%M:%S") @@ -214,7 +178,7 @@ def _parse_event_data(self, metadata): eq_depth = 0.0 eqk = Earthquake(eq_id, eq_name, eq_datetime, eq_lon, eq_lat, eq_depth, None, # Magnitude not defined yet - eq_country=eq_country) + eq_country=None) # Get preferred magnitude and list pref_mag, magnitude_list = self._parse_magnitudes(metadata) eqk.magnitude = pref_mag @@ -376,15 +340,9 @@ def _parse_site_data(self, metadata): vs30_measured = False else: vs30_measured = False - st_nation_code = metadata["st_nation_code"].strip() - if st_nation_code: - st_country = COUNTRY_CODES[st_nation_code] - else: - st_country = None site = RecordSite(site_id, station_code, station_code, site_lon, site_lat, elevation, vs30, vs30_measured, - network_code=network_code, - country=st_country) + network_code=network_code, country=None) site.slope = valid.vfloat(metadata["slope_deg"], "slope_deg") site.sensor_depth = valid.vfloat(metadata["sensor_depth_m"], "sensor_depth_m") @@ -573,10 +531,19 @@ def _retreive_ground_motion_from_row(self, row, header_list): return scalars, spectra -def _get_ESM18_headers(ESM, default_string, r_fm_type, r_datetime): +def _get_ESM18_headers(ESM): """ Convert from ESM web service format flatfile to ESM18 format flatfile """ + # Create default values + default_string = pd.Series(np.full(np.size(ESM.event_id),str(""))) + + #Reformat datetime + r_datetime = ESM.event_time.str.replace('T',' ') + + # Assign unknown to NaN values for faulting mechanism + ESM['fm_type_code'] = ESM.fm_type_code.fillna('U') + # Construct dataframe with original ESM format ESM_original_headers = pd.DataFrame( { @@ -592,7 +559,7 @@ def _get_ESM18_headers(ESM, default_string, r_fm_type, r_datetime): "ev_longitude":ESM.ev_longitude, "ev_depth_km":ESM.ev_depth_km, "ev_hyp_ref":default_string, - "fm_type_code":r_fm_type, + "fm_type_code":ESM.fm_type_code, "ML":ESM.ML, "ML_ref":default_string, "Mw":ESM.MW, diff --git a/openquake/smt/parsers/gem_flatfile_parser.py b/openquake/smt/parsers/gem_flatfile_parser.py index ba0ad3462..e5ac4e240 100644 --- a/openquake/smt/parsers/gem_flatfile_parser.py +++ b/openquake/smt/parsers/gem_flatfile_parser.py @@ -16,11 +16,8 @@ # You should have received a copy of the GNU Affero General Public License # along with OpenQuake. If not, see . """ -Parser for a flatfile downloaded from the ESM custom url database ---> (https://esm-db.eu/esmws/flatfile/1/) - -This parser assumes you have selected all available headers in your URL search -when downloading the flatfile +Parse the GEM globally homogenised flatfile (currently for internal use only) +into SMT metadata """ import pandas as pd import os, sys @@ -72,29 +69,8 @@ HEADERS = set(HEADER_STR.split(";")) -COUNTRY_CODES = {"AL": "Albania", "AM": "Armenia", "AT": "Austria", - "AR": "Argentina", "AZ": "Azerbaijan", - "BA": "Bosnia and Herzegowina", "BG": "Bulgaria", - "CH": "Switzerland", "CL": "Chile", "CN": "China", - "CR": "Costa Rica", "CY": "Cyprus", "CZ": "Czech Republic", - "DE": "Germany", "DJ": "Djibouti", "DZ": "Algeria", - "ES": "Spain", "FR": "France", "GE": "Georgia", "GH": "Ghana", - "GR": "Greece", "HR": "Croatia", "HU": "Hungary", - "IL": "Israel", "ID": "Indonesia", "IR": "Iran", - "IS": "Iceland", "IT": "Italy", "JO": "Jordan", "KE":"Kenya", - "KG": "Kyrgyzstan", "KZ": "Kazakhstan", "LI": "Lichtenstein", - "MA": "Morocco", "MC": "Monaco", "MD": "Moldova", - "ME": "Montenegro", "MK": "Macedonia", "MM": "Myanmar", - "MT": "Malta", "MX": "Mexico", "NI": "Nicaragua", - "NO": "Norway", "PA": "Panama", "PG": "Papa New Guinea", - "PL": "Poland", "PT": "Portugal", "PS": "Palestine", - "RO": "Romania", "RS": "Serbia", "RU": "Russia", - "SI": "Slovenia", "SM": "San Marino", "SY": "Syria", - "TM": "Turkmenistan", "TR": "Turkey", "TW": "Taiwan", - "UA": "Ukraine", "US": "United States", "UZ": "Uzbekistan", - "VU": "Vanuatu", "XK": "Kosovo", "YE": "Yemen"} - -class ESMFlatfileParserURL(SMDatabaseReader): + +class GEMFlatfileParser(SMDatabaseReader): """ Parses the data from the flatfile to a set of metadata objects """ @@ -128,31 +104,23 @@ def parse(self, location='./'): print("Record with sequence number %s is null/invalid" % "{:s}-{:s}".format(row["event_id"], row["station_code"])) - if (counter % 100) == 0: + if (counter % 1) == 0: print("Processed record %s - %s" % (str(counter), record.id)) counter += 1 @classmethod - def autobuild(cls, dbid, dbname, output_location, ESM_flatfile_directory): + def autobuild(cls, dbid, dbname, output_location, ESM_flatfile_directory, + removal=None): """ Quick and dirty full database builder! """ - # Import ESM URL format strong-motion flatfile - ESM = pd.read_csv(ESM_flatfile_directory) - - # Create default values - default_string = pd.Series(np.full(np.size(ESM.esm_event_id), "")) - - # Assign strike-slip to unknown faulting mechanism - r_fm_type = ESM.fm_type_code.fillna('SS') - - # Reformat datetime - r_datetime = ESM.event_time.str.replace('T',' ') + # Import GEM strong-motion flatfile + GEM = pd.read_csv(ESM_flatfile_directory) - converted_base_data_path=_get_ESM18_headers( - ESM, default_string, r_fm_type, r_datetime) + # Get path to tmp csv once modified dataframe + converted_base_data_path=_prioritise_rotd50(GEM, removal) if os.path.exists(output_location): raise IOError("Target database directory %s already exists!" @@ -205,10 +173,6 @@ def _parse_event_data(self, metadata): eq_name = metadata["event_id"] # Country cntry_code = metadata["ev_nation_code"].strip() - if cntry_code and cntry_code in COUNTRY_CODES: - eq_country = COUNTRY_CODES[cntry_code] - else: - eq_country = None # Date and time eq_datetime = valid.date_time(metadata["event_time"], "%Y-%m-%d %H:%M:%S") @@ -220,7 +184,7 @@ def _parse_event_data(self, metadata): eq_depth = 0.0 eqk = Earthquake(eq_id, eq_name, eq_datetime, eq_lon, eq_lat, eq_depth, None, # Magnitude not defined yet - eq_country=eq_country) + eq_country=None) # Get preferred magnitude and list pref_mag, magnitude_list = self._parse_magnitudes(metadata) eqk.magnitude = pref_mag @@ -382,15 +346,9 @@ def _parse_site_data(self, metadata): vs30_measured = False else: vs30_measured = False - st_nation_code = metadata["st_nation_code"].strip() - if st_nation_code: - st_country = COUNTRY_CODES[st_nation_code] - else: - st_country = None site = RecordSite(site_id, station_code, station_code, site_lon, site_lat, elevation, vs30, vs30_measured, - network_code=network_code, - country=st_country) + network_code=network_code, country=None) site.slope = valid.vfloat(metadata["slope_deg"], "slope_deg") site.sensor_depth = valid.vfloat(metadata["sensor_depth_m"], "sensor_depth_m") @@ -579,7 +537,7 @@ def _retreive_ground_motion_from_row(self, row, header_list): return scalars, spectra -def prioritise_rotd50(df, removal=None): +def _prioritise_rotd50(df, removal=None): """ If a record has RotD50 take this instead of geometric mean from the global flatfile. If no RotD50 use the horizontal components if available (crude @@ -592,7 +550,6 @@ def prioritise_rotd50(df, removal=None): """ log = [] for idx, rec in df.iterrows(): - print(idx) for col in rec.index: if 'U_T' in col or 'V_T' in col or 'U_pga' in col or 'V_pga' in col: if 'T90' not in col: @@ -606,7 +563,7 @@ def prioritise_rotd50(df, removal=None): else: log.append(idx) - # Drop if required, else just inform number of records missing acc values + # Drop if req. or else just inform number of recs missing acceleration values no_vals = len(pd.Series(log).unique()) if removal is True and log!= []: df = df.drop(log).reset_index() @@ -614,8 +571,7 @@ def prioritise_rotd50(df, removal=None): msg =+ ' removed from flatfile (%s records)' % no_vals print(msg) if len(df) == 0: - raise ValueError('All records have been removed from the flatfile') - + raise ValueError('All records have been removed from the flatfile') elif log != []: print('%s records do not have acc. values at required periods' % no_vals) @@ -623,5 +579,5 @@ def prioritise_rotd50(df, removal=None): tmp = tempfile.mkdtemp() converted_base_data_path = os.path.join(DATA, tmp, 'converted_flatfile.csv') df.to_csv(converted_base_data_path, sep=';') - + return converted_base_data_path \ No newline at end of file diff --git a/openquake/smt/parsers/ngawest2_flatfile_parser.py b/openquake/smt/parsers/ngawest2_flatfile_parser.py index 41c876c78..9a9a10746 100644 --- a/openquake/smt/parsers/ngawest2_flatfile_parser.py +++ b/openquake/smt/parsers/ngawest2_flatfile_parser.py @@ -277,8 +277,9 @@ def autobuild(cls, dbid, dbname, output_location, NGAWest2_vertical['T4.500S']=(NGAWest2_vertical[ 'T4.400S']+NGAWest2_vertical['T4.600S'])/2 + # Get path to tmp csv once modified dataframe converted_base_data_path=_get_ESM18_headers( - NGAWest2,NGAWest2_vertical,Initial_NGAWest2_size) + NGAWest2, NGAWest2_vertical, Initial_NGAWest2_size) if os.path.exists(output_location): raise IOError("Target database directory %s already exists!" diff --git a/openquake/smt/tests/parsers/data/GEM_flatfile_test.csv b/openquake/smt/tests/parsers/data/GEM_flatfile_test.csv new file mode 100644 index 000000000..6dc3ad26f --- /dev/null +++ b/openquake/smt/tests/parsers/data/GEM_flatfile_test.csv @@ -0,0 +1,6 @@ +,orig_db,orig_db_license,eq_st_combo,orig_db_rec_identifier,event_id,event_time,event_time_checks,esm_ev_id,ISC_ev_id,USGS_ev_id,INGV_ev_id,EMSC_ev_id,ev_nation_code,ev_latitude,ev_longitude,ev_depth_km,ev_hyp_ref,fm_type_code,ML,ML_ref,Mw,Mw_ref,Ms,Ms_ref,EMEC_Mw,EMEC_Mw_type,EMEC_Mw_ref,event_source_id,es_strike,es_dip,es_rake,es_strike_dip_rake_ref,es_z_top,es_z_top_ref,es_length,es_width,es_geometry_ref,network_code,station_code_orig,station_code,location_code,instrument_code,sensor_depth_m,proximity_code,housing_code,installation_code,st_nation_code,st_latitude,st_longitude,st_elevation,ec8_code,ec8_code_method,ec8_code_ref,vs30_m_sec,vs30_ref,vs30_calc_method,vs30_meas_type,slope_deg,vs30_m_sec_WA,epi_dist,epi_az,JB_dist,rup_dist,Rx_dist,Ry0_dist,instrument_type_code,late_triggered_flag_01,U_channel_code,U_azimuth_deg,V_channel_code,V_azimuth_deg,W_channel_code,U_hp,V_hp,W_hp,U_lp,V_lp,W_lp,rotd50_flag,Shortest_Usable_Period_for_PSA_Ave_Over_Components,Longest_Usable_Period_for_PSA_Ave_Over_Components,U_pga,V_pga,W_pga,rotD50_pga,rotD100_pga,rotD00_pga,U_pgv,V_pgv,W_pgv,rotD50_pgv,rotD100_pgv,rotD00_pgv,U_pgd,V_pgd,W_pgd,rotD50_pgd,rotD100_pgd,rotD00_pgd,U_T90,V_T90,W_T90,rotD50_T90,rotD100_T90,rotD00_T90,U_housner,V_housner,W_housner,rotD50_housner,rotD100_housner,rotD00_housner,U_CAV,V_CAV,W_CAV,rotD50_CAV,rotD100_CAV,rotD00_CAV,U_ia,V_ia,W_ia,rotD50_ia,rotD100_ia,rotD00_ia,U_T0_010,U_T0_025,U_T0_040,U_T0_050,U_T0_070,U_T0_100,U_T0_150,U_T0_200,U_T0_250,U_T0_300,U_T0_350,U_T0_400,U_T0_450,U_T0_500,U_T0_600,U_T0_700,U_T0_750,U_T0_800,U_T0_900,U_T1_000,U_T1_200,U_T1_400,U_T1_600,U_T1_800,U_T2_000,U_T2_500,U_T3_000,U_T3_500,U_T4_000,U_T4_500,U_T5_000,U_T6_000,U_T7_000,U_T8_000,U_T9_000,U_T10_000,V_T0_010,V_T0_025,V_T0_040,V_T0_050,V_T0_070,V_T0_100,V_T0_150,V_T0_200,V_T0_250,V_T0_300,V_T0_350,V_T0_400,V_T0_450,V_T0_500,V_T0_600,V_T0_700,V_T0_750,V_T0_800,V_T0_900,V_T1_000,V_T1_200,V_T1_400,V_T1_600,V_T1_800,V_T2_000,V_T2_500,V_T3_000,V_T3_500,V_T4_000,V_T4_500,V_T5_000,V_T6_000,V_T7_000,V_T8_000,V_T9_000,V_T10_000,W_T0_010,W_T0_025,W_T0_040,W_T0_050,W_T0_070,W_T0_100,W_T0_150,W_T0_200,W_T0_250,W_T0_300,W_T0_350,W_T0_400,W_T0_450,W_T0_500,W_T0_600,W_T0_700,W_T0_750,W_T0_800,W_T0_900,W_T1_000,W_T1_200,W_T1_400,W_T1_600,W_T1_800,W_T2_000,W_T2_500,W_T3_000,W_T3_500,W_T4_000,W_T4_500,W_T5_000,W_T6_000,W_T7_000,W_T8_000,W_T9_000,W_T10_000,rotD50_T0_010,rotD50_T0_025,rotD50_T0_040,rotD50_T0_050,rotD50_T0_070,rotD50_T0_100,rotD50_T0_150,rotD50_T0_200,rotD50_T0_250,rotD50_T0_300,rotD50_T0_350,rotD50_T0_400,rotD50_T0_450,rotD50_T0_500,rotD50_T0_600,rotD50_T0_700,rotD50_T0_750,rotD50_T0_800,rotD50_T0_900,rotD50_T1_000,rotD50_T1_200,rotD50_T1_400,rotD50_T1_600,rotD50_T1_800,rotD50_T2_000,rotD50_T2_500,rotD50_T3_000,rotD50_T3_500,rotD50_T4_000,rotD50_T4_500,rotD50_T5_000,rotD50_T6_000,rotD50_T7_000,rotD50_T8_000,rotD50_T9_000,rotD50_T10_000,rotD100_T0_010,rotD100_T0_025,rotD100_T0_040,rotD100_T0_050,rotD100_T0_070,rotD100_T0_100,rotD100_T0_150,rotD100_T0_200,rotD100_T0_250,rotD100_T0_300,rotD100_T0_350,rotD100_T0_400,rotD100_T0_450,rotD100_T0_500,rotD100_T0_600,rotD100_T0_700,rotD100_T0_750,rotD100_T0_800,rotD100_T0_900,rotD100_T1_000,rotD100_T1_200,rotD100_T1_400,rotD100_T1_600,rotD100_T1_800,rotD100_T2_000,rotD100_T2_500,rotD100_T3_000,rotD100_T3_500,rotD100_T4_000,rotD100_T4_500,rotD100_T5_000,rotD100_T6_000,rotD100_T7_000,rotD100_T8_000,rotD100_T9_000,rotD100_T10_000,rotD00_T0_010,rotD00_T0_025,rotD00_T0_040,rotD00_T0_050,rotD00_T0_070,rotD00_T0_100,rotD00_T0_150,rotD00_T0_200,rotD00_T0_250,rotD00_T0_300,rotD00_T0_350,rotD00_T0_400,rotD00_T0_450,rotD00_T0_500,rotD00_T0_600,rotD00_T0_700,rotD00_T0_750,rotD00_T0_800,rotD00_T0_900,rotD00_T1_000,rotD00_T1_200,rotD00_T1_400,rotD00_T1_600,rotD00_T1_800,rotD00_T2_000,rotD00_T2_500,rotD00_T3_000,rotD00_T3_500,rotD00_T4_000,rotD00_T4_500,rotD00_T5_000,rotD00_T6_000,rotD00_T7_000,rotD00_T8_000,rotD00_T9_000,rotD00_T10_000,Retained_database_specific_information,Event_trt,NGASUB_subduction_zone_name,NGASUB_subduction_event_type,NGASUB_Volcanic_Arc_Station_Flag,NGASUB_Volcanic_Arc_Hypocentre_Flag,ev_st_combinations,model,model_ssm +0,ESM,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_EMSC-20161026_0000077_&_ST_MZ01,,EQ_EMSC-20161026_0000077,2016-10-26 17:10:37,2016-10-26 17:10:00,EMSC-20161026_0000077,611830883,us20007guy,8663031,20161026_0000077,,42.88834,13.13969,3.421,,NF,5.23,Spallarossa_et_al_2021,5.5,Pondrelli_et_al_2002_dataset,5.26,ISC-webservice,,,,,161,38,-90,,,from_nucleation_depth,8.1,5.22396,,3A,MZ01,MZ01_ESM,,D,0,,,,,42.671575,13.270813,859,B,vs_profile,EmerTer_Project_2017_2018,432,IGAG_CentroMS,,MASW,2.99,495.7,26.36251853,155.9379295,22.54138981,23.31192011,-0.72,22.53,D,0,E,90,N,0,Z,0.08,0.08,0.08,30,30,30,Both horizontal components and RotD50.,0.026666667,15.625,-108.780061,222.716024,-45.881192,158.0578535,223.527557,100.333954,-6.29355,-11.968429,1.87797,8.49725,11.9684,5.66205,-0.491045,0.816809,0.409598,0.5915245,0.819616,5.66205,5.115,3.5,7.075,4.0375,5.22,3.29,15.8938,22.4358,6.56143,17.28745,22.4361,15.4313,222.3692659,249.1042814,98.69522581,237.2638944,281.3945904,219.5205067,11.72180552,20.44563019,1.706962667,16.08371738,21.20602943,10.96140531,108.814,109.145,113.382,113.855,131.154,157.119,209.572,287.553,322.037,470.346,485.438,366.386,230.659,150.823,147.798,88.6999,74.8389,56.7993,50.7337,45.2617,31.7445,17.8258,10.69,8.3071,5.9755,4.94116,4.19675,2.94533,1.77386,1.43809,1.10865,0.808699,0.646502,0.555276,0.485435,0.430637,222.754,223.874,223.206,233.682,226.536,229.423,367.39,689.011,604.778,614.015,558.911,464.005,384.068,304.436,181.511,116.186,101.368,89.2144,69.9108,54.475,36.2397,25.3938,18.5248,14.0174,10.9633,6.5821,4.62422,3.73092,3.46864,2.7935,1.90001,1.37214,1.1054,0.939974,0.825001,0.738696,46.0036,46.7648,49.8155,55.3152,56.0385,97.4233,87.01,109.309,141.071,128.861,138.416,105.426,73.6946,47.991,41.638,32.189,28.8204,22.6039,23.6324,20.3062,11.4845,8.40455,6.18486,5.77979,5.52651,5.29949,5.60751,4.01614,2.89897,1.92162,1.26359,0.71051,0.451174,0.32469,0.251564,0.210068,158.237,159.057,160.614,166.106,163.9575,172.0525,267.403,541.9695,509.462,477.9505,486.2615,439.2885,321.112,237.947,157.5885,95.1981,76.06495,63.2522,50.7961,44.6243,31.13795,20.54695,13.13655,9.948655,7.798775,6.13877,4.5332,3.48062,2.587275,2.129465,1.746825,1.201655,0.9443365,0.7416165,0.599498,0.5308465,223.582,224.737,224.181,234.909,227.348,229.636,369.917,694.73,614.773,614.015,558.911,474.467,398.221,304.436,183.322,116.499,101.444,89.2144,69.9108,54.475,36.2397,25.396,18.5646,14.0695,11.0188,6.64568,4.70183,4.07226,3.48888,2.82703,2.0778,1.39204,1.11718,0.947651,0.830024,0.742738,100.334,100.603,104.649,104.309,119.811,132.008,195.791,228.186,272.999,345.806,358.876,205.642,200.462,150.823,114.108,76.1539,65.8692,52.0546,39.8062,35.2361,22.6864,14.8157,9.6153,7.65188,5.67826,4.32238,3.16842,2.29032,1.67326,1.24244,0.982716,0.764951,0.629198,0.548478,0.48188,0.427676,,,,,,,ev_lon13.14ev_lat42.888st_lon13.2708st_lat42.6716,EUR,EUR +1,NGAWest2,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_HelenaMontana-01_&_ST_CarrollCollege,1,EQ_HelenaMontana-01,1935-10-31 18:38:00,1935-10-31 18:38:00,,,,,,,46.61,-111.96,6,,U,,,5.999478682,,,,,,,,75,75,160,,,,,,,USGS,CarrollCollege,CarrollCollege_NGAWest2,,,,,,,,46.58,-112.03,,,,,593.35,3b_4b_4c,,"('3b_4b_4c (check NGAWest2 flatfile for details)',)",,,6.31,,2.07,,-2.07,8.046385723,,,H1,180,H2,270,V,,,,,,,Only RotD50.,Shortest usable period is not provided for NGAWest2 db,6.134969325,,,97.170012,154.017,,,,,8.7544,10.1,,,,,3.7782,3.01,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,101.60217,109.30302,160.75647,193.72788,233.45838,262.27035,242.86617,137.94822,195.08166,184.61439,184.60458,165.87729,132.42519,98.65917,52.244136,42.072147,42.649956,43.504407,45.100494,46.611234,54.132561,56.968632,53.050518,44.712018,38.924118,27.213921,18.330966,12.42927,8.7433587,7.00438905,5.6328039,3.740553,2.8117422,2.1854718,1.7450028,1.4245101,158.922,161.865,220.725,263.889,358.065,310.977,416.925,252.117,287.433,294.3,298.224,270.756,172.656,140.283,105.948,97.119,91.0368,91.5273,99.081,99.081,83.0907,63.765,51.5025,43.7526,35.2179,22.1706,15.0093,10.3986,7.83819,5.77809,4.55184,2.98224,2.12877,1.6677,1.34397,1.09872,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ASCR,,,,,ev_lon-111.96ev_lat46.61st_lon-112.03st_lat46.58,USA,USA +2,NGASUB,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_32_&_ST_0,3001112,EQ_32,1992-05-23 10:30:00,1992-05-23 10:30:00,,,,,,,13.475,-89.968,30.3,,TF,,,6.01,,,,,,,,266,31,64,,28.871,,,,,MARN,0,0_NGASUB,,,,,,,,13.901,-89.932,,,,,519,,,0 (check NGASUB flatfile for details),,,47.52844,,42.3033488,53.7305448,49.36,-6.15,,,H1,0,H2,90,V,,,,,,,Only RotD50.,-999,1.120393132,,,,19.587627,,,,,,1.2827,,,,,,0.12268,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19.77965775,23.00567625,22.57553718,21.93305085,27.28007964,40.56590979,44.0809407,47.56503087,45.49767147,43.657443,59.85950166,55.47373515,66.88610055,47.69909433,36.10163385,32.12992782,31.02004404,25.57102068,18.32013576,12.56328441,8.49204612,5.340633651,3.360548916,2.373493203,1.814767596,0.935975043,0.565687764,0.477673425,0.308442096,0.258203615,0.206077689,0.151994178,0.115239051,0.102401685,0.0792648,0.0591543,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Crustal (Subduction),Central_America_N,Crustal (Subduction),"Forearc, Forearc NE in Japan","Forearc, Forearc NE in Japan",ev_lon-89.968ev_lat13.475st_lon-89.932st_lat13.901,CCA,CCA +3,Turkiye_SMD_DB,Unrestricted non-commercial use with acknowledgement/citation (stated Open Data Commons Attribution license on designsafe-ci.org),EQ_1976-08-19 01:12:39_&_ST_2001,,EQ_1976-08-19_01_12_39,1976-08-19 01:12:39,1976-08-19 01:12:00,,,,,,,37.751,29.012,15,,NF,,,5.3,,,,,,,,164,45,-30,,13.1658,,,,,TK,2001,2001_Turkiye_SMD,,,,,,,,37.76219,29.09222,427,,,,345,,,measured,,,7.2,,5.3,14,-5.3,0,,,H1,0,H2,90,V,0.5,0.7,0.6,50,35,35,"Both horizontal components, geometric mean and RotD50.",,1,349.4699685,265.0300011,175.139892,345.196345,397.5286327,,25.71706851,16.74596444,3.691003062,20.92157556,25.96406635,,2.321535194,1.306427358,0.424777783,1.76671965,2.308163168,,,,,,,,,,,,,,42.81945921,39.91230851,23.01366895,41.83484503,43.05897711,,,,,,,,352.5137751,371.7939459,436.9675422,473.7189885,467.1723851,650.984528,566.0361838,637.8539283,928.4857133,644.5311038,585.407876,887.7871752,919.7338768,948.991776,762.4288679,516.614736,453.5151081,371.1364385,245.3134717,185.3005298,114.8505799,87.79503155,58.68839465,41.24137244,29.23518517,17.74726511,11.58969587,7.740172404,5.475992031,4.138949853,3.428248707,2.445621228,1.795600818,1.359768024,1.059524145,0.846344997,269.0489776,315.4147958,446.7169037,502.7303016,580.1022935,601.7686556,669.0149803,513.9840746,605.2320967,689.0293168,741.2015887,761.1543213,687.0242951,634.9311045,441.632002,298.5782685,259.1369202,221.1998158,154.9156735,104.9689787,68.85758976,42.83862094,28.18929398,20.15359827,15.35405675,9.035385723,5.965897545,4.242641553,3.185243235,2.493461164,2.005100235,1.388219967,1.0213191,0.783943587,0.621046575,0.504247734,178.5869426,203.5847865,370.0625309,494.5172372,583.0962035,463.9003341,373.5391027,215.1353444,262.739266,145.3607659,153.2835769,128.5626722,118.3886555,101.3540486,79.6795099,55.25484658,53.83497073,54.65994366,52.58029625,36.43523958,26.55829614,23.75661311,16.95943971,10.26755115,9.107675613,3.5656407,1.966543992,1.321249059,0.994831119,0.781450376,0.630628002,0.439305534,0.324726696,0.250134399,0.198685854,0.16164918,349.601708,369.5689143,435.3062216,471.504741,511.8556784,607.3665359,560.8208788,552.4788943,788.0604967,658.995012,690.0313112,820.4574792,813.3028167,771.7576442,590.6726264,392.3657239,345.7152999,284.6507653,197.1927543,140.7055334,88.60075431,62.86843075,45.85777106,31.90222202,21.49231404,13.26438549,9.207631665,6.516281709,4.700142675,3.722125896,2.745626724,1.82487582,1.340730738,1.029177891,0.814873536,0.660902643,401.4325555,420.6328004,461.3746721,503.7327865,597.825012,810.1050529,675.9317268,646.6043002,963.3097379,713.7606496,918.9786853,961.08658,966.5096431,953.7293576,773.8470487,532.937026,483.8884004,398.3168299,262.4140606,188.1390455,117.2709159,88.76718979,60.81813192,41.28863309,29.30295952,17.87134396,11.67445917,7.796032506,5.664512763,4.452417612,3.444079104,2.45398131,1.801078722,1.363887243,1.062860526,0.849159486,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ACR_shallow,,,,,ev_lon29.012ev_lat37.751st_lon29.0922st_lat37.7622,MIE,MIE +4,kiknet,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_2017_12_31_071100_&_ST_OITH11,OITH111712310711,EQ_2017_12_31_071100,2017-12-31 07:11:00,2017-12-31 07:11:00,,,,,,,33.33,132.197,52,,TF,,,3.9,,,,,,,,353,27,-132,,,,,,,kiknet,OITH11,OITH11_kiknet,,,,,,,,33.2844,131.2118,,,,,458.5260518,,,measured,,,91.77380711,,89.8074312,103.2607496,-89.43607088,6.47537781,,,H1,0,H2,90,V,,,,,,,Two horizontal components only.,0.025,4,1.148,1.125,,1.14094224,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.1455137,1.170333,1.2639204,1.4065578,2.0498976,3.7883277,5.04234,1.9111842,0.979038,0.8370873,0.8371854,0.567018,0.3585555,0.3014613,0.2554524,0.1702035,0.1655928,0.1499949,0.0998658,0.0845622,0.0375723,0.0442431,0.0243288,0.0206991,0.0161865,0.0092214,0.0054936,0.0037278,0.002943,0.00220725,0.001962,0.0014715,0.0008829,0.0008829,0.0008829,0.0008829,0.0011448,0.0011698,0.0012715,0.0013027,0.0018758,0.0035329,0.0045913,0.002345,0.0013091,0.001148,0.0006805,0.0006129,0.0003926,0.0003049,0.0002422,0.0002107,0.0001877,0.0001466,0.0001078,8.49E-05,6.12E-05,4.22E-05,2.70E-05,1.73E-05,1.75E-05,1.04E-05,6.40E-06,5.70E-06,3.90E-06,2.75E-06,2.30E-06,1.20E-06,1.20E-06,9.00E-07,7.00E-07,7.00E-07,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.036285381,0.037007194,0.039449768,0.043300039,0.062195302,0.115582305,0.155538328,0.068399665,0.036625513,0.03174797,0.024466669,0.019124101,0.012179765,0.009847959,0.008088241,0.006163356,0.005740206,0.004829948,0.003456381,0.002622068,0.001543604,0.001427586,0.000819657,0.000601923,0.000509502,0.000301749,0.000189883,0.000146586,0.000107028,7.63E-05,6.81E-05,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ev_lon132.197ev_lat33.33st_lon131.2118st_lat33.2844,JPN,JPN diff --git a/openquake/smt/tests/parsers/gem_flatfile_parser_test.py b/openquake/smt/tests/parsers/gem_flatfile_parser_test.py new file mode 100644 index 000000000..a1d53ce7c --- /dev/null +++ b/openquake/smt/tests/parsers/gem_flatfile_parser_test.py @@ -0,0 +1,75 @@ +# -*- coding: utf-8 -*- +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# +# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill +# +# OpenQuake is free software: you can redistribute it and/or modify it +# under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# OpenQuake is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with OpenQuake. If not, see . +""" +Tests parsing of the GEM globally homogenised flatfile using the parser +""" +import os +import sys +import shutil +import unittest +from openquake.smt.parsers.gem_flatfile_parser import GEMFlatfileParser + +if sys.version_info[0] >= 3: + import pickle +else: + import cPickle as pickle + +# Defines the record IDs for the target data set +TARGET_IDS = [ +"EQ_EMSC_20161026_0000077_3A_MZ01_ESM_", +"EQ_HelenaMontana_01_USGS_CarrollCollege_NGAWest2_", +"EQ_32_MARN_0_NGASUB_", +"EQ_1976_08_19_01_12_39_TK_2001_Turkiye_SMD_", +"EQ_2017_12_31_071100_kiknet_OITH11_kiknet_"] + +#Specify base directory +BASE_DATA_PATH = os.path.join(os.path.dirname(__file__), "data") + +class GEMFlatfileParserTestCase(unittest.TestCase): + """ + Tests the parsing of the GEM global flatfile + """ + @classmethod + def setUpClass(cls): + cls.GEM_flatfile_directory = os.path.join(BASE_DATA_PATH, + "GEM_flatfile_test.csv") + cls.db_file = os.path.join(BASE_DATA_PATH, + "ESM_conversion_test_metadata") + + def test_gem_flatfile_parser(self): + """ + Tests the parsing of the GEM flatfile + """ + parser = GEMFlatfileParser.autobuild("000", "GEM_conversion_test", + self.db_file, self.GEM_flatfile_directory) + with open(os.path.join(self.db_file, "metadatafile.pkl"), "rb") as f: + db = pickle.load(f) + # Should contain 5 records + self.assertEqual(len(db), 5) + # Record IDs should be equal to the specified target IDs + for rec in db: + print(rec.id) + self.assertListEqual([rec.id for rec in db], TARGET_IDS) + del parser + + @classmethod + def tearDownClass(cls): + """ + Remove the database + """ + shutil.rmtree(cls.db_file) \ No newline at end of file From d19a90cff0ee992d4e7a9f7562c4888b2c597bd5 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 8 Mar 2024 18:43:58 +0100 Subject: [PATCH 44/59] update --- openquake/smt/parsers/gem_flatfile_parser.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openquake/smt/parsers/gem_flatfile_parser.py b/openquake/smt/parsers/gem_flatfile_parser.py index e5ac4e240..ca5cb9419 100644 --- a/openquake/smt/parsers/gem_flatfile_parser.py +++ b/openquake/smt/parsers/gem_flatfile_parser.py @@ -541,13 +541,14 @@ def _prioritise_rotd50(df, removal=None): """ If a record has RotD50 take this instead of geometric mean from the global flatfile. If no RotD50 use the horizontal components if available (crude - proxy). If no horizontal components log the record or remove is specified. + proxy). If no horizontal components log the record or remove if specified. :param removal: If set to true records with out acceleration values for all of the required spectral periods are removed, else the number of records lacking this information will be printed instead """ + # Manage RotD50 vs horizontal components log = [] for idx, rec in df.iterrows(): for col in rec.index: From 9f00fec2381a36349e5fda5ec9f2e07c017a015d Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 8 Mar 2024 18:46:37 +0100 Subject: [PATCH 45/59] update --- openquake/smt/parsers/gem_flatfile_parser.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/openquake/smt/parsers/gem_flatfile_parser.py b/openquake/smt/parsers/gem_flatfile_parser.py index ca5cb9419..6799a938d 100644 --- a/openquake/smt/parsers/gem_flatfile_parser.py +++ b/openquake/smt/parsers/gem_flatfile_parser.py @@ -16,8 +16,10 @@ # You should have received a copy of the GNU Affero General Public License # along with OpenQuake. If not, see . """ -Parse the GEM globally homogenised flatfile (currently for internal use only) -into SMT metadata +Parse the GEM globally homogenised flatfile (currently available internally only) +into SMT metadata. The flatfile already has ESM18 flatfile formatting, but this +parser allows some additional management of the records within this homogenised +flatfile (additional capabilities will be added to this parser in the future) """ import pandas as pd import os, sys From c610a5ebfdf300e24ae55a432bf689ffc7b40e24 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 8 Mar 2024 18:47:59 +0100 Subject: [PATCH 46/59] update --- openquake/smt/tests/parsers/gem_flatfile_parser_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openquake/smt/tests/parsers/gem_flatfile_parser_test.py b/openquake/smt/tests/parsers/gem_flatfile_parser_test.py index a1d53ce7c..a72028271 100644 --- a/openquake/smt/tests/parsers/gem_flatfile_parser_test.py +++ b/openquake/smt/tests/parsers/gem_flatfile_parser_test.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published From f6f2af02b6811e681167f5c43f9d84c2fc19a5c0 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 8 Mar 2024 19:05:23 +0100 Subject: [PATCH 47/59] update --- openquake/smt/parsers/gem_flatfile_parser.py | 32 ++++++++++++-------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/openquake/smt/parsers/gem_flatfile_parser.py b/openquake/smt/parsers/gem_flatfile_parser.py index 6799a938d..6fd5f340d 100644 --- a/openquake/smt/parsers/gem_flatfile_parser.py +++ b/openquake/smt/parsers/gem_flatfile_parser.py @@ -114,7 +114,7 @@ def parse(self, location='./'): @classmethod def autobuild(cls, dbid, dbname, output_location, ESM_flatfile_directory, - removal=None): + check_up_to=None, removal=None): """ Quick and dirty full database builder! """ @@ -122,7 +122,7 @@ def autobuild(cls, dbid, dbname, output_location, ESM_flatfile_directory, GEM = pd.read_csv(ESM_flatfile_directory) # Get path to tmp csv once modified dataframe - converted_base_data_path=_prioritise_rotd50(GEM, removal) + converted_base_data_path=_prioritise_rotd50(GEM, check_up_to, removal) if os.path.exists(output_location): raise IOError("Target database directory %s already exists!" @@ -541,14 +541,21 @@ def _retreive_ground_motion_from_row(self, row, header_list): def _prioritise_rotd50(df, removal=None): """ - If a record has RotD50 take this instead of geometric mean from the global - flatfile. If no RotD50 use the horizontal components if available (crude - proxy). If no horizontal components log the record or remove if specified. + If a record has RotD50 take this instead of geometric mean of horizontal + components from the global flatfile for use in residual analysis (this is + done by assigning RotD50 to H1 and H2). + + If no RotD50 use the horizontal components (from which the geometric mean + is calculated if available (crude but acceptable proxy for RotD50). + + Records lacking acceleration values for any of the required spectral periods + can also be removed (this information can alternatively just be printed) :param removal: - If set to true records with out acceleration values for all of the - required spectral periods are removed, else the number of records - lacking this information will be printed instead + If set to true records without acceleration values for any of the + required spectral periods are removed (that is if for neither RotD50 or + horz. comps), else the number of records lacking this information will + be printed instead """ # Manage RotD50 vs horizontal components log = [] @@ -564,19 +571,20 @@ def _prioritise_rotd50(df, removal=None): if not pd.isnull(rec[rotd50_col]): # If RotD50... df[col].iloc[idx] = rec[rotd50_col] # Assign to H1, H2 else: - log.append(idx) + if pd.isnull(rec[col]): + log.append(idx) # No acc for this imt for horz either # Drop if req. or else just inform number of recs missing acceleration values no_vals = len(pd.Series(log).unique()) if removal is True and log!= []: df = df.drop(log).reset_index() - msg = 'Records without acc. values at required periods have been' - msg =+ ' removed from flatfile (%s records)' % no_vals + msg = 'Records without RotD50 acc. values at required periods' + msg =+ ' have been removed from flatfile (%s records)' % no_vals print(msg) if len(df) == 0: raise ValueError('All records have been removed from the flatfile') elif log != []: - print('%s records do not have acc. values at required periods' % no_vals) + print('%s records do not have RotD50 acc. values at required periods' % no_vals) # Output to folder where converted flatfile read into parser tmp = tempfile.mkdtemp() From e4a375c907194c06889cb6433f9022b371a21764 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 8 Mar 2024 19:08:52 +0100 Subject: [PATCH 48/59] update --- openquake/smt/parsers/gem_flatfile_parser.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/openquake/smt/parsers/gem_flatfile_parser.py b/openquake/smt/parsers/gem_flatfile_parser.py index 6fd5f340d..c968095d2 100644 --- a/openquake/smt/parsers/gem_flatfile_parser.py +++ b/openquake/smt/parsers/gem_flatfile_parser.py @@ -17,10 +17,13 @@ # along with OpenQuake. If not, see . """ Parse the GEM globally homogenised flatfile (currently available internally only) -into SMT metadata. The flatfile already has ESM18 flatfile formatting, but this -parser allows some additional management of the records within this homogenised -flatfile (additional capabilities will be added to this parser in the future) +into SMT metadata. + +The flatfile already has formatting (ESM18 format) permitting parsing into SMT +metadata. More capabilities for managing the records and information within +the GEM global flatfile will be added to this parser in the future. """ + import pandas as pd import os, sys import tempfile From c9519631677fe301d6036c42091dacc84048cd0d Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 8 Mar 2024 19:52:11 +0100 Subject: [PATCH 49/59] update --- openquake/smt/parsers/gem_flatfile_parser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openquake/smt/parsers/gem_flatfile_parser.py b/openquake/smt/parsers/gem_flatfile_parser.py index c968095d2..bbd22bace 100644 --- a/openquake/smt/parsers/gem_flatfile_parser.py +++ b/openquake/smt/parsers/gem_flatfile_parser.py @@ -125,7 +125,7 @@ def autobuild(cls, dbid, dbname, output_location, ESM_flatfile_directory, GEM = pd.read_csv(ESM_flatfile_directory) # Get path to tmp csv once modified dataframe - converted_base_data_path=_prioritise_rotd50(GEM, check_up_to, removal) + converted_base_data_path=_prioritise_rotd50(GEM, removal) if os.path.exists(output_location): raise IOError("Target database directory %s already exists!" From 677ebb5c82e346bff9c8812b810a8aa4b9e78b75 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 9 Mar 2024 08:29:53 +0100 Subject: [PATCH 50/59] update --- openquake/smt/parsers/gem_flatfile_parser.py | 68 +++++++++++-------- .../tests/parsers/gem_flatfile_parser_test.py | 10 ++- 2 files changed, 47 insertions(+), 31 deletions(-) diff --git a/openquake/smt/parsers/gem_flatfile_parser.py b/openquake/smt/parsers/gem_flatfile_parser.py index bbd22bace..f89665ce1 100644 --- a/openquake/smt/parsers/gem_flatfile_parser.py +++ b/openquake/smt/parsers/gem_flatfile_parser.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vim: tabstop=4 shiftwidth=4 softtabstop=4 # -# Copyright (C) 2014-2024 GEM Foundation and G. Weatherill +# Copyright (C) 2014-2024 GEM Foundation # # OpenQuake is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published @@ -16,14 +16,8 @@ # You should have received a copy of the GNU Affero General Public License # along with OpenQuake. If not, see . """ -Parse the GEM globally homogenised flatfile (currently available internally only) -into SMT metadata. - -The flatfile already has formatting (ESM18 format) permitting parsing into SMT -metadata. More capabilities for managing the records and information within -the GEM global flatfile will be added to this parser in the future. +Parse the GEM globally homogenised flatfile into SMT metadata. """ - import pandas as pd import os, sys import tempfile @@ -117,7 +111,7 @@ def parse(self, location='./'): @classmethod def autobuild(cls, dbid, dbname, output_location, ESM_flatfile_directory, - check_up_to=None, removal=None): + proxy=None, removal=None): """ Quick and dirty full database builder! """ @@ -125,7 +119,7 @@ def autobuild(cls, dbid, dbname, output_location, ESM_flatfile_directory, GEM = pd.read_csv(ESM_flatfile_directory) # Get path to tmp csv once modified dataframe - converted_base_data_path=_prioritise_rotd50(GEM, removal) + converted_base_data_path=_prioritise_rotd50(GEM, proxy, removal) if os.path.exists(output_location): raise IOError("Target database directory %s already exists!" @@ -542,28 +536,34 @@ def _retreive_ground_motion_from_row(self, row, header_list): return scalars, spectra -def _prioritise_rotd50(df, removal=None): +def _prioritise_rotd50(df, proxy=None, removal=None): """ - If a record has RotD50 take this instead of geometric mean of horizontal - components from the global flatfile for use in residual analysis (this is - done by assigning RotD50 to H1 and H2). + Assign RotD50 values to accelerations for computation of residuals. RotD50 + is available for the vast majority of the records in the GEM flatfile for + PGA to 10 s (KikNet subset of records is limited to up to 5 s because we + use Beyes and Bommer 2006 to convert from horizontals to RotD50). - If no RotD50 use the horizontal components (from which the geometric mean - is calculated if available (crude but acceptable proxy for RotD50). + If no RotD50 use the geometric mean if available (if specified) as a proxy + for RotD50. Records lacking acceleration values for any of the required spectral periods can also be removed (this information can alternatively just be printed) + :param proxy: + If set to true, if a record is missing RotD50 try and use the geometric + mean of the horizontal components + :param removal: - If set to true records without acceleration values for any of the - required spectral periods are removed (that is if for neither RotD50 or - horz. comps), else the number of records lacking this information will - be printed instead + If set to true records without complete RotD50 (or complete RotD50 with + use of geometric mean as proxy - if proxy is True) for any of the required + spectral periods are removed. """ # Manage RotD50 vs horizontal components - log = [] + log, cols = [], [] for idx, rec in df.iterrows(): for col in rec.index: + if 'rotD' in col: + cols.append(col) if 'U_T' in col or 'V_T' in col or 'U_pga' in col or 'V_pga' in col: if 'T90' not in col: if 'U_' in col: @@ -571,24 +571,34 @@ def _prioritise_rotd50(df, removal=None): if 'V_' in col: rotd50_col = col.replace('V_', 'rotD50_') - if not pd.isnull(rec[rotd50_col]): # If RotD50... - df[col].iloc[idx] = rec[rotd50_col] # Assign to H1, H2 + # If RotD50... + if not pd.isnull(rec[rotd50_col]): + df[col].iloc[idx] = rec[rotd50_col] # Assign to h1, h2 + + # Otherwise... else: - if pd.isnull(rec[col]): - log.append(idx) # No acc for this imt for horz either + if proxy is True: # Use geo. mean as proxy + if not pd.isnull(rec[col]): + pass # Can use geo. mean from h1, h2 as proxy + else: + log.append(idx) # Log rec as incomplete RotD50 vals + # Tidy dataframe + cols = pd.Series(cols).unique() + df = df.drop(columns=cols) + # Drop if req. or else just inform number of recs missing acceleration values no_vals = len(pd.Series(log).unique()) if removal is True and log!= []: df = df.drop(log).reset_index() - msg = 'Records without RotD50 acc. values at required periods' - msg =+ ' have been removed from flatfile (%s records)' % no_vals + msg = 'Records without RotD50 acc. values at all required periods' + msg += ' have been removed from flatfile (%s records)' % no_vals print(msg) if len(df) == 0: raise ValueError('All records have been removed from the flatfile') elif log != []: - print('%s records do not have RotD50 acc. values at required periods' % no_vals) - + print('%s records do not have RotD50 for all req. periods' % no_vals) + # Output to folder where converted flatfile read into parser tmp = tempfile.mkdtemp() converted_base_data_path = os.path.join(DATA, tmp, 'converted_flatfile.csv') diff --git a/openquake/smt/tests/parsers/gem_flatfile_parser_test.py b/openquake/smt/tests/parsers/gem_flatfile_parser_test.py index a72028271..278e343db 100644 --- a/openquake/smt/tests/parsers/gem_flatfile_parser_test.py +++ b/openquake/smt/tests/parsers/gem_flatfile_parser_test.py @@ -53,10 +53,16 @@ def setUpClass(cls): def test_gem_flatfile_parser(self): """ - Tests the parsing of the GEM flatfile + Tests the parsing of the GEM flatfile. + + Checks the proxy will give the KiKNet record the geometric mean of the + horizontal components as a proxy for the missing RotD50 acc values beyond + 5 s + the removal option will then not discard this record as RotD50 is + now 'complete' for all required spectral periods """ parser = GEMFlatfileParser.autobuild("000", "GEM_conversion_test", - self.db_file, self.GEM_flatfile_directory) + self.db_file, self.GEM_flatfile_directory, + removal=True, proxy=True) with open(os.path.join(self.db_file, "metadatafile.pkl"), "rb") as f: db = pickle.load(f) # Should contain 5 records From ce2da141d6fd176271c4857ee6e595de32d383eb Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 10 Mar 2024 10:45:03 +0100 Subject: [PATCH 51/59] update --- openquake/smt/parsers/gem_flatfile_parser.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/openquake/smt/parsers/gem_flatfile_parser.py b/openquake/smt/parsers/gem_flatfile_parser.py index f89665ce1..ea002d243 100644 --- a/openquake/smt/parsers/gem_flatfile_parser.py +++ b/openquake/smt/parsers/gem_flatfile_parser.py @@ -60,7 +60,7 @@ "proximity_code;housing_code;installation_code;st_nation_code;"\ "st_latitude;st_longitude;st_elevation;ec8_code;"\ "ec8_code_method;ec8_code_ref;vs30_m_sec;vs30_ref;"\ - "vs30_calc_method;vs30_meas_type;slope_deg;vs30_m_sec_WA;"\ + "vs30_calc_method;vs30_meas_type;slope_deg;"\ "epi_dist;epi_az;JB_dist;rup_dist;Rx_dist;Ry0_dist;"\ "instrument_type_code;late_triggered_flag_01;U_channel_code;"\ "U_azimuth_deg;V_channel_code;V_azimuth_deg;W_channel_code;"\ @@ -337,14 +337,10 @@ def _parse_site_data(self, metadata): elevation = valid.vfloat(metadata["st_elevation"], "st_elevation") vs30 = valid.vfloat(metadata["vs30_m_sec"], "vs30_m_sec") - vs30_topo = valid.vfloat(metadata["vs30_m_sec_WA"], "vs30_m_sec_WA") - if vs30: - vs30_measured = True - elif vs30_topo: - vs30 = vs30_topo - vs30_measured = False - else: - vs30_measured = False + vs30_measured = None # User should check selected records (many diff. + # flatfiles --> see vs30_meas_type column for if + # vs30 if available was measured of inferred) + site = RecordSite(site_id, station_code, station_code, site_lon, site_lat, elevation, vs30, vs30_measured, network_code=network_code, country=None) From 22a65c9e4583d0e93c1415c7976d9412fa6de404 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 11 Mar 2024 11:06:45 +0100 Subject: [PATCH 52/59] update --- docsrc/contents/smt.rst | 2 +- openquake/smt/comparison/utils_gmpes.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docsrc/contents/smt.rst b/docsrc/contents/smt.rst index b14ca5f57..d8a53f4cd 100644 --- a/docsrc/contents/smt.rst +++ b/docsrc/contents/smt.rst @@ -113,7 +113,7 @@ We can specify the inputs to perform a residual analysis with as follows: [models.AbrahamsonEtAl2014] [models.AbrahamsonEtAl2014RegJPN] - region = "JPN" # nb currently a bug for specifically this gmm in the SMT where the user must still specify the region param despite the class name differentiating as regionalised variant (will be fixed!) + region = "JPN" # nb currently a bug for GMMs which use add_alias to regionalise from class name (currently need to still specify corresponding regionalisation params in toml) [models.BooreEtAl2014] diff --git a/openquake/smt/comparison/utils_gmpes.py b/openquake/smt/comparison/utils_gmpes.py index 50836346f..697c53a54 100644 --- a/openquake/smt/comparison/utils_gmpes.py +++ b/openquake/smt/comparison/utils_gmpes.py @@ -297,7 +297,7 @@ def mgmpe_check(gmpe): inputs = pd.Series(str(gmpe).splitlines()[1:], dtype='object') add_inputs = {} add_as_int = ['eshm20_region'] - add_as_str = ['region', 'gmpe_table', 'volc_arc_file'] + add_as_str = ['region', 'saturation_region', 'gmpe_table', 'volc_arc_file'] if len(inputs) > 0: # If greater than 0 must add required gsim inputs idx_to_drop = [] From 58865e78e20a7dc84e9a6aa7194993022482c65f Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 13 Mar 2024 11:20:57 +0100 Subject: [PATCH 53/59] update --- openquake/smt/demos/demo_comparison_script.py | 7 ++-- openquake/smt/demos/demo_residuals_script.py | 7 +--- openquake/smt/parsers/esm_flatfile_parser.py | 2 +- .../smt/parsers/esm_url_flatfile_parser.py | 1 + .../smt/parsers/esm_ws_flatfile_parser.py | 1 + openquake/smt/parsers/gem_flatfile_parser.py | 39 +++++++------------ .../tests/parsers/data/GEM_flatfile_test.csv | 12 +++--- 7 files changed, 29 insertions(+), 40 deletions(-) diff --git a/openquake/smt/demos/demo_comparison_script.py b/openquake/smt/demos/demo_comparison_script.py index 1b0b0ef51..49be29d7f 100644 --- a/openquake/smt/demos/demo_comparison_script.py +++ b/openquake/smt/demos/demo_comparison_script.py @@ -1,8 +1,7 @@ """ -This notebook provides a simple and efficient script for comparing candidate -GMPEs in terms of median predicted ground-motion using trellis plots, -hierarchical clustering plots, Euclidean distance matrix plots and Sammons Maps -plotting functions available within the SMT's comparison module. +This notebook provides a simple script for comparing candidate GMMs using +trellis plots, hierarchical clustering plots, Euclidean distance matrix plots +and Sammons Maps plotting functions available within the SMT's comparison module. """ import os import toml diff --git a/openquake/smt/demos/demo_residuals_script.py b/openquake/smt/demos/demo_residuals_script.py index cbc5941fe..b924e6766 100644 --- a/openquake/smt/demos/demo_residuals_script.py +++ b/openquake/smt/demos/demo_residuals_script.py @@ -1,9 +1,6 @@ """ -This demo script runs a residual analysis using a subset of the ESM flatfile -filtered geographically to Albania + an approximately 100 km buffer. - -The results generated by this workflow can be used to deduce which of the -preselected GMMs perform best for Albania. +This demo script runs a residual analysis using a subset of the URL-searchable +ESM database (https://esm-db.eu/esmws/flatfile/1/) """ import os import shutil diff --git a/openquake/smt/parsers/esm_flatfile_parser.py b/openquake/smt/parsers/esm_flatfile_parser.py index 029479ddc..fde3ef66e 100644 --- a/openquake/smt/parsers/esm_flatfile_parser.py +++ b/openquake/smt/parsers/esm_flatfile_parser.py @@ -89,7 +89,7 @@ class ESMFlatfileParser(SMDatabaseReader): def parse(self, location="./"): """ - Parse the metadata + Parse the flatfile """ assert os.path.isfile(self.filename) headers = getline(self.filename, 1).rstrip("\n").split(";") diff --git a/openquake/smt/parsers/esm_url_flatfile_parser.py b/openquake/smt/parsers/esm_url_flatfile_parser.py index 7528fd3d2..732e79522 100644 --- a/openquake/smt/parsers/esm_url_flatfile_parser.py +++ b/openquake/smt/parsers/esm_url_flatfile_parser.py @@ -81,6 +81,7 @@ class ESMFlatfileParserURL(SMDatabaseReader): def parse(self, location='./'): """ + Parse the flatfile """ assert os.path.isfile(self.filename) headers = getline(self.filename, 1).rstrip("\n").split(";") diff --git a/openquake/smt/parsers/esm_ws_flatfile_parser.py b/openquake/smt/parsers/esm_ws_flatfile_parser.py index 63654e9b2..137f79e3c 100644 --- a/openquake/smt/parsers/esm_ws_flatfile_parser.py +++ b/openquake/smt/parsers/esm_ws_flatfile_parser.py @@ -78,6 +78,7 @@ class ESMFlatfileParserWS(SMDatabaseReader): def parse(self, location='./'): """ + Parse the flatfile """ assert os.path.isfile(self.filename) headers = getline(self.filename, 1).rstrip("\n").split(";") diff --git a/openquake/smt/parsers/gem_flatfile_parser.py b/openquake/smt/parsers/gem_flatfile_parser.py index ea002d243..76c735b6b 100644 --- a/openquake/smt/parsers/gem_flatfile_parser.py +++ b/openquake/smt/parsers/gem_flatfile_parser.py @@ -52,19 +52,15 @@ HEADER_STR = "event_id;event_time;ISC_ev_id;USGS_ev_id;INGV_ev_id;"\ "EMSC_ev_id;ev_nation_code;ev_latitude;ev_longitude;"\ - "ev_depth_km;ev_hyp_ref;fm_type_code;ML;ML_ref;Mw;Mw_ref;Ms;"\ - "Ms_ref;EMEC_Mw;EMEC_Mw_type;EMEC_Mw_ref;event_source_id;"\ + "ev_depth_km;fm_type_code;ML;Mw;Ms;event_source_id;"\ "es_strike;es_dip;es_rake;es_strike_dip_rake_ref;es_z_top;"\ - "es_z_top_ref;es_length;es_width;es_geometry_ref;network_code;"\ - "station_code;location_code;instrument_code;sensor_depth_m;"\ - "proximity_code;housing_code;installation_code;st_nation_code;"\ - "st_latitude;st_longitude;st_elevation;ec8_code;"\ - "ec8_code_method;ec8_code_ref;vs30_m_sec;vs30_ref;"\ - "vs30_calc_method;vs30_meas_type;slope_deg;"\ - "epi_dist;epi_az;JB_dist;rup_dist;Rx_dist;Ry0_dist;"\ - "instrument_type_code;late_triggered_flag_01;U_channel_code;"\ - "U_azimuth_deg;V_channel_code;V_azimuth_deg;W_channel_code;"\ - "U_hp;V_hp;W_hp;U_lp;V_lp;W_lp" + "es_length;es_width;network_code;station_code;location_code;"\ + "instrument_code;sensor_depth_m;housing_code;installation_code;"\ + "st_nation_code;st_latitude;st_longitude;st_elevation;vs30_m_sec;"\ + "slope_deg;vs30_meas_type;epi_dist;epi_az;JB_dist;rup_dist;Rx_dist;"\ + "Ry0_dist;late_triggered_flag_01;U_channel_code;U_azimuth_deg;"\ + "V_channel_code;V_azimuth_deg;W_channel_code;U_hp;V_hp;W_hp;U_lp;"\ + "V_lp;W_lp" HEADERS = set(HEADER_STR.split(";")) @@ -73,14 +69,16 @@ class GEMFlatfileParser(SMDatabaseReader): """ Parses the data from the flatfile to a set of metadata objects """ - M_PRECEDENCE = ["EMEC_Mw", "Mw", "Ms", "ML"] + M_PRECEDENCE = ["Mw", "Ms", "ML"] BUILD_FINITE_DISTANCES = False def parse(self, location='./'): """ + Parse the dataset """ assert os.path.isfile(self.filename) headers = getline(self.filename, 1).rstrip("\n").split(";") + print(HEADERS) for hdr in HEADERS: if hdr not in headers: raise ValueError("Required header %s is missing in file" @@ -197,23 +195,16 @@ def _parse_event_data(self, metadata): def _parse_magnitudes(self, metadata): """ - So, here things get tricky. Up to four magnitudes are defined in the - flatfile (EMEC Mw, MW, Ms and ML). An order of precedence is required - and the preferred magnitude will be the highest found + An order of precedence is required and the preferred magnitude will be + the highest found """ pref_mag = None mag_list = [] for key in self.M_PRECEDENCE: mvalue = metadata[key].strip() if mvalue: - if key == "EMEC_Mw": - mtype = "Mw" - msource = "EMEC({:s}|{:s})".format( - metadata["EMEC_Mw_type"], - metadata["EMEC_Mw_ref"]) - else: - mtype = key - msource = metadata[key + "_ref"].strip() + mtype = key + msource = metadata[key + "_ref"].strip() mag = Magnitude(float(mvalue), mtype, source=msource) diff --git a/openquake/smt/tests/parsers/data/GEM_flatfile_test.csv b/openquake/smt/tests/parsers/data/GEM_flatfile_test.csv index 6dc3ad26f..36f28c0ab 100644 --- a/openquake/smt/tests/parsers/data/GEM_flatfile_test.csv +++ b/openquake/smt/tests/parsers/data/GEM_flatfile_test.csv @@ -1,6 +1,6 @@ -,orig_db,orig_db_license,eq_st_combo,orig_db_rec_identifier,event_id,event_time,event_time_checks,esm_ev_id,ISC_ev_id,USGS_ev_id,INGV_ev_id,EMSC_ev_id,ev_nation_code,ev_latitude,ev_longitude,ev_depth_km,ev_hyp_ref,fm_type_code,ML,ML_ref,Mw,Mw_ref,Ms,Ms_ref,EMEC_Mw,EMEC_Mw_type,EMEC_Mw_ref,event_source_id,es_strike,es_dip,es_rake,es_strike_dip_rake_ref,es_z_top,es_z_top_ref,es_length,es_width,es_geometry_ref,network_code,station_code_orig,station_code,location_code,instrument_code,sensor_depth_m,proximity_code,housing_code,installation_code,st_nation_code,st_latitude,st_longitude,st_elevation,ec8_code,ec8_code_method,ec8_code_ref,vs30_m_sec,vs30_ref,vs30_calc_method,vs30_meas_type,slope_deg,vs30_m_sec_WA,epi_dist,epi_az,JB_dist,rup_dist,Rx_dist,Ry0_dist,instrument_type_code,late_triggered_flag_01,U_channel_code,U_azimuth_deg,V_channel_code,V_azimuth_deg,W_channel_code,U_hp,V_hp,W_hp,U_lp,V_lp,W_lp,rotd50_flag,Shortest_Usable_Period_for_PSA_Ave_Over_Components,Longest_Usable_Period_for_PSA_Ave_Over_Components,U_pga,V_pga,W_pga,rotD50_pga,rotD100_pga,rotD00_pga,U_pgv,V_pgv,W_pgv,rotD50_pgv,rotD100_pgv,rotD00_pgv,U_pgd,V_pgd,W_pgd,rotD50_pgd,rotD100_pgd,rotD00_pgd,U_T90,V_T90,W_T90,rotD50_T90,rotD100_T90,rotD00_T90,U_housner,V_housner,W_housner,rotD50_housner,rotD100_housner,rotD00_housner,U_CAV,V_CAV,W_CAV,rotD50_CAV,rotD100_CAV,rotD00_CAV,U_ia,V_ia,W_ia,rotD50_ia,rotD100_ia,rotD00_ia,U_T0_010,U_T0_025,U_T0_040,U_T0_050,U_T0_070,U_T0_100,U_T0_150,U_T0_200,U_T0_250,U_T0_300,U_T0_350,U_T0_400,U_T0_450,U_T0_500,U_T0_600,U_T0_700,U_T0_750,U_T0_800,U_T0_900,U_T1_000,U_T1_200,U_T1_400,U_T1_600,U_T1_800,U_T2_000,U_T2_500,U_T3_000,U_T3_500,U_T4_000,U_T4_500,U_T5_000,U_T6_000,U_T7_000,U_T8_000,U_T9_000,U_T10_000,V_T0_010,V_T0_025,V_T0_040,V_T0_050,V_T0_070,V_T0_100,V_T0_150,V_T0_200,V_T0_250,V_T0_300,V_T0_350,V_T0_400,V_T0_450,V_T0_500,V_T0_600,V_T0_700,V_T0_750,V_T0_800,V_T0_900,V_T1_000,V_T1_200,V_T1_400,V_T1_600,V_T1_800,V_T2_000,V_T2_500,V_T3_000,V_T3_500,V_T4_000,V_T4_500,V_T5_000,V_T6_000,V_T7_000,V_T8_000,V_T9_000,V_T10_000,W_T0_010,W_T0_025,W_T0_040,W_T0_050,W_T0_070,W_T0_100,W_T0_150,W_T0_200,W_T0_250,W_T0_300,W_T0_350,W_T0_400,W_T0_450,W_T0_500,W_T0_600,W_T0_700,W_T0_750,W_T0_800,W_T0_900,W_T1_000,W_T1_200,W_T1_400,W_T1_600,W_T1_800,W_T2_000,W_T2_500,W_T3_000,W_T3_500,W_T4_000,W_T4_500,W_T5_000,W_T6_000,W_T7_000,W_T8_000,W_T9_000,W_T10_000,rotD50_T0_010,rotD50_T0_025,rotD50_T0_040,rotD50_T0_050,rotD50_T0_070,rotD50_T0_100,rotD50_T0_150,rotD50_T0_200,rotD50_T0_250,rotD50_T0_300,rotD50_T0_350,rotD50_T0_400,rotD50_T0_450,rotD50_T0_500,rotD50_T0_600,rotD50_T0_700,rotD50_T0_750,rotD50_T0_800,rotD50_T0_900,rotD50_T1_000,rotD50_T1_200,rotD50_T1_400,rotD50_T1_600,rotD50_T1_800,rotD50_T2_000,rotD50_T2_500,rotD50_T3_000,rotD50_T3_500,rotD50_T4_000,rotD50_T4_500,rotD50_T5_000,rotD50_T6_000,rotD50_T7_000,rotD50_T8_000,rotD50_T9_000,rotD50_T10_000,rotD100_T0_010,rotD100_T0_025,rotD100_T0_040,rotD100_T0_050,rotD100_T0_070,rotD100_T0_100,rotD100_T0_150,rotD100_T0_200,rotD100_T0_250,rotD100_T0_300,rotD100_T0_350,rotD100_T0_400,rotD100_T0_450,rotD100_T0_500,rotD100_T0_600,rotD100_T0_700,rotD100_T0_750,rotD100_T0_800,rotD100_T0_900,rotD100_T1_000,rotD100_T1_200,rotD100_T1_400,rotD100_T1_600,rotD100_T1_800,rotD100_T2_000,rotD100_T2_500,rotD100_T3_000,rotD100_T3_500,rotD100_T4_000,rotD100_T4_500,rotD100_T5_000,rotD100_T6_000,rotD100_T7_000,rotD100_T8_000,rotD100_T9_000,rotD100_T10_000,rotD00_T0_010,rotD00_T0_025,rotD00_T0_040,rotD00_T0_050,rotD00_T0_070,rotD00_T0_100,rotD00_T0_150,rotD00_T0_200,rotD00_T0_250,rotD00_T0_300,rotD00_T0_350,rotD00_T0_400,rotD00_T0_450,rotD00_T0_500,rotD00_T0_600,rotD00_T0_700,rotD00_T0_750,rotD00_T0_800,rotD00_T0_900,rotD00_T1_000,rotD00_T1_200,rotD00_T1_400,rotD00_T1_600,rotD00_T1_800,rotD00_T2_000,rotD00_T2_500,rotD00_T3_000,rotD00_T3_500,rotD00_T4_000,rotD00_T4_500,rotD00_T5_000,rotD00_T6_000,rotD00_T7_000,rotD00_T8_000,rotD00_T9_000,rotD00_T10_000,Retained_database_specific_information,Event_trt,NGASUB_subduction_zone_name,NGASUB_subduction_event_type,NGASUB_Volcanic_Arc_Station_Flag,NGASUB_Volcanic_Arc_Hypocentre_Flag,ev_st_combinations,model,model_ssm -0,ESM,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_EMSC-20161026_0000077_&_ST_MZ01,,EQ_EMSC-20161026_0000077,2016-10-26 17:10:37,2016-10-26 17:10:00,EMSC-20161026_0000077,611830883,us20007guy,8663031,20161026_0000077,,42.88834,13.13969,3.421,,NF,5.23,Spallarossa_et_al_2021,5.5,Pondrelli_et_al_2002_dataset,5.26,ISC-webservice,,,,,161,38,-90,,,from_nucleation_depth,8.1,5.22396,,3A,MZ01,MZ01_ESM,,D,0,,,,,42.671575,13.270813,859,B,vs_profile,EmerTer_Project_2017_2018,432,IGAG_CentroMS,,MASW,2.99,495.7,26.36251853,155.9379295,22.54138981,23.31192011,-0.72,22.53,D,0,E,90,N,0,Z,0.08,0.08,0.08,30,30,30,Both horizontal components and RotD50.,0.026666667,15.625,-108.780061,222.716024,-45.881192,158.0578535,223.527557,100.333954,-6.29355,-11.968429,1.87797,8.49725,11.9684,5.66205,-0.491045,0.816809,0.409598,0.5915245,0.819616,5.66205,5.115,3.5,7.075,4.0375,5.22,3.29,15.8938,22.4358,6.56143,17.28745,22.4361,15.4313,222.3692659,249.1042814,98.69522581,237.2638944,281.3945904,219.5205067,11.72180552,20.44563019,1.706962667,16.08371738,21.20602943,10.96140531,108.814,109.145,113.382,113.855,131.154,157.119,209.572,287.553,322.037,470.346,485.438,366.386,230.659,150.823,147.798,88.6999,74.8389,56.7993,50.7337,45.2617,31.7445,17.8258,10.69,8.3071,5.9755,4.94116,4.19675,2.94533,1.77386,1.43809,1.10865,0.808699,0.646502,0.555276,0.485435,0.430637,222.754,223.874,223.206,233.682,226.536,229.423,367.39,689.011,604.778,614.015,558.911,464.005,384.068,304.436,181.511,116.186,101.368,89.2144,69.9108,54.475,36.2397,25.3938,18.5248,14.0174,10.9633,6.5821,4.62422,3.73092,3.46864,2.7935,1.90001,1.37214,1.1054,0.939974,0.825001,0.738696,46.0036,46.7648,49.8155,55.3152,56.0385,97.4233,87.01,109.309,141.071,128.861,138.416,105.426,73.6946,47.991,41.638,32.189,28.8204,22.6039,23.6324,20.3062,11.4845,8.40455,6.18486,5.77979,5.52651,5.29949,5.60751,4.01614,2.89897,1.92162,1.26359,0.71051,0.451174,0.32469,0.251564,0.210068,158.237,159.057,160.614,166.106,163.9575,172.0525,267.403,541.9695,509.462,477.9505,486.2615,439.2885,321.112,237.947,157.5885,95.1981,76.06495,63.2522,50.7961,44.6243,31.13795,20.54695,13.13655,9.948655,7.798775,6.13877,4.5332,3.48062,2.587275,2.129465,1.746825,1.201655,0.9443365,0.7416165,0.599498,0.5308465,223.582,224.737,224.181,234.909,227.348,229.636,369.917,694.73,614.773,614.015,558.911,474.467,398.221,304.436,183.322,116.499,101.444,89.2144,69.9108,54.475,36.2397,25.396,18.5646,14.0695,11.0188,6.64568,4.70183,4.07226,3.48888,2.82703,2.0778,1.39204,1.11718,0.947651,0.830024,0.742738,100.334,100.603,104.649,104.309,119.811,132.008,195.791,228.186,272.999,345.806,358.876,205.642,200.462,150.823,114.108,76.1539,65.8692,52.0546,39.8062,35.2361,22.6864,14.8157,9.6153,7.65188,5.67826,4.32238,3.16842,2.29032,1.67326,1.24244,0.982716,0.764951,0.629198,0.548478,0.48188,0.427676,,,,,,,ev_lon13.14ev_lat42.888st_lon13.2708st_lat42.6716,EUR,EUR -1,NGAWest2,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_HelenaMontana-01_&_ST_CarrollCollege,1,EQ_HelenaMontana-01,1935-10-31 18:38:00,1935-10-31 18:38:00,,,,,,,46.61,-111.96,6,,U,,,5.999478682,,,,,,,,75,75,160,,,,,,,USGS,CarrollCollege,CarrollCollege_NGAWest2,,,,,,,,46.58,-112.03,,,,,593.35,3b_4b_4c,,"('3b_4b_4c (check NGAWest2 flatfile for details)',)",,,6.31,,2.07,,-2.07,8.046385723,,,H1,180,H2,270,V,,,,,,,Only RotD50.,Shortest usable period is not provided for NGAWest2 db,6.134969325,,,97.170012,154.017,,,,,8.7544,10.1,,,,,3.7782,3.01,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,101.60217,109.30302,160.75647,193.72788,233.45838,262.27035,242.86617,137.94822,195.08166,184.61439,184.60458,165.87729,132.42519,98.65917,52.244136,42.072147,42.649956,43.504407,45.100494,46.611234,54.132561,56.968632,53.050518,44.712018,38.924118,27.213921,18.330966,12.42927,8.7433587,7.00438905,5.6328039,3.740553,2.8117422,2.1854718,1.7450028,1.4245101,158.922,161.865,220.725,263.889,358.065,310.977,416.925,252.117,287.433,294.3,298.224,270.756,172.656,140.283,105.948,97.119,91.0368,91.5273,99.081,99.081,83.0907,63.765,51.5025,43.7526,35.2179,22.1706,15.0093,10.3986,7.83819,5.77809,4.55184,2.98224,2.12877,1.6677,1.34397,1.09872,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ASCR,,,,,ev_lon-111.96ev_lat46.61st_lon-112.03st_lat46.58,USA,USA -2,NGASUB,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_32_&_ST_0,3001112,EQ_32,1992-05-23 10:30:00,1992-05-23 10:30:00,,,,,,,13.475,-89.968,30.3,,TF,,,6.01,,,,,,,,266,31,64,,28.871,,,,,MARN,0,0_NGASUB,,,,,,,,13.901,-89.932,,,,,519,,,0 (check NGASUB flatfile for details),,,47.52844,,42.3033488,53.7305448,49.36,-6.15,,,H1,0,H2,90,V,,,,,,,Only RotD50.,-999,1.120393132,,,,19.587627,,,,,,1.2827,,,,,,0.12268,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19.77965775,23.00567625,22.57553718,21.93305085,27.28007964,40.56590979,44.0809407,47.56503087,45.49767147,43.657443,59.85950166,55.47373515,66.88610055,47.69909433,36.10163385,32.12992782,31.02004404,25.57102068,18.32013576,12.56328441,8.49204612,5.340633651,3.360548916,2.373493203,1.814767596,0.935975043,0.565687764,0.477673425,0.308442096,0.258203615,0.206077689,0.151994178,0.115239051,0.102401685,0.0792648,0.0591543,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Crustal (Subduction),Central_America_N,Crustal (Subduction),"Forearc, Forearc NE in Japan","Forearc, Forearc NE in Japan",ev_lon-89.968ev_lat13.475st_lon-89.932st_lat13.901,CCA,CCA -3,Turkiye_SMD_DB,Unrestricted non-commercial use with acknowledgement/citation (stated Open Data Commons Attribution license on designsafe-ci.org),EQ_1976-08-19 01:12:39_&_ST_2001,,EQ_1976-08-19_01_12_39,1976-08-19 01:12:39,1976-08-19 01:12:00,,,,,,,37.751,29.012,15,,NF,,,5.3,,,,,,,,164,45,-30,,13.1658,,,,,TK,2001,2001_Turkiye_SMD,,,,,,,,37.76219,29.09222,427,,,,345,,,measured,,,7.2,,5.3,14,-5.3,0,,,H1,0,H2,90,V,0.5,0.7,0.6,50,35,35,"Both horizontal components, geometric mean and RotD50.",,1,349.4699685,265.0300011,175.139892,345.196345,397.5286327,,25.71706851,16.74596444,3.691003062,20.92157556,25.96406635,,2.321535194,1.306427358,0.424777783,1.76671965,2.308163168,,,,,,,,,,,,,,42.81945921,39.91230851,23.01366895,41.83484503,43.05897711,,,,,,,,352.5137751,371.7939459,436.9675422,473.7189885,467.1723851,650.984528,566.0361838,637.8539283,928.4857133,644.5311038,585.407876,887.7871752,919.7338768,948.991776,762.4288679,516.614736,453.5151081,371.1364385,245.3134717,185.3005298,114.8505799,87.79503155,58.68839465,41.24137244,29.23518517,17.74726511,11.58969587,7.740172404,5.475992031,4.138949853,3.428248707,2.445621228,1.795600818,1.359768024,1.059524145,0.846344997,269.0489776,315.4147958,446.7169037,502.7303016,580.1022935,601.7686556,669.0149803,513.9840746,605.2320967,689.0293168,741.2015887,761.1543213,687.0242951,634.9311045,441.632002,298.5782685,259.1369202,221.1998158,154.9156735,104.9689787,68.85758976,42.83862094,28.18929398,20.15359827,15.35405675,9.035385723,5.965897545,4.242641553,3.185243235,2.493461164,2.005100235,1.388219967,1.0213191,0.783943587,0.621046575,0.504247734,178.5869426,203.5847865,370.0625309,494.5172372,583.0962035,463.9003341,373.5391027,215.1353444,262.739266,145.3607659,153.2835769,128.5626722,118.3886555,101.3540486,79.6795099,55.25484658,53.83497073,54.65994366,52.58029625,36.43523958,26.55829614,23.75661311,16.95943971,10.26755115,9.107675613,3.5656407,1.966543992,1.321249059,0.994831119,0.781450376,0.630628002,0.439305534,0.324726696,0.250134399,0.198685854,0.16164918,349.601708,369.5689143,435.3062216,471.504741,511.8556784,607.3665359,560.8208788,552.4788943,788.0604967,658.995012,690.0313112,820.4574792,813.3028167,771.7576442,590.6726264,392.3657239,345.7152999,284.6507653,197.1927543,140.7055334,88.60075431,62.86843075,45.85777106,31.90222202,21.49231404,13.26438549,9.207631665,6.516281709,4.700142675,3.722125896,2.745626724,1.82487582,1.340730738,1.029177891,0.814873536,0.660902643,401.4325555,420.6328004,461.3746721,503.7327865,597.825012,810.1050529,675.9317268,646.6043002,963.3097379,713.7606496,918.9786853,961.08658,966.5096431,953.7293576,773.8470487,532.937026,483.8884004,398.3168299,262.4140606,188.1390455,117.2709159,88.76718979,60.81813192,41.28863309,29.30295952,17.87134396,11.67445917,7.796032506,5.664512763,4.452417612,3.444079104,2.45398131,1.801078722,1.363887243,1.062860526,0.849159486,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ACR_shallow,,,,,ev_lon29.012ev_lat37.751st_lon29.0922st_lat37.7622,MIE,MIE -4,kiknet,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_2017_12_31_071100_&_ST_OITH11,OITH111712310711,EQ_2017_12_31_071100,2017-12-31 07:11:00,2017-12-31 07:11:00,,,,,,,33.33,132.197,52,,TF,,,3.9,,,,,,,,353,27,-132,,,,,,,kiknet,OITH11,OITH11_kiknet,,,,,,,,33.2844,131.2118,,,,,458.5260518,,,measured,,,91.77380711,,89.8074312,103.2607496,-89.43607088,6.47537781,,,H1,0,H2,90,V,,,,,,,Two horizontal components only.,0.025,4,1.148,1.125,,1.14094224,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.1455137,1.170333,1.2639204,1.4065578,2.0498976,3.7883277,5.04234,1.9111842,0.979038,0.8370873,0.8371854,0.567018,0.3585555,0.3014613,0.2554524,0.1702035,0.1655928,0.1499949,0.0998658,0.0845622,0.0375723,0.0442431,0.0243288,0.0206991,0.0161865,0.0092214,0.0054936,0.0037278,0.002943,0.00220725,0.001962,0.0014715,0.0008829,0.0008829,0.0008829,0.0008829,0.0011448,0.0011698,0.0012715,0.0013027,0.0018758,0.0035329,0.0045913,0.002345,0.0013091,0.001148,0.0006805,0.0006129,0.0003926,0.0003049,0.0002422,0.0002107,0.0001877,0.0001466,0.0001078,8.49E-05,6.12E-05,4.22E-05,2.70E-05,1.73E-05,1.75E-05,1.04E-05,6.40E-06,5.70E-06,3.90E-06,2.75E-06,2.30E-06,1.20E-06,1.20E-06,9.00E-07,7.00E-07,7.00E-07,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.036285381,0.037007194,0.039449768,0.043300039,0.062195302,0.115582305,0.155538328,0.068399665,0.036625513,0.03174797,0.024466669,0.019124101,0.012179765,0.009847959,0.008088241,0.006163356,0.005740206,0.004829948,0.003456381,0.002622068,0.001543604,0.001427586,0.000819657,0.000601923,0.000509502,0.000301749,0.000189883,0.000146586,0.000107028,7.63E-05,6.81E-05,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ev_lon132.197ev_lat33.33st_lon131.2118st_lat33.2844,JPN,JPN +,orig_db,orig_db_license,eq_st_combo,orig_db_rec_identifier,event_id,event_time,esm_ev_id,ISC_ev_id,USGS_ev_id,INGV_ev_id,EMSC_ev_id,ev_nation_code,ev_latitude,ev_longitude,ev_depth_km,fm_type_code,ML,ML_ref,Mw,Mw_ref,Ms,Ms_ref,event_source_id,es_strike,es_dip,es_rake,es_strike_dip_rake_ref,es_z_top,es_length,es_width,network_code,station_code_orig,station_code,location_code,instrument_code,sensor_depth_m,housing_code,installation_code,st_nation_code,st_latitude,st_longitude,st_elevation,vs30_m_sec,vs30_meas_type,slope_deg,epi_dist,epi_az,JB_dist,rup_dist,Rx_dist,Ry0_dist,late_triggered_flag_01,U_channel_code,U_azimuth_deg,V_channel_code,V_azimuth_deg,W_channel_code,U_hp,V_hp,W_hp,U_lp,V_lp,W_lp,rotd50_flag,Shortest_Usable_Period_for_PSA_Ave_Over_Components,Longest_Usable_Period_for_PSA_Ave_Over_Components,U_pga,V_pga,W_pga,rotD50_pga,rotD100_pga,rotD00_pga,U_pgv,V_pgv,W_pgv,rotD50_pgv,rotD100_pgv,rotD00_pgv,U_pgd,V_pgd,W_pgd,rotD50_pgd,rotD100_pgd,rotD00_pgd,U_T90,V_T90,W_T90,rotD50_T90,rotD100_T90,rotD00_T90,U_housner,V_housner,W_housner,rotD50_housner,rotD100_housner,rotD00_housner,U_CAV,V_CAV,W_CAV,rotD50_CAV,rotD100_CAV,rotD00_CAV,U_ia,V_ia,W_ia,rotD50_ia,rotD100_ia,rotD00_ia,U_T0_010,U_T0_025,U_T0_040,U_T0_050,U_T0_070,U_T0_100,U_T0_150,U_T0_200,U_T0_250,U_T0_300,U_T0_350,U_T0_400,U_T0_450,U_T0_500,U_T0_600,U_T0_700,U_T0_750,U_T0_800,U_T0_900,U_T1_000,U_T1_200,U_T1_400,U_T1_600,U_T1_800,U_T2_000,U_T2_500,U_T3_000,U_T3_500,U_T4_000,U_T4_500,U_T5_000,U_T6_000,U_T7_000,U_T8_000,U_T9_000,U_T10_000,V_T0_010,V_T0_025,V_T0_040,V_T0_050,V_T0_070,V_T0_100,V_T0_150,V_T0_200,V_T0_250,V_T0_300,V_T0_350,V_T0_400,V_T0_450,V_T0_500,V_T0_600,V_T0_700,V_T0_750,V_T0_800,V_T0_900,V_T1_000,V_T1_200,V_T1_400,V_T1_600,V_T1_800,V_T2_000,V_T2_500,V_T3_000,V_T3_500,V_T4_000,V_T4_500,V_T5_000,V_T6_000,V_T7_000,V_T8_000,V_T9_000,V_T10_000,W_T0_010,W_T0_025,W_T0_040,W_T0_050,W_T0_070,W_T0_100,W_T0_150,W_T0_200,W_T0_250,W_T0_300,W_T0_350,W_T0_400,W_T0_450,W_T0_500,W_T0_600,W_T0_700,W_T0_750,W_T0_800,W_T0_900,W_T1_000,W_T1_200,W_T1_400,W_T1_600,W_T1_800,W_T2_000,W_T2_500,W_T3_000,W_T3_500,W_T4_000,W_T4_500,W_T5_000,W_T6_000,W_T7_000,W_T8_000,W_T9_000,W_T10_000,rotD50_T0_010,rotD50_T0_025,rotD50_T0_040,rotD50_T0_050,rotD50_T0_070,rotD50_T0_100,rotD50_T0_150,rotD50_T0_200,rotD50_T0_250,rotD50_T0_300,rotD50_T0_350,rotD50_T0_400,rotD50_T0_450,rotD50_T0_500,rotD50_T0_600,rotD50_T0_700,rotD50_T0_750,rotD50_T0_800,rotD50_T0_900,rotD50_T1_000,rotD50_T1_200,rotD50_T1_400,rotD50_T1_600,rotD50_T1_800,rotD50_T2_000,rotD50_T2_500,rotD50_T3_000,rotD50_T3_500,rotD50_T4_000,rotD50_T4_500,rotD50_T5_000,rotD50_T6_000,rotD50_T7_000,rotD50_T8_000,rotD50_T9_000,rotD50_T10_000,rotD100_T0_010,rotD100_T0_025,rotD100_T0_040,rotD100_T0_050,rotD100_T0_070,rotD100_T0_100,rotD100_T0_150,rotD100_T0_200,rotD100_T0_250,rotD100_T0_300,rotD100_T0_350,rotD100_T0_400,rotD100_T0_450,rotD100_T0_500,rotD100_T0_600,rotD100_T0_700,rotD100_T0_750,rotD100_T0_800,rotD100_T0_900,rotD100_T1_000,rotD100_T1_200,rotD100_T1_400,rotD100_T1_600,rotD100_T1_800,rotD100_T2_000,rotD100_T2_500,rotD100_T3_000,rotD100_T3_500,rotD100_T4_000,rotD100_T4_500,rotD100_T5_000,rotD100_T6_000,rotD100_T7_000,rotD100_T8_000,rotD100_T9_000,rotD100_T10_000,rotD00_T0_010,rotD00_T0_025,rotD00_T0_040,rotD00_T0_050,rotD00_T0_070,rotD00_T0_100,rotD00_T0_150,rotD00_T0_200,rotD00_T0_250,rotD00_T0_300,rotD00_T0_350,rotD00_T0_400,rotD00_T0_450,rotD00_T0_500,rotD00_T0_600,rotD00_T0_700,rotD00_T0_750,rotD00_T0_800,rotD00_T0_900,rotD00_T1_000,rotD00_T1_200,rotD00_T1_400,rotD00_T1_600,rotD00_T1_800,rotD00_T2_000,rotD00_T2_500,rotD00_T3_000,rotD00_T3_500,rotD00_T4_000,rotD00_T4_500,rotD00_T5_000,rotD00_T6_000,rotD00_T7_000,rotD00_T8_000,rotD00_T9_000,rotD00_T10_000,Retained_database_specific_information,Event_trt,NGASUB_subduction_zone_name,NGASUB_subduction_event_type,NGASUB_Volcanic_Arc_Station_Flag,NGASUB_Volcanic_Arc_Hypocentre_Flag,ev_st_combinations,model,model_ssm +0,ESM,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_EMSC-20161026_0000077_&_ST_MZ01,,EQ_EMSC-20161026_0000077,2016-10-26 17:10:37,EMSC-20161026_0000077,611830883,us20007guy,8663031,20161026_0000077,,42.88834,13.13969,3.421,NF,5.23,,5.5,,5.26,,,161,38,-90,,,8.1,5.22396,3A,MZ01,MZ01_ESM,,D,0,,,,42.671575,13.270813,859,432,MASW,2.99,26.36251853,155.9379295,22.54138981,23.31192011,-0.72,22.53,0,E,90,N,0,Z,0.08,0.08,0.08,30,30,30,Both horizontal components and RotD50.,0.026666667,15.625,-108.780061,222.716024,-45.881192,158.0578535,223.527557,100.333954,-6.29355,-11.968429,1.87797,8.49725,11.9684,5.66205,-0.491045,0.816809,0.409598,0.5915245,0.819616,5.66205,5.115,3.5,7.075,4.0375,5.22,3.29,15.8938,22.4358,6.56143,17.28745,22.4361,15.4313,222.3692659,249.1042814,98.69522581,237.2638944,281.3945904,219.5205067,11.72180552,20.44563019,1.706962667,16.08371738,21.20602943,10.96140531,108.814,109.145,113.382,113.855,131.154,157.119,209.572,287.553,322.037,470.346,485.438,366.386,230.659,150.823,147.798,88.6999,74.8389,56.7993,50.7337,45.2617,31.7445,17.8258,10.69,8.3071,5.9755,4.94116,4.19675,2.94533,1.77386,1.43809,1.10865,0.808699,0.646502,0.555276,0.485435,0.430637,222.754,223.874,223.206,233.682,226.536,229.423,367.39,689.011,604.778,614.015,558.911,464.005,384.068,304.436,181.511,116.186,101.368,89.2144,69.9108,54.475,36.2397,25.3938,18.5248,14.0174,10.9633,6.5821,4.62422,3.73092,3.46864,2.7935,1.90001,1.37214,1.1054,0.939974,0.825001,0.738696,46.0036,46.7648,49.8155,55.3152,56.0385,97.4233,87.01,109.309,141.071,128.861,138.416,105.426,73.6946,47.991,41.638,32.189,28.8204,22.6039,23.6324,20.3062,11.4845,8.40455,6.18486,5.77979,5.52651,5.29949,5.60751,4.01614,2.89897,1.92162,1.26359,0.71051,0.451174,0.32469,0.251564,0.210068,158.237,159.057,160.614,166.106,163.9575,172.0525,267.403,541.9695,509.462,477.9505,486.2615,439.2885,321.112,237.947,157.5885,95.1981,76.06495,63.2522,50.7961,44.6243,31.13795,20.54695,13.13655,9.948655,7.798775,6.13877,4.5332,3.48062,2.587275,2.129465,1.746825,1.201655,0.9443365,0.7416165,0.599498,0.5308465,223.582,224.737,224.181,234.909,227.348,229.636,369.917,694.73,614.773,614.015,558.911,474.467,398.221,304.436,183.322,116.499,101.444,89.2144,69.9108,54.475,36.2397,25.396,18.5646,14.0695,11.0188,6.64568,4.70183,4.07226,3.48888,2.82703,2.0778,1.39204,1.11718,0.947651,0.830024,0.742738,100.334,100.603,104.649,104.309,119.811,132.008,195.791,228.186,272.999,345.806,358.876,205.642,200.462,150.823,114.108,76.1539,65.8692,52.0546,39.8062,35.2361,22.6864,14.8157,9.6153,7.65188,5.67826,4.32238,3.16842,2.29032,1.67326,1.24244,0.982716,0.764951,0.629198,0.548478,0.48188,0.427676,,,,,,,ev_lon13.14ev_lat42.888st_lon13.2708st_lat42.6716,EUR,EUR +1,NGAWest2,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_HelenaMontana-01_&_ST_CarrollCollege,1,EQ_HelenaMontana-01,1935-10-31 18:38:00,,,,,,,46.61,-111.96,6,U,,,5.999478682,,,,,75,75,160,,,,,USGS,CarrollCollege,CarrollCollege_NGAWest2,,,,,,,46.58,-112.03,,593.35,"('3b_4b_4c (check NGAWest2 flatfile for details)',)",,6.31,,2.07,,-2.07,8.046385723,,H1,180,H2,270,V,,,,,,,Only RotD50.,Shortest usable period is not provided for NGAWest2 db,6.134969325,,,97.170012,154.017,,,,,8.7544,10.1,,,,,3.7782,3.01,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,101.60217,109.30302,160.75647,193.72788,233.45838,262.27035,242.86617,137.94822,195.08166,184.61439,184.60458,165.87729,132.42519,98.65917,52.244136,42.072147,42.649956,43.504407,45.100494,46.611234,54.132561,56.968632,53.050518,44.712018,38.924118,27.213921,18.330966,12.42927,8.7433587,7.00438905,5.6328039,3.740553,2.8117422,2.1854718,1.7450028,1.4245101,158.922,161.865,220.725,263.889,358.065,310.977,416.925,252.117,287.433,294.3,298.224,270.756,172.656,140.283,105.948,97.119,91.0368,91.5273,99.081,99.081,83.0907,63.765,51.5025,43.7526,35.2179,22.1706,15.0093,10.3986,7.83819,5.77809,4.55184,2.98224,2.12877,1.6677,1.34397,1.09872,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ASCR,,,,,ev_lon-111.96ev_lat46.61st_lon-112.03st_lat46.58,USA,USA +2,NGASUB,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_32_&_ST_0,3001112,EQ_32,1992-05-23 10:30:00,,,,,,,13.475,-89.968,30.3,TF,,,6.01,,,,,266,31,64,,28.871,,,MARN,0,0_NGASUB,,,,,,,13.901,-89.932,,519,0 (check NGASUB flatfile for details),,47.52844,,42.3033488,53.7305448,49.36,-6.15,,H1,0,H2,90,V,,,,,,,Only RotD50.,-999,1.120393132,,,,19.587627,,,,,,1.2827,,,,,,0.12268,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19.77965775,23.00567625,22.57553718,21.93305085,27.28007964,40.56590979,44.0809407,47.56503087,45.49767147,43.657443,59.85950166,55.47373515,66.88610055,47.69909433,36.10163385,32.12992782,31.02004404,25.57102068,18.32013576,12.56328441,8.49204612,5.340633651,3.360548916,2.373493203,1.814767596,0.935975043,0.565687764,0.477673425,0.308442096,0.258203615,0.206077689,0.151994178,0.115239051,0.102401685,0.0792648,0.0591543,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Crustal (Subduction),Central_America_N,Crustal (Subduction),"Forearc, Forearc NE in Japan","Forearc, Forearc NE in Japan",ev_lon-89.968ev_lat13.475st_lon-89.932st_lat13.901,CCA,CCA +3,Turkiye_SMD_DB,Unrestricted non-commercial use with acknowledgement/citation (stated Open Data Commons Attribution license on designsafe-ci.org),EQ_1976-08-19 01:12:39_&_ST_2001,,EQ_1976-08-19_01_12_39,1976-08-19 01:12:39,,,,,,,37.751,29.012,15,NF,,,5.3,,,,,164,45,-30,,13.1658,,,TK,2001,2001_Turkiye_SMD,,,,,,,37.76219,29.09222,427,345,measured,,7.2,,5.3,14,-5.3,0,,H1,0,H2,90,V,0.5,0.7,0.6,50,35,35,"Both horizontal components, geometric mean and RotD50.",,1,349.4699685,265.0300011,175.139892,345.196345,397.5286327,,25.71706851,16.74596444,3.691003062,20.92157556,25.96406635,,2.321535194,1.306427358,0.424777783,1.76671965,2.308163168,,,,,,,,,,,,,,42.81945921,39.91230851,23.01366895,41.83484503,43.05897711,,,,,,,,352.5137751,371.7939459,436.9675422,473.7189885,467.1723851,650.984528,566.0361838,637.8539283,928.4857133,644.5311038,585.407876,887.7871752,919.7338768,948.991776,762.4288679,516.614736,453.5151081,371.1364385,245.3134717,185.3005298,114.8505799,87.79503155,58.68839465,41.24137244,29.23518517,17.74726511,11.58969587,7.740172404,5.475992031,4.138949853,3.428248707,2.445621228,1.795600818,1.359768024,1.059524145,0.846344997,269.0489776,315.4147958,446.7169037,502.7303016,580.1022935,601.7686556,669.0149803,513.9840746,605.2320967,689.0293168,741.2015887,761.1543213,687.0242951,634.9311045,441.632002,298.5782685,259.1369202,221.1998158,154.9156735,104.9689787,68.85758976,42.83862094,28.18929398,20.15359827,15.35405675,9.035385723,5.965897545,4.242641553,3.185243235,2.493461164,2.005100235,1.388219967,1.0213191,0.783943587,0.621046575,0.504247734,178.5869426,203.5847865,370.0625309,494.5172372,583.0962035,463.9003341,373.5391027,215.1353444,262.739266,145.3607659,153.2835769,128.5626722,118.3886555,101.3540486,79.6795099,55.25484658,53.83497073,54.65994366,52.58029625,36.43523958,26.55829614,23.75661311,16.95943971,10.26755115,9.107675613,3.5656407,1.966543992,1.321249059,0.994831119,0.781450376,0.630628002,0.439305534,0.324726696,0.250134399,0.198685854,0.16164918,349.601708,369.5689143,435.3062216,471.504741,511.8556784,607.3665359,560.8208788,552.4788943,788.0604967,658.995012,690.0313112,820.4574792,813.3028167,771.7576442,590.6726264,392.3657239,345.7152999,284.6507653,197.1927543,140.7055334,88.60075431,62.86843075,45.85777106,31.90222202,21.49231404,13.26438549,9.207631665,6.516281709,4.700142675,3.722125896,2.745626724,1.82487582,1.340730738,1.029177891,0.814873536,0.660902643,401.4325555,420.6328004,461.3746721,503.7327865,597.825012,810.1050529,675.9317268,646.6043002,963.3097379,713.7606496,918.9786853,961.08658,966.5096431,953.7293576,773.8470487,532.937026,483.8884004,398.3168299,262.4140606,188.1390455,117.2709159,88.76718979,60.81813192,41.28863309,29.30295952,17.87134396,11.67445917,7.796032506,5.664512763,4.452417612,3.444079104,2.45398131,1.801078722,1.363887243,1.062860526,0.849159486,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ACR_shallow,,,,,ev_lon29.012ev_lat37.751st_lon29.0922st_lat37.7622,MIE,MIE +4,kiknet,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_2017_12_31_071100_&_ST_OITH11,OITH111712310711,EQ_2017_12_31_071100,2017-12-31 07:11:00,,,,,,,33.33,132.197,52,TF,,,3.9,,,,,353,27,-132,,,,,kiknet,OITH11,OITH11_kiknet,,,,,,,33.2844,131.2118,,458.5260518,measured,,91.77380711,,89.8074312,103.2607496,-89.43607088,6.47537781,,H1,0,H2,90,V,,,,,,,Two horizontal components only.,0.025,4,1.148,1.125,,1.14094224,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.1455137,1.170333,1.2639204,1.4065578,2.0498976,3.7883277,5.04234,1.9111842,0.979038,0.8370873,0.8371854,0.567018,0.3585555,0.3014613,0.2554524,0.1702035,0.1655928,0.1499949,0.0998658,0.0845622,0.0375723,0.0442431,0.0243288,0.0206991,0.0161865,0.0092214,0.0054936,0.0037278,0.002943,0.00220725,0.001962,0.0014715,0.0008829,0.0008829,0.0008829,0.0008829,0.0011448,0.0011698,0.0012715,0.0013027,0.0018758,0.0035329,0.0045913,0.002345,0.0013091,0.001148,0.0006805,0.0006129,0.0003926,0.0003049,0.0002422,0.0002107,0.0001877,0.0001466,0.0001078,8.49E-05,6.12E-05,4.22E-05,2.70E-05,1.73E-05,1.75E-05,1.04E-05,6.40E-06,5.70E-06,3.90E-06,2.75E-06,2.30E-06,1.20E-06,1.20E-06,9.00E-07,7.00E-07,7.00E-07,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.036285381,0.037007194,0.039449768,0.043300039,0.062195302,0.115582305,0.155538328,0.068399665,0.036625513,0.03174797,0.024466669,0.019124101,0.012179765,0.009847959,0.008088241,0.006163356,0.005740206,0.004829948,0.003456381,0.002622068,0.001543604,0.001427586,0.000819657,0.000601923,0.000509502,0.000301749,0.000189883,0.000146586,0.000107028,7.63E-05,6.81E-05,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ev_lon132.197ev_lat33.33st_lon131.2118st_lat33.2844,JPN,JPN From d16761c1450a5f6c2c8b6e150e3b5284810da11c Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 13 Mar 2024 12:02:49 +0100 Subject: [PATCH 54/59] update --- .../smt/tests/parsers/data/GEM_flatfile_test.csv | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/openquake/smt/tests/parsers/data/GEM_flatfile_test.csv b/openquake/smt/tests/parsers/data/GEM_flatfile_test.csv index 36f28c0ab..648abe432 100644 --- a/openquake/smt/tests/parsers/data/GEM_flatfile_test.csv +++ b/openquake/smt/tests/parsers/data/GEM_flatfile_test.csv @@ -1,6 +1,6 @@ -,orig_db,orig_db_license,eq_st_combo,orig_db_rec_identifier,event_id,event_time,esm_ev_id,ISC_ev_id,USGS_ev_id,INGV_ev_id,EMSC_ev_id,ev_nation_code,ev_latitude,ev_longitude,ev_depth_km,fm_type_code,ML,ML_ref,Mw,Mw_ref,Ms,Ms_ref,event_source_id,es_strike,es_dip,es_rake,es_strike_dip_rake_ref,es_z_top,es_length,es_width,network_code,station_code_orig,station_code,location_code,instrument_code,sensor_depth_m,housing_code,installation_code,st_nation_code,st_latitude,st_longitude,st_elevation,vs30_m_sec,vs30_meas_type,slope_deg,epi_dist,epi_az,JB_dist,rup_dist,Rx_dist,Ry0_dist,late_triggered_flag_01,U_channel_code,U_azimuth_deg,V_channel_code,V_azimuth_deg,W_channel_code,U_hp,V_hp,W_hp,U_lp,V_lp,W_lp,rotd50_flag,Shortest_Usable_Period_for_PSA_Ave_Over_Components,Longest_Usable_Period_for_PSA_Ave_Over_Components,U_pga,V_pga,W_pga,rotD50_pga,rotD100_pga,rotD00_pga,U_pgv,V_pgv,W_pgv,rotD50_pgv,rotD100_pgv,rotD00_pgv,U_pgd,V_pgd,W_pgd,rotD50_pgd,rotD100_pgd,rotD00_pgd,U_T90,V_T90,W_T90,rotD50_T90,rotD100_T90,rotD00_T90,U_housner,V_housner,W_housner,rotD50_housner,rotD100_housner,rotD00_housner,U_CAV,V_CAV,W_CAV,rotD50_CAV,rotD100_CAV,rotD00_CAV,U_ia,V_ia,W_ia,rotD50_ia,rotD100_ia,rotD00_ia,U_T0_010,U_T0_025,U_T0_040,U_T0_050,U_T0_070,U_T0_100,U_T0_150,U_T0_200,U_T0_250,U_T0_300,U_T0_350,U_T0_400,U_T0_450,U_T0_500,U_T0_600,U_T0_700,U_T0_750,U_T0_800,U_T0_900,U_T1_000,U_T1_200,U_T1_400,U_T1_600,U_T1_800,U_T2_000,U_T2_500,U_T3_000,U_T3_500,U_T4_000,U_T4_500,U_T5_000,U_T6_000,U_T7_000,U_T8_000,U_T9_000,U_T10_000,V_T0_010,V_T0_025,V_T0_040,V_T0_050,V_T0_070,V_T0_100,V_T0_150,V_T0_200,V_T0_250,V_T0_300,V_T0_350,V_T0_400,V_T0_450,V_T0_500,V_T0_600,V_T0_700,V_T0_750,V_T0_800,V_T0_900,V_T1_000,V_T1_200,V_T1_400,V_T1_600,V_T1_800,V_T2_000,V_T2_500,V_T3_000,V_T3_500,V_T4_000,V_T4_500,V_T5_000,V_T6_000,V_T7_000,V_T8_000,V_T9_000,V_T10_000,W_T0_010,W_T0_025,W_T0_040,W_T0_050,W_T0_070,W_T0_100,W_T0_150,W_T0_200,W_T0_250,W_T0_300,W_T0_350,W_T0_400,W_T0_450,W_T0_500,W_T0_600,W_T0_700,W_T0_750,W_T0_800,W_T0_900,W_T1_000,W_T1_200,W_T1_400,W_T1_600,W_T1_800,W_T2_000,W_T2_500,W_T3_000,W_T3_500,W_T4_000,W_T4_500,W_T5_000,W_T6_000,W_T7_000,W_T8_000,W_T9_000,W_T10_000,rotD50_T0_010,rotD50_T0_025,rotD50_T0_040,rotD50_T0_050,rotD50_T0_070,rotD50_T0_100,rotD50_T0_150,rotD50_T0_200,rotD50_T0_250,rotD50_T0_300,rotD50_T0_350,rotD50_T0_400,rotD50_T0_450,rotD50_T0_500,rotD50_T0_600,rotD50_T0_700,rotD50_T0_750,rotD50_T0_800,rotD50_T0_900,rotD50_T1_000,rotD50_T1_200,rotD50_T1_400,rotD50_T1_600,rotD50_T1_800,rotD50_T2_000,rotD50_T2_500,rotD50_T3_000,rotD50_T3_500,rotD50_T4_000,rotD50_T4_500,rotD50_T5_000,rotD50_T6_000,rotD50_T7_000,rotD50_T8_000,rotD50_T9_000,rotD50_T10_000,rotD100_T0_010,rotD100_T0_025,rotD100_T0_040,rotD100_T0_050,rotD100_T0_070,rotD100_T0_100,rotD100_T0_150,rotD100_T0_200,rotD100_T0_250,rotD100_T0_300,rotD100_T0_350,rotD100_T0_400,rotD100_T0_450,rotD100_T0_500,rotD100_T0_600,rotD100_T0_700,rotD100_T0_750,rotD100_T0_800,rotD100_T0_900,rotD100_T1_000,rotD100_T1_200,rotD100_T1_400,rotD100_T1_600,rotD100_T1_800,rotD100_T2_000,rotD100_T2_500,rotD100_T3_000,rotD100_T3_500,rotD100_T4_000,rotD100_T4_500,rotD100_T5_000,rotD100_T6_000,rotD100_T7_000,rotD100_T8_000,rotD100_T9_000,rotD100_T10_000,rotD00_T0_010,rotD00_T0_025,rotD00_T0_040,rotD00_T0_050,rotD00_T0_070,rotD00_T0_100,rotD00_T0_150,rotD00_T0_200,rotD00_T0_250,rotD00_T0_300,rotD00_T0_350,rotD00_T0_400,rotD00_T0_450,rotD00_T0_500,rotD00_T0_600,rotD00_T0_700,rotD00_T0_750,rotD00_T0_800,rotD00_T0_900,rotD00_T1_000,rotD00_T1_200,rotD00_T1_400,rotD00_T1_600,rotD00_T1_800,rotD00_T2_000,rotD00_T2_500,rotD00_T3_000,rotD00_T3_500,rotD00_T4_000,rotD00_T4_500,rotD00_T5_000,rotD00_T6_000,rotD00_T7_000,rotD00_T8_000,rotD00_T9_000,rotD00_T10_000,Retained_database_specific_information,Event_trt,NGASUB_subduction_zone_name,NGASUB_subduction_event_type,NGASUB_Volcanic_Arc_Station_Flag,NGASUB_Volcanic_Arc_Hypocentre_Flag,ev_st_combinations,model,model_ssm -0,ESM,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_EMSC-20161026_0000077_&_ST_MZ01,,EQ_EMSC-20161026_0000077,2016-10-26 17:10:37,EMSC-20161026_0000077,611830883,us20007guy,8663031,20161026_0000077,,42.88834,13.13969,3.421,NF,5.23,,5.5,,5.26,,,161,38,-90,,,8.1,5.22396,3A,MZ01,MZ01_ESM,,D,0,,,,42.671575,13.270813,859,432,MASW,2.99,26.36251853,155.9379295,22.54138981,23.31192011,-0.72,22.53,0,E,90,N,0,Z,0.08,0.08,0.08,30,30,30,Both horizontal components and RotD50.,0.026666667,15.625,-108.780061,222.716024,-45.881192,158.0578535,223.527557,100.333954,-6.29355,-11.968429,1.87797,8.49725,11.9684,5.66205,-0.491045,0.816809,0.409598,0.5915245,0.819616,5.66205,5.115,3.5,7.075,4.0375,5.22,3.29,15.8938,22.4358,6.56143,17.28745,22.4361,15.4313,222.3692659,249.1042814,98.69522581,237.2638944,281.3945904,219.5205067,11.72180552,20.44563019,1.706962667,16.08371738,21.20602943,10.96140531,108.814,109.145,113.382,113.855,131.154,157.119,209.572,287.553,322.037,470.346,485.438,366.386,230.659,150.823,147.798,88.6999,74.8389,56.7993,50.7337,45.2617,31.7445,17.8258,10.69,8.3071,5.9755,4.94116,4.19675,2.94533,1.77386,1.43809,1.10865,0.808699,0.646502,0.555276,0.485435,0.430637,222.754,223.874,223.206,233.682,226.536,229.423,367.39,689.011,604.778,614.015,558.911,464.005,384.068,304.436,181.511,116.186,101.368,89.2144,69.9108,54.475,36.2397,25.3938,18.5248,14.0174,10.9633,6.5821,4.62422,3.73092,3.46864,2.7935,1.90001,1.37214,1.1054,0.939974,0.825001,0.738696,46.0036,46.7648,49.8155,55.3152,56.0385,97.4233,87.01,109.309,141.071,128.861,138.416,105.426,73.6946,47.991,41.638,32.189,28.8204,22.6039,23.6324,20.3062,11.4845,8.40455,6.18486,5.77979,5.52651,5.29949,5.60751,4.01614,2.89897,1.92162,1.26359,0.71051,0.451174,0.32469,0.251564,0.210068,158.237,159.057,160.614,166.106,163.9575,172.0525,267.403,541.9695,509.462,477.9505,486.2615,439.2885,321.112,237.947,157.5885,95.1981,76.06495,63.2522,50.7961,44.6243,31.13795,20.54695,13.13655,9.948655,7.798775,6.13877,4.5332,3.48062,2.587275,2.129465,1.746825,1.201655,0.9443365,0.7416165,0.599498,0.5308465,223.582,224.737,224.181,234.909,227.348,229.636,369.917,694.73,614.773,614.015,558.911,474.467,398.221,304.436,183.322,116.499,101.444,89.2144,69.9108,54.475,36.2397,25.396,18.5646,14.0695,11.0188,6.64568,4.70183,4.07226,3.48888,2.82703,2.0778,1.39204,1.11718,0.947651,0.830024,0.742738,100.334,100.603,104.649,104.309,119.811,132.008,195.791,228.186,272.999,345.806,358.876,205.642,200.462,150.823,114.108,76.1539,65.8692,52.0546,39.8062,35.2361,22.6864,14.8157,9.6153,7.65188,5.67826,4.32238,3.16842,2.29032,1.67326,1.24244,0.982716,0.764951,0.629198,0.548478,0.48188,0.427676,,,,,,,ev_lon13.14ev_lat42.888st_lon13.2708st_lat42.6716,EUR,EUR -1,NGAWest2,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_HelenaMontana-01_&_ST_CarrollCollege,1,EQ_HelenaMontana-01,1935-10-31 18:38:00,,,,,,,46.61,-111.96,6,U,,,5.999478682,,,,,75,75,160,,,,,USGS,CarrollCollege,CarrollCollege_NGAWest2,,,,,,,46.58,-112.03,,593.35,"('3b_4b_4c (check NGAWest2 flatfile for details)',)",,6.31,,2.07,,-2.07,8.046385723,,H1,180,H2,270,V,,,,,,,Only RotD50.,Shortest usable period is not provided for NGAWest2 db,6.134969325,,,97.170012,154.017,,,,,8.7544,10.1,,,,,3.7782,3.01,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,101.60217,109.30302,160.75647,193.72788,233.45838,262.27035,242.86617,137.94822,195.08166,184.61439,184.60458,165.87729,132.42519,98.65917,52.244136,42.072147,42.649956,43.504407,45.100494,46.611234,54.132561,56.968632,53.050518,44.712018,38.924118,27.213921,18.330966,12.42927,8.7433587,7.00438905,5.6328039,3.740553,2.8117422,2.1854718,1.7450028,1.4245101,158.922,161.865,220.725,263.889,358.065,310.977,416.925,252.117,287.433,294.3,298.224,270.756,172.656,140.283,105.948,97.119,91.0368,91.5273,99.081,99.081,83.0907,63.765,51.5025,43.7526,35.2179,22.1706,15.0093,10.3986,7.83819,5.77809,4.55184,2.98224,2.12877,1.6677,1.34397,1.09872,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ASCR,,,,,ev_lon-111.96ev_lat46.61st_lon-112.03st_lat46.58,USA,USA -2,NGASUB,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_32_&_ST_0,3001112,EQ_32,1992-05-23 10:30:00,,,,,,,13.475,-89.968,30.3,TF,,,6.01,,,,,266,31,64,,28.871,,,MARN,0,0_NGASUB,,,,,,,13.901,-89.932,,519,0 (check NGASUB flatfile for details),,47.52844,,42.3033488,53.7305448,49.36,-6.15,,H1,0,H2,90,V,,,,,,,Only RotD50.,-999,1.120393132,,,,19.587627,,,,,,1.2827,,,,,,0.12268,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19.77965775,23.00567625,22.57553718,21.93305085,27.28007964,40.56590979,44.0809407,47.56503087,45.49767147,43.657443,59.85950166,55.47373515,66.88610055,47.69909433,36.10163385,32.12992782,31.02004404,25.57102068,18.32013576,12.56328441,8.49204612,5.340633651,3.360548916,2.373493203,1.814767596,0.935975043,0.565687764,0.477673425,0.308442096,0.258203615,0.206077689,0.151994178,0.115239051,0.102401685,0.0792648,0.0591543,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Crustal (Subduction),Central_America_N,Crustal (Subduction),"Forearc, Forearc NE in Japan","Forearc, Forearc NE in Japan",ev_lon-89.968ev_lat13.475st_lon-89.932st_lat13.901,CCA,CCA -3,Turkiye_SMD_DB,Unrestricted non-commercial use with acknowledgement/citation (stated Open Data Commons Attribution license on designsafe-ci.org),EQ_1976-08-19 01:12:39_&_ST_2001,,EQ_1976-08-19_01_12_39,1976-08-19 01:12:39,,,,,,,37.751,29.012,15,NF,,,5.3,,,,,164,45,-30,,13.1658,,,TK,2001,2001_Turkiye_SMD,,,,,,,37.76219,29.09222,427,345,measured,,7.2,,5.3,14,-5.3,0,,H1,0,H2,90,V,0.5,0.7,0.6,50,35,35,"Both horizontal components, geometric mean and RotD50.",,1,349.4699685,265.0300011,175.139892,345.196345,397.5286327,,25.71706851,16.74596444,3.691003062,20.92157556,25.96406635,,2.321535194,1.306427358,0.424777783,1.76671965,2.308163168,,,,,,,,,,,,,,42.81945921,39.91230851,23.01366895,41.83484503,43.05897711,,,,,,,,352.5137751,371.7939459,436.9675422,473.7189885,467.1723851,650.984528,566.0361838,637.8539283,928.4857133,644.5311038,585.407876,887.7871752,919.7338768,948.991776,762.4288679,516.614736,453.5151081,371.1364385,245.3134717,185.3005298,114.8505799,87.79503155,58.68839465,41.24137244,29.23518517,17.74726511,11.58969587,7.740172404,5.475992031,4.138949853,3.428248707,2.445621228,1.795600818,1.359768024,1.059524145,0.846344997,269.0489776,315.4147958,446.7169037,502.7303016,580.1022935,601.7686556,669.0149803,513.9840746,605.2320967,689.0293168,741.2015887,761.1543213,687.0242951,634.9311045,441.632002,298.5782685,259.1369202,221.1998158,154.9156735,104.9689787,68.85758976,42.83862094,28.18929398,20.15359827,15.35405675,9.035385723,5.965897545,4.242641553,3.185243235,2.493461164,2.005100235,1.388219967,1.0213191,0.783943587,0.621046575,0.504247734,178.5869426,203.5847865,370.0625309,494.5172372,583.0962035,463.9003341,373.5391027,215.1353444,262.739266,145.3607659,153.2835769,128.5626722,118.3886555,101.3540486,79.6795099,55.25484658,53.83497073,54.65994366,52.58029625,36.43523958,26.55829614,23.75661311,16.95943971,10.26755115,9.107675613,3.5656407,1.966543992,1.321249059,0.994831119,0.781450376,0.630628002,0.439305534,0.324726696,0.250134399,0.198685854,0.16164918,349.601708,369.5689143,435.3062216,471.504741,511.8556784,607.3665359,560.8208788,552.4788943,788.0604967,658.995012,690.0313112,820.4574792,813.3028167,771.7576442,590.6726264,392.3657239,345.7152999,284.6507653,197.1927543,140.7055334,88.60075431,62.86843075,45.85777106,31.90222202,21.49231404,13.26438549,9.207631665,6.516281709,4.700142675,3.722125896,2.745626724,1.82487582,1.340730738,1.029177891,0.814873536,0.660902643,401.4325555,420.6328004,461.3746721,503.7327865,597.825012,810.1050529,675.9317268,646.6043002,963.3097379,713.7606496,918.9786853,961.08658,966.5096431,953.7293576,773.8470487,532.937026,483.8884004,398.3168299,262.4140606,188.1390455,117.2709159,88.76718979,60.81813192,41.28863309,29.30295952,17.87134396,11.67445917,7.796032506,5.664512763,4.452417612,3.444079104,2.45398131,1.801078722,1.363887243,1.062860526,0.849159486,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ACR_shallow,,,,,ev_lon29.012ev_lat37.751st_lon29.0922st_lat37.7622,MIE,MIE -4,kiknet,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_2017_12_31_071100_&_ST_OITH11,OITH111712310711,EQ_2017_12_31_071100,2017-12-31 07:11:00,,,,,,,33.33,132.197,52,TF,,,3.9,,,,,353,27,-132,,,,,kiknet,OITH11,OITH11_kiknet,,,,,,,33.2844,131.2118,,458.5260518,measured,,91.77380711,,89.8074312,103.2607496,-89.43607088,6.47537781,,H1,0,H2,90,V,,,,,,,Two horizontal components only.,0.025,4,1.148,1.125,,1.14094224,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.1455137,1.170333,1.2639204,1.4065578,2.0498976,3.7883277,5.04234,1.9111842,0.979038,0.8370873,0.8371854,0.567018,0.3585555,0.3014613,0.2554524,0.1702035,0.1655928,0.1499949,0.0998658,0.0845622,0.0375723,0.0442431,0.0243288,0.0206991,0.0161865,0.0092214,0.0054936,0.0037278,0.002943,0.00220725,0.001962,0.0014715,0.0008829,0.0008829,0.0008829,0.0008829,0.0011448,0.0011698,0.0012715,0.0013027,0.0018758,0.0035329,0.0045913,0.002345,0.0013091,0.001148,0.0006805,0.0006129,0.0003926,0.0003049,0.0002422,0.0002107,0.0001877,0.0001466,0.0001078,8.49E-05,6.12E-05,4.22E-05,2.70E-05,1.73E-05,1.75E-05,1.04E-05,6.40E-06,5.70E-06,3.90E-06,2.75E-06,2.30E-06,1.20E-06,1.20E-06,9.00E-07,7.00E-07,7.00E-07,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.036285381,0.037007194,0.039449768,0.043300039,0.062195302,0.115582305,0.155538328,0.068399665,0.036625513,0.03174797,0.024466669,0.019124101,0.012179765,0.009847959,0.008088241,0.006163356,0.005740206,0.004829948,0.003456381,0.002622068,0.001543604,0.001427586,0.000819657,0.000601923,0.000509502,0.000301749,0.000189883,0.000146586,0.000107028,7.63E-05,6.81E-05,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ev_lon132.197ev_lat33.33st_lon131.2118st_lat33.2844,JPN,JPN +,orig_db,orig_db_license,eq_st_combo,orig_db_rec_identifier,event_id,event_time,esm_ev_id,ISC_ev_id,USGS_ev_id,INGV_ev_id,EMSC_ev_id,ev_nation_code,ev_latitude,ev_longitude,ev_depth_km,fm_type_code,ML,ML_ref,Mw,Mw_ref,Ms,Ms_ref,event_source_id,es_strike,es_dip,es_rake,es_strike_dip_rake_ref,es_z_top,es_length,es_width,network_code,station_code_orig,station_code,location_code,instrument_code,sensor_depth_m,housing_code,installation_code,st_nation_code,st_latitude,st_longitude,st_elevation,vs30_m_sec,vs30_meas_type,slope_deg,epi_dist,epi_az,JB_dist,rup_dist,Rx_dist,Ry0_dist,late_triggered_flag_01,U_channel_code,U_azimuth_deg,V_channel_code,V_azimuth_deg,W_channel_code,U_hp,V_hp,W_hp,U_lp,V_lp,W_lp,rotd50_flag,Shortest_Usable_Period_for_PSA_Ave_Over_Components,Longest_Usable_Period_for_PSA_Ave_Over_Components,U_pga,V_pga,W_pga,rotD50_pga,rotD100_pga,rotD00_pga,U_pgv,V_pgv,W_pgv,rotD50_pgv,rotD100_pgv,rotD00_pgv,U_pgd,V_pgd,W_pgd,rotD50_pgd,rotD100_pgd,rotD00_pgd,U_T90,V_T90,W_T90,rotD50_T90,rotD100_T90,rotD00_T90,U_housner,V_housner,W_housner,rotD50_housner,rotD100_housner,rotD00_housner,U_CAV,V_CAV,W_CAV,rotD50_CAV,rotD100_CAV,rotD00_CAV,U_ia,V_ia,W_ia,rotD50_ia,rotD100_ia,rotD00_ia,U_T0_010,U_T0_025,U_T0_040,U_T0_050,U_T0_070,U_T0_100,U_T0_150,U_T0_200,U_T0_250,U_T0_300,U_T0_350,U_T0_400,U_T0_450,U_T0_500,U_T0_600,U_T0_700,U_T0_750,U_T0_800,U_T0_900,U_T1_000,U_T1_200,U_T1_400,U_T1_600,U_T1_800,U_T2_000,U_T2_500,U_T3_000,U_T3_500,U_T4_000,U_T4_500,U_T5_000,U_T6_000,U_T7_000,U_T8_000,U_T9_000,U_T10_000,V_T0_010,V_T0_025,V_T0_040,V_T0_050,V_T0_070,V_T0_100,V_T0_150,V_T0_200,V_T0_250,V_T0_300,V_T0_350,V_T0_400,V_T0_450,V_T0_500,V_T0_600,V_T0_700,V_T0_750,V_T0_800,V_T0_900,V_T1_000,V_T1_200,V_T1_400,V_T1_600,V_T1_800,V_T2_000,V_T2_500,V_T3_000,V_T3_500,V_T4_000,V_T4_500,V_T5_000,V_T6_000,V_T7_000,V_T8_000,V_T9_000,V_T10_000,W_T0_010,W_T0_025,W_T0_040,W_T0_050,W_T0_070,W_T0_100,W_T0_150,W_T0_200,W_T0_250,W_T0_300,W_T0_350,W_T0_400,W_T0_450,W_T0_500,W_T0_600,W_T0_700,W_T0_750,W_T0_800,W_T0_900,W_T1_000,W_T1_200,W_T1_400,W_T1_600,W_T1_800,W_T2_000,W_T2_500,W_T3_000,W_T3_500,W_T4_000,W_T4_500,W_T5_000,W_T6_000,W_T7_000,W_T8_000,W_T9_000,W_T10_000,rotD50_T0_010,rotD50_T0_025,rotD50_T0_040,rotD50_T0_050,rotD50_T0_070,rotD50_T0_100,rotD50_T0_150,rotD50_T0_200,rotD50_T0_250,rotD50_T0_300,rotD50_T0_350,rotD50_T0_400,rotD50_T0_450,rotD50_T0_500,rotD50_T0_600,rotD50_T0_700,rotD50_T0_750,rotD50_T0_800,rotD50_T0_900,rotD50_T1_000,rotD50_T1_200,rotD50_T1_400,rotD50_T1_600,rotD50_T1_800,rotD50_T2_000,rotD50_T2_500,rotD50_T3_000,rotD50_T3_500,rotD50_T4_000,rotD50_T4_500,rotD50_T5_000,rotD50_T6_000,rotD50_T7_000,rotD50_T8_000,rotD50_T9_000,rotD50_T10_000,rotD100_T0_010,rotD100_T0_025,rotD100_T0_040,rotD100_T0_050,rotD100_T0_070,rotD100_T0_100,rotD100_T0_150,rotD100_T0_200,rotD100_T0_250,rotD100_T0_300,rotD100_T0_350,rotD100_T0_400,rotD100_T0_450,rotD100_T0_500,rotD100_T0_600,rotD100_T0_700,rotD100_T0_750,rotD100_T0_800,rotD100_T0_900,rotD100_T1_000,rotD100_T1_200,rotD100_T1_400,rotD100_T1_600,rotD100_T1_800,rotD100_T2_000,rotD100_T2_500,rotD100_T3_000,rotD100_T3_500,rotD100_T4_000,rotD100_T4_500,rotD100_T5_000,rotD100_T6_000,rotD100_T7_000,rotD100_T8_000,rotD100_T9_000,rotD100_T10_000,rotD00_T0_010,rotD00_T0_025,rotD00_T0_040,rotD00_T0_050,rotD00_T0_070,rotD00_T0_100,rotD00_T0_150,rotD00_T0_200,rotD00_T0_250,rotD00_T0_300,rotD00_T0_350,rotD00_T0_400,rotD00_T0_450,rotD00_T0_500,rotD00_T0_600,rotD00_T0_700,rotD00_T0_750,rotD00_T0_800,rotD00_T0_900,rotD00_T1_000,rotD00_T1_200,rotD00_T1_400,rotD00_T1_600,rotD00_T1_800,rotD00_T2_000,rotD00_T2_500,rotD00_T3_000,rotD00_T3_500,rotD00_T4_000,rotD00_T4_500,rotD00_T5_000,rotD00_T6_000,rotD00_T7_000,rotD00_T8_000,rotD00_T9_000,rotD00_T10_000,Event_trt,model,model_ssm +0,ESM,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_EMSC-20161026_0000077_&_ST_MZ01,,EQ_EMSC-20161026_0000077,2016-10-26 17:10:37,EMSC-20161026_0000077,611830883,us20007guy,8663031,20161026_0000077,,42.88834,13.13969,3.421,NF,5.23,,5.5,,5.26,,,161,38,-90,,,8.1,5.22396,3A,MZ01,MZ01_ESM,,D,0,,,,42.671575,13.270813,859,432,MASW,2.99,26.36251853,155.9379295,22.54138981,23.31192011,-0.72,22.53,0,E,90,N,0,Z,0.08,0.08,0.08,30,30,30,Both horizontal components and RotD50.,0.026666667,15.625,-108.780061,222.716024,-45.881192,158.0578535,223.527557,100.333954,-6.29355,-11.968429,1.87797,8.49725,11.9684,5.66205,-0.491045,0.816809,0.409598,0.5915245,0.819616,5.66205,5.115,3.5,7.075,4.0375,5.22,3.29,15.8938,22.4358,6.56143,17.28745,22.4361,15.4313,222.3692659,249.1042814,98.69522581,237.2638944,281.3945904,219.5205067,11.72180552,20.44563019,1.706962667,16.08371738,21.20602943,10.96140531,108.814,109.145,113.382,113.855,131.154,157.119,209.572,287.553,322.037,470.346,485.438,366.386,230.659,150.823,147.798,88.6999,74.8389,56.7993,50.7337,45.2617,31.7445,17.8258,10.69,8.3071,5.9755,4.94116,4.19675,2.94533,1.77386,1.43809,1.10865,0.808699,0.646502,0.555276,0.485435,0.430637,222.754,223.874,223.206,233.682,226.536,229.423,367.39,689.011,604.778,614.015,558.911,464.005,384.068,304.436,181.511,116.186,101.368,89.2144,69.9108,54.475,36.2397,25.3938,18.5248,14.0174,10.9633,6.5821,4.62422,3.73092,3.46864,2.7935,1.90001,1.37214,1.1054,0.939974,0.825001,0.738696,46.0036,46.7648,49.8155,55.3152,56.0385,97.4233,87.01,109.309,141.071,128.861,138.416,105.426,73.6946,47.991,41.638,32.189,28.8204,22.6039,23.6324,20.3062,11.4845,8.40455,6.18486,5.77979,5.52651,5.29949,5.60751,4.01614,2.89897,1.92162,1.26359,0.71051,0.451174,0.32469,0.251564,0.210068,158.237,159.057,160.614,166.106,163.9575,172.0525,267.403,541.9695,509.462,477.9505,486.2615,439.2885,321.112,237.947,157.5885,95.1981,76.06495,63.2522,50.7961,44.6243,31.13795,20.54695,13.13655,9.948655,7.798775,6.13877,4.5332,3.48062,2.587275,2.129465,1.746825,1.201655,0.9443365,0.7416165,0.599498,0.5308465,223.582,224.737,224.181,234.909,227.348,229.636,369.917,694.73,614.773,614.015,558.911,474.467,398.221,304.436,183.322,116.499,101.444,89.2144,69.9108,54.475,36.2397,25.396,18.5646,14.0695,11.0188,6.64568,4.70183,4.07226,3.48888,2.82703,2.0778,1.39204,1.11718,0.947651,0.830024,0.742738,100.334,100.603,104.649,104.309,119.811,132.008,195.791,228.186,272.999,345.806,358.876,205.642,200.462,150.823,114.108,76.1539,65.8692,52.0546,39.8062,35.2361,22.6864,14.8157,9.6153,7.65188,5.67826,4.32238,3.16842,2.29032,1.67326,1.24244,0.982716,0.764951,0.629198,0.548478,0.48188,0.427676,,EUR,EUR +1,NGAWest2,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_HelenaMontana-01_&_ST_CarrollCollege,1,EQ_HelenaMontana-01,1935-10-31 18:38:00,,,,,,,46.61,-111.96,6,U,,,5.999478682,,,,,75,75,160,,,,,USGS,CarrollCollege,CarrollCollege_NGAWest2,,,,,,,46.58,-112.03,,593.35,"('3b_4b_4c (check NGAWest2 flatfile for details)',)",,6.31,,2.07,,-2.07,8.046385723,,H1,180,H2,270,V,,,,,,,Only RotD50.,Shortest usable period is not provided for NGAWest2 db,6.134969325,,,97.170012,154.017,,,,,8.7544,10.1,,,,,3.7782,3.01,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,101.60217,109.30302,160.75647,193.72788,233.45838,262.27035,242.86617,137.94822,195.08166,184.61439,184.60458,165.87729,132.42519,98.65917,52.244136,42.072147,42.649956,43.504407,45.100494,46.611234,54.132561,56.968632,53.050518,44.712018,38.924118,27.213921,18.330966,12.42927,8.7433587,7.00438905,5.6328039,3.740553,2.8117422,2.1854718,1.7450028,1.4245101,158.922,161.865,220.725,263.889,358.065,310.977,416.925,252.117,287.433,294.3,298.224,270.756,172.656,140.283,105.948,97.119,91.0368,91.5273,99.081,99.081,83.0907,63.765,51.5025,43.7526,35.2179,22.1706,15.0093,10.3986,7.83819,5.77809,4.55184,2.98224,2.12877,1.6677,1.34397,1.09872,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ASCR,USA,USA +2,NGASUB,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_32_&_ST_0,3001112,EQ_32,1992-05-23 10:30:00,,,,,,,13.475,-89.968,30.3,TF,,,6.01,,,,,266,31,64,,28.871,,,MARN,0,0_NGASUB,,,,,,,13.901,-89.932,,519,0 (check NGASUB flatfile for details),,47.52844,,42.3033488,53.7305448,49.36,-6.15,,H1,0,H2,90,V,,,,,,,Only RotD50.,-999,1.120393132,,,,19.587627,,,,,,1.2827,,,,,,0.12268,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19.77965775,23.00567625,22.57553718,21.93305085,27.28007964,40.56590979,44.0809407,47.56503087,45.49767147,43.657443,59.85950166,55.47373515,66.88610055,47.69909433,36.10163385,32.12992782,31.02004404,25.57102068,18.32013576,12.56328441,8.49204612,5.340633651,3.360548916,2.373493203,1.814767596,0.935975043,0.565687764,0.477673425,0.308442096,0.258203615,0.206077689,0.151994178,0.115239051,0.102401685,0.0792648,0.0591543,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Crustal (Subduction),CCA,CCA +3,Turkiye_SMD_DB,Unrestricted non-commercial use with acknowledgement/citation (stated Open Data Commons Attribution license on designsafe-ci.org),EQ_1976-08-19 01:12:39_&_ST_2001,,EQ_1976-08-19_01_12_39,1976-08-19 01:12:39,,,,,,,37.751,29.012,15,NF,,,5.3,,,,,164,45,-30,,13.1658,,,TK,2001,2001_Turkiye_SMD,,,,,,,37.76219,29.09222,427,345,measured,,7.2,,5.3,14,-5.3,0,,H1,0,H2,90,V,0.5,0.7,0.6,50,35,35,"Both horizontal components, geometric mean and RotD50.",,1,349.4699685,265.0300011,175.139892,345.196345,397.5286327,,25.71706851,16.74596444,3.691003062,20.92157556,25.96406635,,2.321535194,1.306427358,0.424777783,1.76671965,2.308163168,,,,,,,,,,,,,,42.81945921,39.91230851,23.01366895,41.83484503,43.05897711,,,,,,,,352.5137751,371.7939459,436.9675422,473.7189885,467.1723851,650.984528,566.0361838,637.8539283,928.4857133,644.5311038,585.407876,887.7871752,919.7338768,948.991776,762.4288679,516.614736,453.5151081,371.1364385,245.3134717,185.3005298,114.8505799,87.79503155,58.68839465,41.24137244,29.23518517,17.74726511,11.58969587,7.740172404,5.475992031,4.138949853,3.428248707,2.445621228,1.795600818,1.359768024,1.059524145,0.846344997,269.0489776,315.4147958,446.7169037,502.7303016,580.1022935,601.7686556,669.0149803,513.9840746,605.2320967,689.0293168,741.2015887,761.1543213,687.0242951,634.9311045,441.632002,298.5782685,259.1369202,221.1998158,154.9156735,104.9689787,68.85758976,42.83862094,28.18929398,20.15359827,15.35405675,9.035385723,5.965897545,4.242641553,3.185243235,2.493461164,2.005100235,1.388219967,1.0213191,0.783943587,0.621046575,0.504247734,178.5869426,203.5847865,370.0625309,494.5172372,583.0962035,463.9003341,373.5391027,215.1353444,262.739266,145.3607659,153.2835769,128.5626722,118.3886555,101.3540486,79.6795099,55.25484658,53.83497073,54.65994366,52.58029625,36.43523958,26.55829614,23.75661311,16.95943971,10.26755115,9.107675613,3.5656407,1.966543992,1.321249059,0.994831119,0.781450376,0.630628002,0.439305534,0.324726696,0.250134399,0.198685854,0.16164918,349.601708,369.5689143,435.3062216,471.504741,511.8556784,607.3665359,560.8208788,552.4788943,788.0604967,658.995012,690.0313112,820.4574792,813.3028167,771.7576442,590.6726264,392.3657239,345.7152999,284.6507653,197.1927543,140.7055334,88.60075431,62.86843075,45.85777106,31.90222202,21.49231404,13.26438549,9.207631665,6.516281709,4.700142675,3.722125896,2.745626724,1.82487582,1.340730738,1.029177891,0.814873536,0.660902643,401.4325555,420.6328004,461.3746721,503.7327865,597.825012,810.1050529,675.9317268,646.6043002,963.3097379,713.7606496,918.9786853,961.08658,966.5096431,953.7293576,773.8470487,532.937026,483.8884004,398.3168299,262.4140606,188.1390455,117.2709159,88.76718979,60.81813192,41.28863309,29.30295952,17.87134396,11.67445917,7.796032506,5.664512763,4.452417612,3.444079104,2.45398131,1.801078722,1.363887243,1.062860526,0.849159486,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ACR_shallow,MIE,MIE +4,kiknet,Unrestricted non-commercial use with acknowledgement/citation (assume Open Data Commons Attribution license),EQ_2017_12_31_071100_&_ST_OITH11,OITH111712310711,EQ_2017_12_31_071100,2017-12-31 07:11:00,,,,,,,33.33,132.197,52,TF,,,3.9,,,,,353,27,-132,,,,,kiknet,OITH11,OITH11_kiknet,,,,,,,33.2844,131.2118,,458.5260518,measured,,91.77380711,,89.8074312,103.2607496,-89.43607088,6.47537781,,H1,0,H2,90,V,,,,,,,Two horizontal components only.,0.025,4,1.148,1.125,,1.14094224,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.1455137,1.170333,1.2639204,1.4065578,2.0498976,3.7883277,5.04234,1.9111842,0.979038,0.8370873,0.8371854,0.567018,0.3585555,0.3014613,0.2554524,0.1702035,0.1655928,0.1499949,0.0998658,0.0845622,0.0375723,0.0442431,0.0243288,0.0206991,0.0161865,0.0092214,0.0054936,0.0037278,0.002943,0.00220725,0.001962,0.0014715,0.0008829,0.0008829,0.0008829,0.0008829,0.0011448,0.0011698,0.0012715,0.0013027,0.0018758,0.0035329,0.0045913,0.002345,0.0013091,0.001148,0.0006805,0.0006129,0.0003926,0.0003049,0.0002422,0.0002107,0.0001877,0.0001466,0.0001078,8.49E-05,6.12E-05,4.22E-05,2.70E-05,1.73E-05,1.75E-05,1.04E-05,6.40E-06,5.70E-06,3.90E-06,2.75E-06,2.30E-06,1.20E-06,1.20E-06,9.00E-07,7.00E-07,7.00E-07,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.036285381,0.037007194,0.039449768,0.043300039,0.062195302,0.115582305,0.155538328,0.068399665,0.036625513,0.03174797,0.024466669,0.019124101,0.012179765,0.009847959,0.008088241,0.006163356,0.005740206,0.004829948,0.003456381,0.002622068,0.001543604,0.001427586,0.000819657,0.000601923,0.000509502,0.000301749,0.000189883,0.000146586,0.000107028,7.63E-05,6.81E-05,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,JPN,JPN From 3d238aa1dba79bde22117598ca11e306aba06432 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 13 Mar 2024 13:00:46 +0100 Subject: [PATCH 55/59] update --- openquake/smt/parsers/esm_flatfile_parser.py | 1 - openquake/smt/parsers/esm_url_flatfile_parser.py | 1 - openquake/smt/parsers/esm_ws_flatfile_parser.py | 1 - openquake/smt/parsers/gem_flatfile_parser.py | 2 -- 4 files changed, 5 deletions(-) diff --git a/openquake/smt/parsers/esm_flatfile_parser.py b/openquake/smt/parsers/esm_flatfile_parser.py index fde3ef66e..242394f9b 100644 --- a/openquake/smt/parsers/esm_flatfile_parser.py +++ b/openquake/smt/parsers/esm_flatfile_parser.py @@ -520,7 +520,6 @@ def _retreive_ground_motion_from_row(self, row, header_list): # Not a spectral period but T90 continue iky = header.replace(key, "").replace("_", ".") - #print imt, key, header, iky periods.append(float(iky)) value = row[header].strip() if value: diff --git a/openquake/smt/parsers/esm_url_flatfile_parser.py b/openquake/smt/parsers/esm_url_flatfile_parser.py index 732e79522..14036f390 100644 --- a/openquake/smt/parsers/esm_url_flatfile_parser.py +++ b/openquake/smt/parsers/esm_url_flatfile_parser.py @@ -509,7 +509,6 @@ def _retreive_ground_motion_from_row(self, row, header_list): # Not a spectral period but T90 continue iky = header.replace(key, "").replace("_", ".") - #print imt, key, header, iky periods.append(float(iky)) value = row[header].strip() if value: diff --git a/openquake/smt/parsers/esm_ws_flatfile_parser.py b/openquake/smt/parsers/esm_ws_flatfile_parser.py index 137f79e3c..8d02dabdb 100644 --- a/openquake/smt/parsers/esm_ws_flatfile_parser.py +++ b/openquake/smt/parsers/esm_ws_flatfile_parser.py @@ -504,7 +504,6 @@ def _retreive_ground_motion_from_row(self, row, header_list): # Not a spectral period but T90 continue iky = header.replace(key, "").replace("_", ".") - #print imt, key, header, iky periods.append(float(iky)) value = row[header].strip() if value: diff --git a/openquake/smt/parsers/gem_flatfile_parser.py b/openquake/smt/parsers/gem_flatfile_parser.py index 76c735b6b..b241f29bb 100644 --- a/openquake/smt/parsers/gem_flatfile_parser.py +++ b/openquake/smt/parsers/gem_flatfile_parser.py @@ -78,7 +78,6 @@ def parse(self, location='./'): """ assert os.path.isfile(self.filename) headers = getline(self.filename, 1).rstrip("\n").split(";") - print(HEADERS) for hdr in HEADERS: if hdr not in headers: raise ValueError("Required header %s is missing in file" @@ -495,7 +494,6 @@ def _retreive_ground_motion_from_row(self, row, header_list): # Not a spectral period but T90 continue iky = header.replace(key, "").replace("_", ".") - #print imt, key, header, iky periods.append(float(iky)) value = row[header].strip() if value: From 5bb3ceded1afb2bb38f48607cf87372a6f3a794b Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 18 Mar 2024 19:49:21 +0100 Subject: [PATCH 56/59] update --- docsrc/contents/smt.rst | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/docsrc/contents/smt.rst b/docsrc/contents/smt.rst index d8a53f4cd..76c23e552 100644 --- a/docsrc/contents/smt.rst +++ b/docsrc/contents/smt.rst @@ -104,21 +104,9 @@ We can specify the inputs to perform a residual analysis with as follows: [models] - [models.1-AbrahamsonGulerce2020SInter] - region = "GLO" - - [models.2-AbrahamsonGulerce2020SInter] + [models.AbrahamsonGulerce2020SInter] region = "CAS" - [models.AbrahamsonEtAl2014] - - [models.AbrahamsonEtAl2014RegJPN] - region = "JPN" # nb currently a bug for GMMs which use add_alias to regionalise from class name (currently need to still specify corresponding regionalisation params in toml) - - [models.BooreEtAl2014] - - [models.BooreEtAl2014LowQ] - [models.YenierAtkinson2015BSSA] sigma_model = 'al_atik_2015_sigma' # use Al Atik (2015) sigma model @@ -151,9 +139,6 @@ We can specify the inputs to perform a residual analysis with as follows: [models.3-BooreEtAl2014] site_term = 'NRCan15SiteTermLinear' # use NRCan15 linear site term - - [models.NGAEastGMPE] - gmpe_table = 'NGAEast_FRANKEL_J15.hdf5' # use a gmpe table [models.HassaniAtkinson2018] d_sigma = 100 # gmpe specific param @@ -163,6 +148,19 @@ We can specify the inputs to perform a residual analysis with as follows: sigma_mu_epsilon = 2.85697 c3_epsilon = 1.72 region = 4 # Note that within the residuals toml we specify the region here, whereas in the comparison module toml (below) we specify the region for all ESHM20 GMMs uniformly using the eshm20_region param + + [models.NGAEastGMPE] + gmpe_table = 'NGAEast_FRANKEL_J15.hdf5' # use a gmpe table + + # Note: currently a bug for GMMs which use add_alias to specify gsim + # class (will be fixed - current workarounds demonstrated below) + + [models.AbrahamsonEtAl2014RegJPN] + region = "JPN" # add_alias bug means must still specify 'JPN' region param + + [models.NGAEastUSGSGMPE] + gmpe_table = 'usgs17.hdf5' # another example of add_alias bug + [imts] imt_list = ['PGA', 'SA(0.2)', 'SA(0.5)', 'SA(1.0'] From b71f55844eadcf8449a11a6d898f5a827769522d Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 18 Mar 2024 20:44:55 +0100 Subject: [PATCH 57/59] update --- docsrc/contents/smt.rst | 39 ++------------------------------------- 1 file changed, 2 insertions(+), 37 deletions(-) diff --git a/docsrc/contents/smt.rst b/docsrc/contents/smt.rst index 76c23e552..5165592bc 100644 --- a/docsrc/contents/smt.rst +++ b/docsrc/contents/smt.rst @@ -94,7 +94,7 @@ We can specify the inputs to perform a residual analysis with as follows: > gmpe_list = ['AkkarEtAlRjb2014', 'BooreEtAl2014', 'BooreEtAl2020', 'CauzziEtAl2014', 'KothaEtAl2020regional', 'LanzanoEtAl2019_RJB_OMO'] > imt_list = ['PGA','SA(0.1)', 'SA(0.2)', 'SA(0.5)', 'SA(1.0)'] -3. We can also specify the GMPEs and intensity measures within a ``.toml`` file. The ``.toml`` file method is required for specifying the inputs of GMPEs with user-specifiable input parameters e.g. regionalisation parameter or logic tree branch parameters. Note that here the GMPEs listed in the first ``.toml`` file are not appropriate for our target region, but have been selected to demonstrate how GMPEs with additional inputs can be specified within a ``.toml`` file. The second ``.toml`` file provides the GMPEs and intensity measures we use for running this demonstration analysis. +3. We can also specify the GMPEs and intensity measures within a ``.toml`` file. The ``.toml`` file method is required for the use of GMPEs with user-specifiable input parameters. Note that here the GMPEs listed in this example ``.toml`` file are not appropriate for our target region, but have been selected to demonstrate how GMPEs with additional inputs can be specified. The additional input parameters which are specifiable for certain GMPEs are available within their corresponding GSIM files (found in ``oq-engine.openquake.hazardlib.gsim``, or for ModifiableGMPE features in ``oq-engine.openquake.hazardlib.gsim.mgmpe.modifiable_gmpe``). Note also that a GMPE sigma model must be provided by the GMPE for the computation of residuals. If a sigma model is not provided by the GMPE, it can be specified as demonstrated below. @@ -164,42 +164,7 @@ We can specify the inputs to perform a residual analysis with as follows: [imts] imt_list = ['PGA', 'SA(0.2)', 'SA(0.5)', 'SA(1.0'] - - Adhering to this formatting, we here provide the GMPEs and intensity measures we consider within the subsequent analysis: - - .. code-block:: ini - - [models] - - [models.AbrahamsonEtAl2014] - - [models.AkkarEtAlRjb2014] - - [models.AmeriEtAl2017Rjb] - - [models.BindiEtAl2014Rjb] - - [models.BooreEtAl2014] - - [models.BooreEtAl2020] - - [models.CauzziEtAl2014] - - [models.CampbellBozorgnia2014] - - [models.ChiouYoungs2014] - - [models.HassaniAtkinson2020Asc] - - [models.KaleEtAl2015Turkey] - - [models.KothaEtAl2020regional] - - [models.LanzanoEtAl2019_RJB_OMO] - - [imts] - imt_list = ["PGA","SA(0.1)","SA(0.2)","SA(0.5)","SA(1.0)","SA(2.0)"] - + 4. Following specification of the GMPEs and intensity measures, we can now compute the ground-motion residuals using the Residuals module. We first need to get the metadata from the parsed ``.pkl`` file (stored within the metadata folder): From 85b65e686df2a5a28b038dbe61060d0899c4bac1 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 19 Mar 2024 15:02:55 +0100 Subject: [PATCH 58/59] update --- docsrc/contents/smt.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docsrc/contents/smt.rst b/docsrc/contents/smt.rst index 5165592bc..99c58d657 100644 --- a/docsrc/contents/smt.rst +++ b/docsrc/contents/smt.rst @@ -141,7 +141,7 @@ We can specify the inputs to perform a residual analysis with as follows: site_term = 'NRCan15SiteTermLinear' # use NRCan15 linear site term [models.HassaniAtkinson2018] - d_sigma = 100 # gmpe specific param + d_sigma = 100 kappa0 = 0.04 [models.KothaEtAl2020ESHM20] # ESHM20 model From 1b5d8a24578695b160a9fba31ebc7abf1f44972c Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 20 Mar 2024 12:27:53 +0100 Subject: [PATCH 59/59] update --- openquake/smt/residuals/gmpe_residuals.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openquake/smt/residuals/gmpe_residuals.py b/openquake/smt/residuals/gmpe_residuals.py index 43c1289ba..dfcb5698a 100755 --- a/openquake/smt/residuals/gmpe_residuals.py +++ b/openquake/smt/residuals/gmpe_residuals.py @@ -435,8 +435,8 @@ def get_residuals(self, ctx_database, nodal_plane_index=1, continue for res_type in self.residuals[gmpe][imtx].keys(): if res_type == "Inter event": - inter_ev = \ - context["Residual"][gmpe][imtx][res_type] + inter_ev = context["Residual"][gmpe][imtx][ + res_type] if np.all( np.fabs(inter_ev - inter_ev[0]) < 1.0E-12): # Single inter-event residual