JSROOT: Some RNTuples are not fully displayed


Hi,

While playing with RDataFrames and RNtuples, I noticed that JSROOT sometimes fails to show the content of RNTuples in the viewer. This is not the case with all RNtuples. I was able to explore and plot the content of a different RNtuple, so the issue seems to be related to RNtuple (or TFile??) content?

In case it’s useful, an example of both cases is available here:

I used the latest ROOT pip wheel for producing the RNuples.
For completeness, the same issue is not present if the same data is saved as TTrees.

Cheers,
Alessandro

ROOT Version: 0.1a9/6.38, JSROOT 7.10
Platform: Linux
Compiler: Not Provided


If I open the files online ( Read a ROOT file ) I don’t seem to see that problem, see below; what is different for you? One thing is that in f_tuple.root the tree called tuple is directly on the first level directory inside the file, and in f_tuple_not_shown.root the (same?) tree has a different name (tpmaker…) and is inside a couple levels (triggerAna/TriggerPrimitives), but I can draw the variables by clicking on them.

Thank you for checking.
I am able to inspect/plot/draw the ntuple file too, using root.cern.ch/js/7.10.1/.

When trying to open the file, I used

  • the CERNBox root file reader: with this, I couldn’t open any of the RNtuples. I think it uses ROOTJS 7.8.2. I guess this is expected since RNtuple support was added to ROOT JS 7.10.0.
    It may be a good time for CERNBox to switch to a newer version…
  • The VSCode ROOT extension (ROOTJS 7.10.0), where I see what is described above.
    I can’t reproduce it using root.cern.ch/js/7.10.0/ so I guess this is probably a question for the extension author.

While we are at it, even using root.cern.ch/js/7.10.1/, JSROOT doesn’t draw uint64 leaves (e.g. the time_start leaf in the trigger primitives rntuple). Is that expected?

Cheers,
Alessandro

Maybe @linev can help.

Hello @thea,

RNTuple support in JSROOT was indeed added recently but it’s still only partial - you can basically only visualize primitive types and strings. That said, uint64 should be supported, so this might be a bug. I would kindly invite you to open an issue so that we can track this problem and hopefully fix it in a timely manner.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.

Hi Alessandro,

I checked both files and found several problems in JSROOT.

  1. uint64_t and int64_t are decoded into BigInt class inside JSROOT. This was not supported in drawing functionality.
  2. Reading of several clusters from RNtuple had a bug in JSROOT - only first cluster was processed.
  3. Also reading of several pages inside the RNtuple cluster was implemented wrongly. So one only saw data from the last page only.

All these problems were fixed in recent JSROOT master and back-ported to 7.10 branch.
Very soon fixes will be published with the next 7.10.2 release of JSROOT.

Regards,
Sergey