<p align="center">
<img alt="robocrystallographer logo" src="https://raw.githubusercontent.com/hackingmaterials/robocrystallographer/master/docs/src/_static/logo-01.png" height="200px">
</p>
<p align="center">
<a href="https://pypi.org/project/robocrys/"><img alt="PyPI version" src="https://img.shields.io/pypi/v/robocrys.svg?colorB=blue"> </a>
<a href="https://github.com/hackingmaterials/robocrystallographer/actions?query=workflow%3A%22Run+tests%22"><img alt="CircleCI" src="https://img.shields.io/github/actions/workflow/status/hackingmaterials/robocrystallographer/tests.yml?branch=main"> </a>
</p>
Robocrystallographer is a tool to generate text descriptions of crystal
structures. Similar to how a real-life crystallographer would analyse a
structure, robocrystallographer looks at the symmetry, local environment, and
extended connectivity when generating a description. The package includes
utilities for identifying molecule names, component orientations,
heterostructure information, and more...
## Usage
Robocrystallographer can be used from the command-line or from a python API.
The package integrates with the [Materials Project](https://materialsproject.org)
to for allow generation of structure descriptions directly from Materials Project
ids. For example, to generate the description of SnO<sub>2</sub>
([mp-856](https://materialsproject.org/materials/mp-856/)), one
can simply run:
```bash
robocrys mp-856
```
Alternatively, a structure file can be specified in place of a Materials Project id.
Robocrystallographer supports the same file formats as
[pymatgen](http://pymatgen.org), including the Crystallographic Information
Format (CIF), and common electronic structure package formats such as POSCAR files.
More information can be found on the
[command-line interface page](https://hackingmaterials.github.io/robocrystallographer/cli.html).
### Python interface
The two core classes in robocrystallographer are:
- `StructureCondenser`: to condense the structure into an descriptive JSON
representation.
- `StructureDescriber`: to turn the condensed structure into a text description.
A minimal working example for generating text descriptions is simply:
```python
from pymatgen import Structure
from robocrys import StructureCondenser, StructureDescriber
structure = Structure.from_file("my_structure.cif") # other file formats also supported
# alternatively, uncomment the lines below to use the MPRester object
# to fetch structures from the Materials Project database
# from mp_api.client import MPRester
# structure = MPRester(api_key=None).get_structure_by_material_id("mp-856")
condenser = StructureCondenser()
describer = StructureDescriber()
condensed_structure = condenser.condense_structure(structure)
description = describer.describe(condensed_structure)
```
Where `structure` is a pymatgen Structure object. Both classes have many
options for customising the output of the structure
descriptions. More information is provided in the
[module documentation](https://hackingmaterials.github.io/robocrystallographer/modules).
### Intermediate JSON format
The format of the intermediate JSON representation is detailed on the
[condensed structure format page](https://hackingmaterials.github.io/robocrystallographer/format.html).
### Example output
An example of the output generated by robocrystallographer for SnO<sub>2</sub> ([mp-856](https://materialsproject.org/materials/mp-856/)) is given below:
<p align="center">
<img alt="SnO2 crystal structure" src="https://raw.githubusercontent.com/hackingmaterials/robocrystallographer/master/docs/src//_static/rutile.jpg" height=
"200px">
</p>
> SnO2 is Rutile structured and crystallizes in the tetragonal P4_2/mnm space
> group. The structure is three-dimensional. Sn(1) is bonded to six equivalent
> O(1) atoms to form a mixture of edge and corner-sharing SnO6 octahedra. The
> corner-sharing octahedral tilt angles are 51°. All Sn(1)–O(1) bond lengths
> are 2.09 Å. O(1) is bonded in a trigonal planar geometry to three equivalent
> Sn(1) atoms.
## How to cite robocrystallographer
Please considering citing the following publication if using robocrystallographer in your work:
> Ganose, A., & Jain, A. (2019). Robocrystallographer: Automated crystal structure text descriptions and analysis. MRS Communications, 9(3), 874-881. https://doi.org/10.1557/mrc.2019.94
## Installation
Robocrystallographer can be installed using pip:
```bash
pip install robocrys
```
Robocrystallographer requires Python 3.7+. The
[OpenBabel](http://openbabel.org/wiki/Python)
package is required to determine molecule names. This is an optional
requirement but its use is recommended for best
results. If you are using the [Conda](https://conda.io/) package management
system, OpenBabel can be installed using:
```bash
conda install -c conda-forge openbabel
```
## What’s new?
Track changes to robocrystallographer through the
[Changelog](https://hackingmaterials.github.io/robocrystallographer/changelog.html).
## Contributing
Robocrystallographer is in early development but we still welcome your
contributions. Please read our [contribution guidelines](https://hackingmaterials.github.io/robocrystallographer/contributing.html)
for more information. We maintain a list of all
contributors [here](https://hackingmaterials.github.io/robocrystallographer/contributors.html).
## License
Robocrystallographer is released under a modified BSD license;
the full text can be found
[here](https://hackingmaterials.github.io/robocrystallographer/license.html).
## Acknowledgements
Logo by Somewan from the Noun Project.
Raw data
{
"_id": null,
"home_page": "https://github.com/hackingmaterials/robocrystallographer",
"name": "robocrys",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "crystal-structure crystallography materials-science",
"author": "Alex Ganose",
"author_email": "aganose@lbl.gov",
"download_url": "https://files.pythonhosted.org/packages/16/1c/9802111f02cf77ea90c8a597de94dd903a0d0edede12ac1ce3b8e61ec75c/robocrys-0.2.10.tar.gz",
"platform": null,
"description": "<p align=\"center\">\n <img alt=\"robocrystallographer logo\" src=\"https://raw.githubusercontent.com/hackingmaterials/robocrystallographer/master/docs/src/_static/logo-01.png\" height=\"200px\">\n</p>\n\n<p align=\"center\">\n <a href=\"https://pypi.org/project/robocrys/\"><img alt=\"PyPI version\" src=\"https://img.shields.io/pypi/v/robocrys.svg?colorB=blue\"> </a>\n <a href=\"https://github.com/hackingmaterials/robocrystallographer/actions?query=workflow%3A%22Run+tests%22\"><img alt=\"CircleCI\" src=\"https://img.shields.io/github/actions/workflow/status/hackingmaterials/robocrystallographer/tests.yml?branch=main\"> </a>\n</p>\n\n\n\n\nRobocrystallographer is a tool to generate text descriptions of crystal\nstructures. Similar to how a real-life crystallographer would analyse a\nstructure, robocrystallographer looks at the symmetry, local environment, and\nextended connectivity when generating a description. The package includes\nutilities for identifying molecule names, component orientations,\nheterostructure information, and more...\n\n## Usage\n\nRobocrystallographer can be used from the command-line or from a python API.\nThe package integrates with the [Materials Project](https://materialsproject.org)\nto for allow generation of structure descriptions directly from Materials Project\nids. For example, to generate the description of SnO<sub>2</sub>\n([mp-856](https://materialsproject.org/materials/mp-856/)), one\ncan simply run:\n\n```bash\nrobocrys mp-856\n```\n\nAlternatively, a structure file can be specified in place of a Materials Project id.\nRobocrystallographer supports the same file formats as\n[pymatgen](http://pymatgen.org), including the Crystallographic Information\nFormat (CIF), and common electronic structure package formats such as POSCAR files.\nMore information can be found on the\n[command-line interface page](https://hackingmaterials.github.io/robocrystallographer/cli.html).\n\n### Python interface\n\nThe two core classes in robocrystallographer are:\n\n- `StructureCondenser`: to condense the structure into an descriptive JSON\n representation.\n- `StructureDescriber`: to turn the condensed structure into a text description.\n\nA minimal working example for generating text descriptions is simply:\n\n```python\nfrom pymatgen import Structure\nfrom robocrys import StructureCondenser, StructureDescriber\n\nstructure = Structure.from_file(\"my_structure.cif\") # other file formats also supported\n\n# alternatively, uncomment the lines below to use the MPRester object\n#\u00a0to fetch structures from the Materials Project database\n# from mp_api.client import MPRester\n# structure = MPRester(api_key=None).get_structure_by_material_id(\"mp-856\")\n\ncondenser = StructureCondenser()\ndescriber = StructureDescriber()\n\ncondensed_structure = condenser.condense_structure(structure)\ndescription = describer.describe(condensed_structure)\n```\n\nWhere `structure` is a pymatgen Structure object. Both classes have many\noptions for customising the output of the structure\ndescriptions. More information is provided in the\n[module documentation](https://hackingmaterials.github.io/robocrystallographer/modules).\n\n### Intermediate JSON format\n\nThe format of the intermediate JSON representation is detailed on the\n[condensed structure format page](https://hackingmaterials.github.io/robocrystallographer/format.html).\n\n\n### Example output\n\nAn example of the output generated by robocrystallographer for SnO<sub>2</sub> ([mp-856](https://materialsproject.org/materials/mp-856/)) is given below:\n\n<p align=\"center\">\n<img alt=\"SnO2 crystal structure\" src=\"https://raw.githubusercontent.com/hackingmaterials/robocrystallographer/master/docs/src//_static/rutile.jpg\" height=\n\"200px\">\n</p>\n\n> SnO2 is Rutile structured and crystallizes in the tetragonal P4_2/mnm space\n> group. The structure is three-dimensional. Sn(1) is bonded to six equivalent\n> O(1) atoms to form a mixture of edge and corner-sharing SnO6 octahedra. The\n> corner-sharing octahedral tilt angles are 51\u00b0. All Sn(1)\u2013O(1) bond lengths\n> are 2.09 \u00c5. O(1) is bonded in a trigonal planar geometry to three equivalent\n> Sn(1) atoms.\n\n## How to cite robocrystallographer\n\nPlease considering citing the following publication if using robocrystallographer in your work:\n\n> Ganose, A., & Jain, A. (2019). Robocrystallographer: Automated crystal structure text descriptions and analysis. MRS Communications, 9(3), 874-881. https://doi.org/10.1557/mrc.2019.94\n\n## Installation\n\nRobocrystallographer can be installed using pip:\n\n```bash\npip install robocrys\n```\n\nRobocrystallographer requires Python 3.7+. The\n[OpenBabel](http://openbabel.org/wiki/Python)\npackage is required to determine molecule names. This is an optional\nrequirement but its use is recommended for best\nresults. If you are using the [Conda](https://conda.io/) package management\nsystem, OpenBabel can be installed using:\n\n```bash\nconda install -c conda-forge openbabel\n```\n\n## What\u2019s new?\n\nTrack changes to robocrystallographer through the\n[Changelog](https://hackingmaterials.github.io/robocrystallographer/changelog.html).\n\n## Contributing\n\nRobocrystallographer is in early development but we still welcome your\ncontributions. Please read our [contribution guidelines](https://hackingmaterials.github.io/robocrystallographer/contributing.html)\nfor more information. We maintain a list of all\ncontributors [here](https://hackingmaterials.github.io/robocrystallographer/contributors.html).\n\n## License\n\nRobocrystallographer is released under a modified BSD license;\nthe full text can be found\n[here](https://hackingmaterials.github.io/robocrystallographer/license.html).\n\n## Acknowledgements\n\nLogo by Somewan from the Noun Project.\n\n\n",
"bugtrack_url": null,
"license": "modified BSD",
"summary": "Automatic generation of crystal structure descriptions",
"version": "0.2.10",
"project_urls": {
"Homepage": "https://github.com/hackingmaterials/robocrystallographer"
},
"split_keywords": [
"crystal-structure",
"crystallography",
"materials-science"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "6303cb8b23234d8b50c0d93a069f0890d17aea7d0219892a16a2ae86e9829c45",
"md5": "c5878f4757e33478e1f8a61de5763be6",
"sha256": "0a9a9bf9940d50620c3bdc999d2a8ccfe923eee9ab32619eab1550889985c3be"
},
"downloads": -1,
"filename": "robocrys-0.2.10-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c5878f4757e33478e1f8a61de5763be6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 3831796,
"upload_time": "2024-10-03T22:27:10",
"upload_time_iso_8601": "2024-10-03T22:27:10.238649Z",
"url": "https://files.pythonhosted.org/packages/63/03/cb8b23234d8b50c0d93a069f0890d17aea7d0219892a16a2ae86e9829c45/robocrys-0.2.10-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "161c9802111f02cf77ea90c8a597de94dd903a0d0edede12ac1ce3b8e61ec75c",
"md5": "8370dd0f1ec99908c0daa4f679b86e32",
"sha256": "6ca56df390dc312e4cb8fafcc1d9a5e132bcefd2b62cb2bbe007c13e7206d2bc"
},
"downloads": -1,
"filename": "robocrys-0.2.10.tar.gz",
"has_sig": false,
"md5_digest": "8370dd0f1ec99908c0daa4f679b86e32",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 3826347,
"upload_time": "2024-10-03T22:27:12",
"upload_time_iso_8601": "2024-10-03T22:27:12.299404Z",
"url": "https://files.pythonhosted.org/packages/16/1c/9802111f02cf77ea90c8a597de94dd903a0d0edede12ac1ce3b8e61ec75c/robocrys-0.2.10.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-03 22:27:12",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "hackingmaterials",
"github_project": "robocrystallographer",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"requirements": [],
"lcname": "robocrys"
}