Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blueprintify Space View properties #6083

Open
6 of 12 tasks
Wumpf opened this issue Apr 23, 2024 · 0 comments
Open
6 of 12 tasks

Blueprintify Space View properties #6083

Wumpf opened this issue Apr 23, 2024 · 0 comments
Assignees
Labels
🟦 blueprint The data that defines our UI 🐍 Python API Python logging API 📺 re_viewer affects re_viewer itself 🎄 tracking issue issue that tracks a bunch of subissues

Comments

@Wumpf
Copy link
Member

Wumpf commented Apr 23, 2024

Formalizing the data structure of various space view blueprints and make them accessible from ui and code

List almost certainly incomplete!

@Wumpf Wumpf added 🎄 tracking issue issue that tracks a bunch of subissues 🟦 blueprint The data that defines our UI 🐍 Python API Python logging API 📺 re_viewer affects re_viewer itself labels Apr 23, 2024
@Wumpf Wumpf self-assigned this Apr 25, 2024
Wumpf added a commit that referenced this issue Apr 26, 2024
…esView` blueprint (#6114)

### What

* Part of [#6083](#6083)

Usage example:
```py
# ...
            # Plot with custom Y range that is locked into place during zoom and legend at the bottom left.
            rrb.TimeSeriesView(
                origin="/plot",
                axis_y=rrb.ScalarAxis(range=[0, 1], lock_range_during_zoom=True),
                plot_legend=rrb.Corner2D.LeftBottom,
            ),
            # Hide plot legend
            rrb.TimeSeriesView(
                origin="/plot",
                plot_legend=rrb.PlotLegend(visible=False),
            ),
