Skip to main content

Core tools for crystal structures, CIF/XYZ I/O, and Quantum ESPRESSO input/output

Project description

ProbingMC (Python package: Structure)

A lightweight, ASE‑style toolkit for crystal structures, molecules, and I/O to/from CIF/XYZ and Quantum ESPRESSO (pw.x) files.

ProbingMC exposes a single importable package named Structure. You install the PyPI project ProbingMC, then import like:

from Structure import Structure

Key features

  • Core Structure class for loading structures from CIF, Quantum ESPRESSO outputs (vc-relax, relax, scf), QE inputs (.in), and XYZ/MOPAC; includes coordinate transforms, supercells, rotations/reflections, atom insertion, and multiple writers (CIF/XYZ/MOP/QE input).
  • CIF I/O: parses _cell_* parameters and atomic positions; if CIF symmetry operations (_symmetry_equiv_pos_as_xyz) are present, atoms are duplicated accordingly (basic symmetry expansion). Writing uses a CIF template.
  • Quantum ESPRESSO I/O: reads vc-relax and relax outputs (including final cell, positions, and total energy when available), reads .in files, and writes QE inputs from templates.
  • Atom utilities: van der Waals/covalent radii, masses, simple overlap checks (vdW/covalent), neighbor handling, and pseudopotential name maps used when writing QE inputs.
  • ASE interoperability: convert to/from ase.Atoms (get_ase, add_ase_structure) for quick visualization or downstream workflows.

Note on scope: this project focuses on pragmatic structure manipulation. CIF symmetry handling is limited to duplicating positions from provided operations; it does not perform full symmetry analysis/reduction.


Install

From PyPI:

pip install ProbingMC

From source (editable dev install):

git clone https://github.com/Andrey-Tokarev/probingmc.git
cd probingmc
pip install -e .

The package on import is Structure even though the distribution name is ProbingMC.


Quickstart

from Structure import Structure

# Load a CIF
s = Structure("examples/data/graphene.cif")   # reads cell + atoms and expands symmetry if present
print(s.number_of_atoms())

# Make a 2×2 supercell and export
s.super_cell(2, 2, 1)                          # builds supercell
s.write_structure_to_xyz(modifier="2x2")       # writes <name>_2x2.xyz next to the input

The Structure class supports .cif, QE .out/.in, and .xyz/MOPAC sources; writers include CIF/XYZ/MOP/QE‐input. See write_structure_to_cif, write_structure_to_xyz, write_structure_to_qe_in, rotations/reflections, and more in the source.

With ASE (optional):

ase_atoms = s.get_ase()                        # to ASE
# ... visualize or process with ASE ...

Quantum ESPRESSO notes

  • Readers: load_structure_from_qe_relax (also captures total energy), load_structure_from_qe_vc_relax, and load_structure_from_qe_in.
  • Writer: write_structure_to_qe_in(...) populates a QE input file using templates and pseudopotential maps declared in Atom. Ensure your pseudopotential filenames match the entries in Atom.PPs_ONCV_PBE or adjust them.
  • Template path: the current writer uses a hard‑coded templates folder path in QEIO.dump_structure_to_qe (marked as a “quick fix”). Update that constant or refactor to load templates from a project‑relative templates/ directory before publishing.

CIF notes

  • CIF reader (load_structure_from_cif) parses cell parameters and atomic sites; when _symmetry_equiv_pos_as_xyz is present, it expands atoms by applying the listed operations. The CIF writer fills a sample.cif template—adjust the template location as needed.

API overview

  • Structure.Structure: load/write, coordinate transforms, supercells, rotations (rotate_structure_from_a_to_b, bond‑to‑bond), atom add/copy/remove, double‑layer builder, surface/volume/composition utilities.
  • Structure.Atom: radii, masses, overlap checks, relaxed DOF flags, distance with/without periodic images.
  • Structure.CIFIO / Structure.QEIO: file readers/writers for CIF and QE formats.
  • Structure.controls: simple error helper used across modules.

Requirements

  • Python 3.10+ (pattern‑matching syntax is used in the QE input reader).
  • Runtime deps: numpy and ase.

Contributing

PRs and issues are welcome. Please:

  • Add a minimal example and/or unit test for new features.
  • Keep I/O templates project‑relative and configurable.
  • Avoid committing large generated files (dist/, build/, *.out, *.xyz)—see .gitignore.

License

MIT — see LICENSE 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

probingmc-2.9.0.post2.tar.gz (18.1 kB view details)

Uploaded Source

Built Distribution

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

probingmc-2.9.0.post2-py3-none-any.whl (20.6 kB view details)

Uploaded Python 3

File details

Details for the file probingmc-2.9.0.post2.tar.gz.

File metadata

  • Download URL: probingmc-2.9.0.post2.tar.gz
  • Upload date:
  • Size: 18.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for probingmc-2.9.0.post2.tar.gz
Algorithm Hash digest
SHA256 dfa3449ff7fe6ac2f68a04a5159daa8f57309100e03a310afa2f8ca7665f0b35
MD5 f3813399629818902c77e191ec14d2ca
BLAKE2b-256 0b1e74ab0f7bbdcfb6ba60ea0bce5930072f06ce648f790b2101b09ae12fc4c6

See more details on using hashes here.

File details

Details for the file probingmc-2.9.0.post2-py3-none-any.whl.

File metadata

File hashes

Hashes for probingmc-2.9.0.post2-py3-none-any.whl
Algorithm Hash digest
SHA256 f4d5eee1718f05ee7c15da76686d555faa144c13c5c5ff3ac38e397b9273e5ed
MD5 5ef2c088e801ea2e09325ed37a2600ac
BLAKE2b-256 7c37f2cc9eb3ec1cc7456b0760290c85614b348d3d2bf7043b41f7f143467425

See more details on using hashes here.

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