PyNetDesign is an open-source Python framework for testing and designing microseismic monitoring networks for homogeneous velocity models.
PyNetDesign can determine the magnitude sensitivity of the microseismic monitoring network, i.e. estimate the minimum moment magnitude detectable using the given network or receivers. It can work with both station networks and distributed acoustic sensing (DAS) cable networks at the same time. Magnitude sensitivity is represented in the form of horizontal or vertical slices through a 3D grid.
To clone the git repository use Git, a free and open source distributed version control system.
Installation requires Conda package manager, e.g. one can use miniforge implementation.
PyNetDesign works with 3.9 <= python <= 3.12 and requires pip.
The runtime dependencies are declared in pyproject.toml:
Two optional groups are available: dev adds pytest and a Jupyter stack, and docs adds the Sphinx toolchain.
The author is incredibly grateful to the developers of these and other packages used by PyNetDesign.
First clone the git repository using
git clone https://github.com/danikiev/PyNetDesign.gitenvironment.yml pins only the interpreter, so create the environment and give it a name:
conda env create -f environment.yml -n pndNote: to speed up creation of the environment, use mamba instead of conda, which is a faster alternative.
Then activate the newly created environment:
conda activate pndFinally, install the package:
pip install -e .For quick installation, you can use the specially designed installation script which implement all of the above mentioned steps.
./install.sh # Linux, macOS
install.bat # Windows, from a Miniforge promptIt creates the pnd environment and asks whether to add the development tools.
Pass --dev or --no-dev to install.sh to answer in advance.
The development install adds the testing and documentation tools through the optional
dependency groups declared in pyproject.toml:
pip install -e ".[dev,docs]"Or answer y when the installer asks whether to install the development tools:
./install.sh --dev # Linux, macOS
install.bat # Windows, then answer yThe docs group is what you need for building the local documentation.
If you need to add/change packages, deactivate the environment first:
conda deactivateand then remove the appropriate environment:
conda remove -n pnd --allYou can also run the uninstallation script:
./uninstall.sh # Linux, macOS
uninstall.bat # WindowsIt finds every Conda environment whose name starts with pnd and asks about each one.
Pass --yes to uninstall.sh to skip the questions.
The latest documentation, built with Sphinx, is available at https://danikiev.github.io/PyNetDesign/, and as a single downloadable PDF at https://danikiev.github.io/PyNetDesign/_static/pynetdesign.pdf.
It features:
- Methodology
- Getting started guide
- Examples
- API reference
The documentation tools are installed with the docs extra:
pip install -e ".[docs]"Build it with the helper script, which does a clean build:
./build-docs.sh # Linux, macOS
build-docs.bat # WindowsThen view it in a browser. serve-docs rebuilds first, incrementally, so only the
pages that actually changed are regenerated:
./serve-docs.sh # Linux, macOS
serve-docs.bat # Windowsand open http://localhost:8000. Useful options:
| Option | Effect |
|---|---|
-p PORT, --port PORT |
serve on another port |
-n, --no-build |
serve what is already built, without rebuilding |
-i, --incremental (build-docs) |
skip the clean and rebuild only what changed |
--pdf (-pdf on Windows) |
also build the PDF, into docs/build/html/_static |
The PDF needs a LaTeX installation providing lualatex and latexmk; the scripts check
for both before starting and say so if either is missing.
Extra Sphinx options can be passed through SPHINXOPTS, for instance to build the
pages without running the examples:
SPHINXOPTS="-D plot_gallery=0" ./build-docs.sh # Linux, macOS
set SPHINXOPTS=-D plot_gallery=0 && build-docs.bat # WindowsEquivalently, without the scripts:
python -m sphinx -M html docs/source docs/buildand, for the PDF, generate the LaTeX sources and run latexmk on them:
python -m sphinx -M latex docs/source docs/build
cd docs/build/latex && latexmk -pdf -dvi- -ps- pynetdesign.texAll notable changes are documented in CHANGELOG.md, following Keep a Changelog and Semantic Versioning.
If you use PyNetDesign in your research, please cite it as follows:
Anikiev, D. (2026). PyNetDesign: a Python framework for microseismic monitoring network design. Zenodo. https://doi.org/10.5281/zenodo.22695001
In BibTeX format:
@software{Anikiev2026PyNetDesign,
author = {Anikiev, Denis},
title = {{PyNetDesign}: a {P}ython framework for microseismic monitoring network design},
year = {2026},
publisher = {Zenodo},
doi = {10.5281/zenodo.22695001},
url = {https://github.com/danikiev/PyNetDesign}
}The DOI above represents all versions and will always resolve to the latest one. To cite a particular version of PyNetDesign, please use the following format, e.g. for version 1.0.1:
Anikiev, D. (2026). PyNetDesign: a Python framework for microseismic monitoring network design (1.0.1). Zenodo. https://doi.org/10.5281/zenodo.22695002
In BibTeX format:
@software{Anikiev2026PyNetDesignVersion,
author = {Anikiev, Denis},
title = {{PyNetDesign}: a {P}ython framework for microseismic monitoring network design},
year = {2026},
publisher = {Zenodo},
version = {1.0.1},
license = {MIT},
doi = {10.5281/zenodo.22695002},
url = {https://github.com/danikiev/PyNetDesign}
}Version 1.0.0 was deposited manually, before the automated GitHub–Zenodo integration was enabled, and therefore belongs to a separate Zenodo lineage. It is cross-linked to the current record and remains citable on its own: https://doi.org/10.5281/zenodo.14945917
Note: magnitudes computed with version 1.0.0 are affected by an error in the seismic moment calculation that was corrected in version 1.0.1. If you are citing or reusing results obtained with 1.0.0, please see CHANGELOG.md and issue #3.
PyNetDesign is released under the MIT License. See LICENSE for details.