Geomag algorithms is built around the ObsPy, SciPy, and NumPy frameworks, which provide many tools for processing timeseries and other scientific data.
- Data are read into a standard Internal Data Format by Input/Output factories.
- Algorithms process data.
- A command line script
geomag.py
uses a Controller to manage input, optional processing, and output of data.
ObsPy Trace and Stream objects are used to hold timeseries data.
- Custom geomag metadata properties are added to each Trace object's Stats by IO factories.
- Data gaps are represented as
numpy.nan
. - Times use
obspy.core.UTCDateTime
. - Most channels use
nT
units. - Angular channels use
radians
.
Base class is geomagio.TimeseriesFactory
.
Exception base class is geomagio.TimeseriesFactoryException
.
- Edge/Earthworm
geomagio.edge.EdgeFactory
- IAGA 2002
geomagio.iaga2002.IAGA2002Factory
- IMF V2.83 (Input Only)
geomagio.imfv283.IMFV283Factory
- PCDCP
geomagio.pcdcp.PCDCPFactory
Base class is geomagio.algorithm.Algorithm
Exception base class is geomagio.algorithm.AlgorithmException
- Adjusted
geomagio.algorithm.AdjustedAlgorithm
- Delta F
geomagio.algorithm.DeltaFAlgorithm
- XYZ
geomagio.algorithm.XYZAlgorithm
The following example:
- Uses
EdgeFactory
to read data from the USGS EDGE server - Uses
XYZAlgorithm
to change the data from observatory channels (H, E, Z, F) to geographic channels (X, Y, Z, F). - Plots the data using matplotlib
from geomagio.algorithm import XYZAlgorithm
from geomagio.edge import EdgeFactory
from obspy.core import UTCDateTime
# read data from the USGS EDGE server
factory = EdgeFactory(host='cwbpub.cr.usgs.gov', port=2060)
hezf = factory.get_timeseries(
observatory='BOU',
interval='minute',
type='variation',
channels=('H', 'E', 'Z', 'F'),
starttime=UTCDateTime('2015-11-01T00:00:00Z'),
endtime=UTCDateTime('2015-11-01T23:59:59Z'))
# convert from HEZF channels to XYZF channels
algorithm = XYZAlgorithm(informat='obs', outformat='geo')
xyzf = algorithm.process(hezf)
# open interactive matplotlib plot
xyzf.plot()