Source code for rockhound.prem

"""
Load the Preliminary Reference Earth Model (PREM) dataset.
"""
import pandas as pd
import numpy as np

from .registry import REGISTRY


[docs]def fetch_prem(*, load=True): r""" Fetch the Preliminary Reference Earth Model (PREM). The Preliminary reference Earth model [Dziewonsky1981]_ is a one-dimensional model representing the average Earth properties as a function of planetary radius. The model includes the depth, density, seismic velocities, attenuation (Q) and anisotropic parameter (:math:`\eta`) on the boundaries of several Earth layers. It's available through IRIS Data Services Products [IRIS2011]_ in a csv file (comma-separated values). The data is loaded into :class:`pandas.DataFrame` objects. If the file isn't already in your data directory, it will be downloaded automatically. Parameters ---------- load : bool Whether to load the data into a :class:`pandas.DataFrame` or just return the path to the downloaded data. Returns ------- prem : :class:`pandas.DataFrame` or str The loaded data or the file path to the downloaded data. The :class:`pandas.DataFrame` contains the following data: - ``radius`` and ``depth`` in km. - ``density`` in g/cm³. - ``Vpv``, ``Vph``, ``Vsv`` and ``Vsh`` in km/s. - ``eta``, ``Q_mu`` and ``Q_kappa`` (dimensionless). """ fname = REGISTRY.fetch("PREM_1s.csv") if not load: return fname data = np.loadtxt(fname, delimiter=",") columns = [ "radius", "depth", "density", "Vpv", "Vph", "Vsv", "Vsh", "eta", "Q_mu", "Q_kappa", ] prem = pd.DataFrame(data=data, columns=columns) return prem