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

[0pt] intermediate step: make graph-prototype pre OP-usable for FAIR/OpenDigitizer-UI #46

Closed
18 of 22 tasks
Tracked by #42
RalphSteinhagen opened this issue Feb 2, 2023 · 2 comments · Fixed by fair-acc/gnuradio4#60 or fair-acc/gnuradio4#61

Comments

@RalphSteinhagen
Copy link
Member

RalphSteinhagen commented Feb 2, 2023

This issue is to track intermediate issues once the following is completed:

goal: make graph-prototype usable from an OpenDigitizer-UI perspective

This all in the spirit of 'eating-our-own-dog-food' with the focus that the graph-prototype can be used in the UI. This should also help to identify usability and API issues early on. N.B. the service would -- for the time being -- stick with the default GR 4.0 until the graph-prototype has been merged with GR 4.0.

Steps afterward (EPIC: #42)

  • adding pybind11-based Python bindings -> needs feedback/proposal/help from the GR architecture team (@mormj et al.)
  • define preferred Python work(...) API -> needs feedback/proposal/help from the GR architecture team (@mormj et al.)
@RalphSteinhagen RalphSteinhagen changed the title intermediate step: make graph-prototype pre OP-usable for FAIR/OpenDigitizer-UI [0pt] intermediate step: make graph-prototype pre OP-usable for FAIR/OpenDigitizer-UI Feb 2, 2023
@RalphSteinhagen
Copy link
Member Author

The DataSet concept was presented at the last GNU Radio architecture meeting on 2023-03-24.
See slides for details (pdf with animations, pdf, odp):

It was identified that there is no 'one-size-fits-all' solution and that we shall establish a complementary composite type concept of Packet<T>->Tensor<T>->DataSet<T>, that covers ~80% of the use cases, and overlap and extend each other (via C++ concepts):
image

For example, if one needs a:

  • vector + meta information (previously 'PDUs') -> Packet<T> or std::vector<T> + tag_t,
  • tensor (e.g. matrix, volumetric, n-dim data, etc.) + meta information -> Tensor<T> (i.e. equivalent to Packet<T> and including rank+layout info), or
  • numeric or measurement data (time series, images, etc) + meta information and series of tag_t -> DataSet<T> (i.e. Tensor<T> + signal names, units, timing info, (non-equidistant) axis info, ...)

The meta-information would be stored using std::map<std::string, pmt::pmtv>s. The rationale is to be both efficient and to target an 80/20 solution that is type-safe and intuitively to be used by both new users and novice developers. N.B. The implementation for the three types can be easily handled within the same block::work() function using constexpr-if (i.e. a block handling Packet<T> equally applies to Tensor<T> and DataSet<T>, a block handling Tensor<T> applies equally to any DataSet<T>).

More details including some practical data layout examples can be found in the slides attached above.

@RalphSteinhagen
Copy link
Member Author

Largely finished, the remainder (notably only: 'handling of cyclic graphs') have be moved to:
fair-acc/gnuradio4#148

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: QA-Accepted/Merged (∞)
1 participant