As a researcher and research software engineer at Queen Mary University of London I have been involved primarily in the DL_POLY project – classical molecular dynamics (MD) – in collaboration with CCP5 and the team at STFC’s Daresbury lab over the last 3 years.
With the emergence of machine-learned inter-atomic potentials (MLIPs) I have been increasingly involved as a user and developer of janus_core. janus_core is a Python (and command line) simulation toolbox enabling easy use of the many MLIPs. It is supported by CoSeC, PSDI, and STFC.
My research time as a user of janus_core does allow for some contributions to the software. But in order to make a bigger contributions (via new-features, documentation, and maintenance) in preparation for a serious release we applied for funding via CoSeC’s Community Collaboration Visits scheme. Our funding was split between two, week long visits in December 2025 and February 2026. I visited Dr. Alin Elena and the team first at a hackathon at the Rutherford Appleton laboratory, and then a follow up at the Daresbury lab.
During the visits we were able to implement a few features and conduct much needed software and project maintenance.
We wanted to interface with the existing materials science ecosystem by implementing a calculation method to estimate elasticity tensors via pymatgen. With the time afforded I was able to bring this into janus_core as a well tested and documented feature. This was a relatively straightforward implementation, except for a few minor hiccups with pymatgen, that brings a useful property prediction to janus_core. The live Jupyter Notebook tutorial exemplifies the functionality applied to Aluminium, Diamond, and Carbon-nanotubes. This can be seen on our Github and run in Google Colab
A second major component was to generalise and extend janus_core’s training facility. Before we only supported training and fine-tuning MACE based potentials. With the time afforded to us by our CoSeC funding I was able to refactor and then extend this to the Nequip (merged), Sevennet (soon to be merged), and made a start with Grace architectures. This work predominantly involved a large amount of legwork to determine how best to interface with each API (that being the problem that janus_core solves).
Alongside these new developments various smaller refactoring and maintenance tasks were completed. First in December a general triage of extant issues. Closing those that are no longer relevant, chasing their status, and opening new ones. Secondly we updated various dependencies and supported new functionality (a process that is often more difficult than it sounds), refactored a few utilities, supported new options like compression for phonon data, and much more. These developments are often the least interesting and difficult to make time for, but in many cases actually the most important parts of software projects.