Skip to main content

ktch is a python package for model-based morphometrics.

Project description

ktch - A Python package for model-based morphometrics

PyPI version Anaconda-Server Badge codecov License Python

ktch is a Python package for model-based morphometrics with scikit-learn compatible APIs.

Overview

ktch provides implementations of various morphometric analysis methods:

  • Landmark-based methods: Generalized Procrustes Analysis (GPA) with curve/surface semilandmark sliding, thin-plate spline interpolation
  • Harmonic-based methods: Elliptic Fourier Analysis (EFA) for 2D/3D closed curves, spherical harmonic analysis (SPHARM) for 3D closed surfaces
  • File I/O: Support for standard morphometric file formats (TPS, CHC, SPHARM-PDM)
  • Datasets: Built-in example datasets for learning and testing
  • Visualization: TPS deformation grids, PCA variance plots (with optional plot extra)

All analysis classes follow the scikit-learn API (fit, transform, fit_transform), making them easy to integrate into existing data analysis pipelines.

Installation

Python >= 3.11 is required.

From PyPI

pip install ktch

From conda-forge

conda install -c conda-forge ktch

Optional Dependencies

Via PyPI:

pip install ktch[plot]  # matplotlib, plotly, seaborn for visualization
pip install ktch[data]  # pooch for remote dataset downloads

Via conda-forge:

conda install -c conda-forge ktch-plot  # matplotlib, plotly, seaborn for visualization
conda install -c conda-forge ktch-data  # pooch for remote dataset downloads
conda install -c conda-forge ktch-all   # all optional dependencies

Development Installation

git clone https://github.com/noshita/ktch.git
cd ktch
uv sync

Quick Start

Elliptic Fourier Analysis on 2D Outlines

from sklearn.decomposition import PCA

from ktch.datasets import load_outline_mosquito_wings
from ktch.harmonic import EllipticFourierAnalysis

# Load outline data (126 specimens, 100 points, 2D)
data = load_outline_mosquito_wings()
coords = data.coords

# Elliptic Fourier Analysis
efa = EllipticFourierAnalysis(n_harmonics=20)
coeffs = efa.fit_transform(coords)

# PCA on EFA coefficients
pca = PCA(n_components=5)
pc_scores = pca.fit_transform(coeffs)

Documentation

See doc.ktch.dev for full documentation:

  • Tutorials: Step-by-step guides for GPA, EFA, spherical harmonics, and more
  • How-to guides: Task-oriented recipes for data loading, visualization, and pipeline integration
  • Explanation: Theoretical background on morphometric methods
  • API reference: Complete API documentation

Contributing

Bug reports and feature requests are welcome via GitHub Issues.

See CONTRIBUTING.md for development setup and conventions.

License

ktch is licensed under the Apache License, Version 2.0.

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

ktch-0.9.0.tar.gz (679.5 kB view details)

Uploaded Source

Built Distribution

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

ktch-0.9.0-py3-none-any.whl (694.5 kB view details)

Uploaded Python 3

File details

Details for the file ktch-0.9.0.tar.gz.

File metadata

  • Download URL: ktch-0.9.0.tar.gz
  • Upload date:
  • Size: 679.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.0 {"installer":{"name":"uv","version":"0.11.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ktch-0.9.0.tar.gz
Algorithm Hash digest
SHA256 b334e453124180ef7be6bd6b4a14a1a0375b42bd15bcef2ad5f3fda5fc684fac
MD5 754c3e5ab78d1e373e28e1b6782c3014
BLAKE2b-256 2da07dc0bae3e547b9d5a7d1d85146ab40b00cb85e300adda19f34277321068a

See more details on using hashes here.

File details

Details for the file ktch-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: ktch-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 694.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.0 {"installer":{"name":"uv","version":"0.11.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ktch-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 70996b67430117b9f7abc31385b261331cd4987abd637d36b0caa5a17d2f7272
MD5 a992f84dc374a9a83dc8f0276404a9aa
BLAKE2b-256 66b3b069670e68053006d7695b131924f9a0d853a6fcbbf86d336ed25eb20323

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