Build and visualize complex crystalline nanoparticle architectures, including models on substrates, for materials science, X-ray data analysis, and electron microscopy research
Project description
Most nanoparticles have a well-defined shape. The habit of a crystalline nanoparticle is dependent on its crystallographic form and growth conditions. Its properties depends on its size, shape, surface topology and composition, etc... Modeling nanoparticles at the atomic scale is a crucial preliminary step to evaluate their potential for various applications. However, the process of generating an initial conformation for modeling and simulation is not that easy. Several tools are already available, including in the python realm. But to the best of our knowledge, they do not give access to the fascinating diversity of shapes encountered at the nanoscale. pyNanoMatBuilder is a new python tool designed to create nanoparticle models from any crystal structure or atomically precise structures, i.e. magic numbers polyhedra.
Once a nanoparticle is built, pyNanoMatBuilder provides a complete toolkit
for atomic-precision shape engineering, organized in six families:
| Family | Key functions |
|---|---|
| Planar sculpting | applySlicing, remove_plane |
| Volume clipping | clip_to_sphere, clip_to_cylinder, clip_to_ellipsoid, clip_to_cone |
| Tip shaping | round_tip_in_direction, align_to_plane |
| Surface peeling | peel_by_coordination, peel_by_shifted_ellipsoid |
| Symmetry & assembly | apply_rotation, apply_reflection, replicate_by_rotation, replicate_by_reflection, applyTwist |
| Construction Solid Geometry | cut_by, union_with, intersect_with, flush_inlay_with |
What can you build?
Various atomic ordered arrangements can be obtained by instantiating specific classes:
-
crystalNPsbuilds crystal-based shapes — spheres, cubes, ellipsoids, cylinders, parallelepipeds, and more generally any Wulff construction. Users can upload any CIF file or use the built-in database. Pre-defined Wulff shapes are available, and custom Miller indices with surface energies can be specified. This works for any Bravais lattice. -
platonicNPs,archimedeanNPs,catalanNPsandjohnsonNPsgenerate atomically precise polyhedra such as icosahedra, decahedra and many other five-fold structures that Wulff constructions cannot produce. -
the shape engineering tools can be combined to build complex morphologies that go well beyond simple convex shapes, including pentatwinned nanorods (bipyramids, walled bipyramids, double cones, rods, ellipsoids, capsules), concave nanoparticles (nanostars, octopods), or any user-defined custom geometry.
The crystal habits of the structures generated by pyNanoMatBuilder are
summarized below:
Installation
Activate your python environment and run:
pip install pyNanoMatBuilder
Quick usage
Let's first make a sphere with a diameter of ~ 4 nm. This is the target size, but the measured size will be slightly different due to compound cristalline organization.
from pyNanoMatBuilder import crystalNPs as cyNP
from pyNanoMatBuilder import utils as pyNMBu
# Define parameters
sphere_diameter = [4] # Target diameter in nm
# Instantiate the Crystal object (Au fcc sphere)
AuNP = cyNP.Crystal(
"Au fcc",
size=sphere_diameter,
shape="sphere",
thresholdCoreSurface=1,
skipSymmetryAnalyzis=False,
noOutput=False
)
# Save the results in various formats
# The 'write' utility automatically creates the 'coords/' directory, if it does not exist
pyNMBu.write("coords/SphericalAuNP.xyz", AuNP.NP) # Main coordinates
pyNMBu.write("coords/SphericalAuNP_CoreSurface.xyz", AuNP.NPcs) # Core/surface model
pyNMBu.write("coords/SphericalAuNP.script", AuNP.jMolCS) # JMOL visualization script
# Save unitcells
pyNMBu.write("coords/SphericalAuNP_uc.cif", AuNP.cif) # The base unitcell
pyNMBu.write("coords/SphericalAuNP_sc.cif", AuNP.sc) # The supercell used for shaping
See more explanations in the How to? Workflow Guides section of the Main Tutorial notebook
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pynanomatbuilder-0.17.0.tar.gz.
File metadata
- Download URL: pynanomatbuilder-0.17.0.tar.gz
- Upload date:
- Size: 71.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7591700e0e58adef63be5386991791e50294d39bc3c461df25ce1c9c3a6b79a
|
|
| MD5 |
b0c9f4a2c66612907fa568ba539b57e7
|
|
| BLAKE2b-256 |
7b9b47ad43edd2b9b4d3506e02eed2e9180af3dc15f7493f2a2fe53e70af0d31
|
File details
Details for the file pynanomatbuilder-0.17.0-py3-none-any.whl.
File metadata
- Download URL: pynanomatbuilder-0.17.0-py3-none-any.whl
- Upload date:
- Size: 56.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7e655f79af17e5d4f7d8e638a76bacfaf0f8801bf4708c48bed44457b9ba0ce
|
|
| MD5 |
9542609d5413fd2fd9d821852122e7d3
|
|
| BLAKE2b-256 |
657e96d590581cf8e8f614ffc01783691ef1c38c1c855616aabf6000ee2b605a
|