# ...
```


Changed codegen type definition:
```fbs
/// A time series view.
table TimeSeriesView (
    "attr.rerun.view_identifier": "TimeSeries"
) {
    /// Configures the vertical axis of the plot.
    axis_y: rerun.blueprint.archetypes.ScalarAxis (order: 1000);

    /// Configures the legend of the plot.
    plot_legend: rerun.blueprint.archetypes.PlotLegend (order: 2000);
}
```

Added the necessary serialization code and snippets. More aggressively
using datatypes now to reduce amount of serialization code we need to
write in Python.

### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested the web demo (if applicable):
* Using examples from latest `main` build:
[rerun.io/viewer](https://rerun.io/viewer/pr/6114?manifest_url=https://app.rerun.io/version/main/examples_manifest.json)
* Using full set of examples from `nightly` build:
[rerun.io/viewer](https://rerun.io/viewer/pr/6114?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json)
* [x] The PR title and labels are set such as to maximize their
usefulness for the next release's CHANGELOG
* [x] If applicable, add a new check to the [release
checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)!

- [PR Build Summary](https://build.rerun.io/pr/6114)
- [Recent benchmark results](https://build.rerun.io/graphs/crates.html)
- [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)

To run all checks from `main`, comment on the PR with `@rerun-bot
full-check`.
Wumpf added a commit that referenced this issue Apr 26, 2024
… the same backing data (#6134)

### What

* Part of [#6083](#6083)

Necessary step on the way towards a `VisibleTimeRange` view property
archetype.

### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested the web demo (if applicable):
* Using examples from latest `main` build:
[rerun.io/viewer](https://rerun.io/viewer/pr/6134?manifest_url=https://app.rerun.io/version/main/examples_manifest.json)
* Using full set of examples from `nightly` build:
[rerun.io/viewer](https://rerun.io/viewer/pr/6134?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json)
* [x] The PR title and labels are set such as to maximize their
usefulness for the next release's CHANGELOG
* [x] If applicable, add a new check to the [release
checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)!

- [PR Build Summary](https://build.rerun.io/pr/6134)
- [Recent benchmark results](https://build.rerun.io/graphs/crates.html)
- [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)

To run all checks from `main`, comment on the PR with `@rerun-bot
full-check`.
Wumpf added a commit that referenced this issue Apr 30, 2024
…python code (#6164)

### What

* Part of [#6083](#6083)


And _some_ related refactors that I got engulfed with on this quest:
* document fate of remaining `EntityProperties`
* simplify `DataResult` formation by dropping overrides from the
`OverrideContext`
* took the opportunity to call out `EntityProperties` as
`legacy_properties` in a lot of places which makes it easier to read
these changes
* make it explicit when we want to use latest-at query by introducing
`QueryRange` type

Python API not great yet, will improve and provide examples in an
upcoming iteration.


Planned direct follow-ups to this PR:
* finally remove old History types that we still convert to
* should fix the rest of #6135
if it isn't already by this PR
* make python interface actually nice 
* add examples & more docs

### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested the web demo (if applicable):
* Using examples from latest `main` build:
[rerun.io/viewer](https://rerun.io/viewer/pr/6164?manifest_url=https://app.rerun.io/version/main/examples_manifest.json)
* Using full set of examples from `nightly` build:
[rerun.io/viewer](https://rerun.io/viewer/pr/6164?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json)
* [x] The PR title and labels are set such as to maximize their
usefulness for the next release's CHANGELOG
* [x] If applicable, add a new check to the [release
checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)!

- [PR Build Summary](https://build.rerun.io/pr/6164)
- [Recent benchmark results](https://build.rerun.io/graphs/crates.html)
- [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)

To run all checks from `main`, comment on the PR with `@rerun-bot
full-check`.
@Wumpf Wumpf removed their assignment May 27, 2024
@Wumpf Wumpf self-assigned this Jun 4, 2024
Wumpf added a commit that referenced this issue Jun 17, 2024
### What

Example:
```python
blueprint = rrb.Blueprint(
    rrb.TensorView(
        origin="tensor",
        name="Tensor",
        # Set a scalar mapping with a custom colormap, gamma and magnification filter.
        scalar_mapping=rrb.TensorScalarMapping(colormap="turbo", gamma=1.5, mag_filter="linear"),
        # Change sizing mode to keep aspect ratio.
        view_fit="FillKeepAspectRatio",
    ),
    collapse_panels=True,
)
```

As always with these ports, this comes with the usual ui refresh:

![image](https://github.com/rerun-io/rerun/assets/1220815/f4f1c79a-c4cb-4373-a7db-ad5a7576dcff)


* Part of #6083
* Replaces / joins
     * #6577
     * #6583

### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested the web demo (if applicable):
* Using examples from latest `main` build:
[rerun.io/viewer](https://rerun.io/viewer/pr/6585?manifest_url=https://app.rerun.io/version/main/examples_manifest.json)
* Using full set of examples from `nightly` build:
[rerun.io/viewer](https://rerun.io/viewer/pr/6585?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json)
* [x] The PR title and labels are set such as to maximize their
usefulness for the next release's CHANGELOG
* [x] If applicable, add a new check to the [release
checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)!

- [PR Build Summary](https://build.rerun.io/pr/6585)
- [Recent benchmark results](https://build.rerun.io/graphs/crates.html)
- [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)

To run all checks from `main`, comment on the PR with `@rerun-bot
full-check`.
Wumpf added a commit that referenced this issue Jun 19, 2024
### What

Example:
```python
blueprint = rrb.Blueprint(
    rrb.TensorView(
        origin="tensor",
        name="Tensor",
        # Set a scalar mapping with a custom colormap, gamma and magnification filter.
        scalar_mapping=rrb.TensorScalarMapping(colormap="turbo", gamma=1.5, mag_filter="linear"),
        # Change sizing mode to keep aspect ratio.
        view_fit="FillKeepAspectRatio",
    ),
    collapse_panels=True,
)
```

As always with these ports, this comes with the usual ui refresh:

![image](https://github.com/rerun-io/rerun/assets/1220815/f4f1c79a-c4cb-4373-a7db-ad5a7576dcff)

* Part of #6083
* Replaces / joins
     * #6577
     * #6583

### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested the web demo (if applicable):
* Using examples from latest `main` build:
[rerun.io/viewer](https://rerun.io/viewer/pr/6585?manifest_url=https://app.rerun.io/version/main/examples_manifest.json)
* Using full set of examples from `nightly` build:
[rerun.io/viewer](https://rerun.io/viewer/pr/6585?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json)
* [x] The PR title and labels are set such as to maximize their
usefulness for the next release's CHANGELOG
* [x] If applicable, add a new check to the [release
checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)!

- [PR Build Summary](https://build.rerun.io/pr/6585)
- [Recent benchmark results](https://build.rerun.io/graphs/crates.html)
- [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)

To run all checks from `main`, comment on the PR with `@rerun-bot
full-check`.
@jleibs jleibs modified the milestone: 0.17 Jun 19, 2024
Wumpf added a commit that referenced this issue Jun 24, 2024
### What

Updated python example:
```python
blueprint = rrb.Blueprint(
    rrb.TensorView(
        origin="tensor",
        name="Tensor",
        # Explicitly pick which dimensions to show.
        slice_selection=rrb.TensorSliceSelection(
            # Use the first dimension as width.
            width=0,
            # Use the second dimension as height and invert it.
            height=rr.TensorDimensionSelection(dimension=1, invert=True),
            # Set which indices to show for the other dimensions.
            indices=[
                rr.TensorDimensionIndexSelection(dimension=2, index=4),
                rr.TensorDimensionIndexSelection(dimension=3, index=5),
            ],
            # Show a slider for dimension 2 only. If not specified, all dimensions in `indices` will have sliders.
            slider=[2],
        ),
        # Set a scalar mapping with a custom colormap, gamma and magnification filter.
        scalar_mapping=rrb.TensorScalarMapping(colormap="turbo", gamma=1.5, mag_filter="linear"),
        # Change sizing mode to keep aspect ratio.
        view_fit="fill",
    ),
    collapse_panels=True,
)
```

![image](https://github.com/rerun-io/rerun/assets/1220815/ccb154de-4fef-4dae-9cf1-17ea36c7da18)



Models out the tensor slice selection in store compatible data
structures

Refrained from polishing up the ui all that much, it's pretty much the
same but uses the new datastructure under the hood.
Minor differences:
* No longer show both arrows for 1D tensor slices.
* allow reset to default and reset to default blueprint
* change default for fill to keep aspect ratio

Had to do add a bit of codegen for python struct serialization, but
ended up doing most of the new datatypes by hand after all because of
hard to generalize conversions.

Tested manually against 1D tensors.

* Part of #6083

### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested the web demo (if applicable):
* Using examples from latest `main` build:
[rerun.io/viewer](https://rerun.io/viewer/pr/6590?manifest_url=https://app.rerun.io/version/main/examples_manifest.json)
* Using full set of examples from `nightly` build:
[rerun.io/viewer](https://rerun.io/viewer/pr/6590?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json)
* [x] The PR title and labels are set such as to maximize their
usefulness for the next release's CHANGELOG
* [x] If applicable, add a new check to the [release
checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)!

- [PR Build Summary](https://build.rerun.io/pr/6590)
- [Recent benchmark results](https://build.rerun.io/graphs/crates.html)
- [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)

To run all checks from `main`, comment on the PR with `@rerun-bot
full-check`.
@Wumpf Wumpf assigned Wumpf and unassigned Wumpf Jun 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🟦 blueprint The data that defines our UI 🐍 Python API Python logging API 📺 re_viewer affects re_viewer itself 🎄 tracking issue issue that tracks a bunch of subissues
Projects
None yet
Development

No branches or pull requests

2 participants