ktch - A Python package for model-based morphometrics
ktch is a Python package for model-based morphometrics with scikit-learn compatible APIs.
Overview
ktch implements the following 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) and disk harmonic analysis (DHA) for surfaces
- Theoretical morphological models of coiling: Raup's model and the growing tube model
- File I/O: Support for standard morphometric file formats (TPS, CHC, NEF, SPHARM-PDM)
- Datasets: Built-in example datasets for learning and testing
- Visualization: TPS deformation grids, PCA variance plots (with optional
plotextra)
All analysis classes follow the scikit-learn API (fit, transform, fit_transform), so you can plug them into your existing 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 and support
Bug reports, feature requests, and usage questions are all welcome via GitHub Issues.
See CONTRIBUTING.md for development setup and conventions.
License
ktch is licensed under the Apache License, Version 2.0.
Release files for ktch 0.11.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ktch-0.11.1.tar.gz | 741.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ktch-0.11.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.5 MB
Release files / ktch-0.11.1.tar.gz
| Download URL | ktch-0.11.1.tar.gz |
|---|---|
| Size | 741.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
872ef5db27428f53d0a9c5c90d6cbc4ff7288dbe50c8d6b693e5ccdb6319063d
|
|
BLAKE2b-256 checksum How to use checksums |
18e484e9c14127b7f38c5fa938e5630bdd57c8ba02d9d3ee8e91a56140d6ade3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","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}
|
Release files / ktch-0.11.1-py3-none-any.whl
| Download URL | ktch-0.11.1-py3-none-any.whl |
|---|---|
| Size | 761.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
be2190d9f5c302e06d61a3de492f9a867760787bd5780fa20e8efe4c4ebe597a
|
|
BLAKE2b-256 checksum How to use checksums |
d697a1b69368e22ee8f80bace7ba0371d5a38b70961cca7703cc0f198ab31348
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","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}
|