Skip to main content

Graph-based framework to manipulate and analyze cell lineages from cell tracking data

Project description

PyPI Development Status Python Version License Actions Status Code style: black


Pycellin

Pycellin is a graph-based Python framework to easily manipulate and extract information from cell tracking data, at the single-cell level. In pycellin, cell lineages are modeled intuitively by directed rooted trees. Graph nodes represent cells at a specific point in time and space, and graph edges represent the time and space displacement of the cells. Please note that while pycellin is built to support cell division events, it does not authorize cell merging events: a cell at a specific timepoint cannot have more than one parent.

Pycellin provides predefined properties related to cell morphology, cell motion and tracking that can be automatically added to enrich lineages. More predefined properties will be implemented in the future. The framework also facilitates the creation of new properties defined by the user to accommodate the wide variety of experiments and biological questions.

Pycellin can read from and write to:

More tracking formats will progressively be supported.

Although pycellin was designed with bacteria / cell lineages in mind, it can be used with more diverse tracking data. The main requirement is that the data can be modeled by directed rooted trees, meaning no merging event.

Installation

Pycellin supports Python 3.10 and above. It is tested with Python 3.10 and 3.13 on the latest versions of Ubuntu, Windows and MacOS. Please let me know if you encounter any compatibility issue with a different combination.

It is recommended to install pycellin in a conda or mamba environment.

  1. Check that conda/mamba is already installed by typing either conda or mamba in a terminal. If not, follow the installation instructions on Miniforge.

  2. Create a Python environment dedicated to pycellin:

    conda create -n my_env_pycellin
    
  3. Activate the environment:

    conda activate my_env_pycellin
    
  4. Install pycellin via PyPI:

    pip install pycellin
    

    or if you want to install the optional test related dependencies use instead:

    pip install pycellin[test]
    
  5. You're good to go!

Code Example

import pycellin

# Import data from an external tool, here TrackMate.
xml_path = "sample_data/Ecoli_growth_on_agar_pad.xml"
model = pycellin.load_TrackMate_XML(xml_path)

# Plot the cell lineages.
for lin in model.get_cell_lineages():
    plot(lin)

# Compute and plot the cell cycle lineages.
model.add_cycle_data()
for clin in model.get_cycle_lineages():
    plot(clin)

# Enrich your lineages with additional predefined properties.
model.add_pycellin_properties([
    "rod_length", 
    "rod_width",
    "cell_displacement", 
    "cell_speed", 
    "branch_mean_speed",
    "relative_age",
    "division_time", 
    "cycle_completeness",
    ])
model.update()

# Export the enriched data as dataframes...
cell_df = model.to_cell_dataframe()
link_df = model.to_link_dataframe()
cycle_df = model.to_cycle_dataframe()
lineage_df = model.to_lineage_dataframe()

# ... or export back to TrackMate...
pycellin.export_TrackMate_XML(
    model,
    "sample_data/Ecoli_growth_on_agar_pad_enriched.xml",
    units={
        "spatialunits": model.get_space_unit(),
        "temporalunits": model.get_time_unit(),
    },
    propagate_cycle_props=True,
)

# ... or to another file format.
pycellin.export_GEFF(
    model,
    "sample_data/Ecoli_growth_on_agar_pad_enriched.geff",
    time_axes=["POSITION_T"],
    space_axes=["cell_x", "cell_y", "cell_z"],
    variable_length_props=["ROI_coords"],
) 

Usage

Please note that the following notebooks are still a work in progress. There may be some mistakes in the code and some sections might move from one notebook to another.

Notebook Description Level State
Getting started The basics of pycellin, through examples Beginner WIP
Managing properties How to add, compute and remove properties from a model Beginner WIP
Working with TrackMate data How pycellin can work with TrackMate, through an example Beginner WIP
Creating a model from scratch How to manually create a pycellin model, including its lineages Advanced Stub
Custom properties How to create user-defined properties and augment a model with them Advanced WIP

Credits and references

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

pycellin-0.5.0.tar.gz (113.0 kB view details)

Uploaded Source

Built Distribution

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

pycellin-0.5.0-py3-none-any.whl (124.1 kB view details)

Uploaded Python 3

File details

Details for the file pycellin-0.5.0.tar.gz.

File metadata

  • Download URL: pycellin-0.5.0.tar.gz
  • Upload date:
  • Size: 113.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for pycellin-0.5.0.tar.gz
Algorithm Hash digest
SHA256 50d37b17e9e42094f0fa0330d9d595926c9a5ab0aec08de4192d4dda3c99b1ac
MD5 cbe566bf4410cd4d0997e4b267d59e7f
BLAKE2b-256 e0bc1983bdb06ff4419fca8f7a3476b9e89d32bb828bebde9c53767234840704

See more details on using hashes here.

File details

Details for the file pycellin-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: pycellin-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 124.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for pycellin-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 282051a89bfecf730c4b9494d0d9d435bd1ef4414bed0f9cecf4570c78aee031
MD5 9a4d59cfdec30741213ea147fba40b44
BLAKE2b-256 2d307b064b44925c251432f99c3de7009824ce41990b44a7e6aaffbe09093024

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