npl
The NanoParticleLibrary (NPL) is a Python library for simulating and optimizing nanoparticle structures, built on ASE.
Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 9 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.8%) to scientific vocabulary
Keywords
Repository
The NanoParticleLibrary (NPL) is a Python library for simulating and optimizing nanoparticle structures, built on ASE.
Basic Info
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 3
Topics
Metadata Files
README.md
NanoParticleLibrary (NPL)

Table of contents
About NPL
NPL is a Python library for the simulation and structural optimization of nanoparticles, specifically tailored for bimetallic nanoparticles. Built on the robust ASE (Atomic Simulation Environment), it enables users to easily set up and analyze complex nanoparticle structures across a range of chemical compositions and structures. NPL provides high-level abstractions, making it accessible for both beginners and experienced researchers aiming to perform detailed nanoparticle simulations.
Documentation
A partial documentation is available at: https://npl.readthedocs.io/en/latest/
Installation
Requirements
- Python 3.9+
- Atomic Simulation Environment (ASE) >= 3.21
- scikit-learn
- sortedcontainers
Installation from PyPI
You can install NPL with pip:
sh
pip install npl
or from github:
sh
git clone https://github.com/farrisric/npl
pip install ./npl
Examples
Monte Carlo Run Example
Here’s a revised version without using lists:
This example demonstrates how to perform a Monte Carlo simulation using NPL. First, pre-trained topological coefficients are loaded to guide the simulation. A truncated octahedral Pt151Cu50 nanoparticle is then initialized as the system for the simulation. The Monte Carlo simulation is set up with a temperature parameter of 250 K and a total of 10,000 steps. Once the simulation is executed, the positions of the nanoparticle atoms are optimized. Finally, the optimized positions are printed for analysis.
```python
from npl.descriptors import ExtendedTopologicalFeaturesClassifier from npl.calculators import TOPCalculator from npl.core import Nanoparticle from npl.montecarlo import runmontecarlo from npl.visualize import plotparted_particle
energycalculator = TOPCalculator('ETOP', stoichiometry='Pt151Cu50', featureclassifier=ExtendedTopologicalFeaturesClassifier) featureclassifier = energycalculator.getfeatureclassifier()
temperature = 250 max_steps = 10000
startparticle = Nanoparticle() startparticle.truncatedoctahedron(7, 2, {'Pt': 151, 'Cu': 50}) bestparticle, acceptedenergies = runmontecarlo(temperature, maxsteps, startparticle, energycalculator, feature_classifier)
plotpartedparticle(best_particle) ```

References
If you use this code, please cite our papers:
```bibtex @neuman{10.1063/5.0214377, author = {Felix Neumann and Johannes T Margraf and Karsten Reuter and Albert Bruix}, title = "{Interplay between shape and composition in bimetallic nanoparticles revealed by an efficient optimal-exchange optimization algorithm}", archivePrefix = {ChemRxiv}, doi = {10.26434/chemrxiv-2021-26ztp}, }
@article{10.1063/5.0193848, author = {Farris, Riccardo and Merinov, Boris V. and Bruix, Albert and Neyman, Konstantin M.}, title = "{Effects of Zr dopants on properties of PtNi nanoparticles for ORR catalysis: A DFT modeling}", journal = {The Journal of Chemical Physics}, volume = {160}, number = {12}, pages = {124706}, year = {2024}, issn = {0021-9606}, doi = {10.1063/5.0193848}, url = {https://doi.org/10.1063/5.0193848}, }
@farris{10.1063/5.0214377, author = {Farris, Riccardo and Neyman, Konstantin M. and Bruix, Albert}, title = "{Determining the chemical ordering in nanoalloys by considering atomic coordination types}", journal = {The Journal of Chemical Physics}, volume = {161}, number = {13}, pages = {134114}, year = {2024}, issn = {0021-9606}, doi = {10.1063/5.0214377} } ```
Contact
For any questions or issues, please contact:
- Riccardo Farris: rfarris@ub.edu
- GitHub Issues: npl Issues
License
This project is licensed under the MIT License - see the LICENSE file for details.
Owner
- Name: Riccardo Farris
- Login: farrisric
- Kind: user
- Company: @reac-nps
- Repositories: 1
- Profile: https://github.com/farrisric
PhD Student in Theoretical and Computational Chemistry in the @reac-nps group at the Universidad de Barcelona,
Citation (CITATION.cff)
cff-version: 1.2.0 message: "If you use this software, please cite it as below." title: "The NanoParticleLibrary (NPL): a Python library for simulating and optimizing nanoparticle structures." authors: - family-names: Farris given-names: Riccardo affiliation: "Universitat de Barcelona" date-released: "2025-05-01" version: "1.0.5" url: "https://github.com/farrisric/NPlib" doi: "10.5072/zenodo.262135" date-released: "2025-05-28"
GitHub Events
Total
- Push event: 1
Last Year
- Push event: 1