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

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++.

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 two Docker images which contain CAJAL and its dependencies, cajal:minimal and cajal:maximal. cajal:minimal is built on top of the Jupyter notebook Docker image base-notebook and contains only CAJAL and its dependencies, cajal:maximal 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:maximal

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. This website is under development and will continue to be substantially updated during the coming months.

New in this release (v1.0.2, 8/22/2024)

  • Released on PyPI
  • Included a fix in cell segmentation contributed by @YuchenXiangEMBL
  • Wheels are available on the Github Release page

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-1.0.2.tar.gz (345.1 kB view hashes)

Uploaded Source

Built Distributions

cajal-1.0.2-cp313-cp313-win_amd64.whl (513.3 kB view hashes)

Uploaded CPython 3.13 Windows x86-64

cajal-1.0.2-cp313-cp313-win32.whl (488.9 kB view hashes)

Uploaded CPython 3.13 Windows x86

cajal-1.0.2-cp313-cp313-musllinux_1_2_x86_64.whl (2.6 MB view hashes)

Uploaded CPython 3.13 musllinux: musl 1.2+ x86-64

cajal-1.0.2-cp313-cp313-musllinux_1_2_i686.whl (2.6 MB view hashes)

Uploaded CPython 3.13 musllinux: musl 1.2+ i686

cajal-1.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view hashes)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

cajal-1.0.2-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (1.6 MB view hashes)

Uploaded CPython 3.13 manylinux: glibc 2.17+ i686

cajal-1.0.2-cp313-cp313-macosx_11_0_arm64.whl (523.3 kB view hashes)

Uploaded CPython 3.13 macOS 11.0+ ARM64

cajal-1.0.2-cp312-cp312-win_amd64.whl (514.1 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

cajal-1.0.2-cp312-cp312-win32.whl (489.2 kB view hashes)

Uploaded CPython 3.12 Windows x86

cajal-1.0.2-cp312-cp312-musllinux_1_2_x86_64.whl (2.6 MB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

cajal-1.0.2-cp312-cp312-musllinux_1_2_i686.whl (2.7 MB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ i686

cajal-1.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

cajal-1.0.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (1.6 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686

cajal-1.0.2-cp312-cp312-macosx_11_0_arm64.whl (524.8 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

cajal-1.0.2-cp311-cp311-win_amd64.whl (515.0 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

cajal-1.0.2-cp311-cp311-win32.whl (489.9 kB view hashes)

Uploaded CPython 3.11 Windows x86

cajal-1.0.2-cp311-cp311-musllinux_1_2_x86_64.whl (2.6 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

cajal-1.0.2-cp311-cp311-musllinux_1_2_i686.whl (2.7 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ i686

cajal-1.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

cajal-1.0.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (1.6 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

cajal-1.0.2-cp311-cp311-macosx_11_0_arm64.whl (523.9 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

cajal-1.0.2-cp310-cp310-win_amd64.whl (514.4 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

cajal-1.0.2-cp310-cp310-win32.whl (490.8 kB view hashes)

Uploaded CPython 3.10 Windows x86

cajal-1.0.2-cp310-cp310-musllinux_1_2_x86_64.whl (2.5 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

cajal-1.0.2-cp310-cp310-musllinux_1_2_i686.whl (2.6 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ i686

cajal-1.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

cajal-1.0.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (1.5 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

cajal-1.0.2-cp310-cp310-macosx_11_0_arm64.whl (524.0 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

cajal-1.0.2-cp39-cp39-win_amd64.whl (514.9 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

cajal-1.0.2-cp39-cp39-win32.whl (491.4 kB view hashes)

Uploaded CPython 3.9 Windows x86

cajal-1.0.2-cp39-cp39-musllinux_1_2_x86_64.whl (2.5 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

cajal-1.0.2-cp39-cp39-musllinux_1_2_i686.whl (2.6 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ i686

cajal-1.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

cajal-1.0.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (1.5 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

cajal-1.0.2-cp39-cp39-macosx_11_0_arm64.whl (524.5 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page