Fusion Recurrent Neural Network (FRNN) is a Python package implementing deep learning models for disruption prediction in tokamak fusion plasmas.
It consists of 4 core modules:
models
: Python classes necessary to construct, train and optimize deep RNN models. Including a distributed data-parallel synchronous implementation of mini-batch gradient descent. FRNN makes use of MPI for communication and supports Tensorflow and Theano backends through Keras. FRNN allows running hyperparameter search optimizationspreprocessors
: signal preprocessing and normalization classes, including the methods necessary to prepare physical data for stateful LSTM training.primitives
: contains abstractions specific to the domain, implemented as Python classes. For instance: Shot - a measurement of plasma current as a function of time. The Shot object contains attributes corresponding to unique identifier of a shot, disruption time in milliseconds, time profile of the shot converted to time-to- disruption values, validity of a shot (whether plasma current reaches a certain value during the shot), etc. Other primitives include Machines
and Signals
which carry the relevant information necessary for incorporating physics data into the overall pipeline. Signals know the Machine they live on, their mds+ paths, code for being downloaded, preprocessing approaches, their dimensionality, etc. Machines know which Signals are defined on them, which mds+ server houses the data, etc.utilities
: a set of auxiliary functions for preprocessing, performance evaluation and learning curves analysis.In addition to the utilities
FRNN supports TensorBoard scaler variable summaries, histogramms of layers, activations and gradients and graph visualizations.
This is a pure Python implementation for Python versions 2.7 and 3.6.
For a tutorial, check out: PrincetonUTutorial.md
Princeton Plasma Physics Laboratory
100 Stellarator Road
Princeton, New Jersey 08540