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.2.tar.gz (12.7 MB 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.2-cp312-cp312-musllinux_1_2_x86_64.whl (15.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

cajal-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (14.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

cajal-2.0.2-cp312-cp312-macosx_11_0_arm64.whl (7.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cajal-2.0.2-cp311-cp311-musllinux_1_2_x86_64.whl (15.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

cajal-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (14.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cajal-2.0.2-cp311-cp311-macosx_11_0_arm64.whl (7.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cajal-2.0.2-cp310-cp310-musllinux_1_2_x86_64.whl (15.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

cajal-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (14.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cajal-2.0.2-cp310-cp310-macosx_11_0_arm64.whl (7.3 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

cajal-2.0.2-cp39-cp39-musllinux_1_2_x86_64.whl (15.3 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

cajal-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (14.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

cajal-2.0.2-cp39-cp39-macosx_11_0_arm64.whl (7.3 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for cajal-2.0.2.tar.gz
Algorithm Hash digest
SHA256 ae793cafc4e0d379e50988173b0f70cfd250bd7e73230989966b66e3ec419c6c
MD5 5252016dba07b3f93bee1b0432376951
BLAKE2b-256 575a6720dbdfe8bbc827f841a3eb1f7f8e45e6391cb6aaa34cfdbbdb33d559c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.2.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.2-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cajal-2.0.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8e8966b2a546bd017dacf6d1e40357824760e2c8b8c70cc54b37c4ac6be74d47
MD5 47c797927850393a816b8817a486c019
BLAKE2b-256 6295d6d7d89023cbce6f14b12975258ee56b283f2cd75e8c149631c9f40fea7e

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.2-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.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cajal-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ca9dc942b5f7b9ca643b0488f41925bd1326d1a5297562a0d1e96b068289c9b4
MD5 b6d96759fe62445da4206e8750446241
BLAKE2b-256 c521786f46ae839d43ab293ecfec837b771287ef5212388c8ad354fdacef7df6

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.2-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.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cajal-2.0.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4bad3a47efa600500f53fcc9d906d23f4432b05fbb5f8cecc7ef9e9a8a445ffd
MD5 3979c40dd9b9b225acd97c483e5ea3f5
BLAKE2b-256 e6a26ab95ed2ace5e14f49fc8942c0432e3831d91e9ccba6e05994c235ecc4d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.2-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.2-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cajal-2.0.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 25f723dc0825515acc39555b29ad46fed8ad0482a8ad6d9c86ba42629d43c123
MD5 9287e9efcc291d63665b55ae04630085
BLAKE2b-256 6bf7961db6ddeb7a412faab519c8606069987bd8d3c3ada830002638e62f0539

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.2-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.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cajal-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1c34c5da5f3e79a158970b23234dc4194321489268d6b39ff59f1287263d5f1e
MD5 dcc4e4502479ed1ac4b7b6f131033a8e
BLAKE2b-256 c911cdcc3f77237adb3b86b4a2602d18cb2d84c174872f4788e51fb06be1ca86

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.2-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.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cajal-2.0.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9ca38e0cf8846e6d7ba4c3cb8507211c02ee4131483d8a2ed4d4d30a76bb7e1d
MD5 95e9268897f5e4bb199afa0b137658aa
BLAKE2b-256 cbfb973757e873613293490b727c7a7a9d8541a0bd9e4a4403a137066207d6c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.2-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.2-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cajal-2.0.2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 86dd4adf1099669b0f1793f7654ce1fa7bd0d07f625ea25e78eb66e9fc77e078
MD5 8588e88a4fbeda171760fc5973138a90
BLAKE2b-256 e8bcbc15c1ce914671e827e294244b27f8ddf0448376317ef35bc82b5b000aab

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.2-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.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cajal-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 16c3e4bac3bdede60710937461fd5d2bf4e5e51b06657fba2686bfae03f33299
MD5 dd84f07c6277cc4712aa8e8fe547c099
BLAKE2b-256 de0965166312932c41aa2398b458170715acecaa858175346512531c73af8e11

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.2-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.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cajal-2.0.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bb2aacc461d933c67c44f03241573b1789d887c4b368cc019ba69748aa112a65
MD5 3fb7335966e907cce2120632edd55b9e
BLAKE2b-256 0da82fb8b1edb6198e608bd0aac12cbc73396e891f289308d895faa75bfd5105

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.2-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.2-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: cajal-2.0.2-cp39-cp39-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 15.3 MB
  • Tags: CPython 3.9, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cajal-2.0.2-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 940f1dc093dd0aedf8eea565973f7b43b561111d0c28a755976273b97ac10c99
MD5 bd02596eed78b241ed80c2b5b36ab216
BLAKE2b-256 8c85e34f88005d465ab6265d3df5f43d8f750e1e3ca733e4f1dd4307bf1baa66

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.2-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.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cajal-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bacb5e26ec3296756cc102e1319860b5578707474e96524e3004e9c90490b055
MD5 d2d536c9fdb59b87c7ea79cc9497e469
BLAKE2b-256 3de4d54b89985e3b3b56f8a8203c79501f8059bed6f887f163e0f04d59adbfe3

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.2-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.2-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: cajal-2.0.2-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 7.3 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.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dbb2f8d96c6aca3bc9ec8726f05363189f60dee56d1ac8f9c2765f939997aea7
MD5 7a4622e99b04c522e06091bb58a7e321
BLAKE2b-256 da343b2409dcec747026cea4647665e76ca6df771dc4d400aa988fa917ce83f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for cajal-2.0.2-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