*Images from poster presented at AChems 2022 [1].
- Syncing traces with externally captured GPIO events.
- General based statistics.
- Plotting: animated, 2D and 3D scatter, regression, skree, heatmap and correlation matrix.
- Dimensionality reduction with variance filters and principal component analysis.
- Support Vector Machine Learning for classification tasks.
Supported OS | Linux (list of POSIX API), Windows 7 and higher. |
Ensure you have at least Python 3.6 64bit.
# pip
pip install canalysis
#or
pip install canalysis 1.0.0
#or
pip3 install canalysis
Data can be accessed via the root ```get_data()``` function:
```python
import canalysis as ca
#initialize data
data = ca.get_data()
Data is stored in a class CalciumData
which containes attributes with events, signals and functions to manipulate and graph those functions. See the diagram below for attributes.
#plot the entire session
data.plot_session()
#plot each cell stacked
data.plot_cells()
#plot a zoomed in section
data.plot_zoom()
#initialize a heatmap class to plot heatmaps
import canalysis.heatmap as hm
heatmap = hm.heatmap(data)
For data loading, directories should be formatted a particular way that can be easily
modified by configuring data.data_utils.file_handler
.
./data/
├── Animal 1
│ ├── Day 1
│ │ ├── *Events.csv
│ │ └── *Traces.csv
│ └── Day 2
│ ├── *Events.csv
│ └── *Traces.csv
├── Animal 2
│ └── Day 1
│ ├── *Events.csv
│ └── *Traces.csv
└── Animal 3
└── Day 1
├── *Events.csv
└── *Traces.csv
A configuration file config.yaml
contains defaults that can be set in a single top-level file.
-
DIRS:
- directories for loading and saving dataDIRS: data_dir: '/Users/me/mydata' # os is internally handled save_stats: '~./home' # save statistical output save_figs: '~/graphs' # can have multiple sub-dirs save_nn: '~/svm' # train/test/eval scores from neural network
-
SESSION:
- session instance informationSESSION: animal: 'animal_ID' # must include char + num date: '123456' # must include all nun dir: '/my/data' # must include / or \
-
COLORS:
- event : color pairingCOLORS: Event1: 'color' Event2: 'color' Event3: 'color' # from matplotlib.colors API
-
DECODER:
- Decode GPIO signals into eventsDECODER: Event1: 1, 2, 3, 4 Event2: 1, 3, 4 Event3: 1, 2, 3 Event4: 1, 4 # see data/data_utils/gpio_data.py for implementation
- Additional layers to neural network for additional feature extraction
- Layer for additional outlier/anomaly detection
- Layer for linear trend normalization
- Any additional feature extraction layers i.e. temporal coding [2], latency, duration, etc.
- Incorperate dataflow-based modeling design i.e. mapping actors to threads and the vectorization of actors (see [3])
- Format all docstrings to NumPy style
[1] Long Term In-Vivo One-Photon Ca2+ Imaging of Taste-Responsive Cells In The Parabrachial Pons In The Freely Licking Rat. Flynn P. O'Connell1, Joshua D. Sammons2, Patricia M. Di Lorenzo1. 1Binghamton University, Binghamton, NY, USA. 2University of Alabama at Birmingham, Birmingham, AL, USA. Achems.org
[2] Hallock R. M., Di Lorenzo P. M. (2006). Temporal coding in the gustatory system. Neurosci. Biobehav. Rev. 30, 1145–1160. 10.1016/j.neubiorev.2006.07.005
[3] Kyunghun Lee, Xiaomin Wu, Yaesop Lee, Da-Ting Lin, Shuvra S. Bhattacharyya & Rong Chen (2021) Neural decoding on imbalanced calcium imaging data with a network of support vector machines, Advanced Robotics, 35:7, 459-470, DOI: 10.1080/01691864.2020.1863259