def test_import_event(self): """testear que la lista de id de los sismografos implicados en un evento sismico coincida con los reales""" real_sensor_id = [] e = SeismicEvent.evento(file_name1) sensor_ids = [i.sensor_id for i in e.seismograms] e.count() return e
def test_event(self): e = SeismicEvent.evento(file_name1) estimation = Source.Source(e) src, error, rot, vec, val = estimation.source(numpoints=50, L=0.5, por=1) src2, error2, rot2, vec2, val2 = estimation.source(numpoints=25, L=0.25, por=0) # assert(sum(rot[:, 1:4]**2) != 0.0) return src, error, rot, vec, val, src2, error2, rot2, vec2, val2
def test_signal(self): """testear que la se~nal en python sea la que corresponde, hay algunos parametros que se pueden utilizar para no usar la se~nal completa, como por ejemplo, el promedio, la norma infitito""" e = SeismicEvent.evento(file_name2) seismograms = e.seismograms pass
def test_2_green_kernel(self): """la funcion no retorna nada en el kernel de green cuando la funcion no contiene al cero """ # evaluar la funcion de green para distintos intervalos de fuentes sismicas alpha = 5600 beta = 3500 numpoints = 50 L = 0.5 # valores conocidos en donde si se puede estimar la señal start = 22.139236 end = 22.639236 e = SeismicEvent.evento(file_name1) estimation = Source.Source(e) estimation2 = Source.Source(e) estimation.srcTime = np.linspace(start, end, numpoints) estimation2.srcTime = np.linspace(start - L, end + L, 3 * numpoints - 2) event = estimation.event LocX, LocY, LocZ = (event.LocX, event.LocY, event.LocZ) for G in event.seismograms: R = (G.x_coord - LocX, G.y_coord - LocY, G.z_coord - LocZ) # un intervalo adecuado para cada sismograma srcTime = np.linspace( G.timevector[0] - np.linalg.norm(R) / beta, G.timevector[-1] - np.linalg.norm(R) / alpha, numpoints ) t = G.timevector - srcTime[0] # assert(t[0] <= 0 <= t[-1]) Gk = GreenKernel(R=R, time=t, alpha=5600.0, beta=3500.0, rho=2700) plt.plot(t, Gk[0][0]) plt.show() print "suma para el primer intervalo >>", (Gk ** 2).sum(), "¿contiene al cero? >> ", t[0] <= 0 <= t[-1] # existe una subsecuencia en el segundo vector que debe contener al primer # vector, este es conocido tiene el tripe de largo y el triple de puntos assert estimation.srcTime[0] == estimation2.srcTime[numpoints - 1]
def test_0_artificial_event(self): """probar el algoritmo para un sismo artificial, se debe generar el mismo sismo producido en el codigo matlab para poder comparar resultados""" # copiamos un evento real e = SeismicEvent.evento(file_name1) origin_time = dateTime2Num(e.origin_time) srctime = np.linspace(start=origin_time, stop=origin_time + 0.01, num=70) srctime = np.reshape(srctime, (-1, 1)) src = np.zeros((70, 3)) src[10:25, 0] = 10 ^ (14) src[30:45, 1] = 10 ^ (14) src[50:65, 2] = 10 ^ (14) np.hstack((srctime, src)) for g in e.geosensors: g.data = self.set_up_sensor_from_source(g, src) pass
# -*- coding: utf-8 -*- """ Created on Mon Feb 8 23:26:41 2016 @author: leonardojofre """ import os from seismic_source import SeismicEvent from seismic_source.Source import Source from matplotlib import pylab as plt direc = os.path.dirname(__file__) file_name = os.path.join(direc,"./../../data-sets/1998_aug_09_21_49_22.4n3") e = SeismicEvent.evento(file_name) src = Source(e) src.source(numpoints=100, L=0.5, por=0.09) plt.plot(src[0]) plt.show()
def test_second_event(self): """testea que el evento sismico coincida con el calculado en matlab""" e = SeismicEvent.evento(file_name1) estimation = Source.Source(e) src, error, rot, vec, val = estimation.source(numpoints=100, L=0.5, por=0.1) return src, error, rot, vec, val