Git Product home page Git Product logo

obstools's Introduction

Software for processing broadband ocean-bottom seismic data

OBStools is a package containing Python tools for processing broadband ocean-bottom seismic (OBS) data. Current functionalities include removing vertical component noise from tilt and compliance effects, and calculating seafloor compliance. The code uses the StDb package for querying and building a station database and can be used through command-line scripts.

DOI build codecov

Installation, API documentation, scripts and tutorials are described at https://nfsi-canada.github.io/OBStools/

Authors: Pascal Audet (Developer and Maintainer) & Helen Janiszewski & (Developer of original Matlab version)

Contributing

All constructive contributions are welcome, e.g. bug reports, discussions or suggestions for new features. You can either open an issue on GitHub or make a pull request with your proposed changes. Before making a pull request, check if there is a corresponding issue opened and reference it in the pull request. If there isn't one, it is recommended to open one with your rationale for the change. New functionality or significant changes to the code that alter its behavior should come with corresponding tests and documentation. If you are new to contributing, you can open a work-in-progress pull request and have it iteratively reviewed.

Examples of contributions include notebooks that describe published examples of OBS data processing. Suggestions for improvements (speed, accuracy, etc.) are also welcome.

References

  • Bell, S. W., D. W. Forsyth, and Y. Ruan (2014), Removing noise from the vertical component records of ocean-bottom seismometers: Results from year one of the Cascadia Initiative, Bull. Seismol. Soc. Am., 105, 300-313, https://doi.org/10.1785/0120140054

  • Crawford, W.C., Webb, S.C., (2000). Identifying and removing tilt noise from low-frequency (0.1 Hz) seafloor vertical seismic data, Bull. seism. Soc. Am., 90, 952-963, https://doi.org/10.1785/0119990121

  • Janiszewski, H A, J B Gaherty, G A Abers, H Gao, Z C Eilon, Amphibious surface-wave phase-velocity measurements of the Cascadia subduction zone, Geophysical Journal International, Volume 217, Issue 3, June 2019, Pages 1929-1948, https://doi.org/10.1093/gji/ggz051

obstools's People

Contributors

paudetseis avatar ttkyryliuk avatar xtyangpsp 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

obstools's Issues

utils.calc_windowed_fft() does not return same number of windows as scipy.signal.spectrogram()

When I run atacr.DayNoise.QC_daily_spectra on a stream containing 1728001-sample traces, I get the following error:

Traceback (most recent call last):
  File "run_corrections.py", line 97, in <module>
    main()
  File "run_corrections.py", line 42, in main
    out_streams['ATACR w/o pre-rotation'] = run_atacr(stream)
  File "run_corrections.py", line 72, in run_atacr
    daynoise.average_daily_spectra(fig_average=True)
  File "/Users/crawford/_Work/Programming/OBStools/obstools/atacr/classes.py", line 664, in average_daily_spectra
    np.mean(ftZ[self.goodwins, :]*np.conj(ftZ[self.goodwins, :]),
IndexError: boolean index did not match indexed array along dimension 0; dimension is 341 but corresponding boolean dimension is 342

I see that self.goodwins is based on the length of "t" returned by spectrogram() and that ftZ is calculated using
utils.calc_windowed_fft()

This happens with multi-day data, which of course isn't logical for DayNoise(), but I suspect it would happen with daily data with a "high" sampling rate (20+sps). I can get rid of the problem by reducing the Trace length, but it appears in any case that spectrogram() and utils.sliding_window() don't calculate exactly the same windows, so the windows calculated for calc_windowed_fft() do not correspond exactly to those returned by spectrogram().

I leave it to you to decide if this is important or not.

Regards
Wayne Crawford

Question about frequency band during tilting calculation

Dear developers,

First of all, thanks for the package, it is very useful. Now, I have a question.
I note that on line 368 of atacr/utils.py the function calculate_tilt uses a default
frequency band of 0.005 to 0.035. Is there a reason to use this band?

I ask because the class DayNoise does not change this frequency band when
calling calculate_tilt during the function average_daily_spectra.

Thanks in advance,
Eduardo.

To do for OBStools

To do list for improvements to OBStools:

  • Improve documentation, especially for the utils and plot functions of obstools.atacr
  • Add more tests to improve code coverage
  • Add new modules for OBS data processing (e.g., orientation of horizontal components, etc.)

Error when using query_fdsn_stdb

Hi, developers, thanks for your excellent work and provding such a powerful tools!
Recently I am learning how to request and process obs seismic data using the OBStools, I encountered the same problem in two environments (one is the local server, another is the supercomputer cluster. Both are Linux system) when using query_fdsn_stdb to create the StDb Database.
ImportError: /lib64/libstdc++.so.6: version 'CXXABI_1.3.8' not found
I solved this problem by adding the following content to the ~/.bashrc file, which utilizes the libstdc++.so.6 in the conda environment.
export LD_PRELOAD=/xxx/software/anaconda3/envs/obseis/lib/libstdc++.so.6
I would like to ask if there is any other solution, especially for non-root users.
Hope you can reply.

Future refactoring of obstools.atacr

Shortly the module obstools.atacr will be refactored to simplify the definitions of the classes and how to initialize the objects. In particular:

  • Initialize a StaNoise object with a list of DayNoise objects
  • Initialize a TFNoise object with either a DayNoise or StaNoise object

package missing in setup.py

Thanks for sharing this great package. I found that to successfully install the package, you should added in the setup.py file:
packages=['obstools','obstools.atacr'].

Otherwise, the scripts under obstools.atacr cannot be found.

This is an easy fix.

Xiaotao Yang

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.