There are multiple ways in which you can contribute:
Report a bug: To report a suspected bug, please raise an issue with the bug label on Github. Please try to give a short but complete description of the issue.
Suggest a feature: To suggest a new feature, please raise an issue with the enhancement label on Github. Please describe the feature and the intended use case.
NoisePy is going under major re-development. Part of the core development involves adding data objects and stores, modularizing it to facilitate community development, and giving alternative workflows for HPC, Cloud, and DAS.
Fork the repository, and create your local version, then follow the installation steps:
conda create -n noisepy -y python=3.10 pip mpi4py
conda activate noisepy
pip install -e ".[dev,aws,mpi]"Install the Jupyter notebook and ipython kernel
pip install ipykernel notebook
python -m ipykernel install --user --name noisepyInstall the pre-commit hook:
pre-commit installThis will run the linting and formatting checks configured in the project before every commit.
When making changes, please run the following two tests:
Unit tests:
pytest ./tests ./integration_tests
CLI Integration tests:
tests/test_cli.sh numpy
tests/test_cli.sh asdf
NOTE: The CLI tests download a small amount of data from SCEDC to test the download functionality. Occasionally, the service is unavailable and the test will fail. This is usually resolved in a few minutes.
Please follow the Conventional Commits naming for pull request titles.
The data processing in NoisePy consists of three steps:- (Optional) Step 0 - Download: The
download()function or thenoisepy downloadCLI command can be used to download data from an FDSN web service. Alternatively, data from an S3 bucket can be copied locally using the AWS CLI, or streamed directly from S3. - Step 1 - Cross Correlation: Computes cross correlaton for pairs of stations/channels. This can done with either the
cross_correlate()function or thenoisepy cross_correlateCLI command. - Step 2 - Stacking: This steps takes the cross correlation computations across multiple timespans and stacks them for a given station/channel pair. This can done with either the
stack_cross_correlations()function or thenoisepy stackCLI command.
NoisePy accesses data through 3 "DataStore" abstract classes: RawDataStore, CrossCorrelationDataStore and StackDataStore. Concrete implementations are provided for ASDF and miniSEED formats (Zarr is in progress). Support for other formats or file organizations can be extended through these classes.
