A package for managing multilayer morphology data
Project description
MorphSync
MorphSync is a Python library for working with multi-layered morphological data. It provides a unified framework for managing and synchronizing different representations of morphological data such as meshes, point clouds, graphs, and tabular data.
Key Features
- Multi-layer data management: Handle meshes, point clouds, graphs, and tables in a unified framework
- Linking: Create and manage mappings between different data layers
- Link-based operations: Apply masks/selections or features from one data layer to another
- Transitivity: Easily apply transitive mappings across multiple layers
- Lightweight: Intentionally light on algorithms, use your own tools but stop worrying about mappings
Quick Start
from morphsync import MorphSync
# Create a new morphology container
morphology = MorphSync(name=12345678)
mesh_data # object with vertices and faces
point_data # dataframe of points with optional features
graph_data # object with nodes and edges, either with optional features
# Add different layers
morphology.add_mesh("mesh", mesh_data)
morphology.add_points("synapses",
point_data,
spatial_columns=["x", "y", "z"],
)
morphology.add_graph("skeleton",
graph_data,
spatial_columns=["x", "y", "z"],
relation_columns=["source", "target"],
)
synapse_to_mesh_mapping # series mapping synapse indices to mesh indices
mesh_to_skeleton_mapping # series mapping mesh indices to skeleton indices
# Create mappings between layers
morphology.add_link("synapses", "mesh", mapping=synapse_to_mesh_mapping)
morphology.add_link("mesh", "skeleton", mapping=mesh_to_skeleton_mapping)
# Select all aspects of the morphology that map to the skeleton's axon labeling
# Note that transitive mapping (synapses <-> mesh <-> skeleton) works here!
mapping = morphology.query_nodes("skeleton", "compartment == 'axon'")
# Add a column to synapses which indicates the local skeleton radius
morphology.assign_from_mapping("synapses", "skeleton", ["radius"])
Core Concepts
Layers
MorphSync organizes data into layers, where each layer represents a different aspect of morphological data:
- Table: Tabular data without a spatial component
- Points: Point clouds such as annotations
- Graph: Network structures like skeletons or connectivity graphs
- Mesh: 3D surface representations with vertices and faces
Note that it's possible to have multiple layers of the same type (e.g., multiple skeleton layers).
Links
Links define relationships and mappings between layers. They enable you to:
- Use one layer to query or filter another layer
- Find features from one layer based on mappings; for instance, finding the radius of skeleton nodes that synapses map to
- Perform transitive mappings across multiple layers
Installation
pip install morphsync
or, to add to a uv managed project or environment:
uv add morphsync
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 morphsync-0.1.0.tar.gz.
File metadata
- Download URL: morphsync-0.1.0.tar.gz
- Upload date:
- Size: 11.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32f43f61d021f97a35d14a9111863c07a13962cdca429b9194219572952f4499
|
|
| MD5 |
4d7536d87bd3328f92d776d5ecba02c9
|
|
| BLAKE2b-256 |
181458216f0e48f0eb77659298494ce89db989bf9a26ac2fefdade5e7f0e03bb
|
Provenance
The following attestation bundles were made for morphsync-0.1.0.tar.gz:
Publisher:
publish.yml on bdpedigo/morphsync
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
morphsync-0.1.0.tar.gz -
Subject digest:
32f43f61d021f97a35d14a9111863c07a13962cdca429b9194219572952f4499 - Sigstore transparency entry: 574236604
- Sigstore integration time:
-
Permalink:
bdpedigo/morphsync@7b260bb209cfd8b6d198ee0d35d492aa1c69c70a -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/bdpedigo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7b260bb209cfd8b6d198ee0d35d492aa1c69c70a -
Trigger Event:
release
-
Statement type:
File details
Details for the file morphsync-0.1.0-py3-none-any.whl.
File metadata
- Download URL: morphsync-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
effb1e26576eee2e74c73db867941c7827a8fbb07bf622f67631a3e5d46bfc34
|
|
| MD5 |
b1e2b1043e42ab3be69a62d51c20e5d1
|
|
| BLAKE2b-256 |
f4b0abebbd0024652e63f4c659170136c8fc274472d76e1d71b579b04ab78b41
|
Provenance
The following attestation bundles were made for morphsync-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on bdpedigo/morphsync
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
morphsync-0.1.0-py3-none-any.whl -
Subject digest:
effb1e26576eee2e74c73db867941c7827a8fbb07bf622f67631a3e5d46bfc34 - Sigstore transparency entry: 574236634
- Sigstore integration time:
-
Permalink:
bdpedigo/morphsync@7b260bb209cfd8b6d198ee0d35d492aa1c69c70a -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/bdpedigo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7b260bb209cfd8b6d198ee0d35d492aa1c69c70a -
Trigger Event:
release
-
Statement type: