FlyBrainLab

FlyBrainLab is an interactive computing platform for studying the function of executable circuits constructed from fruit fly brain datasets.

General information about the FlyBrainLab is available at https://www.fruitflybrain.org. Stable and tested FlyBrainLab installation instructions for Linux, MacOS, and Windows are available at https://github.com/FlyBrainLab/FlyBrainLab.

A full installation of FlyBrainLab, including all backend and frontend components, is available as a Docker image at https://hub.docker.com/r/fruitflybrain/fbl. The image requires a Linux host with at least 1 CUDA-enabled GPU and the nvidia-docker package installed. For a custom installation of the complete FlyBrainLab platform, a shell script is available at https://github.com/FlyBrainLab/FlyBrainLab.

Installation

FlyBrainLab Resources

The main components of the FlyBrainLab software architecture are depicted in the following figure.

FlyBrainLab Architecture

Server-Side Components

The server-side components include the FFBO Processor, the NeuroArch Server, the NeuroNLP Server and the Neurokernel Server.

FFBO Processor implements a Crossbar.io router that establishes the communication path among connected components and clients. Components communicate using routed Remote Procedure Calls (RPCs) and a publish/subscribe mechanism. The FFBO processor can be hosted locally or in the cloud.

NeuroArch Server hosts the NeuroArch Database implemented with the OrientDB graph database. The NeuroArch Database provides a novel data model for representation and storage of connectomic, synaptomic, genetic and neurophysiology data of the fruit fly brain with cross-referenced executable circuits. The Queries of the NeuroArch Database are supported by the NeuroArch Python API. The NeuroArch Server provides high level RPC APIs for remote access of the NeuroArch Database.

Neurokernel Server provides RPC APIs for code execution of model circuits by the Neurokernel Execution Engine. Neurokernel supports the easy combination of independently developed executable circuits towards the realization of a complete whole brain emulation. The Neurokernel Execution Engine features:

The Neurokernel Server directly fetches the specification of executable circuits from the NeuroArch Server, instantiates these circuits and transfers them for execution to the Neurokernel Execution Engine.

NeuroNLP Server provides an RPC API for translating queries written as English sentences, such as "add dopaminergic neurons innervating the mushroom body", into database queries that can be interpreted by the NeuroArch Server API, using the NLP Engine hosted by NeuroArch_NLP library. This capability increases the accessibility of the NeuroArch Database to users without prior exposure to database programming, and greatly simplifies the often-demanding task of writing database queries.

Code Repositories

Repository Utility Source Code Documentation
FFBO Processor Main Processor and Router GitHub
NeuroArch Server Database Server GitHub
NeuroArch Graph Database GitHub Doc
NeuroNLP Server Natural Language Processing Server GitHub
NeuroArch_NLP Translation of English Query to NeuroArch Query GitHub
Neurokernel Server Execution Server GitHub
Neurokernel Execution Engine GitHub Doc
Neurodriver Execution Engine GitHub

NeuroArch Datasets

We’ve included a few publicly available datasets in the NeuroArch database for easy accessibility. Users can also load and use custom datasets with their local NeuroArch installations.

Additionally, we provide a Datasets Version Tracker which includes information about and download links for the NeuroArch Database.

User-side Components

The FlyBrainLab user-side components consist of the NeuroMynerva User Interface and the FlyBrainLab Client back-end. The former provides capabilities such as morphology visualization and interactive circuit diagrams, and the latter provides program execution for communicating with the server components.

A more detailed software architecture of the user-side components is depicted below.

FlyBrainLab Architecture

NeuroMynerva is the user-side frontend of FlyBrainLab. It is a browser-based application that substantially extends upon JupyterLab by providing a number of widgets, including a Neu3D widget for 3D visualization of fly brain data, a NeuGFX widget for exploring executable neural circuits with interactive circuit diagrams, and an InfoPanel widget for accessing individual neuron/synapse data.

FlyBrainLab Client back-end (FBLClient) connects to the FFBO processor and accesses services provided by the connected backend servers. FlyBrainLab Client provides program execution APIs for handling requests to the server-side components and parsing of data coming from backend servers. In addition, it handles the communication with the frontend through the Jupyter kernel.

Neuroballad is a Python library that simplifies and accelerates executable circuit construction and simulation using Neurokernel in Jupyter notebooks in FlyBrainLab.

FlyBrainLab Utility Library offers a number of utilities to explicate the graph structure of neural circuits from raw connectome and synaptome data.

FlyBrainLab Circuits Library offer circuit specific tools for analyzing, evaluating and comparing fruit fly brain circuits. In conjunction with the capability of visually constructing circuits enabled by the NeuroMynerva front-end, speeding up the process of creating interactive executable circuit diagrams can substantially reduce the exploratory development cycle.

Installation

Code Repositories

FlyBrainLab User Components

Repository Utility Source Code Documentation
NeuroMynerva User Frontend GitHub Doc
FBLClient User Backend and FlyBrainLab Utility Library GitHub Doc
Neuroballad High Level API for Circuit Execution GitHub

FlyBrainLab Utility Library

The current FlyBrainLab Utility Library includes:

They are built into the FBLClient.

FlyBrainLab Circuit Library

Repository Utility Source Code Documentation
CXcircuits Library for the Central Complex GitHub
EOScircuits Library for the Early Olfactory System GitHub Doc
OlfTrans Library for Molecular Transduction in the Olfactory Sensory Neurons GitHub Doc
VisTrans Library for Phototransduction in the Retina GitHub

Tutorials

Latest tutorials can be found in the FlyBrainLab/Tutorials repository.