# aaryanrs/fury architecture

> Architecture diagram of the GitHub repository aaryanrs/fury, 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/aaryanrs/fury
- Repository: https://github.com/aaryanrs/fury

## Overview

FURY is a Python scientific-visualization library: users build visual objects and interfaces, place them in a scene, then render and interact with them; timelines add animation and recording. The graph includes documented network visualization, physics-engine access, shaders, and notebook rendering. It reflects the file tree and README plus sampled excerpts; several capability links use only documented behavior, as their implementation was not sampled.

Main entry points: [`fury/window.py`](https://github.com/aaryanrs/fury/blob/master/fury/window.py) (Window manager), [`fury/ui/elements.py`](https://github.com/aaryanrs/fury/blob/master/fury/ui/elements.py) (UI elements), [`fury/actor/core.py`](https://github.com/aaryanrs/fury/blob/master/fury/actor/core.py) (Visual actors), [`fury/motion/timeline.py`](https://github.com/aaryanrs/fury/blob/master/fury/motion/timeline.py) (Timeline playback)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_scene["Scene construction"]
  node_actors["Visual actors<br/>[core.py]"]
  node_geometry["Geometry primitives<br/>[geometry.py]"]
  node_materials["Materials and color<br/>[material.py]"]
  node_ui["UI elements<br/>[elements.py]"]
  node_containers["UI containers<br/>[containers.py]"]
  node_context["UI context<br/>[context.py]"]
end

subgraph group_interaction["Interaction and animation"]
  node_motion["Animation<br/>[core.py]"]
  node_timeline["Timeline playback<br/>[timeline.py]"]
  node_interpolation["Interpolation<br/>[interpolator.py]"]
end

subgraph group_data["Data and domain"]
  node_network["Network visualization<br/>[core.py]"]
  node_parser["Network parsers<br/>[parser.py]"]
  node_fetch["Sample data fetch<br/>[fetcher.py]"]
end

subgraph group_render["Rendering and shaders"]
  node_window["Window manager<br/>[window.py]"]
  node_backend["Graphics backend<br/>[lib.py]"]
  node_shader["Custom shaders<br/>[shader.py]"]
end

node_user(("Python user"))
node_external["Graphics runtime"]
node_jupyter["Jupyter environment"]
node_physics["Physics engines"]

node_user -->|"creates"| node_actors
node_user -->|"builds interface"| node_ui
node_actors -->|"uses primitives"| node_geometry
node_actors -->|"sets appearance"| node_materials
node_ui -->|"tracks UI state"| node_context
node_containers -->|"organizes elements"| node_ui
node_user -->|"composes UI"| node_containers
node_user -->|"builds network view"| node_network
node_parser -->|"provides parsed data"| node_network
node_user -->|"loads network files"| node_parser
node_user -->|"requests sample data"| node_fetch
node_user -->|"controls playback"| node_timeline
node_timeline -->|"updates animations"| node_motion
node_motion -->|"evaluates keyframes"| node_interpolation
node_user -->|"opens scene"| node_window
node_window -->|"renders scene"| node_backend
node_backend -->|"uses graphics APIs"| node_external
node_window -->|"dispatches events"| node_ui
node_window -->|"starts playback"| node_timeline
node_user -->|"customizes rendering"| node_shader
node_shader -->|"registers shaders"| node_backend
node_window -.->|"supports notebook display"| node_jupyter
node_user -.->|"integrates physics"| node_physics

click node_actors "https://github.com/aaryanrs/fury/blob/master/fury/actor/core.py"
click node_geometry "https://github.com/aaryanrs/fury/blob/master/fury/geometry.py"
click node_materials "https://github.com/aaryanrs/fury/blob/master/fury/material.py"
click node_ui "https://github.com/aaryanrs/fury/blob/master/fury/ui/elements.py"
click node_containers "https://github.com/aaryanrs/fury/blob/master/fury/ui/containers.py"
click node_context "https://github.com/aaryanrs/fury/blob/master/fury/ui/context.py"
click node_window "https://github.com/aaryanrs/fury/blob/master/fury/window.py"
click node_backend "https://github.com/aaryanrs/fury/blob/master/fury/lib.py"
click node_shader "https://github.com/aaryanrs/fury/blob/master/fury/shader.py"
click node_motion "https://github.com/aaryanrs/fury/blob/master/fury/motion/core.py"
click node_timeline "https://github.com/aaryanrs/fury/blob/master/fury/motion/timeline.py"
click node_interpolation "https://github.com/aaryanrs/fury/blob/master/fury/motion/interpolator.py"
click node_network "https://github.com/aaryanrs/fury/blob/master/fury/network/core.py"
click node_parser "https://github.com/aaryanrs/fury/blob/master/fury/network/parser.py"
click node_fetch "https://github.com/aaryanrs/fury/blob/master/fury/data/fetcher.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_actors,node_geometry,node_materials,node_ui,node_containers,node_context,node_user toneBlue
class node_motion,node_timeline,node_interpolation toneAmber
class node_network,node_parser,node_fetch toneMint
class node_window,node_backend,node_shader toneRose
class node_external,node_jupyter,node_physics toneIndigo
```

## Components

### Scene construction

- [Visual actors](https://github.com/aaryanrs/fury/blob/master/fury/actor/core.py): `fury/actor/core.py`
- [Geometry primitives](https://github.com/aaryanrs/fury/blob/master/fury/geometry.py): `fury/geometry.py`
- [Materials and color](https://github.com/aaryanrs/fury/blob/master/fury/material.py): `fury/material.py`
- [UI elements](https://github.com/aaryanrs/fury/blob/master/fury/ui/elements.py): `fury/ui/elements.py`
- [UI containers](https://github.com/aaryanrs/fury/blob/master/fury/ui/containers.py): `fury/ui/containers.py`
- [UI context](https://github.com/aaryanrs/fury/blob/master/fury/ui/context.py): `fury/ui/context.py`

### Interaction and animation

- [Animation](https://github.com/aaryanrs/fury/blob/master/fury/motion/core.py): `fury/motion/core.py`
- [Timeline playback](https://github.com/aaryanrs/fury/blob/master/fury/motion/timeline.py): `fury/motion/timeline.py`
- [Interpolation](https://github.com/aaryanrs/fury/blob/master/fury/motion/interpolator.py): `fury/motion/interpolator.py`

### Data and domain

- [Network visualization](https://github.com/aaryanrs/fury/blob/master/fury/network/core.py): `fury/network/core.py`
- [Network parsers](https://github.com/aaryanrs/fury/blob/master/fury/network/parser.py): `fury/network/parser.py`
- [Sample data fetch](https://github.com/aaryanrs/fury/blob/master/fury/data/fetcher.py): `fury/data/fetcher.py`

### Rendering and shaders

- [Window manager](https://github.com/aaryanrs/fury/blob/master/fury/window.py): `fury/window.py`
- [Graphics backend](https://github.com/aaryanrs/fury/blob/master/fury/lib.py): `fury/lib.py`
- [Custom shaders](https://github.com/aaryanrs/fury/blob/master/fury/shader.py): `fury/shader.py`

### Other components

- **Python user**
- **Graphics runtime**
- **Jupyter environment**
- **Physics engines**

## Connections

- Python user → Visual actors: creates
- Python user → UI elements: builds interface
- Visual actors → Geometry primitives: uses primitives
- Visual actors → Materials and color: sets appearance
- UI elements → UI context: tracks UI state
- UI containers → UI elements: organizes elements
- Python user → UI containers: composes UI
- Python user → Network visualization: builds network view
- Network parsers → Network visualization: provides parsed data
- Python user → Network parsers: loads network files
- Python user → Sample data fetch: requests sample data
- Python user → Timeline playback: controls playback
- Timeline playback → Animation: updates animations
- Animation → Interpolation: evaluates keyframes
- Python user → Window manager: opens scene
- Window manager → Graphics backend: renders scene
- Graphics backend → Graphics runtime: uses graphics APIs
- Window manager → UI elements: dispatches events
- Window manager → Timeline playback: starts playback
- Python user → Custom shaders: customizes rendering
- Custom shaders → Graphics backend: registers shaders
- Window manager → Jupyter environment: supports notebook display
- Python user → Physics engines: integrates physics
