Purpose of Module

PANNA-Charges module demonstrates how to train a neural network to predict local atomic charges. This network can later be used to calculate the electrostatic energy density of a crystal. See Reference [2] for the theoretical model behind this approach.

PANNA-Charges, following other modules within the PANNA project [1], uses TensorFlow framework.


PANNA-Charge supports periodic and aperiodic structures, multiple species, and a different all-to-all connected network architecture for each species. It further supports controlling the training dynamics: eg. freeze/unfreeze layers, weight transfer, decaying learning rates etc.

Building and Testing

A stable version of the module can will be released in the near future, and will be available for download using the download button on this page

As a python module PANNA-Charges does not require installation but it relies on numpy library version >= 1.15.0, tensorflow version >= 1.13.0, and tensorboard version >= 1.13.0. Note that with version 2.0.0, tensorflow libraries went under substantial changes in structure, the 1.1X.X family supports the equally valid previous structure and is still being maintained. PANNA-TRAIN requires tensorflow 1.1X.X family of versions.

In order to set up and test the module, run the following:

$ tar -zxvf panna-master.tar.gz
$ cd panna-master
$ python3 ./panna/


PANNA-Charges main script,, requires a configuration file that specifies the parameter of the calculation such as number of layers and nodes of each neural network layer, learning parameter etc. A typical command for using this module is as follows:

$ export PYTHONPATH=/path/to/panna/directory/panna
$ python3 --config charges_train_config.ini

A detailed tutorial about the contents of the configuration file will be released here.

In this comprehensive tutorial, a neural network training scenario for systems with long range interactions will be demonstrated.

Source Code

PANNA-Charges source is not currently public, when it is released it will be hosted on GitLab.

Further Information

The PANNA-Charges module is developed with the contributions of Y. Shaidu, R. Lot, F. Pellegrini, E. Kucukbenli.


PANNA manuscript:

[1]R. Lot, Y. Shaidu, F. Pellegrini, E. Kucukbenli. arxiv:1907.03055. Submitted (2019).


[2]N. Artrith, T. Morawietz, J. Behler. PRB 83, 153101 (2011). High-dimensional neural-network potentials for multicomponent systems: Applications to zinc oxide. Erratum: PRB 86, 079914 (2012).