goatpy — Spatial Glycomics Analysis Toolkit
goatpy is a Python toolkit for spatial glycomics analysis, combining MALDI mass spectrometry imaging with H&E histology. It provides automatic image registration, pseudo-image generation, spatial PCA, and annotation tools built on top of the SpatialData framework.
Features
- Automatic H&E registration — align MALDI ion images to whole-slide H&E images using normalised cross-correlation with full 360° rotation search
- QuPath annotation support — transform GeoJSON annotations from QuPath into the registered coordinate system
- Spatial GraphPCA — dimensionality reduction with optional spatial smoothing via k-nearest-neighbour graphs
- Pseudo-image generation — create spatial images from categorical or continuous obs columns
- Landmark alignment GUI — interactive napari-based landmark alignment tool
- SpatialData native — all outputs are standard
SpatialDataobjects, compatible with the scverse ecosystem
Installation
Recommended: conda environment
Download environment.yml and create the environment:
conda env create -f environment.yml
conda activate maldi
pip install goatpy
PyPI
pip install goatpy
For napari visualisation support:
pip install "goatpy[napari]"
From source
pip install git+https://github.com/agc888/goatpy.git
Quick start
import goatpy as gp
# Load and register MALDI + H&E
sdata = gp.load_and_align(
imzml_path="my_sample.imzML",
he_path="my_sample.svs",
geojson_path="annotations.geojson", # optional QuPath annotations
)
# Normalise intensities
sdata = gp.normalize_spatialdata(sdata, table_name="maldi_adata", method="TIC")
# Dimensionality reduction
sdata = gp.graphpca_spatialdata(sdata, n_components=30, alpha=0.5)
# Cluster
sdata = gp.get_kmean_clusters(sdata, n_clusters=8)
# Visualise in napari
from napari_spatialdata import Interactive
Interactive([sdata]).run()
Documentation
Full documentation is available at goatpy.readthedocs.io.
Citation
If you use goatpy in your research, please cite:
Causer, A. (2025). goatpy: Spatial Glycomics Analysis Toolkit. https://github.com/agc888/goatpy
License
MIT — see LICENSE for details.
Metadata
Release files for goatpy 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| goatpy-1.0.0.tar.gz | 126.4 kB | Without provenance | Details for goatpy-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| goatpy-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for goatpy-1.0.0-py3-none-any.whl |
Total release size: 228.3 kB
Release files / goatpy-1.0.0.tar.gz
| Download URL | goatpy-1.0.0.tar.gz |
|---|---|
| Size | 126.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
81fe2022a28e75b84b2ce4a51cce46a5af038f31add008c6d1dfa4ffdb98fac2
|
|
BLAKE2b-256 checksum How to use checksums |
07276226b2534ba6b35e616f3faed50843f4edfad1cbae9541869fdae10302ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.5
|
Release files / goatpy-1.0.0-py3-none-any.whl
| Download URL | goatpy-1.0.0-py3-none-any.whl |
|---|---|
| Size | 101.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1fa1e5f268b94237ae539af6647315442fbcf2c3c6a2e807dbee2707d81d5b6e
|
|
BLAKE2b-256 checksum How to use checksums |
9378df286f3abc4b2963ba13a56b40317f93d6fc9caeaba8e355a22d98b71853
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.5
|
Security for goatpy 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.