Skip to main content

roboflex_imgui

Roboflex visualizers and guis using IMGUI/IMPLOT

System dependencies

Requires SDL and GLEW to be installed. More than likely, they already are installed in your distro. But if not:

apt-get install libsdl2-dev
apt-get install libglew-dev

# or maybe on mac:

brew install sdl2
brew install glew
brew install glfw

pip install

pip install roboflex.imgui

Import

import roboflex.imgui as rgu

Nodes

There are two so far: OneDTV and MetricsTelevision

OneDTV (One-Dimensional Television)

It expects to receive messages that contain a tensor under the key <data_key>. That tensor needs to be of shape (C, S), where C is number of channels, and S is sequence length. In general, C should be small (< 20), and S large. Think multiple audio channels.

# all parameters optional: below are the defaults
visualizer = rgu.OneDTV(
    data_key = "data",
    sample_size = 4,
    center_zero = True,
    initial_size = (640, 220),
    initial_pos = (-1, -1),
    name = "OneDTV",
    debug = False,
)

# must be started
visualizer.start()

# NOTE!!!
# On some systems, such as mac, it's bad news to
# run a UI on a non-main thread. So instead of 
# calling start(), you can do this, which will 
# run on the main thread. This call will block 
# until the window is closed, in this case.
visualizer.run()

MetricsTelevision

Real-time visualization of metrics data as published by GraphRoot::start(profile=True). I.e., when you instantiate a GraphRoot (from roboflex core), make it the root of your graph, and call myroot.start(profile=True) on it, it will publish metrics messages. This is the node that can visualize those metrcs message.

# all parameters optional: below are the defaults
visualizer = rgu.MetricsTelevision(
    window_title = "MetricsTelevision",
    initial_size = (1580, 720),
    initial_pos = (-1, -1),
    name = "MetricsTelevision",
    debug = False,
)

# must be started
visualizer.start()

# NOTE!!!
# On some systems, such as mac, it's bad news to
# run a UI on a non-main thread. So instead of 
# calling start(), you can do this, which will 
# run on the main thread. This call will block 
# until the window is closed, in this case.
visualizer.run()

Using MQTT in this case

MQTT is an ideal transport for metrics messages - they are small and infrequent. We provide helper functions in metrics_central.py to do so:

# give one of these to a GraphRoot as it's publisher node
pub = rgu.metrics_central.get_metrics_mqtt_publisher(
    broker_address: str,
    broker_port: int = 1883,
    metrics_topic: str = "metrics",
)

# get a subscriber
sub = rgu.get_metrics_mqtt_subscriber(
    broker_address: str,
    broker_port: int = 1883,
    metrics_topic: str = "metrics",
)

# get a visualizer
vis = rgu.get_metrics_visualizer(
    broker_address: str,
    broker_port: int = 1883,
    metrics_topic: str = "metrics",
)

# connect the subscriber to the visualizer
sub > vis

# Here's a program that does it all - launches a MetricsVisualizer
# listening to some mqtt broker:port and topic.
python3 metrics_central.py

Metadata

Release files for roboflex.imgui 0.1.19

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for roboflex.imgui 0.1.19
File Size Uploaded
roboflex_imgui-0.1.19.tar.gz 110.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for roboflex.imgui 0.1.19
File Interpreter ABI Platform
roboflex_imgui-0.1.19-cp311-cp311-macosx_15_0_arm64.whl CPython 3.11 CPython 3.11 macOS 15.0+ ARM64 Details

Total release size: 2.0 MB

Release files / roboflex_imgui-0.1.19.tar.gz

Download URL roboflex_imgui-0.1.19.tar.gz
Size 110.2 kB
Tags Source
SHA-256 checksum
How to use checksums
9146dfef8235da06b3e574eefa7dbc4da36194bfb0d14686ad5aae45c6b902a5
BLAKE2b-256 checksum
How to use checksums
d1f8aba25a60eea4c03b4dd6577b936a01afb412178c31af20ba17bbae0876c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.5

Release files / roboflex_imgui-0.1.19-cp311-cp311-macosx_15_0_arm64.whl

Download URL roboflex_imgui-0.1.19-cp311-cp311-macosx_15_0_arm64.whl
Size 1.9 MB
Tags CPython 3.11 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
9c349c3d7f58d323569277b3b1d0b8806bade14d9a004d0e0b63ac73f12043a6
BLAKE2b-256 checksum
How to use checksums
00ed51943bb966f9bc0c84b2316a05578d6a39c8a9729d69463b16257c4aa891
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.5

Release history Release notifications | RSS feed

This release

0.1.19 This release

2 release files

0.1.18

2 release files

0.1.17

2 release files

0.1.16

1 release file

0.1.14

1 release file

0.1.13

1 release file

0.1.12

1 release file

0.1.11

1 release file

0.1.10

1 release file

0.1.9

1 release file

0.1.8

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page