Releases: wolearyc/ramannoodle
0.5.0
This update adds pymatgen interfaces to ramannoodle. Through pymatgen, ramannoodle is now compatible with more DFT packages.
New features
io.pymatgen
module for interacting with pymatgenStructure
's,Trajectory
's, etc. 4984f65- Added
InterpolationModel.add_dof_from_pymatgen
for building interpolation models from pymatgen objects. a6786f6 - Added
ARTModel.add_art_from_pymatgen
for building ART models from pymatgen objects 4984f65 - Added
[pymatgen]
install option group to enable pymatgen interfaces f3bd2b7
Improvements
- Explicitly specified public API using
__all__
in__init__.py
files f3bd2b7 - Reorganized scratch files written during testing f3bd2b7
- Made submodules private where appropriate f3bd2b7
Documentation
- Added a short pymatgen guide to the IO guide f3bd2b7
- Improved doc structure to better reflect public API (using private submodules) c20fa41
- Pymatgen lists ramannoodle as an external package materialsproject/pymatgen#4094
0.4.0
This version includes a brand-new polarizability model based on a graph neural network architecture!
New Features
PotGNN
, a polarizability model based on a graph neural network architecture and implemented using PyTorch and PyTorch-Geometric.[torch]
install options for pip. Installing ramannoodle with these options (after installing the requisite PyTorch packages) gives access to PyTorch model functionality. 6a6a4c2read_structure_and_polarizability
function for vasprun.xml files. 738d6f4
API Changes
- Renamed
UsageError
toUserError
b7b08dd - Renamed most
*utils
modules to simplyutils
. 4c67d49 - Renamed
globals
module toconstants
to avoid conflicts with the build-inglobals()
function - Renamed
polarizability
package topmodel
7aa554b
Enhancements and Bugfixes
- Added robot.txt for documentation 7984559
- Exception is now raised when
filepaths
parameters are empty (filepaths=[]
) 10ce3ed - Public API is now exposed from the root package. 7844905
- Replaced
np.close(...).all()
withnp.allclose(...)
4ac7389 - Added a progress bar for
Trajectory.get_spectrum
, which can take a while depending on the speed of the provided polarizability model 6c0567c
Documentation
- Cleaned up documentation
- Updated installation guide and citation in README.
- Added machine learning tutorial
0.3.0
This update brings molecular-dynamics-derived Raman spectra to ramannoodle! It also includes improved documentation and tutorials, minor API updates in preparation for the upcoming version 0.4.0, better dependency management, and more robust CI.
New features
-
Trajectory
class for storing molecular dynamics trajectories. a3e4508 -
MDRamanSpectrum
class for manipulating MD-derived Raman spectra. a3e4508 - New IO functions for VASP files
API changes
-
PolarizabilityModel.get_polarizability
->PolarizabilityModel.calc_polarizabilities
0b9bde9 ef5c6b1 -
calculate_displacement
->calc_displacement
7d596d5 -
Phonons
now includes reference positions and represents eigenvectors in fractional coordinates, rather than Cartesian coordinates. 50fc9ff -
InterpolationModel.equilibrium_polarizability
-->InterpolationModel.ref_polarizability
70fe3f8 -
file_paths
-->filepaths
4a4b030 -
ReferenceStructure.get_num_nonequivalent_atoms()
->ReferenceStructure.num_nonequivalent_atoms
(property). 77e4ca7 -
calc_displacement
computes displacement relative to first argument 2391109
Enhancements and bugfixes
- dependabot integration abc661d
- Renamed "*_file" args in private IO functions to simply "file" a613713
-
convolve_spectrum
uses better defaultout_wavenumbers
8419de1 - Dependency management
- Action runners for macos, windows 56c7c69 6c911ac
Documentation updates
0.2.1
0.2.0
Version 0.2.0 brings with it many new features as well as major changes to the public API. The public API will be more stable in future versions and will be completely stable after version 1.0.0.
New features
- Atomic Raman tensors (ARTs) implemented in
ARTModel
, a subclass ofInterpolationModel
. - Workflow for building polarizability models
- Utilities in
ramannoodle.structure.displace
to generate displaced structures for polarizability calculations, whose results are fed into polarizability models. - Dummy models to ensure these displaced structures cover all degrees of freedom before carrying out expensive polarizability calculations.
- Utilities in
- Model masking allows degrees of freedom in
InterpolationModel
andARTModel
to be enabled and disabled (masked) on the fly. This allows the calculation of partial Raman spectra, which are useful when studying point defects, for example. - Polarizability models implement
__repr__
, which helps users track model state. This is especially handy when using ramannoodle in Jupyter notebooks. - Read/write support for VASP POSCAR files.
DOFWarning
, which warns when a degree of freedom's data does not span zero (i.e. the equilibrium structure). This is not fatal, but is undesirable in nearly all cases.
Major API changes
- Restructured and reorganized packages and modules, including renaming
ramannoodle.symmetry
toramannoodle.structure
. - Added
ramannoodle.io.generic
, which implements generic IO functionality. Subpackages, such asramannoodle.io.vasp.poscar
, are now the preferred way to read and write files. - Changed getters/setters to properties.
- Arguments use fractional coordinates by default. Cartesian arguments now have the
cart_
prefix.
Minor enhancements and bugfixes
- NDArray shape checking functions are more flexible.
- Added additional tests to achieve >95% coverage.
- Renamed
StructuralSymmetry
toReferenceStructure
.
Documentation updates
- Documentation has a much higher level of polish.
- Clarified units, both in docstrings and in the guides.
- Added new guides
- Full tutorial covering displaced structure generation and dummy models.
- Masking tutorial
- Guide to interfacing with first principles codes, including information on supported file formats.
- Added logo to sidebar.
- Added a developer guide.
Full Changelog: v0.1.1-alpha...0.2.0
0.1.1-alpha
This release focused largely on improving code reliability, documentation, and performance.
- Added more thorough exception handling, including better argument type and value validation. This should make the API much more pleasant to use.
- Added additional tests to to cover exception cases.
- Implemented faster algorithm for determining permutation matrices associated with symmetry operations. These matrices are essential to determining symmetrically equivalent displacements. Algorithm went from O(n^2) to O(nlog(n)), and initializing symmetries is now extremely fast.
- Documentation has been greatly improved. Added introduction, basic tutorial (based on Jupyter notebook), and developer guide. Also tweaked code documentation to improve consistency and readability.
Full Changelog: v0.1.0-alpha...v0.1.1-alpha
v0.1.0-alpha
Implemented basic functionality: phonons, polarizability models, and calculation of Raman spectra.
This pre-release package can be installed using pip:
pip install ramannoodle