Giter Club home page Giter Club logo

seismic's Introduction

SeisMIC logo

Build Status Documentation Status License: EUPL v1.2 codecov DOI PyPI Python 3.10

Monitoring Velocity Changes using Ambient Seismic Noise

SeisMIC (Seismological Monitoring using Interferometric Concepts) is a python software that emerged from the miic library. SeisMIC provides functionality to apply some concepts of seismic interferometry to different data of elastic waves. Its main use case is the monitoring of temporal changes in a mediums Green's Function (i.e., monitoring of temporal velocity changes).

A velocity change time series

SeisMIC will handle the whole workflow to create velocity-change time-series including:

  • Downloading raw data
  • Adaptable preprocessing of the waveform data
  • Computating cross- and/or autocorrelations
  • Plotting tools for correlations
  • Database management of ambient seismic noise correlations
  • Adaptable postprocessing of correlations
  • Computation of velocity change (dv/v) time series
  • Postprocessing of dv/v time series
  • Plotting of dv/v time-series
  • Inverting dv/v onto a spatial grid

SeisMIC handles correlations and data in an ObsPy-like manner.

Installation of this package

Installation from PyPi (pip install)

SeisMIC is now deployed on PyPi and can simply be installed using:

# We recommend installing mpi4py from the conda-forge channel instead of PyPi
conda install -c conda-forge mpi4py

pip install seismic

# If you want to execute the tutorials, you will have to install jupyter as well
pip install jupyter

Installation from Source Code

To obtain the lates features, you can install SeisMIC from its source code, available on GitHub.

Developers should download the dev branch

Download this package via GitHub and install it via bash terminal (the few steps shown below) or using the graphical user interface

# Download via wget or web-browser
wget https://github.com/PeterMakus/SeisMIC/archive/refs/heads/main.zip

# For developers download the dev branch
wget https://github.com/PeterMakus/SeisMIC/archive/refs/heads/dev.zip

# unzip the package
unzip main.zip  # or dev.zip

# Change directory to the same directory that this repo is in (i.e., same directory as setup.py)
cd SeisMIC-main  # That's the standard name the folder should have

# Create the conda environment and install dependencies
conda install -c conda-forge mpi4py
conda env create -f environment.yml

# Activate the conda environment
conda activate seismic

# Install the package in editable mode
pip install -e .

# If you want to execute the tutorials, you will have to install jupyter as well
pip install jupyter

Getting started

Access SeisMIC's documentation here.

SeisMIC comes with a few tutorials (Jupyter notebooks). You can find those in the examples/ directory.

Acknowledging the Use of SeisMIC in your Work

If you should use SeisMIC to create published scientific content please cite the SeisMIC paper: Makus, P., & Sens-Schönfelder, C. (2024). SeisMIC-an Open Source Python Toolset to Compute Velocity Changes from Ambient Seismic Noise..

Reporting Bugs / Contact the developers

This version is an early release. If you encounter any issues or unexpected behaviour, please open an issue here on GitHub.

Questions?

If you have any questions that do not require any changes in the source code, please use the discussions feature

Contributing

Thank you for contributing to SeisMIC! Have a look at our guidelines for contributors

seismic's People

Contributors

dependabot[bot] avatar petermakus avatar sensschoenfelder avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

seismic's Issues

fix dependency versions

Problem

Lately, in particular, scipy and numpy have the habit of changing their syntax.

Proposed solution

Fix version codes in the various dependency files.

Correlating data from various locations

Problem

Currently, CorrDB does not differ between data from various locations.

Proposed solution

The probably easiest way to implement this into the current framework would be to create an additional subgroup in the hdf5 files, in the sense that the current hdf5 tree would be updated to net0-net1/stat0-stat1/loc0-loc1/cha0-cha1.

Important is to allow for backward compatibility with the old hdf5 structure. probably only possible by allowing for both file structures in the params.yaml.

mpi block when remove_response=True

When remove_response=True, Correlator.pxcorr sometimes acts up, when processing using mpi. This seems to be caused by a process that opens an hdf5 file at CorrelationDataBase._write() and freezes while doing so. Then, the next process wanting to write to that file crashes as files cannot be opened by several processes.

problem about "network"

Hello, I collected some data by myself with a three-component seismograph, the original format of the data is DLD, the data can be converted into miniseed format using sololite, but there is no network information in the data, may I ask how to edit the network when I edit and sort the files? Can i define one myself?

tutorial needs an import for sc.compute_spectrogram function

Avoid duplicates

  • I searched existing issues

Bug Summary

In the examples, if I run the tutorial "Plot a time-dependent spectrogram"

from seismic.plot.plot_spectrum import plot_spct_series
from matplotlib import pyplot as plt

f, t, S = sc.compute_spectrogram('X9', 'IR1', 'HHE', starttime, endtime, 7200, freq_max=12.5)
fig = plt.figure(figsize=(9, 7))
plot_spct_series(S, f, t, log_scale=True)

the module sc is not found

NameError Traceback (most recent call last)
Cell In[1], line 4
1 from seismic.plot.plot_spectrum import plot_spct_series
2 from matplotlib import pyplot as plt
----> 4 f, t, S = sc.compute_spectrogram('X9', 'IR1', 'HHE', starttime, endtime, 7200, freq_max=12.5)
5 fig = plt.figure(figsize=(9, 7))
6 plot_spct_series(S, f, t, log_scale=True)

NameError: name 'sc' is not defined

Code to Reproduce

from seismic.plot.plot_spectrum import plot_spct_series
from matplotlib import pyplot as plt

f, t, S = sc.compute_spectrogram('X9', 'IR1', 'HHE', starttime, endtime, 7200, freq_max=12.5)
fig = plt.figure(figsize=(9, 7))
plot_spct_series(S, f, t, log_scale=True)

Error Traceback

NameError                                 Traceback (most recent call last)
Cell In[1], line 4
      1 from seismic.plot.plot_spectrum import plot_spct_series
      2 from matplotlib import pyplot as plt
----> 4 f, t, S = sc.compute_spectrogram('X9', 'IR1', 'HHE', starttime, endtime, 7200, freq_max=12.5)
      5 fig = plt.figure(figsize=(9, 7))
      6 plot_spct_series(S, f, t, log_scale=True)

NameError: name 'sc' is not defined

SeisMIC Version?

last

Operating System?

OS/X Ventura

Python Version?

Python 3.11.5

Installation Method?

conda

Data from Julday 360 cannot be loaded

When attempting to load any correlation from julday 360 (which year doesn't matter), the following error occurs:
ValueError: unconverted data remains: 1

This is caused by an issue with obspy's UTCDateTime and should be fixed with their next release (1.23). However, until then it should be possible to implement a dirty fix.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.