Skip to content

Add Vibrational Density of States (VDoS) widget - #119

Merged
PardhavMaradani merged 1 commit into
MDAnalysis:mainfrom
PardhavMaradani:add-vdos-widget
Nov 6, 2026
Merged

PardhavMaradani merged 1 commit into
MDAnalysis:mainfrom
PardhavMaradani:add-vdos-widget

Conversation

@PardhavMaradani

Copy link
Copy Markdown
Member

Changes made in this Pull Request:

LLM / AI generated code disclosure

LLMs or other AI-powered tools (beyond simple IDE use cases) were used in this contribution: no

PR Checklist

  • Tests?
  • Docs?
  • CHANGELOG updated?
  • Issue raised/referenced?
  • I have read and understand the current AI Policy
  • LLM / AI disclosure was updated.

cc: @HeydenLabASU , @amruthesht

Given mdadash now has weights support for ACF (as part of PR #112), I added support for showing VDoS calculated from the mass weighted VACF. I used HeydenLabASU-collab/trvdos as a reference for this implementation.

The values are a match to the ones from trvdos. Here are more details about the comparisons:

  • I used the data from this comment
    • topol.tpr and traj.trr - 1001 frames
  • For trvdos data, I used the devtools/examples/example.ipynb notebook with the above input files
    • mdadash is run with the same topology and trajectory files
  • Lag time of 100 frames
  • mdadash shows normalized values for both VACF and VDoS

First, here are the VACF comparisons for different selections:

selection trvdos mdadash
protein trvdos-vacf-protein mdadash-vacf-protein
resid 1 trvdos-vacf-r1 mdadash-vacf-r1
resid 100:115 trvdos-vacf-r100-115 mdadash-vacf-r100-115

Here are the VDoS comparisons for the above selecitons:

selection trvdos mdadash
protein trvdos-vdos-protein mdadash-vdos-protein
resid 1 trvdos-vdos-r1 mdadash-vdos-r1
resid 100:115 trvdos-vdos-r100-115 mdadash-vdos-r100-115

A few notes about the data above:

  • trvdos starts calculating VACF after the window is full (if(tStep>=nCorr-1) {), where as mdadash accounts for the lags from the very first frame - there could be very minor differences due to this
  • mdadash uses normalized (to 1) values for VDoS and the normalization for VACF is configurable in the widget (enabled for plots above)
  • mass weights were used in the mdadash VACF widget to be comparable to trvdos, the new VDoS widget implicitly uses mass weighting for the VACF
  • trvdos has an issue with arbitrary selections - see Arbitrary selections do not work and lead to memory corruption HeydenLabASU-collab/trvdos#11
    • Only selections that return all residue atoms in the ag were used above due to this (mdadash allows arbitrary selections)

@HeydenLabASU , @amruthesht, I'd be happy to update this if you think any other changes are needed here. Thanks

@codecov

codecov Bot commented Nov 6, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (c1c25ad) to head (1ff8c32).

Additional details and impacted files
Components Coverage Δ
frontend 100.00% <ø> (ø)
backend 100.00% <100.00%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@PardhavMaradani
PardhavMaradani merged commit 0f2df29 into MDAnalysis:main Nov 6, 2026
20 checks passed
@PardhavMaradani
PardhavMaradani deleted the add-vdos-widget branch November 6, 2026 12:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant