Skip to main content

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')

Vesta map plot

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))

Vesta plot rois

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

craterpy-0.10.0.tar.gz (9.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

craterpy-0.10.0-py3-none-any.whl (7.5 MB view details)

Uploaded Python 3

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

Hashes for craterpy-0.10.0.tar.gz
Algorithm Hash digest
SHA256 16480180b4272770b60dc7825bee16d2d342de91d03e37159ca1e6115cb31f21
MD5 250a592ad00225db6aa04e66a1c825ed
BLAKE2b-256 60bc12b6167fe28fd9bcfba67025b68f8516a0043e5e2936c0592c1a0b20b69c

See more details on using hashes here.

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

Hashes for craterpy-0.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 36eac4b0ce40a9da3849ccb5aaf9391ff4b32c0a2eb67674c6327fbadc4eaa1c
MD5 cafee06d04256e9fc2a61cef3d346475
BLAKE2b-256 c60d165466920cad26fa2afa3515508021e313971f48c1d995bdb61b2ec994ea

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page