Metadata-Version: 2.4
Name: airavata-cerebrum
Version: 0.1.2
Summary: Apache Airavata Cerebrum : Integrated Data-driver Modeling for Computational Neuroscience
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: Data-driven,Computational Neuroscience,Neuroscience Modeling
Author: Sriram P Chockalingam
Author-email: srirampc@gatech.edu
Maintainer: Apache Airavata Developers
Maintainer-email: dev@apache.airavata.org
Requires-Python: >=3.10
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: allensdk (>=2.16)
Requires-Dist: altair (>=6.0)
Requires-Dist: anndata (>=0.10)
Requires-Dist: anywidget (>=0.9)
Requires-Dist: awitree (>=0.1)
Requires-Dist: duckdb (>=1.2)
Requires-Dist: fastexcel (>=0.13)
Requires-Dist: h5py (>=3.15)
Requires-Dist: ipytree (>=0.2)
Requires-Dist: ipywidgets (>=8.1)
Requires-Dist: jupyter
Requires-Dist: lmfit
Requires-Dist: matplotlib (>=3.7)
Requires-Dist: neuroanalysis (>=0.0.7)
Requires-Dist: numba (>=0.63)
Requires-Dist: numpy (>=1.23)
Requires-Dist: openpyxl (>=3.1)
Requires-Dist: pandas (>=1.5)
Requires-Dist: parse (>=1.20)
Requires-Dist: pillow
Requires-Dist: polars (>=1.26)
Requires-Dist: psutil (>=7.0)
Requires-Dist: psycopg2
Requires-Dist: pydantic (>=2.7)
Requires-Dist: pyqtgraph (>=0.13.0)
Requires-Dist: python-jsonpath (>=1.2.0)
Requires-Dist: pyyaml (>=6.0)
Requires-Dist: requests (>=2.31)
Requires-Dist: scanpy (>=1.9)
Requires-Dist: scikit-image (>=0.24)
Requires-Dist: scikit-learn (>=1.7.2)
Requires-Dist: scipy (>=1.9)
Requires-Dist: seaborn (>=0.13)
Requires-Dist: sqlalchemy (>=2.0)
Requires-Dist: statsmodels (>=0.14.6)
Requires-Dist: tqdm (>=4.66)
Requires-Dist: traitlets (>=5.1)
Description-Content-Type: text/markdown

# Apache Airavata Cerebrum, an Integrated Neuroscience Computational Framework

## Introduction

Airavata Cerebrum aims to simplify building whole brain models via integration
of cellular-level brain atlases with advanced computational tools.
Our goal is to create a cohesive, open-source framework that allows for
accelerated 'data to model' workflows that are flexible to update and
straight-forward to reproduce.

## Key Features

- **Integration of Brain Atlases**: Transparently connect to publicly available
  cellular-level brain atlases into a single, accessible platform.
- **Model Consruction Workflows**: Workflows to collect/filter/combine data from
  different databases and construct whole brain scale models.
- **Open-Source Framework**: Developing a user-friendly, open-source environment
  for neuroscience research.
- **Streamlined Environment**: Ensuring a lightweight, efficient framework for
  both beginners and advanced users alike.

# Install Airavata Cerebrum

Airavata Cerebrum requires python v3.10 environment.
It is currently tested only in the Linux operating system.
To install from the source, we recommend creating a `conda` environment using
[miniforge](https://github.com/conda-forge/miniforge) as below:

```sh
conda config --add channels conda-forge
conda create -n cerebrum python=3.10 nodejs
conda activate cerebrum
```

To install Airavata Cerebrum from source into the environment created above,
install from pypi using pip.

```sh
pip install airavata-cerebrum
```

# Model Notebooks and Scripts

The `resources` directory in our 
[github repo](https://github.com/apache/airavata-cerebrum/tree/main/resources) 
contains a set of notebooks to demonstrate Cerebrum, and
also standalone batch scripts that build/simulate models using cerbrum.
Please refer to 
[resources/README.md](https://github.com/apache/airavata-cerebrum/tree/main/resources/notebooks/README.md)
for additional installation requirements to run the notebooks. 


# Development 

## Clone the source github repo
`airavata-cerebrum` includes three submodules:
[abc_atlas_access](https://github.com/srirampc/abc_atlas_access),
[aisynphys](https://github.com/srirampc/aisynphys) and
[codetiming](https://github.com/srirampc/codetiming).
Clone the repo with all submodules  as below.
```sh
git clone --recurse-submodules https://github.com/apache/airavata-cerebrum.git
```

All the dependencies are included with in the `airavata_cerebrum/ext` namespace.
To get these python module to work in developement environment, create the following
links:
```sh
cd airavata-cerebrum/airavata_cerebrum
ln -s ../../ext/codetiming/codetiming/
ln -s ../../ext/abc_atlas_access/src/abc_atlas_access/
ln -s ../../ext/aisynphys/aisynphys/
ln -s ../../ext/abc_atlas_access/src/manifest_builder/
```

## Installing Environment For Development

Development environment for Airavata Cerebrum is created as a python3.10+ 
virtual environment in `conda` using the `environment.yml` file.
```sh
conda config --add channels conda-forge
conda env create -n cbmdev -f environment.yml
conda activate cbmdev
```

`environment.yml` includes the version of each of the package to make conda's 
dependency resolution algorithm to run faster. 

## Potential Environment Issues

### Miniforge `conda` Issue when installed with `spack`

If installing conda with miniforge, in some cases the following error appears:
`ModuleNotFoundError: No module named 'conda'`

This happens when the conda script (`$CONDA_EXE`)  has in its first line 
`#!/usr/bin/env python`, which picks up the python from the `cerebrum` environment
which is currently being installed instead of the base environment. To fix this,
replace the `/usr/bin/env python` with the python installed in the base 
environment (generally corresponds of the environment variable `$CONDA_PYTHON_EXE`).

