This repo is a forked version of rosenbrockc/aflow for bug fix
The patched Python API intends to have (almost) identical behavior with the
original aflow
, while several functionalities are fixed:
- Allow dynamic schema loading and keyword class creation. Can work with further versions of aflow without major modifications
- More robust keyword casting for both string-type or converted inputs.
- Improved filter conditions, powered by boolean operations in
sympy
. - Better handling of aurl with multiple colons (e.g. GGA+U calculations)
For a list of examples in the patched API, please check the notebook in notebooks/demo_patched_api.ipynb.
To install:
pip install git+https://github.com/ulissigroup/aflow.git
Python API wrapping the AFLUX API language for AFLOW library. Note: This is not an official repo of the AFLOW consortium and is not maintained by them. API Documentation.
If you use this package, please cite it:
@ARTICLE{2017arXiv171000813R,
author = {{Rosenbrock}, C.~W.},
title = "{A Practical Python API for Querying AFLOWLIB}",
journal = {ArXiv e-prints},
archivePrefix = "arXiv",
eprint = {1710.00813},
primaryClass = "cs.DB",
keywords = {Computer Science - Databases},
year = 2017,
month = sep,
adsurl = {http://adsabs.harvard.edu/abs/2017arXiv171000813R},
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}
Install aflow
from the python package index:
pip install aflow
Or alternatively install aflow
from conda using:
conda install -c conda-forge aflow
Open an ipython notebook or terminal and execute the query from the paper:
from aflow import *
result = search(batch_size=20
).select(K.agl_thermal_conductivity_300K
).filter(K.Egap > 6).orderby(K.agl_thermal_conductivity_300K, True)
# Now, you can just iterate over the results.
for entry in result:
print(entry.Egap)
aflow
supports lazy evaluation. This means that if you didn't ask for a particular property during the initial query, you can just ask for it later and the request will happen transparently in the background.
Although the package was originally designed to be compatible with both python 2 and python 3, python 2 has reached the end of its life. As such, we don't guarantee anymore that it will work.