Plot data availability for seismic
Project description
data-availability
GitHub contribution-style calendar heatmaps for data completeness over time.
Useful for monitoring instrument data quality or any time-series availability tracking. Generates a matplotlib Figure with one subplot per calendar year, each day rendered as a color-coded tile on a red-yellow-green gradient.
Input: Excel (.xlsx/.xls) or CSV with date and completeness (0–100) columns.
Output: A matplotlib.figure.Figure — save or display as needed.
Installation
pip install data-availability
Or with uv:
uv add data-availability
Quick start
Fluent builder (recommended)
import matplotlib.pyplot as plt
from data_availability import PlotAvailability
fig = (
PlotAvailability("data.xlsx")
.select(years="2023")
.plot(title="Sensor Uptime", tile_shape="squircle")
)
plt.savefig("availability.png", dpi=150, bbox_inches="tight")
One-call helpers
from data_availability import plot_from_file, plot_from_df
# From a file
fig = plot_from_file("data.csv", title="My Data")
# From a pre-loaded DataFrame
import pandas as pd
df = pd.read_csv("data.csv")
fig = plot_from_df(df, title="My Data")
Seismic SDS data
from data_availability import PlotSeismicAvailability
fig = (
PlotSeismicAvailability(
start_date="2023-01-01",
end_date="2023-12-31",
sds_dir="/data/sds",
station="IJEN",
channel="EHZ",
network="VG",
location="00",
n_jobs=4,
)
.plot(title="IJEN EHZ Availability 2023")
)
fig.savefig("ijen_availability.png", dpi=150, bbox_inches="tight")
API reference
PlotAvailability(filepath)
Fluent builder class for Excel/CSV data.
fig = (
PlotAvailability("data.xlsx")
.select(
date_column="date", # column name for dates
completeness_column="completeness", # column name for values (0–100)
years=["2022", "2023"], # filter to specific years (optional)
)
.plot(
title="Data Availability",
tile_shape="square", # "square" or "squircle"
hspace=0.2,
figsize_per_year=2.2,
missing_color="#e0e0e0",
cbar_bottom=20,
cbar_height=10,
tile_gap=0.9,
title_pad=40,
)
)
PlotSeismicAvailability(...)
Reads a SeisComP Data Structure (SDS) archive, computes per-day completeness,
and renders the heatmap. Supports parallel processing via n_jobs.
PlotSeismicAvailability(
start_date="2023-01-01", # YYYY-MM-DD
end_date="2023-12-31", # YYYY-MM-DD (inclusive)
sds_dir="/data/sds", # root of the SDS archive
station="IJEN",
channel="EHZ",
network="VG",
location="00",
channel_type="D", # SDS data-type qualifier (default "D")
n_jobs=1, # parallel workers (default 1 = serial)
verbose=False,
).plot(title="IJEN EHZ")
plot_from_file(filepath, **kwargs) / plot_from_df(df, **kwargs)
Functional alternatives that accept the same keyword arguments as .plot() plus date_column and completeness_column.
load_data(filepath, date_column, completeness_column)
Load and normalize an Excel or CSV file into a DataFrame ready for plotting.
Input format
| Column | Type | Notes |
|---|---|---|
date |
date string or datetime | parsed automatically |
completeness |
float | clipped to [0, 100]; strings replaced with NaN |
Column names are configurable via date_column / completeness_column parameters.
Development
# Install with dev extras
uv sync --group dev
# Run the example
uv run main.py
# Lint and format
uv run ruff check --fix .
uv run ruff format .
# Type check
uv run ty check
License
MIT © Martanto
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 data_availability-0.2.0.tar.gz.
File metadata
- Download URL: data_availability-0.2.0.tar.gz
- Upload date:
- Size: 13.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7541b62ca810a8bf8ebb6981dc060fbd3b1ae4af11903479894c5250020ecb43
|
|
| MD5 |
65132e30cbdbded37e8a4478fe203426
|
|
| BLAKE2b-256 |
c87b315fad156061179a4f7efe8fffb4bb2eaee43931946760176f0c8d868e7b
|
File details
Details for the file data_availability-0.2.0-py3-none-any.whl.
File metadata
- Download URL: data_availability-0.2.0-py3-none-any.whl
- Upload date:
- Size: 18.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f862f4fa250bc14db9ae0ad4ebd056527a25e633aeb9774834c2830948d3c08c
|
|
| MD5 |
16bef7de23c43057b3500201365d0d0c
|
|
| BLAKE2b-256 |
cc6500a588a574ed45cccd996d69656138cb5ccba43fee9b4786f4c18b66b97d
|