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.

Examples

The examples/ folder is the best place to start. Recommended examples to include:

  1. CIF → XYZ: load a CIF, expand symmetry if present, export to XYZ.
  2. QE relax parse: parse a QE relax output, print final energy and export to CIF.
  3. Supercell + rotation: build a supercell, align a bond along a target vector, and write QE input.
  4. ASE interop: convert to ase.Atoms, visualize or run quick operations, then round‑trip back.

It’s okay if you haven’t chosen the exact files yet—list them here and commit small inputs in examples/data/ so readers can run them end‑to‑end.


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.tar.gz (18.5 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-py3-none-any.whl (20.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: probingmc-2.9.0.tar.gz
  • Upload date:
  • Size: 18.5 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.tar.gz
Algorithm Hash digest
SHA256 ab7b580b0e086e0cfd480f05f2c349d5d427a5df5e0a577a63c027a485ed38f4
MD5 9c4325b4a0f556a023d975b01ce5c1ca
BLAKE2b-256 2440d7209afd8ea5b453dd2006a3b229cf2c9e84e548e50bc653874ecd846ec2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: probingmc-2.9.0-py3-none-any.whl
  • Upload date:
  • Size: 20.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for probingmc-2.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 178f56d4b2581c8e2c02ef790d3b44e933c9288c937cd3d20821074d0228704f
MD5 eb973fb2fb2e16fa5524e3e5b4f8ab62
BLAKE2b-256 269a605bb526ba715382accd54a1fd45e7b9b7060dc639aa17d7bc12f234b8c8

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