def loadOrigin(self, origin_id, orig, station_list): """ Fetches Origin (and MT) from the scisola database and return it in origin object. Returns True/False and origin object/error. """ _query = "SELECT `Origin`.`id`, `Origin`.`timestamp`, " + \ "`Origin`.`datetime`, " + \ "`Origin`.`magnitude`, `Origin`.`latitude`, " + \ "`Origin`.`longitude`, `Origin`.`depth`, " + \ "`Origin`.`automatic`, `Origin`.`results_dir`, " + \ "`Event`.`id`, " + \ "`Moment_Tensor`.`cent_shift`, " + \ "`Moment_Tensor`.`cent_time`, `Moment_Tensor`." + \ "`cent_latitude`, `Moment_Tensor`.`cent_longitude`, " + \ "`Moment_Tensor`.`cent_depth`, `Moment_Tensor`." + \ "`correlation`, `Moment_Tensor`.`var_reduction`, " + \ "`Moment_Tensor`.`mw`, `Moment_Tensor`.`mrr`, " + \ "`Moment_Tensor`.`mtt`, `Moment_Tensor`.`mpp`, " + \ "`Moment_Tensor`.`mrt`, `Moment_Tensor`.`mrp`, " + \ "`Moment_Tensor`.`mtp`, `Moment_Tensor`.`vol`, " + \ "`Moment_Tensor`.`dc`, `Moment_Tensor`.`clvd`, " + \ "`Moment_Tensor`.`mo`, `Moment_Tensor`.`strike`, " + \ "`Moment_Tensor`.`dip`, `Moment_Tensor`.`rake`, " + \ "`Moment_Tensor`.`strike_2`, `Moment_Tensor`.`dip_2`, " + \ "`Moment_Tensor`.`rake_2`, `Moment_Tensor`.`p_azm`, " + \ "`Moment_Tensor`.`p_plunge`, `Moment_Tensor`.`t_azm`, " + \ "`Moment_Tensor`.`t_plunge`, `Moment_Tensor`.`b_azm`, " + \ "`Moment_Tensor`.`b_plunge`, `Moment_Tensor`.`minSV`, " + \ "`Moment_Tensor`.`maxSV`, `Moment_Tensor`.`CN`, " + \ "`Moment_Tensor`.`stVar`, `Moment_Tensor`.`fmVar`, " + \ "`Moment_Tensor`.`frequency_1`, `Moment_Tensor`." + \ "`frequency_2`, `Moment_Tensor`.`frequency_3`, " + \ "`Moment_Tensor`.`frequency_4` FROM `Origin` INNER JOIN " + \ "`Event` ON `Origin`.`id` = `Event`.`Origin_id` INNER JOIN " + \ "`Moment_Tensor` ON " + \ "`Origin`.`id` = `Moment_Tensor`.`Origin_id` " + \ "WHERE `Origin`.`id` = " + str(origin_id) + ";" _row = self.read([_query])[0][0] # converts string to datetime object _orig_tp = date.datetime.strptime(_row[1], "%Y/%m/%d %H:%M:%S.%f") orig = origin.Origin() orig.id = int(_row[0]) orig.timestamp = _orig_tp orig.datetime = _row[2] orig.magnitude = float(_row[3]) orig.latitude = float(_row[4]) orig.longitude = float(_row[5]) orig.depth = float(_row[6]) orig.automatic = bool(_row[7]) orig.results_dir = _row[8] orig.event_id = _row[9] orig.mt = origin.MomentTensor() orig.mt.cent_shift = int(_row[10]) orig.mt.cent_time = float(_row[11]) orig.mt.cent_latitude = float(_row[12]) orig.mt.cent_longitude = float(_row[13]) orig.mt.cent_depth = float(_row[14]) orig.mt.correlation = float(_row[15]) orig.mt.var_reduction = float(_row[16]) orig.mt.mw = float(_row[17]) orig.mt.mrr = float(_row[18]) orig.mt.mtt = float(_row[19]) orig.mt.mpp = float(_row[20]) orig.mt.mrt = float(_row[21]) orig.mt.mrp = float(_row[22]) orig.mt.mtp = float(_row[23]) orig.mt.vol = float(_row[24]) orig.mt.dc = float(_row[25]) orig.mt.clvd = float(_row[26]) orig.mt.mo = float(_row[27]) orig.mt.strike = float(_row[28]) orig.mt.dip = float(_row[29]) orig.mt.rake = float(_row[30]) orig.mt.strike2 = float(_row[31]) orig.mt.dip2 = float(_row[32]) orig.mt.rake2 = float(_row[33]) orig.mt.p_azm = float(_row[34]) orig.mt.p_plunge = float(_row[35]) orig.mt.t_azm = float(_row[36]) orig.mt.t_plunge = float(_row[37]) orig.mt.b_azm = float(_row[38]) orig.mt.b_plunge = float(_row[39]) orig.mt.minSV = float(_row[40]) orig.mt.maxSV = float(_row[41]) orig.mt.CN = float(_row[42]) orig.mt.stVar = float(_row[43]) orig.mt.fmVar = float(_row[44]) orig.mt.frequency_1 = float(_row[45]) orig.mt.frequency_2 = float(_row[46]) orig.mt.frequency_3 = float(_row[47]) orig.mt.frequency_4 = float(_row[48]) _query = "SELECT DISTINCT `streamNetworkCode`, " + \ "`streamStationCode` FROM `Stream_Contribution` " + \ "WHERE `Origin_id` = " + str(orig.id) + ";" _rows = self.read([_query])[0] # get stations for _row in _rows: _station = stream.Station() _station.network = _row[0] _station.code = _row[1] _query = "SELECT `streamCode`, `var_reduction`, " + \ "`mseed_path` FROM `Stream_Contribution` " + \ "WHERE `Origin_id` = " + str(orig.id) + \ " AND streamStationCode = '" + str(_station.code) + \ "' ORDER BY `streamCode`;" _stream_rows = self.read([_query])[0] # get station's streams for _stream_row in _stream_rows: _stream = stream.Stream() _stream.code = _stream_row[0] _stream.reduction = float(_stream_row[1]) _stream.mseed_path = _stream_row[2] _station.stream_list.append(_stream) station_list.append(_station) return orig, station_list
def loadStations(self, station_list): """ Fetches Streams (and Stations) from the scisola database and saves them in station_list (list containing stations objects). Returns list -station_list-. """ queries = [] _query = "SELECT Station.code, Station.network, " + \ "Station.description, Station.latitude, " + \ "Station.longitude, Station.elevation, " + \ "Station.priority FROM Station;" queries.append(_query) _query = "SELECT Station.network, Station.code, Stream.code, " + \ "Station.description, Station.latitude, Station.longitude, " + \ "Station.elevation, Stream.azimuth, Stream.dip, " + \ "Stream.gain_sensor, Stream.gain_datalogger, " + \ "Stream.norm_factor, Stream.nzeros, Stream.zeros_content, " + \ "Stream.npoles, Stream.poles_content, Stream.priority " + \ "FROM Station INNER JOIN Stream ON Station.id=Stream.station_id;" queries.append(_query) _station_rows, _stream_rows = self.read(queries) for _row in _station_rows: station = stream.Station() station.code = _row[0] station.network = _row[1] station.description = _row[2] station.latitude = _row[3] station.longitude = _row[4] station.elevation = _row[5] station.priority = int(_row[6]) station_list.append(station) _stream_list = [] for _row in _stream_rows: strm = stream.Stream() strm.station = stream.Station() strm.station.code = _row[1] strm.station.network = _row[0] strm.station.description = _row[3] strm.station.latitude = _row[4] strm.station.longitude = _row[5] strm.station.elevation = _row[6] strm.code = _row[2] strm.azimuth = _row[7] strm.dip = _row[8] strm.gain_sensor = _row[9] strm.gain_datalogger = _row[10] strm.norm_factor = _row[11] strm.nzeros = _row[12] strm.zeros_content = stream.blob2list(_row[13]) strm.npoles = _row[14] strm.poles_content = stream.blob2list(_row[15]) strm.priority = int(_row[16]) _stream_list.append(strm) for station in station_list: station.stream_list = [ _stream for _stream in _stream_list if _stream.station.network == station.network and _stream.station.code == station.code ] return stream.removeEmptyStations(station_list)