Metadata-Version: 2.1
Name: c6
Version: 0.3.2
Summary: A toy center-based model of initial clustering
Home-page: https://github.com/AllenCellModeling/c6
Author: C David Williams
Author-email: cdavew@alleninstitute.org
License: Allen Institute Software License
Keywords: c6
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: Free for non-commercial use
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.7
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: matplotlib
Requires-Dist: sklearn
Provides-Extra: all
Requires-Dist: matplotlib ; extra == 'all'
Requires-Dist: sklearn ; extra == 'all'
Requires-Dist: codecov ; extra == 'all'
Requires-Dist: flake8 ; extra == 'all'
Requires-Dist: black ; extra == 'all'
Requires-Dist: pytest ; extra == 'all'
Requires-Dist: pytest-cov ; extra == 'all'
Requires-Dist: pytest-raises ; extra == 'all'
Requires-Dist: pytest-runner ; extra == 'all'
Requires-Dist: bumpversion (>=0.5.3) ; extra == 'all'
Requires-Dist: coverage (>=5.0a4) ; extra == 'all'
Requires-Dist: flake8 (>=3.7.7) ; extra == 'all'
Requires-Dist: ipython (>=7.5.0) ; extra == 'all'
Requires-Dist: m2r (>=0.2.1) ; extra == 'all'
Requires-Dist: pytest (>=4.3.0) ; extra == 'all'
Requires-Dist: pytest-cov (==2.6.1) ; extra == 'all'
Requires-Dist: pytest-raises (>=0.10) ; extra == 'all'
Requires-Dist: pytest-runner (>=4.4) ; extra == 'all'
Requires-Dist: Sphinx (==2.4.4) ; extra == 'all'
Requires-Dist: sphinx-rtd-theme (>=0.1.2) ; extra == 'all'
Requires-Dist: tox (>=3.5.2) ; extra == 'all'
Requires-Dist: twine (>=1.13.0) ; extra == 'all'
Requires-Dist: wheel (>=0.33.1) ; extra == 'all'
Requires-Dist: jupyterlab ; extra == 'all'
Provides-Extra: dev
Requires-Dist: bumpversion (>=0.5.3) ; extra == 'dev'
Requires-Dist: coverage (>=5.0a4) ; extra == 'dev'
Requires-Dist: flake8 (>=3.7.7) ; extra == 'dev'
Requires-Dist: ipython (>=7.5.0) ; extra == 'dev'
Requires-Dist: m2r (>=0.2.1) ; extra == 'dev'
Requires-Dist: pytest (>=4.3.0) ; extra == 'dev'
Requires-Dist: pytest-cov (==2.6.1) ; extra == 'dev'
Requires-Dist: pytest-raises (>=0.10) ; extra == 'dev'
Requires-Dist: pytest-runner (>=4.4) ; extra == 'dev'
Requires-Dist: Sphinx (==2.4.4) ; extra == 'dev'
Requires-Dist: sphinx-rtd-theme (>=0.1.2) ; extra == 'dev'
Requires-Dist: tox (>=3.5.2) ; extra == 'dev'
Requires-Dist: twine (>=1.13.0) ; extra == 'dev'
Requires-Dist: wheel (>=0.33.1) ; extra == 'dev'
Provides-Extra: interactive
Requires-Dist: jupyterlab ; extra == 'interactive'
Provides-Extra: setup
Requires-Dist: pytest-runner ; extra == 'setup'
Provides-Extra: test
Requires-Dist: codecov ; extra == 'test'
Requires-Dist: flake8 ; extra == 'test'
Requires-Dist: black ; extra == 'test'
Requires-Dist: pytest ; extra == 'test'
Requires-Dist: pytest-cov ; extra == 'test'
Requires-Dist: pytest-raises ; extra == 'test'

# c6 (Circular Center-based Cell Colony Creation and Clustering) <img src="docs/imgs/logo.png" width="250" title="c6" alt="c6" align="right" vspace = "50">

[![Build Status](https://github.com/AllenCellModeling/c6/workflows/Build%20Master/badge.svg)](https://github.com/AllenCellModeling/c6/actions)
[![Documentation](https://github.com/AllenCellModeling/c6/workflows/Documentation/badge.svg)](https://AllenCellModeling.github.io/c6)
[![Code Coverage](https://codecov.io/gh/AllenCellModeling/c6/branch/master/graph/badge.svg)](https://codecov.io/gh/AllenCellModeling/c6)

C6 is a toy center-based model of the initial clustering that occurs as a cells aggregate after replating. 


---

## Features
- [x] Represents cells as non-overlapping circles
- [x] Cells exclude each other
- [x] Cells sense each other with tunable strength and distances
- [x] Cells grow at tunable rates
- [x] Cells divide at tunable sizes
- [x] Cells' growth is contact inhibited
- [x] Runs are launched from stored initial conditions
- [x] Runs are selectable as deterministic or stochastic 
- [x] Runs are logged to tidy data file
- [x] Run state is visualized
- [x] You can save run states out to pretty MP4s
- [ ] Summary statistics are available for probing run logs
- [ ] Easy run profiling

## Quick Start
```python
import c6
import numpy as np
import matplotlib.pyplot as plt


space = c6.Space()
cell_locs = 20*np.random.random((10,2))
cells = [c6.Cell(space, loc) for loc in cell_locs]

fig, ax = plt.subplots(1,1, figsize=(10,10))
ax.set(xlim=(-10, 20), ylim=(-10, 20))
animation = c6.plot.animate(fig, ax, space, 500)
animation.save('example.mp4', fps=20)
```

## Installation

Clone and install or `pip install git+https://github.com/AllenCellModeling/c6.git`

## Creating initial conditions and logging runs

Both initial conditions and run logs are stored as JSON in this form:

```json
{
    "seed": 123,
    "universal": {"sensing": 12.3,
                  "influence_max": 12,
                  "influence_decay": 0.3,
                  "adhesion": 0.5
                 },
    "cells": [{"time": 0,
               "id": [0, 1, ..., 100],
               "loc": [[1, 2], [3, 4], ..., [0.5, 2]],
               "radius": [0.3, 0.5, ..., 2.0]
             }]
}
```

Any property that can be passed to `c6.Cell` as a parameter can be serialized either as a key/value pair in `'universal'`, in which case it applies to all cells at all time points, or to `"cells"`, in which case it is parsed on a per cell per time point basis. Starting conditions are this file, but with only the first entry in `"cells"` specified. The first entry in `"cells"` is always applied before later entries and so per-cell values that do not change (e.g. ids) can be set there. 


## Documentation
For full package documentation please visit [AllenCellModeling.github.io/c6](https://AllenCellModeling.github.io/c6).

Available under the Allen Institute Software License


