def test(stationfile,xmlfile,eventdict): tmp,dbfile = tempfile.mkstemp() os.close(tmp) os.remove(dbfile) try: print('Testing load from XML format...') t1 = time.time() stations1 = StationList.loadFromXML([xmlfile],dbfile) t2 = time.time() print('Passed load from XML format %i stations in %.2f seconds.' % (len(stations1),t2-t1)) print('Testing filling in distance and derived MMI/PGM values...') source = Source(eventdict) stations1.fillTables(source) print('Passed filling in distance and derived MMI/PGM values...') print('Testing retrieval of MMI data from StationList object...') t1 = time.time() mmidf1 = stations1.getMMIStations() t2 = time.time() print('Passed retrieval of %i MMI data in %.2f seconds from StationList object.' % (len(mmidf1),t2-t1)) print('Testing retrieval of instrumented data from StationList object...') t1 = time.time() imtdf1 = stations1.getInstrumentedStations() t2 = time.time() print('Passed retrieval of %i instrumented data in %.2f seconds from StationList object.' % (len(imtdf1),t2-t1)) print('Testing load from sqlite format...') t1 = time.time() stations2 = StationList(stationfile) t2 = time.time() print('Passed load from sqlite format %i stations in %.2f seconds.' % (len(stations1),t2-t1)) print('Testing retrieval of MMI data from StationList object...') t1 = time.time() mmidf2 = stations2.getMMIStations() t2 = time.time() print('Passed retrieval of %i MMI data in %.2f seconds from StationList object.' % (len(mmidf2),t2-t1)) print('Testing retrieval of instrumented data from StationList object...') t1 = time.time() imtdf2 = stations2.getInstrumentedStations() t2 = time.time() print('Passed retrieval of %i instrumented data in %.2f seconds from StationList object.' % (len(imtdf1),t2-t1)) assert(len(stations1) == len(stations2)) except Exception as msg: print('Error caught: %s' % str(msg)) if os.path.isfile(dbfile): os.remove(dbfile)
def _test(): tmp, dbfile = tempfile.mkstemp() os.close(tmp) os.remove(dbfile) homedir = os.path.dirname(os.path.abspath(__file__)) xmlfile = os.path.abspath(os.path.join(homedir, '..', 'data', 'eventdata', 'northridge', 'northridge_stations.xml')) stationfile = os.path.abspath(os.path.join(homedir, '..', 'data', 'eventdata', 'northridge', 'northridge_stations.db')) eventdict = {'lat': 34.213, 'lon': -118.537, 'depth': 18.2, 'mag': 6.7, 'time': datetime(1994, 1, 17, 12, 30, 55), 'mech': 'ALL', 'dip': 45, 'rake': 90} try: print('Testing load from XML format...') t1 = time.time() stations1 = StationList.loadFromXML([xmlfile], dbfile) t2 = time.time() print('Passed load from XML format %i stations in %.2f seconds.' % (len(stations1), t2 - t1)) print('Testing filling in distance and derived MMI/PGM values...') source = Source(eventdict) stations1.fillTables(source) print('Passed filling in distance and derived MMI/PGM values...') print('Testing retrieval of MMI data from StationList object...') t1 = time.time() mmidf1 = stations1.getMMIStations() t2 = time.time() print('Passed retrieval of %i MMI data in %.2f seconds from StationList object.' % ( len(mmidf1), t2 - t1)) print('Testing retrieval of instrumented data from StationList object...') t1 = time.time() imtdf1 = stations1.getInstrumentedStations() t2 = time.time() print('Passed retrieval of %i instrumented data in %.2f seconds from StationList object.' % ( len(imtdf1), t2 - t1)) print('Testing load from sqlite format...') t1 = time.time() stations2 = StationList(stationfile) t2 = time.time() print('Passed load from sqlite format %i stations in %.2f seconds.' % (len(stations1), t2 - t1)) print('Testing retrieval of MMI data from StationList object...') t1 = time.time() mmidf2 = stations2.getMMIStations() t2 = time.time() print('Passed retrieval of %i MMI data in %.2f seconds from StationList object.' % ( len(mmidf2), t2 - t1)) print('Testing retrieval of instrumented data from StationList object...') t1 = time.time() imtdf2 = stations2.getInstrumentedStations() t2 = time.time() print('Passed retrieval of %i instrumented data in %.2f seconds from StationList object.' % ( len(imtdf1), t2 - t1)) assert(len(stations1) == len(stations2)) except Exception as msg: print('Error caught: %s' % str(msg)) if os.path.isfile(dbfile): os.remove(dbfile)
def _test(): tmp, dbfile = tempfile.mkstemp() os.close(tmp) os.remove(dbfile) homedir = os.path.dirname(os.path.abspath(__file__)) xmlfile = os.path.abspath( os.path.join(homedir, '..', 'data', 'eventdata', 'northridge', 'northridge_stations.xml')) stationfile = os.path.abspath( os.path.join(homedir, '..', 'data', 'eventdata', 'northridge', 'northridge_stations.db')) eventdict = { 'lat': 34.213, 'lon': -118.537, 'depth': 18.2, 'mag': 6.7, 'time': datetime(1994, 1, 17, 12, 30, 55), 'mech': 'ALL', 'dip': 45, 'rake': 90 } try: print('Testing load from XML format...') t1 = time.time() stations1 = StationList.loadFromXML([xmlfile], dbfile) t2 = time.time() print('Passed load from XML format %i stations in %.2f seconds.' % (len(stations1), t2 - t1)) print('Testing filling in distance and derived MMI/PGM values...') source = Source(eventdict) stations1.fillTables(source) print('Passed filling in distance and derived MMI/PGM values...') print('Testing retrieval of MMI data from StationList object...') t1 = time.time() mmidf1 = stations1.getMMIStations() t2 = time.time() print( 'Passed retrieval of %i MMI data in %.2f seconds from StationList object.' % (len(mmidf1), t2 - t1)) print( 'Testing retrieval of instrumented data from StationList object...' ) t1 = time.time() imtdf1 = stations1.getInstrumentedStations() t2 = time.time() print( 'Passed retrieval of %i instrumented data in %.2f seconds from StationList object.' % (len(imtdf1), t2 - t1)) print('Testing load from sqlite format...') t1 = time.time() stations2 = StationList(stationfile) t2 = time.time() print('Passed load from sqlite format %i stations in %.2f seconds.' % (len(stations1), t2 - t1)) print('Testing retrieval of MMI data from StationList object...') t1 = time.time() mmidf2 = stations2.getMMIStations() t2 = time.time() print( 'Passed retrieval of %i MMI data in %.2f seconds from StationList object.' % (len(mmidf2), t2 - t1)) print( 'Testing retrieval of instrumented data from StationList object...' ) t1 = time.time() imtdf2 = stations2.getInstrumentedStations() t2 = time.time() print( 'Passed retrieval of %i instrumented data in %.2f seconds from StationList object.' % (len(imtdf1), t2 - t1)) assert (len(stations1) == len(stations2)) except Exception as msg: print('Error caught: %s' % str(msg)) if os.path.isfile(dbfile): os.remove(dbfile)
def _test_intensity(): datadir = os.path.abspath( os.path.join(homedir, '..', 'data', 'eventdata', 'northridge')) shakefile = os.path.join(datadir, 'northridge_grid.xml') topofile = os.path.join(datadir, 'northridge_topo.grd') faultfile = os.path.join(datadir, 'northridge_fault.txt') cityfile = os.path.join(datadir, 'northridge_cities.txt') coastfile = os.path.join(datadir, 'northridge_coastline.json') countryfile = os.path.join(datadir, 'northridge_countries.json') statefile = os.path.join(datadir, 'northridge_states.json') lakefile = os.path.join(datadir, 'northridge_lakes.json') oceanfile = os.path.join(datadir, 'northridge_ocean.json') stationfile = os.path.join(datadir, 'northridge_stations.db') roadfile = os.path.join(datadir, 'northridge_roads.json') tancptfile = os.path.join(shakedir, 'shakemap', 'mapping', 'tan.cpt') shakecptfile = os.path.join(shakedir, 'shakemap', 'mapping', 'shakecpt.cpt') layerdict = { 'coast': coastfile, 'ocean': oceanfile, 'lake': lakefile, 'country': countryfile, 'roads': roadfile, 'state': statefile } tancolormap = GMTColorMap.loadFromCPT(tancptfile) shakecolormap = GMTColorMap.loadFromCPT(shakecptfile) cities = BasemapCities.loadFromCSV(cityfile) shakemap = ShakeGrid.load(shakefile, adjust='res') stations = StationList(stationfile) fault = Fault.readFaultFile(faultfile) edict = shakemap.getEventDict() eventdict = { 'lat': edict['lat'], 'lon': edict['lon'], 'depth': edict['depth'], 'mag': edict['magnitude'], 'time': edict['event_timestamp'] } source = Source(eventdict, fault) maker = MapMaker(shakemap, topofile, stations, fault, layerdict, source, cities) # draw intensity map outfolder = os.path.expanduser('~') maker.setIntensityLayer('mmi') maker.setIntensityGMTColorMap(shakecolormap) intensity_map = maker.drawIntensityMap(outfolder) print('Intensity map saved as: %s' % intensity_map) # draw contour maps maker.setContourGMTColorMap(tancolormap) # Draw pgv contours maker.setContourLayer('pgv') contour_pgv_map = maker.drawContourMap(outfolder) print('PGV contour map saved as: %s' % contour_pgv_map) # Draw pga contours maker.setContourLayer('pga') contour_pga_map = maker.drawContourMap(outfolder) print('PGA contour map saved as: %s' % contour_pga_map) # Draw psa0.3 contours maker.setContourLayer('psa03') contour_psa03_map = maker.drawContourMap(outfolder) print('PSA0.3 contour map saved as: %s' % contour_psa03_map) # Draw psa1.0 contours maker.setContourLayer('psa10') contour_psa10_map = maker.drawContourMap(outfolder) print('PSA1.0 contour map saved as: %s' % contour_psa10_map) # Draw psa3.0 contours maker.setContourLayer('psa30') contour_psa30_map = maker.drawContourMap(outfolder) print('PSA3.0 contour map saved as: %s' % contour_psa30_map)
def test_station(tmpdir): homedir = os.path.dirname(os.path.abspath(__file__)) datadir = os.path.abspath(os.path.join(homedir, '..', 'data', 'eventdata', 'Calexico', 'input')) # # Read the event, source, and rupture files and produce a Source object # inputfile = os.path.join(datadir, 'stationlist_dat.xml') dyfifile = os.path.join(datadir, 'ciim3_dat.xml') eventfile = os.path.join(datadir, 'event.xml') rupturefile = os.path.join(datadir, 'wei_fault.txt') source_obj = Source.fromFile(eventfile, rupturefile=rupturefile) # # Set up the GMPE, IPE, and GMICE # gmpe_cy14 = ChiouYoungs2014() gmpe = MultiGMPE.from_list([gmpe_cy14], [1.0]) gmice = WGRW12() ipe = AllenEtAl2012() # # # rupture_ctx = source_obj.getRuptureContext([gmpe]) smdx = 0.0083333333 smdy = 0.0083333333 lonspan = 6.0 latspan = 4.0 vs30filename = os.path.join(datadir, '..', 'vs30', 'vs30.grd') sites_obj_grid = Sites.fromCenter( rupture_ctx.hypo_lon, rupture_ctx.hypo_lat, lonspan, latspan, smdx, smdy, defaultVs30=760.0, vs30File=vs30filename, vs30measured_grid=None, padding=False, resample=False ) xmlfiles = [inputfile, dyfifile] # dbfile = str(tmpdir.join('stations.db')) dbfile = os.path.join(str(tmpdir), 'stations.db') stations = StationList.fromXML(xmlfiles, dbfile, source_obj, sites_obj_grid, gmpe, ipe, gmice) df1 = stations.getStationDataframe(1, sort=True) df2 = stations.getStationDataframe(0, sort=True) # # In case the test starts failing because of some minor change # in one of the prediction or conversion equations (or roundoff # or whatever), but the code is running correctly, uncomment # these lines and re-run the test. Then, copy the new stations.db # file into tests/data/eventdata/Calexico/database/. Then # recomment these lines and rerun the test. It should succeed. # #shutil.copy(dbfile,'./stations.db') #print(os.getcwd()) # # We should probably check these dataframes against some established # set, and also check the database against a known database. # ref_dbfile = os.path.join(datadir, '..', 'database', 'stations.db') stations2 = StationList(ref_dbfile) ref_df1 = stations2.getStationDataframe(1, sort=True) ref_df2 = stations2.getStationDataframe(0, sort=True) # assert ref_df1.equals(df1) # assert ref_df2.equals(df2) pdt.assert_frame_equal(df1, ref_df1) pdt.assert_frame_equal(df2, ref_df2)