Seismic detection pipeline for orbital reentry events
Project description
Groundtrack
Groundtrack
Seismic detection pipeline for atmospheric re-entry events using orbital ground tracks and seismic station data.
Quick Start »
·
Report Bug
·
Request Feature
Table of Contents
About The Project
Groundtrack is a Python library developed to assist with detecting and analyzing seismic signals that are produced when an object re-enters the atmosphere, building off the work of Dr. Fernando: . When space debris or a spacecraft re-enters the atmosphere at hypersonic speeds, they generate sonic booms that then couple into the ground and are recorded by seismic stations. Groundtrack automates the full pipeline from orbital data to the processed waveforms, while allowing each piece of the pipeline to be easily configured/called if the user wishes:
- Fetches TLE elements from Space-Track using a user-provided NORAD ID
- Propagates the ground track over a user-defined analysis window
- Tiles the track into spatial boxes and queries FDSN providers for any nearby seismic stations that fall within a given box
- Downloads waveform data for stations within a configurable distance from the ground track
- Applies instrument response removal and bandpass filtering
- Provides optional visualization tools for validating output
The library was developed at Johns Hopkins University as independent research in collaboration with Dr. Benjamin Fernando (Department of Earth and Planetary Sciences), building on the methodology established in his work on seismic detection of the 2024 Shenzhou-15 re-entry (insert link to his research). The pipeline was first validated in multiple proof-of-concept notebooks replicating published detection results before being migrated into this library format.
Built With
This section should list any major frameworks/libraries used to bootstrap your project. Leave any add-ons/plugins for the acknowledgements section. Here are a few examples.
Optional Features
Groundtrack includes built-in plotting utilities for analyzing re-entry events:
- Ground track + download boxes visualization
- Station distribution maps
- Raw vs. processed waveform comparisons
Install with plotting support:
pip install groundtrack[plotting]
Getting Started
Prerequisites
- Python 3.10+
- A free Space-Track account for TLE and TIP message access
Installation
Install from PyPI:
pip install groundtrack
With optional plotting support:
pip install groundtrack[plotting]
Credentials
Groundtrack requires Space-Track credentials to fetch orbital data. Set them as environment variables:
export SPACETRACK_USER="your_email@example.com"
export SPACETRACK_PASS="your_password"
Or pass them directly to run_pipeline():
results = run_pipeline(
...,
username="your_email@example.com",
password="your_password",
)
Usage
Minimal Example
from groundtrack import run_pipeline
results = run_pipeline(
norad_id=56873,
start="2024-04-02T08:40:00Z",
end="2024-04-02T09:00:00Z",
cache_dir="data/cache",
output_dir="data/outputs",
event_name="shenzhou15_reentry",
)
With Processing and Custom Parameters
results = run_pipeline(
norad_id=56873,
start="2024-04-02T08:40:00Z",
end="2024-04-02T09:00:00Z",
cache_dir="data/cache",
output_dir="data/outputs",
event_name="shenzhou15_reentry",
corridor_km=100.0, # station inclusion threshold
chunk_km=300.0, # along-track box size
apply_processing=True, # remove instrument response + bandpass
freqmin=1.0, # bandpass lower corner (Hz)
freqmax=20.0, # bandpass upper corner (Hz)
)
Two-Step Workflow
Download first, process later with different parameters:
from groundtrack import run_pipeline, process_boxes
# Step 1 - download only
results = run_pipeline(
norad_id=56873,
start="2024-04-02T08:40:00Z",
end="2024-04-02T09:00:00Z",
cache_dir="data/cache",
output_dir="data/outputs",
event_name="shenzhou15_reentry",
)
# Step 2 - process separately with custom settings
process_boxes(
boxes_root=results["manifest"]["boxes_root"],
freqmin=1.0,
freqmax=10.0,
)
Visualization
from groundtrack import (
plot_track_and_boxes,
plot_stations,
plot_all_waveforms,
)
from pathlib import Path
# Plot ground track and download boxes
plot_track_and_boxes(
track_points=results["track"]["track_points"],
box_windows=results["boxes"],
)
# Plot all processed waveforms for a specific box
plot_all_waveforms(
boxes_root=Path(results["manifest"]["boxes_root"]),
box_ids="box_006",
t_start_utc="2024-04-02T08:44:00Z",
t_end_utc="2024-04-02T08:54:00Z",
)
Roadmap
- Orbital propagation and ground track tiling
- FDSN station discovery with 100 km corridor filter
- MassDownloader-based waveform acquisition
- Instrument response removal and bandpass filtering
- Visualization utilities
- Automated test suite
- Full documentation site
- Parallelized inventory queries for full-orbit runs
- ML classification of seismic station data
See the open issues for a full list of proposed features and known issues.
Contributing
Contributions are welcome. If you have a suggestion or find a bug, please open an issue or submit a pull request.
- Fork the project
- Create your feature branch (
git checkout -b feature/YourFeature) - Commit your changes (
git commit -m 'Add YourFeature') - Push to the branch (
git push origin feature/YourFeature) - Open a pull request
License
Distributed under the MIT License. See LICENSE for more information.
Contact
Joseph Steinberg - LinkedIn - josephsteinberg933@gmail.com
Project Link: https://github.com/jsteinberg34/groundtrack
Acknowledgments
- Dr. Benjamin Fernando — Johns Hopkins University, Department of Earth and Planetary Sciences. Scientific methodology and validation.
- ObsPy — Core seismic data library
- Skyfield — Orbital propagation
- Space-Track — TLE and TIP message data
- Ed Williams' Aviation Formulary — Cross-track distance formula
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file groundtrack-0.1.0.tar.gz.
File metadata
- Download URL: groundtrack-0.1.0.tar.gz
- Upload date:
- Size: 32.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e079dd727f978e6909ae6fc7a865124f0e55a735624c637fe10288db89ceedc
|
|
| MD5 |
d9a95fff30dc0aec770897910613b11c
|
|
| BLAKE2b-256 |
1ca818a1006d54b3017204d4bc97355914d0662931e7f216ed12b4bb3065d14c
|
File details
Details for the file groundtrack-0.1.0-py3-none-any.whl.
File metadata
- Download URL: groundtrack-0.1.0-py3-none-any.whl
- Upload date:
- Size: 33.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a7a4955ae43cc355e95e93de9905179cb67ff21c943112621cb8a9431b19323
|
|
| MD5 |
fe9f0a85070161db78cb8c83820258e1
|
|
| BLAKE2b-256 |
639f52fd6d68abc5a5f114d69bd512cab3388e6fdddaea11feefaef4a7978a81
|