Metadata-Version: 2.0
Name: SeisNN
Version: 0.0.2.dev1
Summary: Deep learning seismic phase picking package
Home-page: https://github.com/jimmy60504/SeisNN
Author: jimmy
Author-email: jimmy60504@gmail.com
License: MIT
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.5
Classifier: Operating System :: POSIX :: Linux
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Development Status :: 2 - Pre-Alpha
Requires-Python: >=3.5
Description-Content-Type: text/markdown
Requires-Dist: matplotlib (>=3.0.3)
Requires-Dist: numpy (>=1.16.2)
Requires-Dist: obspy (>=1.1.1)
Requires-Dist: scipy (>=1.2.1)

# SeisNN

Seismic event P phase picking project

Main framework: Obspy, Seisan, Tensorflow with Keras, Pytorch

Using U-net to generate pick probability

![example](example.png)

---

Early access

The code is still in the development state, API will change frequently. 

Please star us for upcoming updates!

---

Prerequisite:

- S-File catalog from [SEISAN](http://seisan.info/)
- SeisComP Data Structure (SDS) database. The directory and file layout of SDS is defined as:

      SDSROOT/YEAR/NET/STA/CHAN.TYPE/NET.STA.LOC.CHAN.TYPE.YEAR.DAY

Installation:

- pip install seisnn
- Clone this repository
- Follow the instructions in the [Docker](docker) folder to create a Docker container.
- SSH into the Docker container you create.

In the [scripts](scripts) folder:

- [generate_dataset.py](scripts/generate_dataset.py)
  - Make S-Files into training .pkl datasets.
- [evalution.py](seisnn/qc.py)
  - Calculate precision, recall and F1 score.
  - Plot error distribution.
- [plot_instance.py](scripts/plot_instance.py)
  - Plot the wavefile, picks and the probability form the .pkl dataset.
- [scanning.py](scripts/scanning.py)
  - Scan through all stations available in the given time window, transfer into .pkl dataset.

Training:

You can choose between [scripts/tensorflow](scripts/tensorflow) or [scripts/pytorch](scripts/pytorch)

- [pre_training.py](scripts/tensorflow/pre_training.py)
  - Pre-train the model using small dataset.
- [training.py](scripts/tensorflow/training.py)
  - Train the model with the pre-trained weight.
- [prediction.py](scripts/tensorflow/prediction.py)
  - Predict the probability of the picks and write into the dataset.

Model:

The model is stored in [seisnn/tensorflow](seisnn/tensorflow) or [seisnn/pytorch](seisnn/pytorch) 

- Nest_Net
  - Unet++ code modified from [MrGiovanni](https://github.com/MrGiovanni/Nested-UNet/blob/master/model_logic.py)

---

Reference:

 [PhaseNet](https://arxiv.org/abs/1803.03211)

 Zhu, W., & Beroza, G. C. (2018). PhaseNet: A Deep-Neural-Network-Based Seismic Arrival Time Picking Method. arXiv preprint arXiv:1803.03211.

 [U-net](https://lmb.informatik.uni-freiburg.de/people/ronneber/u-net/)

 Ronneberger, O., Fischer, P., & Brox, T. (2015, October). U-net: Convolutional networks for biomedical image segmentation. In International Conference on Medical image computing and computer-assisted intervention (pp. 234-241). Springer, Cham.

 [U-net ++](https://doi.org/10.1007/978-3-030-00889-5_1)

 Zhou, Z., Siddiquee, M. M. R., Tajbakhsh, N., & Liang, J. (2018). Unet++: A nested u-net architecture for medical image segmentation. In Deep Learning in Medical Image Analysis and Multimodal Learning for Clinical Decision Support (pp. 3-11). Springer, Cham.



---

[Jimmy Lab wordpress](https://jimmylab.wordpress.com/)

[![License](http://img.shields.io/:license-mit-blue.svg?style=flat-square)](http://badges.mit-license.org)


