func-adl is an implementation of a functional analysis description language that is declarative. The project is exploring several different aspects of this:
- The separation between a query language and a complete analysis
- Can a query be reduced to a single abstract syntax tree or DAG computational graph
- Can multiple user-interface languages use the same backend?
- Given that physics is usually to be evaluated in a per event basis, can the user analysis be written in such a way that the user thinks only about single event quantities even though the manipulation is done in a columnar way?
- Can a common query language be used to run on different data formats (binary experimental format, flat ROOT TTree’s, and awkward array columnar analysis)
This project is currently in production for ServiceX. It works with the
uproot back ends.
Repositories connected with this work:
- func_adl - The base package for the
func_adlSQL-like data query language.
- func_adl_xAOD - Backend that works with ATLAS xAOD files to extract columnar data.
- func_adl_uproot - Backend that works with
TFile’s that contain
- qastle - Interchange language that converts
func_adlto a text language suitable for transmission over the web. While list-like and plain-text, it is meant as an interchange format, not an end-user language.
This work is based on the original work done with LINQ in the C# programming language (prior to the start or IRIS-HEP):
- Developing a Declarative Analysis Language: LINQToROOT - Given CHEP 2018
- Experiments Toward a Modern Analysis Environment: Using TMVA and other tools in a functional world with continuous integration for analysis - Given CHEP 2017
- Gordon Watts
- etorro (left the project)
- Mason Proffitt
- FuncADL: Functional Analysis Description Language, M. Proffitt and G. Watts, arXiv 2103.02432 (02 Mar 2021).