materialsproject / crystaltoolkit

Crystal Toolkit is a framework for building web apps for materials science and is currently powering the new Materials Project website.
https://docs.crystaltoolkit.org
Other
155 stars 59 forks source link

Simpler molecule graph support + performance enhancement to XRD plot #334

Open orionarcher opened 1 year ago

orionarcher commented 1 year ago

Features

This PR implements two completely separate features:

  1. It cleans up the support for MoleculeGraphs in structure.py
  2. It vectorizes the XRD implementation to improve performance 30x

For feature 1, I had implemented this locally before MoleculeGraph support was added. I think my implementation was a bit cleaner so I propose replacing the current one.

For feature 2, I had implemented this vectorization in mp-web for the IRSpectra. @mattmcdermott suggested I push upstream. This is not an exact port of my code in the IRSpectra, so it's possible there are bugs. I don't have a good testing env set up, so it should be tested before being merged. I probably won't have time to clean this up further but I definitely think it's worth doing!

Checklist

Work-in-progress pull requests are encouraged but please mark your PR as draft.

Usually, the following items should be checked before merging a PR:

orionarcher commented 1 year ago

Hey @yang-ruoxi. This is a 30x performance improvement over the current implementation but I won't have any time to test it further. I do think it's worth finalizing the implementation if you have the bandwidth! Happy to chat more.

yang-ruoxi commented 1 year ago

thanks @orionarcher ! this is very nice. I will test it soon!