-
Notifications
You must be signed in to change notification settings - Fork 6
Home
IC stands for Invisible Cities (yes, Calvino's immortal work). The goal of IC is to perform a python-based deep neural network (DNN) reconstruction and analysis of the NEXT data.
The building blocks of IC are the standard libraries of the so-called scientific python ecosystem, including NUMPY, MATPLOTLIB and SCIPY. The DNN tools used are Tensor-Flow, Theano and the Keras interface. Persistency is handled through the hdf5 library, via PYTABLES. PANDAS is also used for high-level objects. In addition, JUPYTER notebooks are used as development platform.
IC is not a conventional "framework" in the sense usually adopted by particle physics. It does not provide a monolithic environment usually built around the concept of a loop. In fact, in IC the NEXT raw data is expressed in hdf5 as 3d extensible vectors (number_of_events, sensor_id, waveform_length). Access to the vector pointer allows the user to examine the data with total freedom. Per event, per event chunk or running a loop. Therefore the "loop" paradigm is used when needed but not central to the data analysis in IC.
The organisation of the code in IC revolves around the concept of data. Any piece of code that consumes some relevant data object (e.g, a raw waveform) to produce another object that needs to be persistent (e.g, a corrected waveform) is a "city" and received a name from the pool of invisible cities in IC's book. As an example, DIOMIRA is a city that consumes Monte Carlo Raw Data (MCRD) and produces (Monte Carlo) Raw Waveforms (RWF). ISIDORA is a city that consumes RWF and produces Corrected Waveforms (CWF). DOROTEA is a city that consumes CWF and produces Peak Maps (PMAP). Each city is roughly equivalent to an "algorithm" as used in conventional particle physics frameworks such as GAUDI or ART, but manages its own input-oputut using directly PYTABLES as an interface to HDF5 (rather than writing to some data manager as in conventional frameworks, CF).
Code that does not produce persistent data (usually associated to analysis code in CF) is called a Marco Polo (MP) script (the general idea is that Marco Polo travels between cities, "analysing" their wonders, to report later to Kublai Khan).
We wish you safe and wonderful travel!