The Frac-to-cart-coordinates
package allows users to easily convert atomic coordinates from Cartesian to fractional format and vice versa, based on the unit cell parameters.
In crystallography, atomic positions within a crystal's unit cell can be described using:
-
Fractional coordinates
$(x/a, y/b, z/c)$ , which refer to the natural axes (a, b, c), scaled by their respective unit cell lengths. -
Orthogonal coordinates
$(X, Y, Z)$ , which use a right-angled Cartesian system with distances measured in Ångstroms.
For triclinic unit cells, the relationship between these coordinate systems involves a transformation matrix with non-trivial elements.
This implementation follows the methodology described on Jon Cooper's website, fractorth. It relies on the fundamental principles of spherical trigonometry (see implementation_details).
Run the following command in your terminal:
pip install Frac-to-cart-coordinates
Make sure you have numpy installed and Python 3.6 or higher.
from Fractocart import convert_to_fractional_coordinates, convert_to_cartesian_coordinates
-
Convert to Fractional Coordinates
fractional_coords = convert_to_fractional_coordinates(cartesian_coords, unit_cell)
-
Convert to Cartesian Coordinates
cartesian_coords = convert_to_cartesian_coordinates(fractional_coords, unit_cell)
Contributions are welcome! To contribute:
- Fork the repository, then clone the fork (see there).
- Create a feature branch (
git checkout -b feature-name
). - Commit your changes (
git commit -m "Add new feature"
). - Push to the branch (
git push origin feature-name
). - Open a merge request.
This project is licensed under the MIT License - see the LICENSE file for details.