Skip to content

Releases: wolearyc/ramannoodle

0.5.0

04 Oct 01:12
Compare
Choose a tag to compare

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 pymatgen Structure'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

26 Sep 21:10
89355f3
Compare
Choose a tag to compare

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.
    • ramannoodle.dataset.torch.PolarizabilityDataset for training and evaluating PotGNN d118aee
    • ramannoodle.pmodel.torch.train module for convenient training of PotGNN. b24a7a4
  • [torch] install options for pip. Installing ramannoodle with these options (after installing the requisite PyTorch packages) gives access to PyTorch model functionality. 6a6a4c2
  • read_structure_and_polarizability function for vasprun.xml files. 738d6f4

API Changes

  • Renamed UsageError toUserError b7b08dd
  • Renamed most *utils modules to simply utils. 4c67d49
  • Renamed globals module to constants to avoid conflicts with the build-in globals() function
  • Renamed polarizability package to pmodel 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() with np.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

31 Aug 22:49
2a3d414
Compare
Choose a tag to compare

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
    • Read/write support for XDATCAR ea00e68
    • Read support for vasprun.xml 6974243
    • Trajectory reading from OUTCARs bef82ce

API changes

  • PolarizabilityModel.get_polarizability -> PolarizabilityModel.calc_polarizabilities 0b9bde9 ef5c6b1
    • calc_polarizabilities takes fractional positions instead of Cartesian displacements 50fc9ff
    • calc_polarizabilities takes a batch of fractional positions 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 default out_wavenumbers 8419de1
  • Dependency management
    • Specify minimum dependencies c6e76d8
    • Github action to check minimum dependencies c6e76d8
    • tabulate is now a listed dependency c6e76d8
  • Action runners for macos, windows 56c7c69 6c911ac

Documentation updates

  • Molecular dynamics tutorial 88242fe
  • Update readme to highlight MD features ee4558a
  • Extensive improvements to tutorials and documentation ee4558a 9bb180a

0.2.1

23 Aug 14:55
Compare
Choose a tag to compare

Bug fixes

  • Made algorithm for finding permutation matrices more robust to floating point errors, which in some cases could cause ReferenceStructure to throw an exception on construction 6ee84ee

0.2.0

16 Aug 20:03
Compare
Choose a tag to compare

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 of InterpolationModel.
  • 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.
  • Model masking allows degrees of freedom in InterpolationModel and ARTModel 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 to ramannoodle.structure.
  • Added ramannoodle.io.generic, which implements generic IO functionality. Subpackages, such as ramannoodle.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 to ReferenceStructure.

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

08 Aug 03:23
Compare
Choose a tag to compare

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

03 Aug 23:36
Compare
Choose a tag to compare
v0.1.0-alpha Pre-release
Pre-release

Implemented basic functionality: phonons, polarizability models, and calculation of Raman spectra.

This pre-release package can be installed using pip:
pip install ramannoodle