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.post3.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.post3-py3-none-any.whl (20.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: probingmc-2.9.0.post3.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.post3.tar.gz
Algorithm Hash digest
SHA256 f4f547648f4c48cd96db744e8fff669c3506c6ad2208fc028b1eb545b71bc618
MD5 151545f1e9903648d280d1489db2b708
BLAKE2b-256 b567e1baf0f9a65e0d92afde0b5cb43cc735f7aa94669341da480cc63de9698e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for probingmc-2.9.0.post3-py3-none-any.whl
Algorithm Hash digest
SHA256 8e8f5868411f7e5260ff3e828728cc8a3eae52bc002dad61ab3fafd1ad1105b4
MD5 4e02ce1d27c06723cb54b5ab56acedf6
BLAKE2b-256 e92fe643a9377d0d634bc158810e00d1181ee541bb8ffc0429ad59992a360ef0

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