Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions _gsocproposals/2025/proposal_RNTupleJsroot.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
title: RNTuple in JSROOT
layout: gsoc_proposal
project: ROOT
year: 2025
organization: CERN
difficulty: medium
duration: 350
mentor_avail: June-October
---

# Description
RNTuple is the next-generation data format for high-energy physics (HEP) data collected from the LHC.
It is part of ROOT, a cornerstone software package for the storage, visualization and analysis of scientific data, widely used in the scientific community and particularly in HEP.
ROOT is a C++ and Python framework, but it recently became available in the browsers as well through a Javascript implementation of some of its parts: *JSROOT*.
Since RNTuple is still in the experimental phase, it currently lacks a JSROOT interface and its contents cannot be visualized in the browser, a common and desirable property of many ROOT objects.
The goal of this project is filling this gap by making JSROOT able to read and display data stored inside an RNTuple.

## Task ideas
In this project, the student will learn the internals of the RNTuple binary format and use this knowledge to implement a Javascript interface to expose RNTuple to JSROOT.

## Expected results and milestones
* Familiarize with the JSROOT framework, understanding how to integrate new components into it;
* read and implement (a subset of) the RNTuple [binary format specifications](https://github.com/root-project/root/blob/master/tree/ntuple/v7/doc/BinaryFormatSpecification.md), in Javascript; this will concretely mean implementing the deserialization code from a binary blob to a RNTuple object that may be used by JSROOT;
* enable the visualization of an RNTuple's fields in the browser, leveraging the existing framework in JSROOT.

## Requirements
* Knowledge of Javascript / ES6
* Basic knowledge of "low-level" programming (primitive types binary layouts, bit-level manipulations, reinterpreting bytes as different types, ...)
* Experience with git / github
* (Bonus): familiarity with any binary format

## Mentors
* **[Serguei Linev](mailto:[email protected])**
* [Giacomo Parolini](mailto:[email protected])

## Links
* [ROOT Project homepage](https://root.cern/)
* [ROOT Project repository](https://github.com/root-project/root)
* [JSROOT homepage](https://root.cern/js/)
* [JSROOT repository](https://github.com/root-project/jsroot)
* [Introduction to RNTuple](https://root.cern/blog/rntuple-update/)
* [RNTuple architecture overview](https://github.com/root-project/root/blob/master/tree/ntuple/v7/doc/Architecture.md)
* [RNTuple Binary Specification](https://github.com/root-project/root/blob/master/tree/ntuple/v7/doc/BinaryFormatSpecification.md)
2 changes: 2 additions & 0 deletions gsoc/2025/mentors.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,6 @@ layout: plain
## Full Mentor List (Name, Email, Org)
* Andy Buckley [[email protected]](mailto:[email protected]) UofGlasgow
* Chris Gutschow [[email protected]](mailto:[email protected]) UCLondon
* Serguei Linev [[email protected]](mailto:[email protected]) GSI
* Giacomo Parolini [[email protected]](mailto:[email protected]) CERN)
* Valentin Volkl [[email protected]](mailto:[email protected]) CERN