Skip to content

Really fast chemical file reading and writing. Usable from Python, written in Rust.

Notifications You must be signed in to change notification settings

stokeware-org/FLOUR

Repository files navigation

FLOUR

flour is a Python library for really fast chemical file reading and writing.


pip install flour
import numpy as np
import flour

# Write the cube file.
flour.write_cube(
    path="molecule.cube",
    title1="The first line of the cube file",
    title2="The second line of the cube file",
    # The atomic number of each atom.
    atoms=np.array([1, 35], dtype=np.uint8),
    # The charge on each atom.
    charges=np.array([0., 0.]),
    # The position matrix of the molecule.
    positions=np.array([
        [-0.5, 0., 0.],
        [1., 0., 0.],
    ]),
    # The origin of the voxel grid.
    voxel_origin=np.array([-4.5, -4.5, -4.5]),
    # The a, b, c vectors of a single voxel.
    voxel_size=np.array(
        [
            [0.5, 0., 0.],
            [0., 0.5, 0.],
            [0., 0., 0.5],
        ],
    ),
    # A 20 x 20 x 20 voxel grid.
    voxels=np.random.rand(20, 20, 20),
)

# Read the cube file.
cube_data = flour.read_cube("molecule.cube")
cube_data.atoms  # The atomic number of each atom.
cube_data.charges  # The charge of each atom.
cube_data.positions  # The position matrix of the molecule.
cube_data.grid.origin  # The origin of the voxel grid.
cube_data.grid.voxel_size  # The a, b, c vectors of a single voxel.
cube_data.grid.voxels  # The voxel grid.

If you want to develop FLOUR there's a couple of handy things you should know. FLOUR is built using the excellent maturin library. This means that to build the library you run

maturin develop --extras=dev --profile=release

and that's more or less all there is to it. The only other thing to note is that we do have a justfile, which can be used to run various actions on the repository, such as automated checks and building the Docker testing environment. To use the justfile you should grab just.

About

Really fast chemical file reading and writing. Usable from Python, written in Rust.

Resources

Stars

Watchers

Forks

Packages