# πͺ° FlyWire Connectome Critic & Visualizer
**ΠΠΈΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½Π°Ρ ΡΠΈΠΌΡΠ»ΡΡΠΈΡ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΠΌΠ° ΠΌΠΎΠ·Π³Π° Π΄ΡΠΎΠ·ΠΎΡΠΈΠ»Ρ (*Drosophila melanogaster*) Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.**
ΠΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΡΠ°ΡΠΊΡ, ΡΠ°Π·Π³ΠΎΠ½ΡΠ΅Ρ ΡΠΏΠ°ΠΉΠΊΠΎΠ²ΡΡ Π²ΠΎΠ»Π½Ρ ΠΏΠΎ 138 000+ ΡΠ΅Π°Π»ΡΠ½ΡΠΌ Π½Π΅ΠΉΡΠΎΠ½Π°ΠΌ ΠΈ ΡΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅Ρ ΠΌΠΎΡΠΎΡΠ½ΡΠΉ ΠΎΡΠΊΠ»ΠΈΠΊ ΠΈ Β«ΠΌΡΡΠ»ΠΈΒ» ΠΌΡΡ
ΠΈ Π² Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ Telegram-Π±ΠΎΡΠ°.
[](https://www.python.org/)
[](https://fastapi.tiangolo.com/)
[](https://aiogram.dev/)
[](https://scipy.org/)
[](https://apple.com)
---
## π¬ ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΡΠ°Π±ΠΎΡΡ
| ΠΠ΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ (ΠΡΠΎΠ΅ΠΊΡΠΈΡ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΠΌΠ° 60 FPS) | ΠΡΠΊΠ»ΠΈΠΊ ΠΌΡΡ
ΠΈ ΠΈ Telegram-Π±ΠΎΡ |
| :---: | :---: |
| 
*ΠΡΠΎΠ΅ΠΊΡΠΈΡ ΡΠΏΠ°ΠΉΠΊΠΎΠ² ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΠΌΠ° Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ* | 
*ΠΡΠΏΡΠ°Π²ΠΊΠ° ΡΠΎΡΠΎ Π±ΠΎΡΡ ΠΈ ΠΌΠΎΡΠΎΡΠ½Π°Ρ ΡΠ΅Π°ΠΊΡΠΈΡ Π΄ΡΠΎΠ·ΠΎΡΠΈΠ»Ρ* |
---
## π‘ Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅
Π ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π»Π΅ΠΆΠΈΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΎΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΠΌ ΠΌΠΎΠ·Π³Π° Π²Π·ΡΠΎΡΠ»ΠΎΠΉ Π΄ΡΠΎΠ·ΠΎΡΠΈΠ»Ρ **FlyWire release 783**:
- **138 639** ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π½Π΅ΠΉΡΠΎΠ½ΠΎΠ²;
- **15 091 983** ΡΠΈΠ½Π°ΠΏΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ;
- Π Π΅Π°Π»ΡΠ½ΡΠ΅ Π°Π½Π°ΡΠΎΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ² ΠΊΠ»Π΅ΡΠΎΠΊ, ΠΏΠΎΠ»ΡΡΠ°ΡΠΈΠΉ ΠΈ Π½Π΅ΠΉΡΠΎΡΡΠ°Π½ΡΠΌΠΈΡΡΠ΅ΡΠΎΠ².
ΠΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΡ
ΡΠ΅ΡΠ΅ΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ **Π±ΠΈΠΎΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΡΡ ΠΈΠΌΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠ΅ΡΡ (SNN)** Π½Π° Π±Π°Π·Π΅ Π³ΡΠ°ΡΠ° ΡΠΈΠ½Π°ΠΏΡΠΎΠ² ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΆΠΈΠ²ΠΎΠ³ΠΎ ΡΡΡΠ΅ΡΡΠ²Π°. ΠΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ Π±ΠΎΡΡ Π·ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠΈΠΌΡΠ» Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅Ρ ΡΠ΅ΡΠ΅ΠΏΡΠΎΡΡ ΡΠ΅ΡΡΠ°ΡΠΊΠΈ ΠΌΡΡ
ΠΈ, ΡΠΈΠ³Π½Π°Π» ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΠΌΡ, Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΡΠ΅ΡΠΊΠΈΠΉ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
Π½Π΅ΠΉΡΠΎΠ½Π½ΡΡ
ΠΏΡΠ»ΠΎΠ² Π² ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ²ΠΎΡΠΎΡ ΡΠ΅Π»Π°, ΡΠ΅Π°ΠΊΡΠΈΡ ΠΈΠ·Π±Π΅Π³Π°Π½ΠΈΡ ΠΈ ΡΠΌΠΎΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΎΡΠΊΠ»ΠΈΠΊ.
---
## β‘ ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ
- **ΠΡΡΠΎΠΊΠΎΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΡΡΡΡ**:
- ΠΡΠ°Ρ ΡΠ²ΡΠ·Π΅ΠΉ ΠΏΠ°ΡΡΠΈΡΡΡ Π±Π°ΡΡΠ°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· `pyarrow.ipc` Π±Π΅Π· Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π²ΡΠ΅Π³ΠΎ 850+ ΠΠ Π΄Π°ΡΠ°ΡΠ΅ΡΠ° Π² ΠΏΠ°ΠΌΡΡΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ.
- ΠΠ°ΡΡΠΈΡΠ° ΡΠΌΠ΅ΠΆΠ½ΠΎΡΡΠΈ Ρ
ΡΠ°Π½ΠΈΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠΎ Π²Ρ
ΠΎΠ΄Π°ΠΌ ΡΠ°Π·ΡΠ΅ΠΆΠ΅Π½Π½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ `scipy.sparse.csr_matrix` (Π²ΡΠ΅Π³ΠΎ ~120 ΠΠ Π² RAM).
- ΠΠ»ΠΎΡΠ½Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° 138k Γ 138k Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ.
- **ΠΠΈΠΎΡΠΈΠ·ΠΈΠΊΠ° ΡΠΏΠ°ΠΉΠΊΠΎΠ² (Adaptive Leaky Integrate-and-Fire)**:
- ΠΠ΅ΠΌΠ±ΡΠ°Π½Π½ΡΠΉ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π» Ρ Π·Π°ΡΡΡ
Π°Π½ΠΈΠ΅ΠΌ $\exp(-1/8)$.
- ΠΠ΄Π°ΠΏΡΠ°ΡΠΈΡ ΡΠ°ΡΡΠΎΡΡ ΡΠΏΠ°ΠΉΠΊΠΎΠ² (Spike-Frequency Adaptation, SFA).
- ΠΡΠ°ΡΠΊΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΈΠ½Π°ΠΏΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π΄Π΅ΠΏΡΠ΅ΡΡΠΈΡ (Short-Term Depression, STD) ΠΏΡΠΈ ΡΠ°ΡΡΡΡ
ΡΠΏΠ°ΠΉΠΊΠ°Ρ
.
- ΠΠ±ΡΠΎΠ»ΡΡΠ½ΡΠΉ ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠΈΠΎΠ΄Ρ Ρ Π·Π°ΡΠΈΡΠΎΠΉ ΠΎΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
- **Π‘Π΅ΡΡΠ°ΡΠΊΠ° (Retina Encoder)**:
- ΠΡ
ΠΎΠ΄Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ°ΠΉΠ·ΠΈΡΡΡ Π΄ΠΎ 32Γ32 ΠΈ ΡΠΈΠ»ΡΡΡΡΠ΅ΡΡΡ ΡΠ°Π·Π½ΠΎΡΡΡΡ Π³Π°ΡΡΡΠΈΠ°Π½ (DoG: $G(0.9) - G(2.6)$).
- ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ON/OFF ΠΊΠ°Π½Π°Π»Ρ ΠΈ Π°Π½Π°ΡΠΎΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡ Π² Π»Π΅Π²ΡΡ ΠΈ ΠΏΡΠ°Π²ΡΡ ΠΎΠΏΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄ΠΎΠ»ΠΈ (*optic lobes*).
- **ΠΠΈΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ**:
- **DNa01 / DNa02**: Π½ΠΈΡΡ
ΠΎΠ΄ΡΡΠΈΠ΅ Π½Π΅ΠΉΡΠΎΠ½Ρ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° ΡΠ΅Π»Π° (ΡΡΠ»Π΅Π½ΠΈΠ΅ Π²Π»Π΅Π²ΠΎ/Π²ΠΏΡΠ°Π²ΠΎ).
- **DNp01**: ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΡΡ ΠΈΠ·Π±Π΅Π³Π°Π½ΠΈΡ ΠΈ ΠΏΠ°Π½ΠΈΠΊΠΈ ΠΏΡΠΈ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ (*looming/escape*).
- **SEZ / GRN / Gustatory**: ΠΏΠΈΡΠ΅Π²ΡΠ΅ Π½Π΅ΠΉΡΠΎΠ½Ρ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΊ Π΅Π΄Π΅.
- **Central Complex (CX)**: ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ.
- **Π Π΅Π°ΠΊΡΠΈΠ²Π½ΡΠΉ Canvas Dashboard**:
- WebSocket-ΡΡΡΠΈΠΌΠΈΠ½Π³ ΡΠΏΠ°ΠΉΠΊΠΎΠ² ΡΠ΅ΡΠ΅Π· `np.argpartition` $O(N)$ Π±Π΅Π· Π»ΠΈΡΠ½ΠΈΡ
Π°Π»Π»ΠΎΠΊΠ°ΡΠΈΠΉ.
- 2D Π°Π½Π°ΡΠΎΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡ ΠΌΠΎΠ·Π³Π° Π΄ΡΠΎΠ·ΠΎΡΠΈΠ»Ρ Π½Π° HTML5 Canvas.
- ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° ΡΠ΅Π»Π° ΠΌΡΡ
ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ Π²ΠΎΠ·Π±ΡΠΆΠ΄Π΅Π½ΠΈΡ Π»Π΅Π²ΠΎΠ³ΠΎ/ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΠΎΠ² DNa.
---
## π» ΠΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠΈ
> [!NOTE]
> ΠΡΠ΅ Π·Π°ΠΌΠ΅ΡΡ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈΡΡ Π½Π° Π±Π°Π·ΠΎΠ²ΠΎΠΌ **Apple MacBook Air M1**.
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ (MacBook Air M1) |
| :--- | :--- |
| **ΠΡΠ΅ΠΌΡ Ρ
ΠΎΠ»ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΠΌΠ°** | **~11.5 ΡΠ΅ΠΊ** |
| **ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ·Π»ΠΎΠ² (Π½Π΅ΠΉΡΠΎΠ½ΠΎΠ²)** | **138 639** |
| **ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠ½Π°ΠΏΡΠΎΠ² (Π½Π΅Π½ΡΠ»Π΅Π²ΡΡ
CSR)** | **15 091 983** |
| **Π Π°Π·ΠΌΠ΅Ρ CSR-ΠΌΠ°ΡΡΠΈΡΡ Π² RAM** | **~121 ΠΠ** |
| **ΠΠΈΠΊΠΎΠ²ΡΠΉ ΡΠ°ΡΡ
ΠΎΠ΄ ΠΏΠ°ΠΌΡΡΠΈ (RSS ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅)** | **~612 ΠΠ** |
| **ΠΠΈΠΊΠΎΠ²ΡΠΉ ΡΠ°ΡΡ
ΠΎΠ΄ ΠΏΠ°ΠΌΡΡΠΈ (RSS Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΈΠΌΡΠ»ΡΡΠΈΠΈ)** | **~710 ΠΠ** |
| **FPS ΡΡΡΠΈΠΌΠΈΠ½Π³Π° Π² Π±ΡΠ°ΡΠ·Π΅Ρ** | **~60 FPS** (Π΄ΠΎ 250 ΠΊΠ»ΡΡΠ΅Π²ΡΡ
ΡΠΏΠ°ΠΉΠΊΠΎΠ²/ΡΠ°ΠΊΡ) |
Π‘ΠΈΠΌΡΠ»ΡΡΠΈΡ ΠΊΠΎΠΌΡΠΎΡΡΠ½ΠΎ ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ Π΄Π°ΠΆΠ΅ Π² 1 ΠΠ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ Π±Π΅Π· Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΡ.
---
## π οΈ Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π·Π°ΠΏΡΡΠΊ
### 1. ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
```bash
git clone https://github.com/Kidpun/drozophoto.git
cd drozophoto
```
### 2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
### 3. ΠΠ°Π½Π½ΡΠ΅ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΠΌΠ°
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΡΠ΅Π±ΡΡΡΡΡ Π΄Π²Π° ΡΠ°ΠΉΠ»Π° Π΄Π°Π½Π½ΡΡ
ΡΠ΅Π»ΠΈΠ·Π° **FlyWire v783** (ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅ ΠΈΡ
Π² ΠΊΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΠ»ΠΈ ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΏΡΡΠΈ Π² `.env`):
1. **`proofread_connections_783.feather`** (~852 ΠΠ) β Π³ΡΠ°Ρ Π²ΡΠ²Π΅ΡΠ΅Π½Π½ΡΡ
ΡΠΈΠ½Π°ΠΏΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠ²ΡΠ·Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅ΠΉΡΠΎΠ½Π°ΠΌΠΈ (`pre_pt_root_id`, `post_pt_root_id`, `syn_count`).
2. **`annotations.tsv`** (~31 ΠΠ) β Π°Π½Π°ΡΠΎΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΊΠ»Π΅ΡΠΎΠΊ: ΡΠΈΠΏΡ (`cell_class`, `cell_type`), ΠΏΠΎΠ»ΡΡΠ°ΡΠΈΡ (`side`), Π½Π΅ΠΉΡΠΎΡΡΠ°Π½ΡΠΌΠΈΡΡΠ΅ΡΡ (`top_nt`) ΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ (`soma_x, soma_y` / `pos_x, pos_y`).
#### π₯ ΠΡΠΊΡΠ΄Π° ΡΠΊΠ°ΡΠ°ΡΡ:
- **ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ°Π» Codex (FlyWire / Princeton)**: [codex.flywire.ai/api/download](https://codex.flywire.ai/)
- Π Π΅Π»ΠΈΠ· ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΠΌΠ°: **Public Release v783** (ΡΠ°Π·Π΄Π΅Π» *Synapse table / Proofread connections* ΠΈ *Cell annotations table*).
- Π’Π°ΠΊΠΆΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² Π°ΡΡ
ΠΈΠ²Π°Ρ
ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΉ FlyWire ΠΊΠΎΠ½ΡΠΎΡΡΠΈΡΠΌΠ° Π½Π° [Zenodo](https://zenodo.org/) (ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΡ `FlyWire whole-brain connectome v783`).
> [!TIP]
> ΠΠ·-Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ GitHub Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ² (>100 ΠΠ) ΡΡΠΈ Π΄Π°ΡΠ°ΡΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π² `.gitignore` ΠΈ Π½Π΅ Ρ
ΡΠ°Π½ΡΡΡΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ. ΠΠΎΡΠ»Π΅ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎ ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΠΈΡ
Π² ΠΏΠ°ΠΏΠΊΡ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ.
### 4. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° `.env`
Π‘ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³Π°:
```bash
cp .env.example .env
```
ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ `.env`:
```ini
# Π’ΠΎΠΊΠ΅Π½ Π²Π°ΡΠ΅Π³ΠΎ Π±ΠΎΡΠ° ΠΎΡ @BotFather
TELEGRAM_BOT_TOKEN=123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ
# ΠΡΡΠΈ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΠΌΠ°
CONNECTOME_PATH=proofread_connections_783.feather
ANNOTATIONS_PATH=annotations.tsv
# Π§ΠΈΡΠ»ΠΎ ΡΠ°ΠΊΡΠΎΠ² ΡΠΈΠΌΡΠ»ΡΡΠΈΠΈ Π½Π° ΠΊΠ°Π΄Ρ (25-30)
SIM_STEPS=30
# Π‘Π΅ΡΠ²Π΅Ρ Π΄Π°ΡΠ±ΠΎΡΠ΄Π°
HOST=127.0.0.1
PORT=8000
LOG_LEVEL=INFO
```
### 5. ΠΠ°ΠΏΡΡΠΊ
```bash
python3 parse_brain.py
```
1. ΠΡΠΊΡΠΎΠΉΡΠ΅ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ Π΄Π°ΡΠ±ΠΎΡΠ΄: **http://127.0.0.1:8000**
2. ΠΡΠΏΡΠ°Π²ΡΡΠ΅ Π»ΡΠ±ΠΎΠ΅ ΡΠΎΡΠΎ ΠΈΠ»ΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Π²Π°ΡΠ΅ΠΌΡ Telegram-Π±ΠΎΡΡ.
3. ΠΠ°Π±Π»ΡΠ΄Π°ΠΉΡΠ΅ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΊΠ°ΠΊ ΡΠΏΠ°ΠΉΠΊΠΎΠ²Π°Ρ Π²ΠΎΠ»Π½Π° ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· Π·ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄ΠΎΠ»ΠΈ ΠΈ ΡΠΈΠ½Π°ΠΏΡΡ, ΠΈ ΡΠΈΡΠ°ΠΉΡΠ΅ Π²Π΅ΡΠ΄ΠΈΠΊΡ ΠΌΡΡ
ΠΈ!
---
## π Π‘ΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°
```text
βββ parse_brain.py # ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: SNN-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½, FastAPI, WebSockets, Telegram-Π±ΠΎΡ ΠΈ UI
βββ connectome_core.py # ΠΠΎΠ΄ΡΠ»ΡΠ½ΡΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π³ΡΠ°ΡΠ°, RetinaEncoder ΠΈ ΡΠΈΠΌΡΠ»ΡΡΠΎΡΠ°
βββ streaming.py # ΠΠΈΠ·ΠΊΠΎΠ·Π°ΡΡΠ°ΡΠ½ΡΠΉ WebSocket-ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΏΠ°ΠΉΠΊΠΎΠ²
βββ requirements.txt # ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° (numpy, scipy, polars, pyarrow, aiogram, etc.)
βββ .env.example # Π¨Π°Π±Π»ΠΎΠ½ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
βββ .gitignore # ΠΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΠ΅ΡΠΎΠ², ΡΡΠΆΠ΅Π»ΡΡ
feather/tsv ΠΈ ΠΊΠ΅ΡΠ΅ΠΉ
βββ docs/
βββ media/ # ΠΠΈΡΠΊΠΈ ΠΈ ΠΌΠ΅Π΄ΠΈΠ° Π΄Π»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ Π² README
```
---
## π ΠΠΈΡΠ΅Π½Π·ΠΈΡ
Π Π°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ MIT. ΠΠ°Π½Π½ΡΠ΅ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΠΌΠ° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΠΊΠΎΠ½ΡΠΎΡΡΠΈΡΠΌΡ FlyWire / Princeton University.