IRIS is a consortium of over 100 US universities dedicated to the operation of science facilities for the acquisition, management, and distribution of seismological data. The following instructions show you how to see our seismic data on the IRIS website. Ocean Networks Canada (ONC) has offshore seismometers streaming near real-time data to IRIS in addition to stored autonomous instrument data. Further details on all of the instruments that are part of the ONC network (Network Code: NV) can be found here: IRIS Data for NV Network.
IRIS has a number of web services that can be used to search, plot, and interact with their data. The full link to all of these tools can be found here: IRIS Web Services
The following table highlights key web services for either searching data within IRIS or for handy tools for studying earthquakes or time series data. More detailed information can be found at the IRIS Web Service link above.
Service Tool | Brief Description | Quick Link |
---|---|---|
Station Metadata | Retrieves metadata stored in SEED format | http://service.iris.edu/fdsnws/station/1/ |
Data Select | Retrieves time series data in miniSEED format | http://service.iris.edu/fdsnws/dataselect/1/ |
Time Series | Similar to the above Data Select but with additional features | http://service.iris.edu/irisws/timeseries/1/ |
Channel Descriptor | Provides the definition of a channel code | https://ds.iris.edu/ds/nodes/dmc/tools/data_channels/#??? |
Availability | Returns the miniSEED data for availability of data | https://service.iris.edu/fdsnws/availability/1/ |
Travel Time | Calculator for determining the travel times and ray parameters for seismic phases through a 1D spherical earth model. | http://service.iris.edu/irisws/traveltime/1/ |
Distance/Azimuth | Calculate the distance, azimuth, and back-azimuth between 2 locations | http://service.iris.edu/irisws/distaz/1/ |
Earth Model | Service for Earth Models | http://service.iris.edu/irisws/earth-model/1/ |
ONC currently has 14 different stations streaming to IRIS from distributed locations across the Cascadia Subduction Zone within the NV network off the west coast of Vancouver Island, British Columbia. The screenshot below was taken from IRIS's interactive map tool for the network which can be found here: Interactive Map Tool.
High frequency and low frequency data are available from the NV network. Low frequency (below 8hz) can be accessed at near real-time from IRIS. Data at higher frequencies can be made available but may be delayed when they are uploaded to IRIS due to military screening.
Channel codes are denoted by three characters that describes the sensor type, the frequency range, and the orientation following the SEED channel definitions (full manual found here: SEED Appendix). Refer to the Channel Descriptor web service link mentioned above to get a full definition on what the sensor type and frequency range portions of the channel code mean. Orientation codes in the NV network can be described as follows:
Orientation Codes | Description |
---|---|
N/E/Z |
|
1/2/3 |
|
Below is a screenshot of the time series builder. Any of the stations that have available data in IRIS can be filtered and plotted using this tool. Refer to the metadata aggregator page for a specific station to look for search parameters to input into the time series builder. By changing the Format tab, you can generate either a time series for the count data (plot) or download the miniSEED data that generates that plot (miniSEED). Other interesting files to download are CSV file or audio files from the waveform data; do this by clicking the permalink URL that is generated in the yellow box at the bottom.
Below is the waveform generated from the above search. This plot shows the BN1 channel from the ENHR station for 25Hz data from January 1st, 2019 between 00:00 (midnight) and 01:00.
The time axis is presented according to the Julian Day Calendar. Notice in the above illustration that the time axis of the plot is indicated as 2019 001, where 001 stands for January 1st, 2019 according to the Julian day calendar. (The date indicated in the plot header is also a good guide to relate the Julian day indicated in the time axis to the day of the month).
ObsPy is an open-source project dedicated to provide a Python framework for processing seismological data. It provides parsers for common file formats and seismological signal processing routines which allow the manipulation of seismological time series (see Beyreuther et al. 2010, Megies et al. 2011, Krischer et al. 2015). The goal of the ObsPy project is to facilitate rapid application development for seismology. ObsPy documentation can be found on their website: Obspy Home.
Refer again to the metadata aggregator for the NV network to show all the sample rates, stations, channels, etc… that Ocean Networks Canada has available in IRIS (http://ds.iris.edu/mda/NV/) in addition to the availability builder above to see if there is data for a given search time.
This will tell you what data are present in IRIS for each channel. Enter the NV network code, the station you are interested in (ENHR as an example), and then click the permalink in the yellow box at the bottom. This will open a new tab that lists all of the available data and will look something like this:
Time is listed as UTC format; for every Networks-Station entry in this list, data are present and stored in IRIS between the “earliest” and “latest” times. In the web service, you can further refine your search between certain sample rates, location codes, date ranges, channels, etc.
If you want to search for the three axes in IRIS (N ,E, and Z) of one specific channel, you can set the channel parameter to be something like BN*. This will return the search results for only the BNE, BNN, and BNZ channels. If you try a search that returns an error, go back and double check your search criteria. If everything you entered is correct, then Ocean Networks Canada may not have data stored in IRIS for that channel or specific search. |
The following steps assume ObsPy has been installed correctly on your computer. The following steps were performed on a Windows 10 machine with Anaconda and Spyder for access to Python. One suggestion is to follow the directions on the ObsPy page to set ObsPy up as a separate environment. The directions to install ObsPy in Anaconda as an environment can be found here: https://github.com/obspy/obspy/wiki/Installation-via-Anaconda. Otherwise, ObsPy can be installed like other Python packages with PyPi here: https://pypi.org/project/obspy/.
Once everything is installed, configured and running, a script can be written to start downloading waveform data in Python! Below is some basic information to get started accessing waveforms. Data can be further manipulated and plotted with a multitude of tools offered by ObsPy. Refer to the ObsPy Home for more information on these tools.
import obspy
import numpy as np
from obspy.clients.fdsn import Client
from obspy import UTCDateTime
from obspy import read
import matplotlib.pyplot as plt
from matplotlib.pyplot import figure
import pandas as pd
client = Client("IRIS")
t1 = UTCDateTime(2019, 01, 01, 0, 0, 0)
t2 = UTCDateTime(2019, 01, 01, 1, 0, 0)
IRIS and ObsPy work in UTC time so keep this in mind when searching |
station1 = client.get_waveforms("NV","ENHR",””,"BN?",t1,t2, attach_response = True)
Now data are stored and will be in a Stream variable mentioned above; all three axis of orientations are going to be stored in different ‘Traces’ in the form of instrument counts. These count values need to be converted to geophysical units to make sense of all the values.
station1.merge(method = 1, fill_value = 'interpolate')
inv = client.get_stations(starttime=t1, endtime=t2, network="NV", sta="ENHR", loc="", channel="BN*",level="response")
station1.rotate(method = '->ZNE', inventory = inv)
response = 'VEL'
pre_filt = (0.01, 0.1, 80, 100)
station1.remove_response(pre_filt = pre_filt, output = response)
station1.resample(20)
station1.plot()
import scipy.io as sio
sio.savemat('MatlabTester_ENHR2.mat', {station1[0].stats.channel : station1[0].data,
station1[1].stats.channel : station1[1].data,
station1[2].stats.channel : station1[2].data}
sio.savemat(‘[NameOfFile].mat’, {dictionary of station data})
NOTE: There is another method to save data in ObsPy to a .mat file, but the above method will keep all the data in one .mat file more organized. The ObsPy way can be found here: https://docs.obspy.org/tutorial/code_snippets/export_seismograms_to_matlab.html |