Skip to content

Python API wrapping the AFLUX API language for AFLOW library.

License

Notifications You must be signed in to change notification settings

ulissigroup/aflow

 
 

Repository files navigation

Build Status Coverage Status

AFLOW Python API - Patched

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:

  1. Allow dynamic schema loading and keyword class creation. Can work with further versions of aflow without major modifications
  2. More robust keyword casting for both string-type or converted inputs.
  3. Improved filter conditions, powered by boolean operations in sympy.
  4. 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

Descriptions for original aflow python API

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}
}

Quickstart

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.

Python 2 Support

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.

About

Python API wrapping the AFLUX API language for AFLOW library.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 68.9%
  • Jupyter Notebook 31.1%