Skip to main content

A library for multi-modal cell morphology analyses using Gromov-Wasserstein (GW) distance.

Project description

CAJAL

Build and Test codecov GitHub release (latest by date including pre-releases)

CAJAL is a Python library for multi-modal cell morphology analyses using Gromov-Wasserstein (GW) distance. Detailed information about the methods implemented in CAJAL can be found in:

K. W. Govek, P. Nicodemus, Y. Lin, J. Crawford, A. B. Saturnino, H. Cui, K. Zoga, M. P. Hart, P. G. Camara, CAJAL enables analysis and integration of single-cell morphological data using metric geometry. Nature Communications 14 (2023) 3672. DOI:10.1038/s41467-023-39424-2

R. Hu, N. N. Naseri, O. Shalem, P. G. Camara, Morphology-robust quantification of subcellular organization in complex cells. bioRxiv [Preprint] (2026) DOI:10.64898/2026.05.28.728543

Installation

CAJAL is hosted on the Python Package Index - https://pypi.org/project/cajal/

It is recommended to install CAJAL via pip, which should automatically retrieve the correct wheel for your platform and Python version. It is strongly recommended to create a virtual environment.

pip install cajal

Depending on your use case, you can install additional dependencies:

pip install "cajal[notebooks]" # dependencies for tutorial notebooks
pip install "cajal[vis]"       # visualization helpers such as ipywidgets and plotly
pip install "cajal[dl]"        # deep-learning dependencies such as torch

Installation on a standard desktop computer should take a few minutes.


CAJAL can be also built from source, by cloning the Github repository.

pip install git+https://github.com/CamaraLab/CAJAL.git

To build CAJAL from source, a C++ compiler is required for the Gromov-Wasserstein computation and may be required for the potpourri3d library if the precompiled binaries are not compatible with your system. On Windows, we recommend Microsoft Visual C++ 14.0 or greater, which can be installed via the Microsoft C++ Build Tools. On Ubuntu, it requires g++ and may require the package python3.x-dev, which registers the Python header files with g++. The Unbalanced Gromov-Wasserstein module requires a Gnu C compiler, such as is available through MinGW, and a library implementing pthreads on windows.

CAJAL contains numerous dependencies which are currently hosted only on PyPI; as such, it is not possible at this time to provide a CAJAL conda package. (conda packages require all their dependencies to also be conda packages.) However, it should be possible to install CAJAL in a conda is conscious of, using a conda-managed Python installation and calling pip from within a conda environment.


The easiest way to run CAJAL is via Jupyter. Install Jupyter with

pip install notebook

Then start up Jupyter from terminal / Powershell using

jupyter notebook

Docker image

We provide a Docker image which contains CAJAL and its dependencies, cajal:latest is built on top of the Docker image jupyter/base-notebook and contains numerous data science tools for further analysis of the output of CAJAL. Running the following command will launch a Jupyter notebook server on localhost with CAJAL and its dependencies installed:

docker run -it -p 8888:8888 -v C:\Users\myusername\Documents\myfolder:/home/jovyan/work camaralab/cajal:latest

The -p flag controls the port number on local host. For example, writing -p 4264:8888 will let you access the Jupyter server from 127.0.0.1:4264. The -v "bind mount" flag allows one to mount a local directory on the host machine to a folder inside the container so that you can read and write files on the host machine from within the Docker image. Here one must mount the folder on the host machine as /home/jovyan/work or /home/jovyan/some_other_folder as the primary user "jovyan" in the Docker image only has access to that directory and to the /opt/conda folder. See the Jupyter docker image documentation for more information.

Documentation

Extensive documentation, including several tutorials, can be found in CAJAL's readthedocs.io website.

New in this release

Version 2.0 of CAJAL incorporates CellAligner, an unsupervised framework that uses fused unbalanced Gromov-Wasserstein couplings to map protein distributions from morphologically distinct cells into shared anchor-cell geometries, enabling morphology-robust comparison of subcellular localization. The new functionalities are discussed in the new worked examples tutorial 6 and tutorial 7 and here.

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

cajal-2.0.1.tar.gz (414.5 kB view details)

Uploaded Source

Built Distributions

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

