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

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 tensorflow-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.tar.gz (414.2 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-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-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-cp312-cp312-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cajal-2.0-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-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-cp311-cp311-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cajal-2.0-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-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-cp310-cp310-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

cajal-2.0-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-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-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.tar.gz.

File metadata

  • Download URL: cajal-2.0.tar.gz
  • Upload date:
  • Size: 414.2 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.tar.gz
Algorithm Hash digest
SHA256 10f8a9446da947c79fa11f7ce52fd7eba11de7ab965c9c06559a3068a33d1f10
MD5 debf0d3e0ca74a7e1009b83b827782a1
BLAKE2b-256 f9a1e672e83d5b3fb7d0757bdb95e9832081c1f6423d878c30629b738fbe9d28

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: cajal-2.0-cp312-cp312-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 9.9 MB
  • Tags: CPython 3.12, 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-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 dd4e2f42c9cb3fa5e1f7310b6aaced9fe23c474b3b30a40b38ffe56da1f76648
MD5 c4ae6072c64f9814b7a5f828bc8bfe46
BLAKE2b-256 26be66c2d21ec67bb691bfb27ec7259e29458f1e46485d08a46ca21401557b74

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cajal-2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 52f0e7acc3daa9fddb1b394ae525ddafe2fa4188365e5b66cecb7430ed0e3b3d
MD5 36ede28612a09681b377858dfc125ff1
BLAKE2b-256 5d24a9a7b162862df372888758ae478212def94fc552e3e2f1528e3572b009b3

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: cajal-2.0-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.12, 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-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f91dca83e44ecc056d047733c08b5deb926c926c0344e5bbe7aecbd99efe2c25
MD5 eca02858c0a4e922fd927734d94eeba7
BLAKE2b-256 411ab688d9c049e1356dde8c013e1449e0bea716ed0f2f14f8a0a0d93643052e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: cajal-2.0-cp311-cp311-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 9.9 MB
  • Tags: CPython 3.11, 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-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0d07c59a6a8930521fcda401c39c65072e3a6921004c3330ed95b68fcb2a2613
MD5 8db76e6026bf0351e1e35782c5504cc1
BLAKE2b-256 d1a73a5c5e28ac078dc1c212abc0d4f5df8ba7cea7b2412d3f0d6fa165337ee6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cajal-2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7b35ab83d6139cb80cfaf46029c7e4cfbfbe5e9c9e1c205b2295894a86a52f8e
MD5 f3c9d0b521e42572c3c718de04631f62
BLAKE2b-256 626e8fcced38e57759dcb2a433617fa1cd5ce9c139615d66a21a817e68822aaa

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: cajal-2.0-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.11, 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-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f50620fb5d0b6751cbb42fcdea633227fdaa462d3c8a1c160fbc40d69e565a3c
MD5 2515bcfe71f2e30daaf07d655d91e34a
BLAKE2b-256 135a1ff3e842fe63172df40ca96c98d13b6a9a3287ac27bf48f78f645d0d1c06

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: cajal-2.0-cp310-cp310-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 9.8 MB
  • Tags: CPython 3.10, 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-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 194837c5a478e86dd01c40160e20361a99e07d02e80b3ba366037b357aaa3f97
MD5 8b47afd93f44fe49cf6a4f23b52e3c81
BLAKE2b-256 6024bc6d39e5f53f54d93220c668cf89602af202980f01f7536229cb168c8594

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cajal-2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a407788d8320e7f00896c93de7efd59cef9a9d1b49a089dcb92b5680e2d14e09
MD5 358bac5409690cf42b5bf4d87f07af21
BLAKE2b-256 7c8867f7984cba7fb78c06f413c448e897e9b0fec802cde102ed03dde6f0485c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: cajal-2.0-cp310-cp310-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.10, 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-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5c2f07cef768343f64604e0217c76ef6e3d874f1a17009cb8ee30f900b521f88
MD5 5a23db79a1340a8e1e61b9f373eb7f95
BLAKE2b-256 5c332d28b4cc5a67c8194040f7cef24a6019c8e2fa1241a465c6e60c6ad91cf8

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: cajal-2.0-cp39-cp39-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 9.8 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-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 af571afe1879a162eccf83a3d98a7ec4f485b7aea0cb500c8949edcf739cc654
MD5 6783ede9815a8ca94da3dc8be940945d
BLAKE2b-256 af46b03c3ab4c8befc477d994479e91bdd004706a00fe21d669f4a97eb62425e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cajal-2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f220f12ea0aa0420d8723dc4f1b6a7a4305277a898372eda74d57d03fdece1e8
MD5 844095341d8888c4f01d776f655f0059
BLAKE2b-256 17aaee740a67fed87e8fdd2b773718ebefc47e55eea698c2e7a31406cef4b1dc

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: cajal-2.0-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-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7a9561075da2649f317537284b0b479904063721eb01ba4a5901c7c1a58568af
MD5 02c4693f9ef078cc6788841f659c7987
BLAKE2b-256 28a6809ca2de003bee993c0ea7c2024ad80f081abf6fb2d6b5f80ff983992c6c

See more details on using hashes here.

Provenance

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