abja_utils
A collection of reusable Python utilities for MIKE, FUNWAVE-TVD, and GIS workflows — the tools I reach for across projects, packaged so they install the same way on every machine.
Installation
pip install abja_utils
Optional extras:
pip install "abja_utils[basemap]" # web-tile basemaps for wind-vector plots
pip install "abja_utils[dev]" # test dependencies
ArcPy-based helpers (abja_utils.gis.arcpro) require a licensed ArcGIS install;
see ArcPy setup below.
What's inside
| Subpackage | Highlights |
|---|---|
abja_utils.mike |
dfs2/mesh → shapefile, wind-vector plots, MIKE setup packaging |
abja_utils.gis |
concave hulls, bounding-box & snap rasters, NONNA-10 parsing, ArcPy bridge |
abja_utils.funwave |
FUNWAVE-TVD grid generation, depth-file ↔ GeoTIFF |
abja_utils.downloader |
(work in progress) Copernicus / HYCOM downloaders |
| top level | use_style, Colors, subplots — matplotlib styling helpers |
Subpackages import lazily, so import abja_utils stays fast; access them as
abja_utils.mike, abja_utils.gis, etc.
Quick start
MIKE — dfs2 to shapefile
Export one item at one timestep to a polygon shapefile (with x_index /
y_index columns). The item can be given by name or index, and the timestep
by index or timestamp string:
import abja_utils as au
au.mike.dfs2_to_shapefile(
"model.dfs2", "surface.shp",
item="Surface elevation", # or an integer index
timestep="2018-01-01 01:00", # or an integer index
)
# Or work with the GeoDataFrame directly:
gdf = au.mike.dfs2_to_geodataframe("model.dfs2", item=0, timestep=0)
Convert a mesh to element polygons, or plot true-north wind vectors:
au.mike.mesh2poly("domain.mesh", "domain.shp")
au.mike.plot_wind_vectors("wind.dfs2", u_item=0, v_item=1, timestep=0)
Package a MIKE setup and every linked input into a self-contained zip:
report = au.mike.package_mike_setup("model.m21fm")
print(report.summary())
FUNWAVE — build a grid from a raster
import abja_utils as au
result = au.funwave.generate_grid(
xmin=-127.0, xmax=-126.0, ymin=48.1, ymax=48.5,
dphi=30/3600, dtheta=30/3600,
raster_path="dem.tif", out_txt_path="depth.txt",
export_shapefile=True, export_clipped_raster=True,
)
au.funwave.txt2tif("depth.txt", "depth.tif", result["Mglob"], result["Nglob"],
result["dphi"], result["dtheta"])
GIS
import abja_utils as au
au.gis.bbox2shp(-127, -126, 48, 49, "bbox.shp", epsg=4326)
au.gis.make_snap_raster(-127, -126, 48, 49, epsg=4326, res=0.01,
output_fname="snap.tif")
hull = au.gis.concave_hull(points, alpha=2.0, plot=True)
from abja_utils.gis.nonna import parse_file
gdf = parse_file("nonna10.txt")
Plotting style
Importing the package does not change your matplotlib configuration. Opt in when you want the package's defaults (Times New Roman, inward ticks, a curated colour cycle):
import abja_utils as au
au.use_style()
fig, ax = au.subplots(figwidth=16, figheight=12) # sizes in centimetres
ax.plot(x, y, color=au.Colors.blue2)
ArcPy (optional)
abja_utils.gis.arcpro bridges to a licensed ArcGIS Pro install from a
standalone Python (matching major.minor version). Install the bridge with:
from abja_utils.gis import install_arcpy
install_arcpy() # Windows only
See src/abja_utils/data/README.md for details.
Development
pip install -e ".[dev]"
pytest
License
MIT — see LICENSE.
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 abja_utils-1.0.0.tar.gz.
File metadata
- Download URL: abja_utils-1.0.0.tar.gz
- Upload date:
- Size: 43.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
088dc39e337ff5e702dc85acb511e5c46a03083eb8113bdfdc0420f591bb8457
|
|
| MD5 |
a59bc87f59f46756a78baf9e0d96c15b
|
|
| BLAKE2b-256 |
9522d1c7bf65897c16e0db209142557f5d1a4f8aac72cd564038f6aacaa9fb0e
|
File details
Details for the file abja_utils-1.0.0-py3-none-any.whl.
File metadata
- Download URL: abja_utils-1.0.0-py3-none-any.whl
- Upload date:
- Size: 44.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6fcdd4fac2eb8943e57bd80c3724076619fdd3923dfdfb128eee63256720ae29
|
|
| MD5 |
8f2c2358aae33df4b99f99b1d443356f
|
|
| BLAKE2b-256 |
2dc13f86b0709bf3ea8476fe52863c4c2931ecf3dcb4ffb577b02ae3d3bc5104
|