cajal-2.0.1-cp312-cp312-musllinux_1_2_x86_64.whl (9.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

cajal-2.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

cajal-2.0.1-cp312-cp312-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cajal-2.0.1-cp311-cp311-musllinux_1_2_x86_64.whl (9.9 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

cajal-2.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cajal-2.0.1-cp311-cp311-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cajal-2.0.1-cp310-cp310-musllinux_1_2_x86_64.whl (9.8 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

cajal-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cajal-2.0.1-cp310-cp310-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

cajal-2.0.1-cp39-cp39-musllinux_1_2_x86_64.whl (9.8 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

cajal-2.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

cajal-2.0.1-cp39-cp39-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file cajal-2.0.1.tar.gz.

File metadata

  • Download URL: cajal-2.0.1.tar.gz
  • Upload date:
  • Size: 414.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cajal-2.0.1.tar.gz
Algorithm Hash digest
SHA256 d0fa97417c98b17948130019f030442fe1e049efb682b81791ba48539132ed83
MD5 4ddaf74a0a53fb55a2b0c9efded63b53
BLAKE2b-256 197b814a9c01b24333f0f80ec9ae39f39bfe8dc9bac767a331e007c74f91d549

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.1.tar.gz:

Publisher: python-package.yml on CamaraLab/CAJAL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cajal-2.0.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cajal-2.0.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3bf5f9683de68dd15918a75e3ddc9bf8e14cc1e11f82f663b79f18e2d0053dae
MD5 491d6db5a0901b25ae38f4bdac8f3021
BLAKE2b-256 8283561a98343aa309630f8d6842bca7abb8c5a7c4e5279a099f3703e42b9e26

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.1-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: python-package.yml on CamaraLab/CAJAL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cajal-2.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cajal-2.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f6985810e7c9f1eb350936a52c5e8100f0556ac4156c274de446f6d03560c162
MD5 d15c8dee87315672f262046090a5e0bf
BLAKE2b-256 cc8cc22b55df1119de8254ba4713b729eeff1a8ba6380f6cd7d84b81164bf4c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: python-package.yml on CamaraLab/CAJAL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cajal-2.0.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cajal-2.0.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b6d90066cc4dd2de7a79252530722025f3a79ee29cae5e0e7210afe1be5ed6b8
MD5 3794d95689657af55b407fdf71fc0704
BLAKE2b-256 f4cf97ca136d6421e4e499a1b430e56c0c1c76ae50e13f8154f282a7b0f62f0e

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: python-package.yml on CamaraLab/CAJAL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cajal-2.0.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cajal-2.0.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 67f70dc9bfe31bfde2b10510bb6b6d68efbf66ae446ac046b5f32f6191f9f012
MD5 d4fcf057f88529a47c3589bd13298703
BLAKE2b-256 50fef525f017d899accfa6b51e6aa8a8900712efc9a233cc0cecb1150804e0e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.1-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: python-package.yml on CamaraLab/CAJAL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cajal-2.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cajal-2.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cee36ed5689802b9106d1d7ad2f3d043d5baab8b53b7a4232d834080aa973888
MD5 fc14cc1e3b993aa8a116a796a59aa6f5
BLAKE2b-256 ab76568d24c7b71c4f3f4b2b28cb9ba0fa031bc5273d4e87f09f1a163bb5f986

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: python-package.yml on CamaraLab/CAJAL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cajal-2.0.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cajal-2.0.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 79a2bb94e65a4c389f0c74d4f6c4f68cc59f4a700d5065445afad6a449c9dc5b
MD5 dd6f7bf65091de318f6e0e7ba0cff43e
BLAKE2b-256 59a6edd4ba0a7a28a6df138f7305d7d323c364ea147f51c0391e42f1c0dba67a

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: python-package.yml on CamaraLab/CAJAL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cajal-2.0.1-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cajal-2.0.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c08e52ca4a05b2005fc310a13a70974ab4548e191a3848f674631eb2395f2592
MD5 c25be28f4ab2911d7ce58709c605efa7
BLAKE2b-256 c7496dce7209e7edb70796a336f294ab29b996b65661d2d09041423e1ea85b31

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.1-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: python-package.yml on CamaraLab/CAJAL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cajal-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cajal-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6160386cac0c1070d50100c2a424a64deeeb2052a15104b761f9ee7ed5d0cb87
MD5 2535e575691854b5159c9fced6f8460b
BLAKE2b-256 854f8a0969c9eb58d6686b5f83b20d823c8663266aa6e1e350da4f6393f20878

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: python-package.yml on CamaraLab/CAJAL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cajal-2.0.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cajal-2.0.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a39c7ed8cd639914c2e374c9ddbcc1dc895784bb6565c228dd9f4582d31d8297
MD5 64fee46e48c31f0639c10be46f34cb86
BLAKE2b-256 60fc2de2fcc5b23991c7117dc0fb35059f751fac33c8ba33ffbb35b4ce816910

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.1-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: python-package.yml on CamaraLab/CAJAL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cajal-2.0.1-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cajal-2.0.1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a70e4f2db4b9f3411e698400f46a89f6f40ae96b292dce732c2ec7775622949d
MD5 a26461294f0c9ac1811631880ac3ceee
BLAKE2b-256 635d49906bfe801dac8c49654e053f16999f892b19287f8fbb6a8b75777dc25f

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.1-cp39-cp39-musllinux_1_2_x86_64.whl:

Publisher: python-package.yml on CamaraLab/CAJAL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cajal-2.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cajal-2.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 28e514c71ccc9ffa2b5afc70f9ea6e7bfd3c7d52b5021f52d8bcf5dca1d66921
MD5 f2b9e1da0e36a332f8eb1214f17b0e65
BLAKE2b-256 af0e81dc8fcb7117ce1cf66da4d2327f6787c7070d1948bec3a9a1d3b614181d

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: python-package.yml on CamaraLab/CAJAL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cajal-2.0.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: cajal-2.0.1-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cajal-2.0.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 32be3be27d6d62111b7680b5c4e83882aee8dc0c332c491312bff33c9247b37d
MD5 aa8fc10e2a4e91e6908ef78f92aed353
BLAKE2b-256 37a09f4e93c5dc9b96e5616cfa1a26ba4aae9cbbf6ddaee5696f40b30c37c532

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.1-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: python-package.yml on CamaraLab/CAJAL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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