Speaker
Description
The Generalized Nuclear Data Structure (GNDS) is the new international standard for the dissemination of nuclear reaction data. The GNDS structure is defined in a set of JSON files which allow for its implementation as follows:
- a written report (illustrated in Figure 1) which supplements the GNDS description with examples; and
- post-processing of the JSON files to alternate formats, e.g.
o to XSD to validate the GNDS output generated with the FUDGE processing code;
o mapping to object-oriented programming language data types to streamline the implementation of GNDS in processing codes or APIs that provide the interface to nuclear reaction data in GNDS format.
Figure 1: GNDS Build System
This talk focusses on the modernization of the current GNDS build system (see Figure 1) that consists of an infrastructure that converts the JSON files to latex files which are combined with static latex input for the report wording and GNDS examples, to generate the GNDS Specification report in PDF format.
The existing GNDS build system uses Python scripts to populate a custom-made object-oriented computational model of the GNDS specification. This model is both flexible (since its hierarchical structure is defined by the JSON input) and rigid (since it is hard coded to JSON input that adhere to a specific convention and its output is restricted to the GNDS Specification Report in PDF format). The JSON user community is however converging on a JSON specification that does not necessarily conform to the convention expected in the GNDS build system and there is an increasing need to expand the build-system output beyond the PDF format.
A graph theory based directed acyclic graph (DAG) approach to the GNDS schema definition is consequently being evaluated. The hierarchical nature of the GNDS schema makes this representation a natural choice with a one-to-one mapping between the GNDS and DAG nodes. This approach is independent to the file format used for the GNDS schema definition and provides a standardized internal computational representation that can easily be converted to an output format for use in downstream applications.
The DAG implementation in the NetworkX Python Package is used in this evaluation with the individual namespaces in the GNDS schema modeled as separate DAGs. Methods are being developed to
- read the current JSON implementation of the GNDS schema definition;
- convert the individual GNDS namespaces to separate DAGs; and
- generate XSD output for validating the GNDS 2.0 implementation in the FUDGE processing code.
This approach will replace the current GNDS schema definition processing (not the JSON input) and opens new opportunities such as the automatic validation of new GNDS schema proposals, and the generation of interactive visual representation of the GNDS schema definition. Examples in this approach that leans itself to automatic validation of the GNDS schema definition include NetworkX methods to find cycles in the tree representation, identifying isolated nodes (i.e., nodes with degree 0), inconsistent naming of the same node (e.g., due to typographical errors), multiple definition of nodes, etc.
The initial implementation showed promising results for the documentation namespace and the planned future work include:
- expanding the graph theory representation to the remaining GNDS namespaces;
- a collapsible tree representation in HTML;
- generating a GNDS specification report in both PDF and HTML; and
- generating a description of the GNDS schema in a JSON format that conforms to the new JSON schema.
It is further anticipated that it will be easier to map object-oriented programming datatypes to the graph theory model of the GNDS schema than mapping to JSON files.
This work was performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344.
LLNL-ABS-827367