/ramannoodle

Efficiently compute off-resonance Raman spectra from first principles calculations (e.g. VASP) using polynomial models and ML/AI.

Primary LanguagePythonMIT LicenseMIT


PyPI - Version python Tests Coverage Documentation Status License: MIT

About

Ramannoodle is a Python API for efficiently calculating Raman spectra from first principles calculations. Ramannoodle supports molecular-dynamics- and phonon-based Raman calculations. It includes interfaces with VASP but can easily be used with other codes using IO from external libraries, such as pymatgen or ase.

Ramannoodle aims to be:

  1. EFFICIENT

    Ramannoodle provides PolarizabilityModel's to reduce the required number of first-principles polarizability calculations.

  2. FLEXIBLE

    Ramannoodle provides a simple, object-oriented API that makes calculations a breeze while offering plenty of flexibility to carry out advanced analyses and add new functionality.

  3. TRANSPARENT

    Ramannoodle is designed to give the user a good understanding of what is being calculated at varying levels of abstraction.

Installation

The base version of ramannoodle can be installed with pip:

$ pip install ramannoodle

Ramannoodle's machine learning modules are implemented with PyTorch. To use these modules:

  1. Install PyTorch.
  2. Install torch-scatter and torch-sparse corresponding to the PyTorch version/implementation.
  3. Install ramannoodle using the torch options group.

For example, installation on a Linux system using PyTorch 2.4.1 (cpu implementation) is done as follows:

$ pip install torch==2.4.1+cpu --index-url https://download.pytorch.org/whl/cpu
$ pip install torch-scatter torch-sparse -f https://data.pyg.org/whl/torch-2.4.0+cpu.html
$ pip install ramannoodle[torch]

Ramannoodle includes interfaces with pymatgen. To use these interfaces, ramannoodle should be installed with the pymatgen options group:

$ pip install ramannoodle[pymatgen]

Tutorials and docs

https://ramannoodle.readthedocs.io/

Contributing

Contributions in the form of bug reports, feature suggestions, and pull requests are always welcome! Those contributing code should check out the dev guide.

Citing

To acknowledge use of ramannoodle, please cite

Rapid Characterization of Point Defects in Solid-State Ion Conductors Using Raman Spectroscopy, Machine-Learning Force Fields, and Atomic Raman Tensors
W. O’Leary, M. Grumet, W. Kaiser, T. Bučko, J.L.M. Rupp, D.A. Egger
Journal of the American Chemical Society (2024)
doi: 10.1021/jacs.4c07812