Skip to main content

Nanoparticle Library for computational analysis of nanoparticles

Project description

License GitHub issues Documentation Status

NanoParticleLibrary (NPL)

NPL Logo

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://nplib.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:

pip install npl

or from github:

git clone https://github.com/farrisric/NPlib
pip install ./NPlib

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.

from npl.descriptors import ExtendedTopologicalFeaturesClassifier
from npl.calculators import TOPCalculator
from npl.core import Nanoparticle
from npl.monte_carlo import run_monte_carlo
from npl.visualize import plot_parted_particle

energy_calculator = TOPCalculator('ETOP', stoichiometry='Pt151Cu50',
                                  feature_classifier=ExtendedTopologicalFeaturesClassifier)
feature_classifier = energy_calculator.get_feature_classifier()

temperature = 250
max_steps = 10000

start_particle = Nanoparticle()
start_particle.truncated_octahedron(7, 2, {'Pt': 151, 'Cu': 50})
best_particle, accepted_energies = run_monte_carlo(temperature,
                                                   max_steps,
                                                   start_particle,
                                                   energy_calculator,
                                                   feature_classifier)

plot_parted_particle(best_particle)

Tutorial Image

References

If you use this code, please cite our papers:

@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:

License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

npl-1.0.4.tar.gz (52.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

npl-1.0.4-py3-none-any.whl (69.3 kB view details)

Uploaded Python 3

File details

Details for the file npl-1.0.4.tar.gz.

File metadata

  • Download URL: npl-1.0.4.tar.gz
  • Upload date:
  • Size: 52.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for npl-1.0.4.tar.gz
Algorithm Hash digest
SHA256 6f4da54c53105a5a260fdbbcc7db1fda2064f1ba890ba1baca11360dce7d5e80
MD5 6bba9eace91fd323f95da13235560b55
BLAKE2b-256 6e8934b85c5d2d5c4296491adfce38df9d248d2c544da2c7801f4343078c6432

See more details on using hashes here.

Provenance

The following attestation bundles were made for npl-1.0.4.tar.gz:

Publisher: publish.yml on farrisric/NPlib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file npl-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: npl-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 69.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for npl-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 3eea1d4620609e76053160b89c187d6c2bea95b75a5d5b3f6a24d62005f87614
MD5 0202acb4d0e7d617b6c1cf2195965452
BLAKE2b-256 6af28eef90c74e376fa71dfda8a8f69c29c7e273efdbe328fa23cfe58bddb989

See more details on using hashes here.

Provenance

The following attestation bundles were made for npl-1.0.4-py3-none-any.whl:

Publisher: publish.yml on farrisric/NPlib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page