Repository navigation
v0.9
SeisCat
Keep a local seismic catalog.
Copyright (c) 2022-2026 Claudio Satriano satriano@ipgp.fr
SeisCat is an open-source command-line tool for keeping and querying a local seismic catalog.
Source code:
github.com/SeismicSource/seiscat
Documentation:
seiscat.readthedocs.io
If you use SeisCat in your work, please cite:
Satriano, C. (2026). SeisCat: Keep a local seismic catalog (X.Y). doi: 10.5281/ZENODO.8411836
Replace X.Y with the specific SeisCat version number used in your study.
Changes in this version:
0.9 - 2026-04-15
This is a major release with substantial improvements across visualization,
database management, and workflow automation. Highlights include a new
interactive terminal UI, expanded plotting capabilities with Plotly, and four
new core commands: seiscat timeline, seiscat export, seiscat cropdb, and
seiscat run. Additional enhancements throughout the CLI make filtering,
import/export, and event processing more powerful and flexible.
Minimum required Python version is now 3.9, and support for Python
3.13 and 3.14 has been added.
See the full changelog below for complete details.
Added
Compatibility
- Added support for Python 3.13 and 3.14.
CLI and User Interface
- Added colored help output using
rich-argparse. - Added colorized error messages for improved visibility and consistency.
- Added interactive table pager for
seiscat print -f tablewith:- fixed header
- alternating row colors
- row selection
- sorting
- copying evid
- keyboard navigation
- event details popup
- Added new
seiscat logocommand to print the ASCII-art SeisCat logo.
Filtering and Sorting
- Added new
--where-helpoption to display detailed help for the--where
filter expression, including syntax, examples, and notes. Available from any
subcommand supporting--where(editdb,print,export,plot,
fetchdata,run). - Added new
--sortbyoption to sort catalog output by any database field
(default:time). Available for:seiscat printseiscat exportseiscat plotseiscat run
- Added tab-completion support for
--sortbyfield names.
Plotting and Visualization
- Added new
seiscat timelinecommand with:- matplotlib / plotly / terminal backends
- attribute or count mode (
--count,--bins) - optional
--colorby - time-formatted axis/colorbar when using
time
- Added
--colorbysupport for map plots. - Added
--colormapsupport (with autocompletion) for:seiscat plotseiscat timeline
- Added new
--thresholdoption forseiscat plot(Cartopy +--colorby
only): markers above threshold retain a black outline. - Added new
plotlyplottype forseiscat plot, enabling interactive 3D
seismicity plots. - Added new
--out-fileoption forseiscat plotto save plots to file.
Data Import and Export
- Added
--fromfileoption toseiscat initdbandseiscat updatedbto
initialize/update the database from an event file.
Supported formats:- CSV
- Any ObsPy-supported format (QuakeML, SC3ML, NLLOC, etc.)
- Added
-C, --cropoption for file-based imports inseiscat initdband
seiscat updatedbto crop imported events according to configured selection
criteria. - Added new CSV import option
-x, --missing-valueinseiscat initdband
seiscat updatedbto define missing-value markers (e.g.-999,N/A). - Added new
--csv-extra-columnsoption toseiscat initdbfor importing
non-standard CSV columns as additional database fields. - Added new
seiscat exportcommand to export catalogs in:- CSV
- GeoJSON
- KML
Database Management
- Added new
seiscat cropdbcommand to crop an existing database to configured
selection criteria. - Added
seiscat editdboptions to:- add table columns
- delete table columns
- rename table columns
- Added protection for default columns against rename/delete.
- Added new
seiscat getandseiscat setcommands to retrieve/set specific
event attribute values.
Automation and Scripting
- Added new
seiscat runcommand to run a user-defined command on each event. - Added new
seiscat samplescriptcommand to generate a sample script for
seiscat run.
Data Retrieval
- Added new
--sdsoption forseiscat fetchdatato retrieve waveform data
from a local SDS archive.
Configuration
- Added new configuration option
prefer_high_sampling_rate. - Added new configuration option
station_radius_max_magfor
magnitude-dependent maximum station radius.
Changed
- Raised minimum required Python version to 3.9.
- Changed default database filename from
seiscat.sqliteto
seiscat_db.sqlite. - Improved error messages for
--whereto suggest using--where-help. - Improved
--wherehandling of missing values:mag=Nonemag==Nonemag!=None
are now translated into SQLIS NULL/IS NOT NULL.
- Renamed
-m/--maptypeto-b/--backendinseiscat plotfor consistency
withseiscat timeline. - Renamed
seiscat downloadtoseiscat fetchdata. - Replaced configuration option
channel_prioritieswithchannel_codes. seiscat plotnow respects--sortbyinstead of always sorting by time,
allowing control over draw order.- Upgraded Cartopy maps to use higher-resolution Natural Earth background
images. seiscat editdbnow requires repeating--setand--incrementfor each
KEY=VALUEpair. Example:-s locked=True -s processed=True.
Removed
- Removed configuration option
location_priorities. - Removed CSV output format from
seiscat print; useseiscat exportinstead.
Fixed
- Fixed an issue in seiscat editdb where positional arguments (
eventid,
event_version) were not parsed correctly due to improper handling of
--setand--increment.