PANNA is a package for training and validating neural networks to
represent atomic potentials. It implements configurable all-to-all connected
deep neural network architectures which allow for the exploration of training
dynamics. Currently it includes tools to enable original[1] and modified[2]
Behler-Parrinello input feature vectors, both for molecules and crystals, but
the network can also be used in an input-agnostic fashion to enable further
experimentation. PANNA is written in Python and relies on TensorFlow as
underlying engine.

A common way to use PANNA in its current implementation is to train a
neural network in order to estimate the total energy of a molecule or crystal,
as a sum of atomic contributions, by learning from the data of reference total
energy calculations for similar structures (usually ab-initio calculations).

The neural network models in literature often start from a description
of the system of interest in terms of local feature vectors for each atom in
the configuration. PANNA provides tools to calculate two versions of the
Behler-Parrinello local descriptors but it allows the use of any
species-resolved, fixed-size array that describes the input data.

PANNA allows the construction of neural network architectures with
different sizes for each of the atomic species in the training set. Currently the
allowed architecture is a deep neural network of fully connected layers,
starting from the input feature vector and going through one or more hidden
layers. The user can determine to train or freeze any layer, s/he can also
transfer network parameters between species upon restart.

In summary, PANNA is an easy-to-use interface for obtaining neural network models for atomistic potentials, leveraging the highly optimized TensorFlow infrastructure to provide an efficient and parallelized, GPU-accelerated training.

It provides:

- an input creation
tool (atomistic calculation result -> G-vector )
- an input packaging
tool for quick processing of TensorFlow ( G-vector -> TFData bundle)
- a network training
tool
- a network
validation tool
- a LAMMPS plugin
- a bundle of sample
data for testing[3]

See the full documentation of PANNA at https://gitlab.com/PANNAdevs/panna/blob/master/doc/PANNA_documentation.md

GitLab repository for PANNA: https://gitlab.com/PANNAdevs/panna

See manuscript at https://arxiv.org/abs/1907.03055

#### References

[1] J. Behler and M. Parrinello, “Generalized Neural-Network Representation
of High-Dimensional Potential-Energy Surfaces”,
Phys. Rev. Lett. 98, 146401 (2007)

[2] Justin S. Smith, Olexandr Isayev, Adrian E. Roitberg, “ANI-1: An
extensible neural network potential with DFT accuracy at force field
computational cost», Chemical Science,(2017), DOI: 10.1039/C6SC05720A

[3] Justin S. Smith, Olexandr Isayev, Adrian E. Roitberg, “ANI-1, A data set of 20 million calculated off-equilibrium conformations for organic molecules; Scientific Data, 4 (2017), Article number: 170193, DOI: 10.1038/sdata.2017.193