Skip to content

Logging functions

rerun

def log(entity_path, entity, *extra, timeless=False, recording=None, strict=None)

Log data to Rerun.

This is the main entry point for logging data to rerun. It can be used to log anything that implements the rerun.AsComponents interface, or a collection of ComponentBatchLike objects.

The most common way to log is with one of the rerun archetypes, all of which implement the AsComponents interface.

For example, to log a 3D point:

rr.log("my/point", rr.Points3D(position=[1.0, 2.0, 3.0]))

The log function can flexibly accept an arbitrary number of additional objects which will be merged into the first entity so long as they don't expose conflicting components, for instance:

# Log three points with arrows sticking out of them,
# and a custom "confidence" component.
rr.log(
    "my/points",
    rr.Points2D([[0.2, 0.5], [0.9, 1.2], [1.0, 4.2]], radii=[0.1, 0.2, 0.3]),
    rr.Arrows3D(vectors=[[0.3, 2.1], [0.2, -1.1], [-0.4, 0.1]]),
    rr.AnyValues(confidence=[0.3, 0.4, 0.9]),
)

PARAMETER DESCRIPTION
entity_path

Path to the entity in the space hierarchy.

TYPE: str

entity

Anything that implements the rerun.AsComponents interface, usually an archetype.

TYPE: AsComponents | Iterable[ComponentBatchLike]

*extra

An arbitrary number of additional component bundles implementing the rerun.AsComponents interface, that are logged to the same entity path.

TYPE: AsComponents | Iterable[ComponentBatchLike] DEFAULT: ()

timeless

If true, the entity will be timeless.

Otherwise, the data will be timestamped automatically with log_time and log_tick. Additional timelines set by rerun.set_time_sequence, rerun.set_time_seconds or rerun.set_time_nanos will also be included.

TYPE: bool DEFAULT: False

recording

Specifies the rerun.RecordingStream to use. If left unspecified, defaults to the current active data recording, if there is one. See also: rerun.init, rerun.set_global_data_recording.

TYPE: RecordingStream | None DEFAULT: None

strict

If True, raise exceptions on non-loggable data. If False, warn on non-loggable data. if None, use the global default from rerun.strict_mode()

TYPE: bool | None DEFAULT: None

See also: rerun.log_components.

def set_time_sequence(timeline, sequence, recording=None)

Set the current time for this thread as an integer sequence.

Used for all subsequent logging on the same thread, until the next call to set_time_sequence.

For example: set_time_sequence("frame_nr", frame_nr).

You can remove a timeline again using set_time_sequence("frame_nr", None).

There is no requirement of monotonicity. You can move the time backwards if you like.

PARAMETER DESCRIPTION
timeline

The name of the timeline to set the time for.

TYPE: str

sequence

The current time on the timeline in integer units.

TYPE: int

recording

Specifies the rerun.RecordingStream to use. If left unspecified, defaults to the current active data recording, if there is one. See also: rerun.init, rerun.set_global_data_recording.

TYPE: RecordingStream | None DEFAULT: None

def set_time_seconds(timeline, seconds, recording=None)

Set the current time for this thread in seconds.

Used for all subsequent logging on the same thread, until the next call to rerun.set_time_seconds or rerun.set_time_nanos.

For example: set_time_seconds("capture_time", seconds_since_unix_epoch).

You can remove a timeline again using set_time_seconds("capture_time", None).

Very large values will automatically be interpreted as seconds since unix epoch (1970-01-01). Small values (less than a few years) will be interpreted as relative some unknown point in time, and will be shown as e.g. +3.132s.

The bindings has a built-in time which is log_time, and is logged as seconds since unix epoch.

There is no requirement of monotonicity. You can move the time backwards if you like.

PARAMETER DESCRIPTION
timeline

The name of the timeline to set the time for.

TYPE: str

seconds

The current time on the timeline in seconds.

TYPE: float

recording

Specifies the rerun.RecordingStream to use. If left unspecified, defaults to the current active data recording, if there is one. See also: rerun.init, rerun.set_global_data_recording.

TYPE: RecordingStream | None DEFAULT: None

def set_time_nanos(timeline, nanos, recording=None)

Set the current time for this thread.

Used for all subsequent logging on the same thread, until the next call to rerun.set_time_nanos or rerun.set_time_seconds.

For example: set_time_nanos("capture_time", nanos_since_unix_epoch).

You can remove a timeline again using set_time_nanos("capture_time", None).

Very large values will automatically be interpreted as nanoseconds since unix epoch (1970-01-01). Small values (less than a few years) will be interpreted as relative some unknown point in time, and will be shown as e.g. +3.132s.

The bindings has a built-in time which is log_time, and is logged as nanos since unix epoch.

There is no requirement of monotonicity. You can move the time backwards if you like.

PARAMETER DESCRIPTION
timeline

The name of the timeline to set the time for.

TYPE: str

nanos

The current time on the timeline in nanoseconds.

TYPE: int

recording

Specifies the rerun.RecordingStream to use. If left unspecified, defaults to the current active data recording, if there is one. See also: rerun.init, rerun.set_global_data_recording.

TYPE: RecordingStream | None DEFAULT: None