Source code for instaseis
#!/usr/bin/env python
import re
import warnings
from .version import get_git_version
class InstaseisError(Exception):
pass
class InstaseisWarning(UserWarning):
pass
class InstaseisNotFoundError(InstaseisError):
pass
class ReceiverParseError(InstaseisError):
pass
class SourceParseError(InstaseisError):
pass
[docs]def open_db(path, *args, **kwargs):
"""
Central function to open a local or remote Instaseis database. Any
keyword arguments are passed to the underlying
:class:`~instaseis.instaseis_db.InstaseisDB` or
:class:`~instaseis.remote_instaseis_db.RemoteInstaseisDB` classes.
:type path: str
:param path: Filepath or URL. Instaseis will determine if it is a local
file path or a HTTP URL and delegate to the corresponding class.
:returns: An initialized database object.
:rtype: :class:`~instaseis.instaseis_db.InstaseisDB` or
:class:`~instaseis.remote_instaseis_db.RemoteInstaseisDB`
If a directory is passed, it will return a local Instaseis database:
>>> import instaseis
>>> db = instaseis.open_db("/path/to/DB") # doctest: +SKIP
>>> print(db) # doctest: +SKIP
InstaseisDB reciprocal Green's function Database (v7) generated ...
components : vertical and horizontal
velocity model : ak135f
...
For an HTTP URL it will return a remote Instaseis database:
>>> db = instaseis.open_db("http://webadress.com:8765") # doctest: +SKIP
>>> print(db) # doctest: +SKIP
RemoteInstaseisDB reciprocal Green's function Database (v7) generated ...
components : vertical and horizontal
velocity model : ak135f
The special syntax ``syngine://MODEL_NAME`` will connect to the IRIS
syngine web service for the specified model.
>>> db = instaseis.open_db("syngine://ak135f") # doctest: +SKIP
>>> print(db) # doctest: +SKIP
SyngineInstaseisDB reciprocal Green's function Database (v7) ...
Syngine model name: 'ak135f'
Syngine service version: 0.0.2
components : vertical and horizontal
velocity model : ak135f
.. note::
If opening a local database and the ``ordered_output.nc4`` files are
located for example in ``/path/to/DB/PZ/Data`` and
``/path/to/DB/PX/Data``, please pass ``/path/to/DB`` to the
:func:`~instaseis.open_db` function. Instaseis will recursively
search the child directories for the necessary files and open them.
"""
if path.startswith("syngine://"):
model = re.sub("syngine://", "", path).strip()
from instaseis.database_interfaces import syngine_instaseis_db
return syngine_instaseis_db.SyngineInstaseisDB(
model=model, *args, **kwargs
)
elif "://" in path:
from .database_interfaces import remote_instaseis_db
return remote_instaseis_db.RemoteInstaseisDB(path, *args, **kwargs)
else:
from .database_interfaces import find_and_open_files
return find_and_open_files(path=path, *args, **kwargs)
__version__ = get_git_version()
if __version__.startswith("0.0.0-tar/zipball"): # pragma: no cover
warnings.warn(
"Please don't install from a tarball. Use the proper pypi "
"release or install from git.",
UserWarning,
)
from .source import Source, Receiver, ForceSource, FiniteSource # NoQa