Impact crater data science in Python.
Project description
Craterpy: Impact crater data science in Python
Overview
Craterpy makes it easier to work with impact crater data in Python. Highlights:
- convert a table of crater data to a GeoDataFrame or GIS-ready shapefile
- extract zonal statistics associated with each crater in circlular or annular regions (rasterstats)
- eliminate some pain points of planetary GIS analysis (antimeridian wrapping, projection conversions, etc.)
Note: Craterpy is not a crater detection algorithm (e.g. PyCDA), nor is it a crater count age dating tool (see craterstats).
Note: Craterpy is in development. We appreciate bug reports and feature requests on the issues board.
Quickstart
Install with pip install craterpy then see example usage at Getting Started.
Demo
Quickly import tabluar crater data from a CSV and visualize it on a geotiff in 2 lines of code:
from craterpy import CraterDatabase, sample_data as sd
cdb = CraterDatabase(sd['vesta_craters_km.csv'], 'Vesta', units='km')
cdb.plot(sd['vesta.tif'], alpha=0.5, color='tab:green', savefig='readme_vesta_cdb.png')
Clip and plot targeted regions around each crater from large raster datasets.
cdb.add_circles('crater_roi', 1.5)
cdb.plot_rois(sd['vesta.tif'], 'crater_roi', range(3, 12))
Extract zonal statistics for crater regions of interest.
import pandas as pd
from craterpy import CraterDatabase, sample_data as sd
df = df = pd.read_csv(sd["moon_craters_km.csv"])
cdb = CraterDatabase(df[df["Diameter (km)"] < 60], "Moon", units="km")
# Define regions for crater floor, rim (sizes in crater radii)
cdb.add_annuli("floor", 0.4, 0.6) # crater floor, excluding possible central peak
cdb.add_annuli("rim", 0.99, 1.01) # thin annulus at rim
# Pull statistics from a Lunar Digital Elevation Model (DEM) GeoTiff
stats = cdb.get_stats(sd["moon_dem.tif"], regions=['floor', 'rim'], stats=['mean'])
# Use mean elevations to compute depth (rim to floor)
stats['crater_depth (m)'] = (stats.mean_rim - stats.mean_floor)
print(stats.head().to_string(float_format='%.1f', index=False))
# Diameter (km) Latitude Longitude mean_floor mean_rim crater_depth (m)
# 60.0 19.4 -146.5 6070.0 10792.9 4722.9
# 60.0 44.2 145.3 -976.4 3114.0 4090.4
# 60.0 -43.6 -7.5 -3617.5 186.8 3804.4
# 60.0 -9.6 134.7 1843.4 6127.9 4284.4
# 59.9 -25.3 2.4 -2634.2 -945.0 1689.1
Documentation
Full API documentation and usage examples are available at ReadTheDocs.
Installation
We recommend pip installing craterpy into a virtual environment, e.g. with conda or venv:
pip install craterpy
- Note: Craterpy is currently only tested on Ubuntu and OS X but may work on some versions of Windows.
Contributing
There are two major ways you can help improve craterpy:
-
Report bugs or request new features on the issues board.
-
Contributing directly. See CONTRIBUTING.rst for full details. First time open source contributors are welcome!
Citing craterpy
Craterpy is MIT Licenced and is free to use with attribution. Citation information can be found here.
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 craterpy-0.10.0.tar.gz.
File metadata
- Download URL: craterpy-0.10.0.tar.gz
- Upload date:
- Size: 9.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
16480180b4272770b60dc7825bee16d2d342de91d03e37159ca1e6115cb31f21
|
|
| MD5 |
250a592ad00225db6aa04e66a1c825ed
|
|
| BLAKE2b-256 |
60bc12b6167fe28fd9bcfba67025b68f8516a0043e5e2936c0592c1a0b20b69c
|
File details
Details for the file craterpy-0.10.0-py3-none-any.whl.
File metadata
- Download URL: craterpy-0.10.0-py3-none-any.whl
- Upload date:
- Size: 7.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36eac4b0ce40a9da3849ccb5aaf9391ff4b32c0a2eb67674c6327fbadc4eaa1c
|
|
| MD5 |
cafee06d04256e9fc2a61cef3d346475
|
|
| BLAKE2b-256 |
c60d165466920cad26fa2afa3515508021e313971f48c1d995bdb61b2ec994ea
|