Metadata-Version: 2.1
Name: mpdd-alignn
Version: 1.0.2
Summary: A version of the NIST-JARVIS ALIGNN optimized in terms of model performance and to some extent reliability, for large-scale deployments over the MPDD infrastructure by Phases Research Lab.
Author-email: Adam Krajewski <ak@psu.edu>
Project-URL: Research Page, https://phaseslab.com/mpdd
Project-URL: Homepage, https://phaseslab.org
Project-URL: OPTIMADE Access, https://optimade.mpdd.org
Project-URL: Simple GUI, http://mpdd.org
Project-URL: Bug Tracker, https://github.com/PhasesResearchLab/MPDD/issues
Project-URL: ALIGNN, https://github.com/usnistgov/alignn
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Scientific/Engineering :: Chemistry
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE.md
Requires-Dist: numpy>=1.26.0
Requires-Dist: scipy>=1.11.0
Requires-Dist: jarvis-tools>=2021.07.19
Requires-Dist: torch==2.1.0
Requires-Dist: dgl>=1.1.3
Requires-Dist: spglib==2.0.2
Requires-Dist: scikit-learn>=1.3.1
Requires-Dist: matplotlib>=3.4.1
Requires-Dist: tqdm>=4.60.0
Requires-Dist: pandas>=1.2.3
Requires-Dist: pydantic==1.8.1
Requires-Dist: ruamel.yaml
Requires-Dist: pysmartdl2
Provides-Extra: full
Requires-Dist: pytorch-ignite>=0.5.0.dev20221024; extra == "full"
Requires-Dist: ase; extra == "full"
Requires-Dist: flake8>=3.9.1; extra == "full"
Requires-Dist: pycodestyle>=2.7.0; extra == "full"
Requires-Dist: pydocstyle>=6.0.0; extra == "full"
Requires-Dist: pyparsing<3,>=2.2.1; extra == "full"
Requires-Dist: accelerate>=0.20.3; extra == "full"

# MPDD - ALIGNN Calculator

This tool is a modified version of the **NIST-JARVIS** [**`ALIGNN`**](https://github.com/usnistgov/alignn) optimized in terms of model performance and to some extent reliability, for large-scale deployments over the [**`MPDD`**](https://phaseslab.org/mpdd) infrastructure by Phases Research Lab.

## Critical Changes

Key modifications that were made here:
- A set of models of interest has been selected and defined in [**`config.yaml`**](alignn/config.yaml) for consistency, readability, and easy tracking. These are the models which will be populating MPDD.
- **Dependency optimizations for running models**, skipping by default installation of several packages needed only for training and auxiliary tasks. Full
set can still be installed by `pip install "mpdd-alignn[full]"`.
- The process of model fetching was far too slow using `pretrained.get_figshare_model()`; thus, we reimplemented it similar to [`pySIPFENN`](https://pysipfenn.org) by multi-threading connection to Figshare via `pysmartdl2` we maintain, and parallelize the process on per-model basis. **Model download is now 7 times faster**, fetching all 7 default models in 6.1 vs 41.4 seconds.
- Optimized what is included in the built package. Now, its **package size is reduced 33.5 times**, from 21.7MB to 0.65MB.
- Streamlined operation, where we can get results for a directory of POSCARS for all default models in just 3 quick lines
    ```python
    from alignn import pretrained
    pretrained.download_default_models()
    result = pretrained.run_models_from_directory('example.SigmaPhase', mode='serial')
    ```

    Which give us neat:

    ```
    [{
        'ALIGNN-JARVIS Bulk Modulus [GPa]': 98.06883239746094,
        'ALIGNN-JARVIS Exfoliation Energy [meV/atom]': 101.71208190917969,
        'ALIGNN-JARVIS Formation Energy [eV/atom]': -1.1146986484527588,
        'ALIGNN-JARVIS MBJ Bandgap [eV]': 0.5845542550086975,
        'ALIGNN-JARVIS Shear Modulus [GPa]': 39.18968963623047,
        'ALIGNN-MP Formation Energy [eV/atom]': -1.4002774953842163,
        'ALIGNN-MP PBE Bandgap [eV]': 1.074204921722412,
        'name': '9-Pb8O12.POSCAR'
    },
    {
        'ALIGNN-JARVIS Bulk Modulus [GPa]': 194.2947540283203,
        'ALIGNN-JARVIS Exfoliation Energy [meV/atom]': 362.1310729980469,
        'ALIGNN-JARVIS Formation Energy [eV/atom]': 0.010236039757728577,
        'ALIGNN-JARVIS MBJ Bandgap [eV]': 0.0064897798001766205,
        'ALIGNN-JARVIS Shear Modulus [GPa]': 85.74588775634766,
        'ALIGNN-MP Formation Energy [eV/atom]': -0.018119990825653076,
        'ALIGNN-MP PBE Bandgap [eV]': -0.00551827996969223,
        'name': '19-Fe4Ni26.POSCAR'
    },
    {
        'ALIGNN-JARVIS Bulk Modulus [GPa]': 185.35687255859375,
        'ALIGNN-JARVIS Exfoliation Energy [meV/atom]': 379.46417236328125,
        'ALIGNN-JARVIS Formation Energy [eV/atom]': 0.10529126971960068,
    ...
    ```

## ALIGNN Compatibility and Install

In general, we tried to retain full compatibility with the original `ALIGNN`, so this should be a drop-in replacement. You have to simply:

    pip install mpdd-alignn

or (as recommended) clone this repository and

    pip install -e .

## Contributions

Please direct all contributions to [the ALIGNN repository](https://github.com/usnistgov/alignn). We will be synching our fork with them every once in a while and can do it quickly upon reasonable request. 

The only contributions we will accept here are:
- Expanding the list of default models.
- Performance improvements to our section of the code.
