Example #1
0
def compute_intra_event_residual(sa_intra_cm, periods, station_data, num_simu):

	# Computing correlation coefficients
	num_stations = len(station_data)
	num_periods = len(periods)
	if sa_intra_cm == 'Jayaram & Baker (2009)':
		rho = np.zeros((num_stations, num_stations, num_periods))
		for i in range(num_stations):
			loc_i = np.array([station_data[i]['Latitude'],
							  station_data[i]['Longitude']])
			for j in range(num_stations):
				loc_j = np.array([station_data[j]['Latitude'],
								  station_data[j]['Longitude']])
				# Computing station-wise distances
				stn_dist = np.linalg.norm(loc_i - loc_j) * 111.0
				for k in range(num_periods):
					rho[i, j, k] = \
						CorrelationModel.jayaram_baker_correlation_2009(periods[k],
							stn_dist, flag_clustering = False)
		# Simulating residuals
		residuals = np.zeros((num_stations, num_periods, num_simu))
		for k in range(num_periods):
			residuals[:, k, :] = np.random.multivariate_normal(np.zeros(num_stations),
															   rho[:, :, k], num_simu).T
	elif sa_intra_cm == 'Loth & Baker (2013)':
		residuals = CorrelationModel.loth_baker_correlation_2013(station_data, periods, num_simu)

	elif sa_intra_cm == 'Markhvida et al. (2017)':
		num_pc = 19
		residuals = CorrelationModel.markhvida_ceferino_baker_correlation_2017(station_data, periods, num_simu, num_pc)

	# return
	return residuals
Example #2
0
def compute_inter_event_residual(sa_inter_cm, periods, num_simu):

	num_periods = len(periods)
	if sa_inter_cm == 'Baker & Jayaram (2008)':
		rho = np.array([CorrelationModel.baker_jayaram_correlation_2008(T1, T2)
						for T1 in periods for T2 in periods]).reshape([num_periods, num_periods])
	else:
		# TODO: extending this to more inter-event correlation models
		print('ComputeIntensityMeaure: currently only supporting Baker & Jayaram (2008)')

	# Simulating residuals
	residuals = np.random.multivariate_normal(np.zeros(num_periods), rho, num_simu).T
	# return
	return residuals