Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
183 commits
Select commit Hold shift + click to select a range
6abaa31
updated find_min_ml_x_section. Now supports DAS and also used improve…
Jasplet Oct 6, 2025
567623b
removed unneeded import from obspy
Jasplet Oct 6, 2025
fe6259e
deleted imporrt
Jasplet Oct 6, 2025
c00b37c
updated licnece/copyright header
Jasplet Oct 6, 2025
27b4dae
added some input validation tests
Jasplet Oct 6, 2025
ef617f7
doctstring tweak plus fixed errror with kargs['gmpe'] when gmpe is no…
Jasplet Oct 6, 2025
6ff54c2
linting fixes
Jasplet Oct 6, 2025
943d14b
changed to test for a warning if method not provided as we default to ML
Jasplet Oct 6, 2025
94947c3
adding tests for create_grids
Jasplet Oct 6, 2025
efba2f7
added imports
Jasplet Oct 6, 2025
c3f998f
re-ordered docstring
Jasplet Oct 6, 2025
e852f7d
updated version number in setup.py
Jasplet Oct 6, 2025
94f4945
added tests for calc_min_ml_at_gridpoint
Jasplet Oct 6, 2025
6aed648
hatch changes
Jasplet Oct 6, 2025
dd3da22
added helper function to get f0, n from a f1/f2 range
Jasplet Oct 6, 2025
ed04eb9
added some basic erorr handling tests
Jasplet Oct 6, 2025
a1911dd
removed f0 as an optinal variable as f0 should always be center frequ…
Jasplet Oct 6, 2025
d616321
made same edites to psd_db_to_velocity
Jasplet Oct 6, 2025
19e2217
added tests for psd_db_to_displacement_amplitude
Jasplet Oct 6, 2025
ba9c5ea
added test for get f0_octaves_from_f1f2 and fixed import statement
Jasplet Oct 7, 2025
a8aa7af
removed fixed path. expect PPSDs to be stored in a nested direction s…
Jasplet Oct 7, 2025
a79cfb9
made ppsd_path no longer a static hard-coded path. Now is optional, i…
Jasplet Oct 7, 2025
54d7f17
fixed typo, ppsd_path is object not str
Jasplet Oct 7, 2025
772453a
flake8 linting
Jasplet Oct 7, 2025
24c929e
fxed internal nesting of for loops
Jasplet Oct 7, 2025
41877b2
made parameter name for units to use more intuitive
Jasplet Oct 9, 2025
c9f38b0
started to add test for make_noise_estimate_for_ppsds
Jasplet Oct 9, 2025
5824c24
initial creation of docs with sphinx-quickstart
Jasplet Oct 9, 2025
81a444f
changed theme
Jasplet Oct 9, 2025
642f085
updated citations
Jasplet Oct 10, 2025
e9169a1
added napleon to autoformat docstrings
Jasplet Oct 10, 2025
90e38f9
typo fix and added referencing
Jasplet Oct 10, 2025
5c81482
added ref for CAL scale (Hutton + Boore 1987) Richter (1935)
Jasplet Oct 10, 2025
e1ab540
added references in docstrigns such that sphinx will get them right
Jasplet Oct 14, 2025
9014e15
added files for modeuls and sncast
Jasplet Oct 14, 2025
f4b3eb2
refernecing fix
Jasplet Oct 14, 2025
f1b4a9d
Typo fixes in docstrings
Jasplet Nov 19, 2025
d055e4e
re-orders module docstring
Jasplet Nov 19, 2025
d782938
typo fix and re-ordered modules
Jasplet Nov 19, 2025
4cb83aa
typo fix in module docstring
Jasplet Nov 19, 2025
fa012cc
reformatted citations and fixed some static kwargs appearing in sphinx
Jasplet Nov 19, 2025
ebc5462
updated module docstring, changed author info, moved changelog above …
Jasplet Nov 19, 2025
c9b23df
change in cell metasdata from running notebook
Jasplet Nov 19, 2025
0b0a6c0
tweak to returns description for find_min_ml to hopeuflly look better…
Jasplet Nov 19, 2025
6827649
Merge pull request #8 from Jasplet/docs
Jasplet Nov 19, 2025
3703820
fleshed out skeleton readme (needs a second readthrough before publis…
Jasplet Nov 24, 2025
7aa4382
Merge pull request #9 from Jasplet/docs
Jasplet Nov 24, 2025
7e5db36
deleted deprecated debugging script
Jasplet Nov 24, 2025
a0c7784
added modelconfig, and seismic network classes
Jasplet Nov 25, 2025
afffb89
removed unneeded pandas import
Jasplet Nov 25, 2025
7310496
started new class for detcapmodel
Jasplet Nov 25, 2025
92623af
created function to add seismicnetworks objects to model
Jasplet Nov 25, 2025
74639f5
added validation for snr and foc_depth and supported GMPE models/ types
Jasplet Nov 25, 2025
0d84a0e
rerranged functions and broguth find_min_ml into Model Class
Jasplet Nov 25, 2025
9a7dc45
added attributes fir number of networks/arrays/das fibres
Jasplet Nov 25, 2025
e375247
removed kwarg handling as this has been passed off elsewhere
Jasplet Nov 25, 2025
51517be
made create_grid a dev function
Jasplet Nov 25, 2025
be96fdd
added grid params to ModelConfig with valdiation
Jasplet Nov 26, 2025
cf5b5ab
added method for running model and reworking find_ml
Jasplet Nov 26, 2025
0a2474a
sdded heler functions t make_model_kwargs and setup grid params
Jasplet Nov 26, 2025
367d690
switched to using functools.partial
Jasplet Nov 26, 2025
0e7c022
made naming of indicies more explicit and made grid point input a tuple
Jasplet Nov 26, 2025
5a3953e
only add networks, arrays, das_fibres to model_kwargs if they exist.
Jasplet Nov 26, 2025
50506ae
set gmpe configs to None if method != "GMPE" for safety
Jasplet Nov 26, 2025
e8bfa21
renamed das_data to das_channels
Jasplet Nov 26, 2025
87ca9d5
made kwargs builder verbose when netowrk, arrays, or das are not incl…
Jasplet Nov 26, 2025
4858c37
refactored DAS kawrgs
Jasplet Nov 26, 2025
174f162
added mag_min, mag_delta and model_stacking_das to ModelConfig
Jasplet Nov 26, 2025
68330e0
ADDED GAUGE LENGTH TO DASFIBRE
Jasplet Nov 26, 2025
11afd1b
made kwargs needed for calc_min_ml_at_gridpoint explicit
Jasplet Nov 26, 2025
d7022e3
added exception if gpme kwargs are not provided
Jasplet Nov 26, 2025
34ef1e0
removed default Nones
Jasplet Nov 26, 2025
53ee2f7
removed kwarg defualting in lower level functions
Jasplet Nov 26, 2025
ce69f32
reordered functions
Jasplet Nov 26, 2025
ccf32bb
added helper function to make xsection grid and refacoted find_ml_x_s…
Jasplet Nov 26, 2025
c1e569a
added function to setup xsection grid params in modelconfig
Jasplet Nov 26, 2025
04b0891
typo fix and added seperate function to initialise xsection grid
Jasplet Nov 26, 2025
e878dab
re-ordered funcion and deleted deprecated wrapper func for find_min_m…
Jasplet Nov 26, 2025
3ffc0cb
claude agent rewrtie of _minml_x_section_worker following the rewrite…
Jasplet Nov 26, 2025
758f3cc
fixed some issues wth the AI rewirte
Jasplet Nov 26, 2025
e8cd75e
some typo fixes
Jasplet Nov 26, 2025
c041668
changed import to reflect fucntion move
Jasplet Nov 26, 2025
155736e
removed underscore form create_grid
Jasplet Nov 26, 2025
d504392
new file to test functions form core.py
Jasplet Nov 26, 2025
60ab735
moved read_das_df tests to test_core
Jasplet Nov 26, 2025
fb7691d
removed tests which no lpnger capture function behaviour (warning unk…
Jasplet Nov 26, 2025
15bd447
fixed error in test parameterisation
Jasplet Nov 26, 2025
133a5ef
fixed param order issue and added missing model_karwags
Jasplet Nov 26, 2025
6e02465
pruned unneeded improts
Jasplet Nov 26, 2025
43cee70
fixed tuple bug in minml_worker for DAS
Jasplet Nov 26, 2025
a0aca1b
fixed namespace conflict for DASFibre
Jasplet Nov 26, 2025
717911e
fixed bug introduced in tests est_min_ml
Jasplet Nov 27, 2025
b0e4a88
added test for ModelConfig initilialisation
Jasplet Nov 27, 2025
74c89e9
updated find_min_ml tests to reflect refactoring
Jasplet Nov 27, 2025
727b0ac
added fallback value error for if find_min_ml is caled woth no networ…
Jasplet Nov 27, 2025
1b776f5
added test for custom init
Jasplet Nov 27, 2025
1997b5b
added more tests for creating grid
Jasplet Nov 27, 2025
3ec3062
fixed expected error messages
Jasplet Nov 27, 2025
7c30b2b
added type hinting for add_grid_params at lat/lons need to be floats
Jasplet Nov 27, 2025
5164bef
removed unneeded self
Jasplet Nov 27, 2025
449bc06
updated expected ValueErrors for reversed grid co-ords
Jasplet Nov 27, 2025
c72da98
removed setup.py as we have migrated to using pyproject.toml
Jasplet Nov 28, 2025
4b8912c
new pyproject.toml initialised by uv
Jasplet Nov 28, 2025
31a1754
updated licnece, authors, description
Jasplet Nov 28, 2025
e9e08bb
uv lockfile
Jasplet Nov 28, 2025
af7fc78
debugged soem tests
Jasplet Nov 28, 2025
ae0a61b
fixed pyrojet for uv
Jasplet Nov 28, 2025
c30d3bc
updated uv lockfile
Jasplet Nov 28, 2025
51035c9
added ruff to dev
Jasplet Nov 28, 2025
e47acf1
added ruff config
Jasplet Nov 28, 2025
4079000
ruff linting
Jasplet Nov 28, 2025
1ed38d9
added ntoebooks to extend-include
Jasplet Nov 28, 2025
702aae9
ruff linting
Jasplet Nov 28, 2025
2cd4db6
ruff linitng
Jasplet Nov 28, 2025
ffd323a
updated gitignore
Jasplet Nov 28, 2025
2578215
added serting.sjson to gitignore
Jasplet Nov 28, 2025
681f193
added setting.json
Jasplet Nov 28, 2025
1d49b6d
merged .tomls
Jasplet Nov 28, 2025
05138d4
redoreded imports
Jasplet Nov 28, 2025
5a125a7
doctsring typo fixed
Jasplet Nov 28, 2025
bdc7dff
escaped regex for valueerror strings
Jasplet Nov 28, 2025
7bf8f98
linting with ruff,
Jasplet Nov 28, 2025
c4b3861
espaced regex for matvching valueerrors
Jasplet Nov 28, 2025
2320619
updated errors messages and tests for invalid n, f0
Jasplet Nov 28, 2025
4c7a03d
fixed bug in get f0 octaves
Jasplet Nov 28, 2025
8597ff7
update Readme
Jasplet Nov 28, 2025
52b9eb6
changed logic so seismic network will initalisation if the same numbe…
Jasplet Nov 28, 2025
4bbc536
added num_stations property
Jasplet Nov 28, 2025
0bf1ddd
added tests for SeismicNetwork
Jasplet Nov 28, 2025
d191b1a
typo fix
Jasplet Nov 28, 2025
bbd1c3f
forgot i'd alread added station_num as a property
Jasplet Nov 28, 2025
bf3cb2c
made test stationn daa DataFrames as expected
Jasplet Nov 28, 2025
197ccd4
standfardised dummy stationdata and added noise to Array test data
Jasplet Nov 28, 2025
605e13d
made station_data longer
Jasplet Nov 28, 2025
4b7f606
removed dupicate num_station
Jasplet Nov 28, 2025
4306b16
fixed expected number of stations
Jasplet Nov 28, 2025
342cabe
made mepty df with column as we want tot test this case NOT a blank df
Jasplet Nov 28, 2025
5aad14b
updated depencencies
Jasplet Nov 28, 2025
c6fff6f
updated tests
Jasplet Nov 28, 2025
694b361
fixed final tests
Jasplet Nov 28, 2025
e51cc4f
make sure i am using self.num_stations
Jasplet Nov 28, 2025
242d0cc
added examples dependencies
Jasplet Nov 28, 2025
589cc16
move and renamed plotting file to exmaples
Jasplet Nov 28, 2025
218d5fc
moved up imports in examples notebook
Jasplet Nov 28, 2025
81c0ce7
added some more tests to plug some coverage gaps suggested by copilot
Jasplet Nov 28, 2025
597b302
added required detections to __repr__
Jasplet Nov 28, 2025
6639ed0
added repr test and fixed expected ValueError strings
Jasplet Nov 28, 2025
538c7fd
updated pyroject.toml classifiers and target python version
Jasplet Dec 1, 2025
72e5020
removed pylint workflow as not needed
Jasplet Dec 1, 2025
c0525fd
updated workflow to use uv
Jasplet Dec 1, 2025
8afc22d
fixed tabel for ruff
Jasplet Dec 1, 2025
d6c88ba
removed jupyter notebook from ruff linting until the exmaples are done
Jasplet Dec 1, 2025
7172189
deleted duplicate empty df test
Jasplet Dec 1, 2025
de27cb3
Ruff formatting
Jasplet Dec 1, 2025
09ed57e
not pass through entwork code if a csv/ dataframe if provided and all…
Jasplet Dec 4, 2025
0abf1c1
renamed mag_det -> mag_det model and made it an attribute
Jasplet Dec 4, 2025
bb5a41e
cleared out example.ipynb
Jasplet Dec 5, 2025
4deef21
updated numpy
Jasplet Jan 21, 2026
e47f232
dont need to track .vscode
Jasplet Jan 21, 2026
191206b
raise valueerror for unknown case
Jasplet Jan 21, 2026
df9de6d
fix typo in module docstring
Jasplet Jan 21, 2026
ac87fa7
updated docstring of DASFibre
Jasplet Jan 21, 2026
180a8a1
flesh out docstring of main Class
Jasplet Jan 21, 2026
2b7e400
added fibre_code to DASFIBre so there is a unique identifier
Jasplet Jan 21, 2026
ecc7326
filling docstrings
Jasplet Jan 21, 2026
badb2bb
fixed variable name erros in DASFIbre
Jasplet Jan 21, 2026
6998d6d
dotn add gmpe attributes if ModelConfig method is not GMPE
Jasplet Jan 21, 2026
a2154f6
added pyyaml as a dependency
Jasplet Jan 21, 2026
388d567
added some type ignores
Jasplet Jan 21, 2026
ccaa0c6
fixed pylance warnigs
Jasplet Jan 21, 2026
93df296
fixed tests after tweak to DASFIbre adding fibre_code and no longer i…
Jasplet Jan 21, 2026
005be20
typo fix
Jasplet Jan 21, 2026
012578c
add data for example
Jasplet Jan 21, 2026
a2310db
only create model_kwargs for gmpe method is it is specified
Jasplet Jan 21, 2026
56f8972
fix to gmpe kwargs, probably needs deeper dive
Jasplet Jan 21, 2026
a2b80d9
fixzed pylance error
Jasplet Jan 21, 2026
171098e
added pygmt to dependencies
Jasplet Jan 21, 2026
2877445
pygmt already exisitng in examples list
Jasplet Jan 21, 2026
83c1d08
Local edits, fixed validation bug for arrays, added pygmt as requirem…
Jasplet Feb 5, 2026
398e533
updated lockfile
Jasplet Feb 5, 2026
487e426
black formatingg with ruff
Jasplet Feb 5, 2026
b908fc8
Merge branch 'master' into oop-refactor
Jasplet Feb 5, 2026
d950339
fixed bug with printing array network codes
Jasplet Mar 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 0 additions & 24 deletions .github/workflows/pylint.yml

This file was deleted.

44 changes: 25 additions & 19 deletions .github/workflows/python-app.yml
Original file line number Diff line number Diff line change
@@ -1,39 +1,45 @@
# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python

name: Python application
name: CI tests /linting for SN-CAST

on:
push:
branches: [ "master" ]
branches: [ "master", "oop-refactor" ]
pull_request:
branches: [ "master" ]
branches: [ "master", "oop-refactor" ]

permissions:
contents: read

jobs:
build:

name : Continuous Integration Job
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Set up Python 3.10
uses: actions/setup-python@v3
- uses: actions/checkout@v5

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.10"
- name: Install dependencies
python-version-file : pyproject.toml

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
# pin uv version
version: '0.9.13'
- name : Install project and dependencies
run: |
python -m pip install --upgrade pip
pip install flake8 pytest
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Lint with flake8
uv sync --locked --dev

- name: Lint with ruff
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
uv run ruff check .
uv run ruff format --check .

- name: Test with pytest
run: |
pytest
uv run pytest


3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -104,4 +104,5 @@ ENV/
.DS_Store

#vscode
.vscode/*
.vscode/
settings.json
8 changes: 0 additions & 8 deletions .vscode/settings.json

This file was deleted.

147 changes: 147 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,150 @@
# SN-CAST 2.0

The Seismic Network Capability Assessment Software Tool

This version of SN-CAST is updated from the original code supporting Möllhoff et al., (2019).

## Overview

SN-CAST (Seismic Network Capability Assessment Software Tool) is a Python package for modeling and assessing the detection capability of seismic networks. It calculates minimum detectable magnitudes across a geographic grid based on station noise levels, network geometry, and various ground motion prediction models.

## Features

- Network detection capability modeling using local magnitude (ML) or GMPE methods
- Support for multiple types on instrumentation: traditional stations, seismic arrays, ocean bottom seismometers (OBS), and distributed acoustic sensing (DAS).
- Support for UK and California empirical local magnitude scales.
- Flexible grid-based calculations with multiprocessing support
- Noise estimation tools for seismic data
- **Cross-section analysis** for 2D detection capability profiles

### Work in progress

- Support for using ground motion prediction equations (GMPEs) instead of local magnitude scales

## Installation

### Requirements

See pyproject.toml

### Install from source

```bash
git clone https://github.com/jasplet/sncast.git
cd sncast
pip install -e .
```

**PiPy release TBD**

### Install dependencies

```bash
pip install -r requirements.txt
```

## Quick Start

### Basic usage

```python
from sncast.model_detection_capability import find_min_ml

# Calculate minimum detectable magnitude for a grid
result = find_min_ml(
lon0=-1.0, lon1=1.0, # Longitude bounds
lat0=50.0, lat1=52.0, # Latitude bounds
dlon=0.2, dlat=0.2, # Grid spacing
networks=['stations.csv'], # Station data file
stat_num=[5], # Number of stations required
foc_depth=0.0, # Focal depth in km
snr=3.0, # Signal-to-noise ratio
mag_min=-2.0, # Minimum magnitude to test
mag_delta=0.1, # Magnitude increment
method='ML', # Method: 'ML' or 'GMPE'
region='UK' # Region: 'UK' or 'CAL'
)

# Result is an xarray DataArray with detection capability grid
print(result)
```

### Station data format

Station data should be a CSV file with the following columns:

```csv
station,longitude,latitude,elevation_km,noise [nm]
STA1,0.0,50.0,0.0,1.0
STA2,0.5,50.5,0.1,1.5
STA3,1.0,51.0,0.2,2.0
```

### DAS data format

```csv
channel_index,fiber_length_m,longitude,latitude,noise_m,elevation_km
10010,1000,0.01,50.01,1e-8,0.0
10020,2000,0.02,50.02,2e-8,0.0
```

## Documentation

Full documentation is under construction.

### Key modules

- **`model_detection_capability`**: Main detection modeling functions
- **`gmpes`**: Ground motion prediction equations
- **`magnitude_conversions`**: ML ↔ Mw conversions
- **`noise_estimation`**: Seismic noise analysis tools

## Examples

See the `examples/` directory for:

- Basic network modeling
- Multi-network analysis (stations + arrays + DAS)
- Cross-section calculations
- Custom GMPE usage

## Testing

Run the test suite:

```bash
pytest tests/
```

Run with coverage:

```bash
pytest --cov=sncast --cov-report=html
```

## Citation

If you use SN-CAST in your research, please cite:

**Original version:**
```
Möllhoff, M., Bean, C. J., & Meredith, P. G. (2019). Seismic detection
capability of the Irish National Seismic Network. Seismological Research
Letters, 90(4), 1607-1617.
```

**Version 2.0:**
```
[Your citation here when published]
```

## Contributing

Contributions are welcome! Please:

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

25 changes: 0 additions & 25 deletions debug_sncast.py

This file was deleted.

20 changes: 20 additions & 0 deletions docs/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Minimal makefile for Sphinx documentation
#

# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR = source
BUILDDIR = build

# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

.PHONY: help Makefile

# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
35 changes: 35 additions & 0 deletions docs/make.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
@ECHO OFF

pushd %~dp0

REM Command file for Sphinx documentation

if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=source
set BUILDDIR=build

%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.https://www.sphinx-doc.org/
exit /b 1
)

if "%1" == "" goto help

%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
goto end

:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%

:end
popd
39 changes: 39 additions & 0 deletions docs/source/citations.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
.. _citations:

Citations
=========

.. [Akkar2014] Akkar, S., Sandikkaya, M.A., Bommer, J.J. (2014),
Empirical ground-motion models for point- and extended-source crustal
earthquake scenarios in Europe and the Middle East. Bull Earthquake Eng 12, 359-387.
https://doi.org/10.1007/s10518-013-9461-4

.. [Butcher2020] Butcher, A., Luckett, R., Verdon, J. P., Kendall, J. M.,
Baptie, B., & Wookey, J. (2020). Local magnitude discrepancies for
near-surface seismicity: Implications for understanding exploration-related
seismicity. *Seismological Society of America*, 91(6), 3270-3281.
https://doi.org/10.1785/0120190032

.. [Haskov2016] Havskov, J., Alguacil, G., (2016). Instrumentation in Earthquake Seismology. Springer International Publishing, Cham. https://doi.org/10.1007/978-3-319-21314-9

.. [Hutton1987] Hutton, L. K., & Boore, D. M. (1987). The ML scale in southern California. *Bulletin of the Seismological Society of America*, 77(6), 2074-2094. https://doi.org/10.1785/BSSA0770062074

.. [Luckett2019] Luckett, R., Butcher, A., Verdon, J. P., Kendall, J. M.,
Baptie, B., & Wookey, J. (2019). A local magnitude scale for northern England
and southern Scotland. *Bulletin of the Seismological Society of America*,
109(2), 546-558. https://doi.org/10.1785/0120180140

.. [Molhoff2019] Möllhoff, M., Bean, C.J. & Baptie, B.J.,
SN-CAST: seismic network capability assessment software tool for regional networks - examples from Ireland.
*J Seismol*, 23, 493-504 (2019). https://doi.org/10.1007/s10950-019-09819-0

.. [Ottemöller2013] Ottemöller, L., & Sargeant, S. (2013). A local magnitude
scale ML for the United Kingdom. *Bulletin of the Seismological Society
of America*, 103(5), 2884-2893. https://doi.org/10.1785/0120130085

.. [Richter1935] Richter, C. F. (1935). An instrumental earthquake magnitude scale. *Bulletin of the Seismological Society of America*, 25(1), 1-32. https://doi.org/10.1785/BSSA0250010001

.. [Rietbrock2019] Rietbrock, A., & Edwards, B. (2019). Update of the UK stochastic ground motion model using
a decade of broadband data. In: *SECED 2019 Conference, 2019-9-9 - 2019-9-10,*
Greenwich, London. https://livrepository.liverpool.ac.uk/3060529/1/SECED_2019_paper_Rietbrock_Edwards_FINAL.pdf

Loading