Skip to main content

Code to process and analyze brainlit data

Project description

Brainlit

Python Build Status PyPI version Code style: black codecov License
This repository is a container of methods that Neurodata usees to expose their open-source code while it is in the process of being merged with larger scientific libraries such as scipy, scikit-image, or scikit-learn. Additioanlly, methods for computational neuroscience on brains too specific for a general scientific library can be found here, such as image registration software tuned specifically for large brain volumes.

Brainlight Features

Motivation

The repository originated as the project of a team in Joshua Vogelstein's class Neurodata at Johns Hopkins University. This project was focused on data science towards the mouselight data. It becme apparent that the tools developed for the class would be useful for other groups doing data science on large data volumes. The repository can now be considered a "holding bay" for code developed by Neurodata for collaborators and researchers to use.

Installation

Environment

  • get conda
  • create a virtual environment with python>=3.7 via conda create --name brainlit python=3.7
  • activate the environment via conda activate brainlit

Install from pypi

  • install brainlit via pip install brainlit

Install from source

  • clone the repo via git clone https://github.com/neurodata/brainlit.git
  • cd into the repo via cd brainlit
  • install brainlit via pip install -e .

How to use Brainlit

Data setup

The source data directory should look something like an octree data structure with optional swc folder

data/

  • default.0.tif
  • 1/
  • default.0.tif
  • 1/ ... 8/
  • 2/ ... 8/
  • transform.txt
  • consensus-swcs (optional, for .swc files)

First, decide for your team where you'd like to store the data - whether it will be on a local machine or on the cloud. If on the cloud, each collaborator will need to create a file at ~/.cloudvolume/secrets/x-secret.json, where x is one of [aws, gc, azure] which contains your id and secret key for your cloud platform.

Create a session

Each user will start their scripts with approximately the same lines:

from brainlit.utils.ngl import NeuroglancerSession

session = NeuroglancerSession(url='file:///abc123xyz')

From here, any number of tools can be run such as the visualization or annotation tools. Interactive demo.

Features

Registration

The registration subpackage is a facsimile of ARDENT, a pip-installable (pip install ardent) package for nonlinear image registration wrapped in an object-oriented framework for ease of use. This is an implementation of the LDDMM algorithm with modifications, written by Devin Crowley and based on "Diffeomorphic registration with intensity transformation and missing data: Application to 3D digital pathology of Alzheimer's disease." This paper extends on an older LDDMM paper, "Computing large deformation metric mappings via geodesic flows of diffeomorphisms."

This is the more recent paper:

Tward, Daniel, et al. "Diffeomorphic registration with intensity transformation and missing data: Application to 3D digital pathology of Alzheimer's disease." Frontiers in neuroscience 14 (2020).

https://doi.org/10.3389/fnins.2020.00052

This is the original LDDMM paper:

Beg, M. Faisal, et al. "Computing large deformation metric mappings via geodesic flows of diffeomorphisms." International journal of computer vision 61.2 (2005): 139-157.

https://doi.org/10.1023/B:VISI.0000043755.93987.aa

A tutorial is available in docs/notebooks/registration_demo.ipynb.

Core

The core brain-lit package can be described by the diagram at the top of the readme:

(Push and Pull Data)

Brainlit uses the Seung Lab's Cloudvolume package to push and pull data through the cloud or a local machine in an efficient and parallelized fashion. Interactive demo.
The only requirement is to have an account on a cloud service on s3, azure, or google cloud.

Loading data via local filepath of an octree structure is also supported. Interactive demo.

Visualize

Brainlit supports many methods to visualize large data. Visualizing the entire data can be done via Google's Neuroglancer, which provides a web link as shown below.

screenshot

Brainlit also has tools to visualize chunks of data as 2d slices or as a 3d model. Interactive demo.

screenshot

Manually Segment

Brainlit includes a lightweight manual segmentation pipeline. This allows collaborators of a projec to pull data from the cloud, create annotations, and push their annotations back up as a separate channel. Interactive demo.

Automatically and Semi-automatically Segment

Similar to the above pipeline, segmentations can be automatically or semi-automatically generated and pushed to a separate channel for viewing. Interactive demo

API Reference

Documentation Status The documentation can be found at https://brainlight.readthedocs.io/en/latest/.

Tests

Running tests can easily be done by moving to the root directory of the brainlit package ant typing pytest tests or python -m pytest tests.
Running a specific test, such as test_upload.py can be done simply by ptest tests/test_upload.py.

Contributing

Contribution guidelines can be found via CONTRIBUTING.md

Credits

Thanks to the neurodata team and the group in the neurodata class which started the project. This project is currently managed by Tommy Athey and Bijan Varjavand.

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

brainlit-0.2.0.tar.gz (97.2 kB view hashes)

Uploaded Source

Built Distribution

brainlit-0.2.0-py3-none-any.whl (113.9 kB view hashes)

Uploaded Python 3

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