Skip to main content

Roboflex Visualization/GUI Library using IMGUI/IMPLOT

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

roboflex_imgui-0.1.17.tar.gz (110.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

roboflex_imgui-0.1.17-cp311-cp311-macosx_15_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

File details

Details for the file roboflex_imgui-0.1.17.tar.gz.

File metadata

  • Download URL: roboflex_imgui-0.1.17.tar.gz
  • Upload date:
  • Size: 110.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.5

File hashes

Hashes for roboflex_imgui-0.1.17.tar.gz
Algorithm Hash digest
SHA256 a384999af35378c7a1dba103be22c4a0da1f253b45f5e9b364bd4b6478d87aff
MD5 2b1d0ea468cd353c3f43212165849d1a
BLAKE2b-256 e9f4420ef9f4ad2485ceabc6b0a75de67b327829b82cddc87d8a2040712d693c

See more details on using hashes here.

File details

Details for the file roboflex_imgui-0.1.17-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for roboflex_imgui-0.1.17-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 15e98f0f4af4271a92f447329f9a419d467e6fd34c2606ace2fd7793b0b0175b
MD5 0af8b1054a3d9ea1b842da102007c00e
BLAKE2b-256 2ecd2adb872fb7a4e0d10f203721b5f49284369c383c1b5355baffcdf763198e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page