  Atomic neural networks (ANNs) constitute a class of machine learning methods
for predicting potential energy surfaces and physico-chemical properties of
molecules and materials. Despite many successes, developing interpretable ANN
architectures and implementing existing ones efficiently are still challenging.
This calls for reliable, general-purpose and open-source codes. Here, we
present a python library named PiNN as a solution toward this goal. In PiNN, we
designed a new interpretable and high-performing graph convolutional neural
network variant, PiNet, as well as implemented the established
Behler-Parrinello high-dimensional neural network. These implementations were
tested using datasets of isolated small molecules, crystalline materials,
liquid water and an aqueous alkaline electrolyte. PiNN comes with a visualizer
called PiNNBoard to extract chemical insight "learned" by ANNs, provides
analytical stress tensor calculations and interfaces to both the Atomic
Simulation Environment and a development version of the Amsterdam Modeling
Suite. Moreover, PiNN is highly modularized which makes it useful not only as a
standalone package but also as a chain of tools to develop and to implement
novel ANNs. The code is distributed under a permissive BSD license and is
freely accessible at https://github.com/Teoroo-CMC/PiNN/ with full
documentation and tutorials.
