# philshiu/drosophila_brain_model architecture

> Architecture diagram of the GitHub repository philshiu/drosophila_brain_model, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/philshiu/drosophila_brain_model
- Repository: https://github.com/philshiu/drosophila_brain_model

## Overview

This repository is a connectome-based Drosophila brain simulator: users define neuron activation and silencing experiments, run Brian 2 simulations, and obtain spike-time data that can be summarized as firing rates. The graph separates input data, experiment control, simulation internals, and result analysis. The README documents notebook use and additional figure calculations; those notebooks are represented, but their unsampled code is not assumed to call particular helpers.

Main entry points: [`model.py`](https://github.com/philshiu/drosophila_brain_model/blob/main/model.py) (Trial Orchestrator), [`example.ipynb`](https://github.com/philshiu/drosophila_brain_model/blob/main/example.ipynb) (Experiment Tutorial), [`results`](https://github.com/philshiu/drosophila_brain_model/tree/main/results) (Simulation Results), [`utils.py`](https://github.com/philshiu/drosophila_brain_model/blob/main/utils.py) (Result Loader)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_inputs["Connectome Inputs"]
  node_completeness["Neuron Completeness"]
  node_connectivity["Neuron Connectivity"]
end

subgraph group_workflow["Experiment Workflow"]
  node_example["Experiment Tutorial<br/>[example.ipynb]"]
  node_model["Experiment Runner<br/>[model.py]"]
  node_trial["Trial Orchestrator<br/>[model.py]"]
  node_dataframe["Spike Dataframe<br/>[model.py]"]
end

subgraph group_simulation["Neural Simulation"]
  node_network["Network Builder<br/>[model.py]"]
  node_activation["Poisson Activation<br/>[model.py]"]
  node_silencing["Synapse Silencing<br/>[model.py]"]
  node_brian["Brian 2 Runtime"]
  node_spikes["Spike Extraction<br/>[model.py]"]
end

subgraph group_analysis["Results Analysis"]
  node_figures["Figure Calculations<br/>[figures.ipynb]"]
  node_results[("Simulation Results")]
  node_loader["Result Loader<br/>[utils.py]"]
  node_rates["Rate Summaries<br/>[utils.py]"]
end

node_user(("Researcher"))

node_user -->|"uses tutorial"| node_example
node_user -->|"runs calculations"| node_figures
node_example -->|"uses model"| node_model
node_completeness -->|"loads neurons"| node_network
node_connectivity -->|"loads connections"| node_network
node_model -->|"dispatches trials"| node_trial
node_trial -->|"builds network"| node_network
node_trial -->|"adds inputs"| node_activation
node_trial -->|"zeros weights"| node_silencing
node_trial -->|"runs simulation"| node_brian
node_network -->|"creates objects"| node_brian
node_activation -->|"creates inputs"| node_brian
node_silencing -->|"modifies synapses"| node_brian
node_trial -->|"extracts spikes"| node_spikes
node_model -->|"formats trials"| node_dataframe
node_dataframe -->|"writes results"| node_results
node_results -->|"loads parquet"| node_loader
node_loader -->|"summarizes rates"| node_rates

click node_example "https://github.com/philshiu/drosophila_brain_model/blob/main/example.ipynb"
click node_figures "https://github.com/philshiu/drosophila_brain_model/blob/main/figures.ipynb"
click node_completeness "https://github.com/philshiu/drosophila_brain_model/blob/main/Completeness_783.csv"
click node_connectivity "https://github.com/philshiu/drosophila_brain_model/blob/main/Connectivity_783.parquet"
click node_model "https://github.com/philshiu/drosophila_brain_model/blob/main/model.py"
click node_trial "https://github.com/philshiu/drosophila_brain_model/blob/main/model.py"
click node_network "https://github.com/philshiu/drosophila_brain_model/blob/main/model.py"
click node_activation "https://github.com/philshiu/drosophila_brain_model/blob/main/model.py"
click node_silencing "https://github.com/philshiu/drosophila_brain_model/blob/main/model.py"
click node_spikes "https://github.com/philshiu/drosophila_brain_model/blob/main/model.py"
click node_dataframe "https://github.com/philshiu/drosophila_brain_model/blob/main/model.py"
click node_results "https://github.com/philshiu/drosophila_brain_model/tree/main/results"
click node_loader "https://github.com/philshiu/drosophila_brain_model/blob/main/utils.py"
click node_rates "https://github.com/philshiu/drosophila_brain_model/blob/main/utils.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_completeness,node_connectivity toneBlue
class node_example,node_model,node_trial,node_dataframe toneAmber
class node_network,node_activation,node_silencing,node_brian,node_spikes toneMint
class node_figures,node_results,node_loader,node_rates toneRose
class node_user toneIndigo
```

## Components

### Connectome Inputs

- [Neuron Completeness](https://github.com/philshiu/drosophila_brain_model/blob/main/Completeness_783.csv): `Completeness_783.csv`
- [Neuron Connectivity](https://github.com/philshiu/drosophila_brain_model/blob/main/Connectivity_783.parquet): `Connectivity_783.parquet`

### Experiment Workflow

- [Experiment Tutorial](https://github.com/philshiu/drosophila_brain_model/blob/main/example.ipynb): `example.ipynb`
- [Experiment Runner](https://github.com/philshiu/drosophila_brain_model/blob/main/model.py): `model.py`
- [Trial Orchestrator](https://github.com/philshiu/drosophila_brain_model/blob/main/model.py): `model.py`
- [Spike Dataframe](https://github.com/philshiu/drosophila_brain_model/blob/main/model.py): `model.py`

### Neural Simulation

- [Network Builder](https://github.com/philshiu/drosophila_brain_model/blob/main/model.py): `model.py`
- [Poisson Activation](https://github.com/philshiu/drosophila_brain_model/blob/main/model.py): `model.py`
- [Synapse Silencing](https://github.com/philshiu/drosophila_brain_model/blob/main/model.py): `model.py`
- **Brian 2 Runtime**
- [Spike Extraction](https://github.com/philshiu/drosophila_brain_model/blob/main/model.py): `model.py`

### Results Analysis

- [Figure Calculations](https://github.com/philshiu/drosophila_brain_model/blob/main/figures.ipynb): `figures.ipynb`
- [Simulation Results](https://github.com/philshiu/drosophila_brain_model/tree/main/results): `results`
- [Result Loader](https://github.com/philshiu/drosophila_brain_model/blob/main/utils.py): `utils.py`
- [Rate Summaries](https://github.com/philshiu/drosophila_brain_model/blob/main/utils.py): `utils.py`

### Other components

- **Researcher**

## Connections

- Researcher → Experiment Tutorial: uses tutorial (evidence: `Readme.md`)
- Researcher → Figure Calculations: runs calculations (evidence: `Readme.md`)
- Experiment Tutorial → Experiment Runner: uses model (evidence: `Readme.md`)
- Neuron Completeness → Network Builder: loads neurons (evidence: `model.py`)
- Neuron Connectivity → Network Builder: loads connections (evidence: `model.py`)
- Experiment Runner → Trial Orchestrator: dispatches trials (evidence: `model.py`)
- Trial Orchestrator → Network Builder: builds network (evidence: `model.py`)
- Trial Orchestrator → Poisson Activation: adds inputs (evidence: `model.py`)
- Trial Orchestrator → Synapse Silencing: zeros weights (evidence: `model.py`)
- Trial Orchestrator → Brian 2 Runtime: runs simulation (evidence: `model.py`)
- Network Builder → Brian 2 Runtime: creates objects (evidence: `model.py`)
- Poisson Activation → Brian 2 Runtime: creates inputs (evidence: `model.py`)
- Synapse Silencing → Brian 2 Runtime: modifies synapses (evidence: `model.py`)
- Trial Orchestrator → Spike Extraction: extracts spikes (evidence: `model.py`)
- Experiment Runner → Spike Dataframe: formats trials (evidence: `model.py`)
- Spike Dataframe → Simulation Results: writes results (evidence: `model.py`)
- Simulation Results → Result Loader: loads parquet (evidence: `utils.py`)
- Result Loader → Rate Summaries: summarizes rates (evidence: `utils.py`)
