# intelligent-computing-lab-panda/seenn architecture

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

- Interactive diagram: https://gitdiagram.com/intelligent-computing-lab-panda/seenn
- Repository: https://github.com/intelligent-computing-lab-panda/seenn

## Overview

SEENN trains spiking neural networks and documents SEENN-I early-exit evaluation; the tree also contains a separate QCFS ANN-to-SNN training/evaluation program and a substantial SpikingJelly runtime. The main workflows are represented alongside the conversion, event-data, neuron, and visualization capabilities visible in the tree. README-documented SEENN-I evaluation has no matching file in the supplied tree, so its implementation path and wiring are not asserted; several root modules are likewise unsampled.

Main entry points: [`SNN_conversion_QCFS/main.py`](https://github.com/intelligent-computing-lab-panda/seenn/blob/main/SNN_conversion_QCFS/main.py) (Train and evaluate), [`train_snn.py`](https://github.com/intelligent-computing-lab-panda/seenn/blob/main/train_snn.py) (SNN training), [`SNN_conversion_QCFS/spikingjelly/clock_driven/ann2snn`](https://github.com/intelligent-computing-lab-panda/seenn/tree/main/SNN_conversion_QCFS/spikingjelly/clock_driven/ann2snn) (ANN-to-SNN conversion), [`SNN_conversion_QCFS/spikingjelly/clock_driven/neuron.py`](https://github.com/intelligent-computing-lab-panda/seenn/blob/main/SNN_conversion_QCFS/spikingjelly/clock_driven/neuron.py) (Spiking neurons)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_seenn["SEENN training"]
  node_seenn_train["SNN training<br/>[train_snn.py]"]
end

subgraph group_qcfs["QCFS conversion"]
  node_qcfs_entry["Train and evaluate<br/>[main.py]"]
  node_qcfs_data["Data preprocessing"]
  node_qcfs_models["ANN architectures"]
  node_qcfs_train["ImageNet training<br/>[train.py]"]
  node_qcfs_eval["ImageNet evaluation<br/>[evaluate.py]"]
  node_qcfs_funcs["Training and evaluation<br/>[funcs.py]"]
  node_qcfs_convert["Activation conversion<br/>[utils.py]"]
end

subgraph group_sj["SpikingJelly runtime"]
  node_sj_ann2snn["ANN-to-SNN conversion"]
  node_sj_neurons["Spiking neurons<br/>[neuron.py]"]
  node_sj_kernels["Neuron kernels<br/>[neuron_kernel.py]"]
  node_sj_encoding["Spike encoding<br/>[encoding.py]"]
  node_sj_datasets["Neuromorphic datasets"]
  node_sj_visual["Spike visualization"]
end

subgraph group_data["Data and models"]
  node_seenn_models["SNN architectures"]
  node_seenn_layers["Spiking layers<br/>[layers.py]"]
  node_seenn_data["Dataset loading<br/>[data_loaders.py]"]
  node_seenn_utils["Training utilities<br/>[utils.py]"]
end

node_user(("Researcher"))

node_user -->|"configures training"| node_seenn_train
node_seenn_train -->|"loads batches"| node_seenn_data
node_seenn_train -->|"selects model"| node_seenn_models
node_seenn_models -->|"uses layers"| node_seenn_layers
node_seenn_train -->|"uses utilities"| node_seenn_utils
node_user -->|"selects action"| node_qcfs_entry
node_qcfs_entry -->|"prepares data"| node_qcfs_data
node_qcfs_entry -->|"selects model"| node_qcfs_models
node_qcfs_entry -->|"dispatches training"| node_qcfs_train
node_qcfs_entry -->|"dispatches evaluation"| node_qcfs_eval
node_qcfs_entry -->|"calls workflows"| node_qcfs_funcs
node_qcfs_entry -->|"replaces activations"| node_qcfs_convert
node_qcfs_entry -.->|"converts model"| node_sj_ann2snn
node_sj_ann2snn -->|"uses neurons"| node_sj_neurons
node_sj_neurons -->|"uses kernels"| node_sj_kernels
node_sj_datasets -.->|"provides event data"| node_sj_encoding
node_user -->|"inspects activity"| node_sj_visual

click node_seenn_train "https://github.com/intelligent-computing-lab-panda/seenn/blob/main/train_snn.py"
click node_seenn_models "https://github.com/intelligent-computing-lab-panda/seenn/tree/main/models"
click node_seenn_layers "https://github.com/intelligent-computing-lab-panda/seenn/blob/main/models/layers.py"
click node_seenn_data "https://github.com/intelligent-computing-lab-panda/seenn/blob/main/data_loaders.py"
click node_seenn_utils "https://github.com/intelligent-computing-lab-panda/seenn/blob/main/utils.py"
click node_qcfs_entry "https://github.com/intelligent-computing-lab-panda/seenn/blob/main/SNN_conversion_QCFS/main.py"
click node_qcfs_data "https://github.com/intelligent-computing-lab-panda/seenn/tree/main/SNN_conversion_QCFS/Preprocess"
click node_qcfs_models "https://github.com/intelligent-computing-lab-panda/seenn/tree/main/SNN_conversion_QCFS/Models"
click node_qcfs_train "https://github.com/intelligent-computing-lab-panda/seenn/blob/main/SNN_conversion_QCFS/ImageNet/train.py"
click node_qcfs_eval "https://github.com/intelligent-computing-lab-panda/seenn/blob/main/SNN_conversion_QCFS/ImageNet/evaluate.py"
click node_qcfs_funcs "https://github.com/intelligent-computing-lab-panda/seenn/blob/main/SNN_conversion_QCFS/funcs.py"
click node_qcfs_convert "https://github.com/intelligent-computing-lab-panda/seenn/blob/main/SNN_conversion_QCFS/utils.py"
click node_sj_ann2snn "https://github.com/intelligent-computing-lab-panda/seenn/tree/main/SNN_conversion_QCFS/spikingjelly/clock_driven/ann2snn"
click node_sj_neurons "https://github.com/intelligent-computing-lab-panda/seenn/blob/main/SNN_conversion_QCFS/spikingjelly/clock_driven/neuron.py"
click node_sj_kernels "https://github.com/intelligent-computing-lab-panda/seenn/blob/main/SNN_conversion_QCFS/spikingjelly/clock_driven/neuron_kernel.py"
click node_sj_encoding "https://github.com/intelligent-computing-lab-panda/seenn/blob/main/SNN_conversion_QCFS/spikingjelly/clock_driven/encoding.py"
click node_sj_datasets "https://github.com/intelligent-computing-lab-panda/seenn/tree/main/SNN_conversion_QCFS/spikingjelly/datasets"
click node_sj_visual "https://github.com/intelligent-computing-lab-panda/seenn/tree/main/SNN_conversion_QCFS/spikingjelly/visualizing"

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_seenn_train toneBlue
class node_qcfs_entry,node_qcfs_data,node_qcfs_models,node_qcfs_train,node_qcfs_eval,node_qcfs_funcs,node_qcfs_convert toneAmber
class node_sj_ann2snn,node_sj_neurons,node_sj_kernels,node_sj_encoding,node_sj_datasets,node_sj_visual toneMint
class node_seenn_models,node_seenn_layers,node_seenn_data,node_seenn_utils toneRose
class node_user toneIndigo
```

## Components

### SEENN training

- [SNN training](https://github.com/intelligent-computing-lab-panda/seenn/blob/main/train_snn.py): `train_snn.py`

### QCFS conversion

- [Train and evaluate](https://github.com/intelligent-computing-lab-panda/seenn/blob/main/SNN_conversion_QCFS/main.py): `SNN_conversion_QCFS/main.py`
- [Data preprocessing](https://github.com/intelligent-computing-lab-panda/seenn/tree/main/SNN_conversion_QCFS/Preprocess): `SNN_conversion_QCFS/Preprocess`
- [ANN architectures](https://github.com/intelligent-computing-lab-panda/seenn/tree/main/SNN_conversion_QCFS/Models): `SNN_conversion_QCFS/Models`
- [ImageNet training](https://github.com/intelligent-computing-lab-panda/seenn/blob/main/SNN_conversion_QCFS/ImageNet/train.py): `SNN_conversion_QCFS/ImageNet/train.py`
- [ImageNet evaluation](https://github.com/intelligent-computing-lab-panda/seenn/blob/main/SNN_conversion_QCFS/ImageNet/evaluate.py): `SNN_conversion_QCFS/ImageNet/evaluate.py`
- [Training and evaluation](https://github.com/intelligent-computing-lab-panda/seenn/blob/main/SNN_conversion_QCFS/funcs.py): `SNN_conversion_QCFS/funcs.py`
- [Activation conversion](https://github.com/intelligent-computing-lab-panda/seenn/blob/main/SNN_conversion_QCFS/utils.py): `SNN_conversion_QCFS/utils.py`

### SpikingJelly runtime

- [ANN-to-SNN conversion](https://github.com/intelligent-computing-lab-panda/seenn/tree/main/SNN_conversion_QCFS/spikingjelly/clock_driven/ann2snn): `SNN_conversion_QCFS/spikingjelly/clock_driven/ann2snn`
- [Spiking neurons](https://github.com/intelligent-computing-lab-panda/seenn/blob/main/SNN_conversion_QCFS/spikingjelly/clock_driven/neuron.py): `SNN_conversion_QCFS/spikingjelly/clock_driven/neuron.py`
- [Neuron kernels](https://github.com/intelligent-computing-lab-panda/seenn/blob/main/SNN_conversion_QCFS/spikingjelly/clock_driven/neuron_kernel.py): `SNN_conversion_QCFS/spikingjelly/clock_driven/neuron_kernel.py`
- [Spike encoding](https://github.com/intelligent-computing-lab-panda/seenn/blob/main/SNN_conversion_QCFS/spikingjelly/clock_driven/encoding.py): `SNN_conversion_QCFS/spikingjelly/clock_driven/encoding.py`
- [Neuromorphic datasets](https://github.com/intelligent-computing-lab-panda/seenn/tree/main/SNN_conversion_QCFS/spikingjelly/datasets): `SNN_conversion_QCFS/spikingjelly/datasets`
- [Spike visualization](https://github.com/intelligent-computing-lab-panda/seenn/tree/main/SNN_conversion_QCFS/spikingjelly/visualizing): `SNN_conversion_QCFS/spikingjelly/visualizing`

### Data and models

- [SNN architectures](https://github.com/intelligent-computing-lab-panda/seenn/tree/main/models): `models`
- [Spiking layers](https://github.com/intelligent-computing-lab-panda/seenn/blob/main/models/layers.py): `models/layers.py`
- [Dataset loading](https://github.com/intelligent-computing-lab-panda/seenn/blob/main/data_loaders.py): `data_loaders.py`
- [Training utilities](https://github.com/intelligent-computing-lab-panda/seenn/blob/main/utils.py): `utils.py`

### Other components

- **Researcher**

## Connections

- Researcher → SNN training: configures training
- SNN training → Dataset loading: loads batches
- SNN training → SNN architectures: selects model
- SNN architectures → Spiking layers: uses layers
- SNN training → Training utilities: uses utilities
- Researcher → Train and evaluate: selects action
- Train and evaluate → Data preprocessing: prepares data
- Train and evaluate → ANN architectures: selects model
- Train and evaluate → ImageNet training: dispatches training
- Train and evaluate → ImageNet evaluation: dispatches evaluation
- Train and evaluate → Training and evaluation: calls workflows
- Train and evaluate → Activation conversion: replaces activations
- Train and evaluate → ANN-to-SNN conversion: converts model
- ANN-to-SNN conversion → Spiking neurons: uses neurons
- Spiking neurons → Neuron kernels: uses kernels
- Neuromorphic datasets → Spike encoding: provides event data
- Researcher → Spike visualization: inspects activity
