Repository files navigation

DiffEnergy

Source code for "Can We Extract Physics-like Energies from Generative Protein Diffusion Models?"S. Sarma, H. Truscott, D. Xu, K. Reid, L. Chu, J. Chen, J. Gray

Install

Set up conda enviroment and install as following:

conda create -n diffenergy python=3.10
conda activate diffenergy
cd /path/to/repo/root
pip install .

To install in editable mode, use:

pip install -e .

Usage

Scripts for model inference, likelihood calculation, and other tools can be found in the scripts folder. Hydra configs for training, inference, likelihood, and force calcluations are in the configs folder. Most scripts directly call classes in diffenergy/gaussian_1d/inference.py or diffenergy/dfmdock/inference.py. Scripts for generating figure plots are in the figures folder. Sampling and likelihood results as used in the paper can be found in the results directory, where inference scripts will output and the figure scripts will reference by default.

Most results files as generated for the paper are present in the results directory, with notable exception of the large folder containing the DFMDock inference trajectories (results/sample_results/dfmdock/trajectories). The complete results folder is hosted at https://zenodo.org/records/20817112.

Sampling

This code allows for sampling from our trimodel Gaussian modal and the modified dfmdock with python scripts/sample_gaussian_1d.py --config-name=sample_gaussian_1d and python scripts/sample_dfmdock.py --config-name=sample_dfmdock respectively.

Likelihood Calculation

Use likelihood_gaussian_1d.py or likelihood_dfmdock.py in the scripts folder for computing likelihood for the 1D Gaussian case or the translational DFMDock case respectively. These files require you to specify the integration method (ode vs diff, rk4 vs trapezoid vs piecewise ODE) and integration path (flow, diffusion, and others) in a hydra config passed with the --config-name command line option. Configs for flow and diffusion (trapezoid integration and piecewise ODE integration) can be found in the configs folder. For example, to compute likelihoods of dfmdock samples using flow trajectories, use the following command:

python scripts/likelihood_dfmdock.py --config-name=dfmdock_flow

Settings like input/output directory, whether to save the computed trajectories, checkpoint file, and many others can be overwritten using the command line by way of hydra overrides, like so:

python scripts/likelihood_dfmdock.py --config-name=dfmdock_diff_piecewise_ode out_dir=results_2 checkpoint=checkpoints/alternate_weights.ckpt

One particularly useful override is to set resume_existing=True:

python scripts/likelihood_gaussian_1d.py --config-name=gaussian_diff_trapezoid ++resume_existing=True

which will tell the program to continue running an existing likelihood, sampling, or force computation operation in out_dir, only processing samples it has not already computed. If neither resume_existing=True or overwrite_output=True (deletes existing output and starts from scratch) are set, the program will raise an exception.

Other likelihood configs include: computing the learned energy at each point along a diffusion trajectory using flow (dfmdock_traj_flow) and computing the learned energy of the ground truth structures (dfmdock_gt_flow).

Config options for alternate paths, integration methods, and other options can be found in the three inference.py files, as well as in additional config files in the configs folder.

Force Calculation

Use scripts/get_gaussian_forces.py and scripts/get_dfmdock_forces.py with configs gaussian_traj_forces and dfmdock_traj_forces to record the forces (among other metrics) along Gaussian and dfmdock trajectories respectively.

Rosetta Interface Scoring

Flags, sample slurm scripts, and a postprocessing python script (score_to_csv.py) can be found in the scripts/rosetta_refine for running the Rosetta docking protocol to compute interface scores for complexes. Alternatively (and recommended), scripts/rosetta_score.py wraps the calling of the rosetta binary and postprocessing to share a similar configuration format to likelihood computation. Running python scripts/rosetta_score.py --config-name=rosetta_db5_scores and python scripts/rosetta_score.py --config-name=rosetta_dfmdock_scores generates rosetta score csv outputs for the ground-truth DB5.5 and the dfmdock-generated samples respectively.

Figure Generation

The code for generating the plots in figures 2-6 as well as the supplemental grid can be found in the figures folder. This code assumes sampling, likelihood, force, and rosetta computation as in the included config files, though it should be usable otherwise with small modifications.

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

DiffEnergy

Source code for "Can We Extract Physics-like Energies from Generative Protein Diffusion Models?"S. Sarma, H. Truscott, D. Xu, K. Reid, L. Chu, J. Chen, J. Gray

Install

Set up conda enviroment and install as following:

conda create -n diffenergy python=3.10
conda activate diffenergy
cd /path/to/repo/root
pip install .

To install in editable mode, use:

pip install -e .

Usage

Scripts for model inference, likelihood calculation, and other tools can be found in the scripts folder. Hydra configs for training, inference, likelihood, and force calcluations are in the configs folder. Most scripts directly call classes in diffenergy/gaussian_1d/inference.py or diffenergy/dfmdock/inference.py. Scripts for generating figure plots are in the figures folder. Sampling and likelihood results as used in the paper can be found in the results directory, where inference scripts will output and the figure scripts will reference by default.

Most results files as generated for the paper are present in the results directory, with notable exception of the large folder containing the DFMDock inference trajectories (results/sample_results/dfmdock/trajectories). The complete results folder is hosted at https://zenodo.org/records/20817112.

Sampling

This code allows for sampling from our trimodel Gaussian modal and the modified dfmdock with python scripts/sample_gaussian_1d.py --config-name=sample_gaussian_1d and python scripts/sample_dfmdock.py --config-name=sample_dfmdock respectively.

Likelihood Calculation

Use likelihood_gaussian_1d.py or likelihood_dfmdock.py in the scripts folder for computing likelihood for the 1D Gaussian case or the translational DFMDock case respectively. These files require you to specify the integration method (ode vs diff, rk4 vs trapezoid vs piecewise ODE) and integration path (flow, diffusion, and others) in a hydra config passed with the --config-name command line option. Configs for flow and diffusion (trapezoid integration and piecewise ODE integration) can be found in the configs folder. For example, to compute likelihoods of dfmdock samples using flow trajectories, use the following command:

python scripts/likelihood_dfmdock.py --config-name=dfmdock_flow

Settings like input/output directory, whether to save the computed trajectories, checkpoint file, and many others can be overwritten using the command line by way of hydra overrides, like so:

python scripts/likelihood_dfmdock.py --config-name=dfmdock_diff_piecewise_ode out_dir=results_2 checkpoint=checkpoints/alternate_weights.ckpt

One particularly useful override is to set resume_existing=True:

python scripts/likelihood_gaussian_1d.py --config-name=gaussian_diff_trapezoid ++resume_existing=True

which will tell the program to continue running an existing likelihood, sampling, or force computation operation in out_dir, only processing samples it has not already computed. If neither resume_existing=True or overwrite_output=True (deletes existing output and starts from scratch) are set, the program will raise an exception.

Other likelihood configs include: computing the learned energy at each point along a diffusion trajectory using flow (dfmdock_traj_flow) and computing the learned energy of the ground truth structures (dfmdock_gt_flow).

Config options for alternate paths, integration methods, and other options can be found in the three inference.py files, as well as in additional config files in the configs folder.

Force Calculation

Use scripts/get_gaussian_forces.py and scripts/get_dfmdock_forces.py with configs gaussian_traj_forces and dfmdock_traj_forces to record the forces (among other metrics) along Gaussian and dfmdock trajectories respectively.

Rosetta Interface Scoring

Flags, sample slurm scripts, and a postprocessing python script (score_to_csv.py) can be found in the scripts/rosetta_refine for running the Rosetta docking protocol to compute interface scores for complexes. Alternatively (and recommended), scripts/rosetta_score.py wraps the calling of the rosetta binary and postprocessing to share a similar configuration format to likelihood computation. Running python scripts/rosetta_score.py --config-name=rosetta_db5_scores and python scripts/rosetta_score.py --config-name=rosetta_dfmdock_scores generates rosetta score csv outputs for the ground-truth DB5.5 and the dfmdock-generated samples respectively.

Figure Generation

The code for generating the plots in figures 2-6 as well as the supplemental grid can be found in the figures folder. This code assumes sampling, likelihood, force, and rosetta computation as in the included config files, though it should be usable otherwise with small modifications.

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DiffEnergy

Source code for "Can We Extract Physics-like Energies from Generative Protein Diffusion Models?"S. Sarma, H. Truscott, D. Xu, K. Reid, L. Chu, J. Chen, J. Gray

Install

Set up conda enviroment and install as following:

conda create -n diffenergy python=3.10
conda activate diffenergy
cd /path/to/repo/root
pip install .

To install in editable mode, use:

pip install -e .

Usage

Scripts for model inference, likelihood calculation, and other tools can be found in the scripts folder. Hydra configs for training, inference, likelihood, and force calcluations are in the configs folder. Most scripts directly call classes in diffenergy/gaussian_1d/inference.py or diffenergy/dfmdock/inference.py. Scripts for generating figure plots are in the figures folder. Sampling and likelihood results as used in the paper can be found in the results directory, where inference scripts will output and the figure scripts will reference by default.

Most results files as generated for the paper are present in the results directory, with notable exception of the large folder containing the DFMDock inference trajectories (results/sample_results/dfmdock/trajectories). The complete results folder is hosted at https://zenodo.org/records/20817112.

Sampling

This code allows for sampling from our trimodel Gaussian modal and the modified dfmdock with python scripts/sample_gaussian_1d.py --config-name=sample_gaussian_1d and python scripts/sample_dfmdock.py --config-name=sample_dfmdock respectively.

Likelihood Calculation

Use likelihood_gaussian_1d.py or likelihood_dfmdock.py in the scripts folder for computing likelihood for the 1D Gaussian case or the translational DFMDock case respectively. These files require you to specify the integration method (ode vs diff, rk4 vs trapezoid vs piecewise ODE) and integration path (flow, diffusion, and others) in a hydra config passed with the --config-name command line option. Configs for flow and diffusion (trapezoid integration and piecewise ODE integration) can be found in the configs folder. For example, to compute likelihoods of dfmdock samples using flow trajectories, use the following command:

python scripts/likelihood_dfmdock.py --config-name=dfmdock_flow

Settings like input/output directory, whether to save the computed trajectories, checkpoint file, and many others can be overwritten using the command line by way of hydra overrides, like so:

python scripts/likelihood_dfmdock.py --config-name=dfmdock_diff_piecewise_ode out_dir=results_2 checkpoint=checkpoints/alternate_weights.ckpt

One particularly useful override is to set resume_existing=True:

python scripts/likelihood_gaussian_1d.py --config-name=gaussian_diff_trapezoid ++resume_existing=True

which will tell the program to continue running an existing likelihood, sampling, or force computation operation in out_dir, only processing samples it has not already computed. If neither resume_existing=True or overwrite_output=True (deletes existing output and starts from scratch) are set, the program will raise an exception.

Other likelihood configs include: computing the learned energy at each point along a diffusion trajectory using flow (dfmdock_traj_flow) and computing the learned energy of the ground truth structures (dfmdock_gt_flow).

Config options for alternate paths, integration methods, and other options can be found in the three inference.py files, as well as in additional config files in the configs folder.

Force Calculation

Use scripts/get_gaussian_forces.py and scripts/get_dfmdock_forces.py with configs gaussian_traj_forces and dfmdock_traj_forces to record the forces (among other metrics) along Gaussian and dfmdock trajectories respectively.

Rosetta Interface Scoring

Flags, sample slurm scripts, and a postprocessing python script (score_to_csv.py) can be found in the scripts/rosetta_refine for running the Rosetta docking protocol to compute interface scores for complexes. Alternatively (and recommended), scripts/rosetta_score.py wraps the calling of the rosetta binary and postprocessing to share a similar configuration format to likelihood computation. Running python scripts/rosetta_score.py --config-name=rosetta_db5_scores and python scripts/rosetta_score.py --config-name=rosetta_dfmdock_scores generates rosetta score csv outputs for the ground-truth DB5.5 and the dfmdock-generated samples respectively.

Figure Generation

The code for generating the plots in figures 2-6 as well as the supplemental grid can be found in the figures folder. This code assumes sampling, likelihood, force, and rosetta computation as in the included config files, though it should be usable otherwise with small modifications.

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DiffEnergy

Source code for "Can We Extract Physics-like Energies from Generative Protein Diffusion Models?"S. Sarma, H. Truscott, D. Xu, K. Reid, L. Chu, J. Chen, J. Gray

Install

Set up conda enviroment and install as following:

conda create -n diffenergy python=3.10
conda activate diffenergy
cd /path/to/repo/root
pip install .

To install in editable mode, use:

pip install -e .

Usage

Scripts for model inference, likelihood calculation, and other tools can be found in the scripts folder. Hydra configs for training, inference, likelihood, and force calcluations are in the configs folder. Most scripts directly call classes in diffenergy/gaussian_1d/inference.py or diffenergy/dfmdock/inference.py. Scripts for generating figure plots are in the figures folder. Sampling and likelihood results as used in the paper can be found in the results directory, where inference scripts will output and the figure scripts will reference by default.

Most results files as generated for the paper are present in the results directory, with notable exception of the large folder containing the DFMDock inference trajectories (results/sample_results/dfmdock/trajectories). The complete results folder is hosted at https://zenodo.org/records/20817112.

Sampling

This code allows for sampling from our trimodel Gaussian modal and the modified dfmdock with python scripts/sample_gaussian_1d.py --config-name=sample_gaussian_1d and python scripts/sample_dfmdock.py --config-name=sample_dfmdock respectively.

Likelihood Calculation

Use likelihood_gaussian_1d.py or likelihood_dfmdock.py in the scripts folder for computing likelihood for the 1D Gaussian case or the translational DFMDock case respectively. These files require you to specify the integration method (ode vs diff, rk4 vs trapezoid vs piecewise ODE) and integration path (flow, diffusion, and others) in a hydra config passed with the --config-name command line option. Configs for flow and diffusion (trapezoid integration and piecewise ODE integration) can be found in the configs folder. For example, to compute likelihoods of dfmdock samples using flow trajectories, use the following command:

python scripts/likelihood_dfmdock.py --config-name=dfmdock_flow

Settings like input/output directory, whether to save the computed trajectories, checkpoint file, and many others can be overwritten using the command line by way of hydra overrides, like so:

python scripts/likelihood_dfmdock.py --config-name=dfmdock_diff_piecewise_ode out_dir=results_2 checkpoint=checkpoints/alternate_weights.ckpt

One particularly useful override is to set resume_existing=True:

python scripts/likelihood_gaussian_1d.py --config-name=gaussian_diff_trapezoid ++resume_existing=True

which will tell the program to continue running an existing likelihood, sampling, or force computation operation in out_dir, only processing samples it has not already computed. If neither resume_existing=True or overwrite_output=True (deletes existing output and starts from scratch) are set, the program will raise an exception.

Other likelihood configs include: computing the learned energy at each point along a diffusion trajectory using flow (dfmdock_traj_flow) and computing the learned energy of the ground truth structures (dfmdock_gt_flow).

Config options for alternate paths, integration methods, and other options can be found in the three inference.py files, as well as in additional config files in the configs folder.

Force Calculation

Use scripts/get_gaussian_forces.py and scripts/get_dfmdock_forces.py with configs gaussian_traj_forces and dfmdock_traj_forces to record the forces (among other metrics) along Gaussian and dfmdock trajectories respectively.

Rosetta Interface Scoring

Flags, sample slurm scripts, and a postprocessing python script (score_to_csv.py) can be found in the scripts/rosetta_refine for running the Rosetta docking protocol to compute interface scores for complexes. Alternatively (and recommended), scripts/rosetta_score.py wraps the calling of the rosetta binary and postprocessing to share a similar configuration format to likelihood computation. Running python scripts/rosetta_score.py --config-name=rosetta_db5_scores and python scripts/rosetta_score.py --config-name=rosetta_dfmdock_scores generates rosetta score csv outputs for the ground-truth DB5.5 and the dfmdock-generated samples respectively.

Figure Generation

The code for generating the plots in figures 2-6 as well as the supplemental grid can be found in the figures folder. This code assumes sampling, likelihood, force, and rosetta computation as in the included config files, though it should be usable otherwise with small modifications.

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

DiffEnergy

Source code for "Can We Extract Physics-like Energies from Generative Protein Diffusion Models?"S. Sarma, H. Truscott, D. Xu, K. Reid, L. Chu, J. Chen, J. Gray

Install

Set up conda enviroment and install as following:

conda create -n diffenergy python=3.10
conda activate diffenergy
cd /path/to/repo/root
pip install .

To install in editable mode, use:

pip install -e .

Usage

Scripts for model inference, likelihood calculation, and other tools can be found in the scripts folder. Hydra configs for training, inference, likelihood, and force calcluations are in the configs folder. Most scripts directly call classes in diffenergy/gaussian_1d/inference.py or diffenergy/dfmdock/inference.py. Scripts for generating figure plots are in the figures folder. Sampling and likelihood results as used in the paper can be found in the results directory, where inference scripts will output and the figure scripts will reference by default.

Most results files as generated for the paper are present in the results directory, with notable exception of the large folder containing the DFMDock inference trajectories (results/sample_results/dfmdock/trajectories). The complete results folder is hosted at https://zenodo.org/records/20817112.

Sampling

This code allows for sampling from our trimodel Gaussian modal and the modified dfmdock with python scripts/sample_gaussian_1d.py --config-name=sample_gaussian_1d and python scripts/sample_dfmdock.py --config-name=sample_dfmdock respectively.

Likelihood Calculation

Use likelihood_gaussian_1d.py or likelihood_dfmdock.py in the scripts folder for computing likelihood for the 1D Gaussian case or the translational DFMDock case respectively. These files require you to specify the integration method (ode vs diff, rk4 vs trapezoid vs piecewise ODE) and integration path (flow, diffusion, and others) in a hydra config passed with the --config-name command line option. Configs for flow and diffusion (trapezoid integration and piecewise ODE integration) can be found in the configs folder. For example, to compute likelihoods of dfmdock samples using flow trajectories, use the following command:

python scripts/likelihood_dfmdock.py --config-name=dfmdock_flow

Settings like input/output directory, whether to save the computed trajectories, checkpoint file, and many others can be overwritten using the command line by way of hydra overrides, like so:

python scripts/likelihood_dfmdock.py --config-name=dfmdock_diff_piecewise_ode out_dir=results_2 checkpoint=checkpoints/alternate_weights.ckpt

One particularly useful override is to set resume_existing=True:

python scripts/likelihood_gaussian_1d.py --config-name=gaussian_diff_trapezoid ++resume_existing=True

which will tell the program to continue running an existing likelihood, sampling, or force computation operation in out_dir, only processing samples it has not already computed. If neither resume_existing=True or overwrite_output=True (deletes existing output and starts from scratch) are set, the program will raise an exception.

Other likelihood configs include: computing the learned energy at each point along a diffusion trajectory using flow (dfmdock_traj_flow) and computing the learned energy of the ground truth structures (dfmdock_gt_flow).

Config options for alternate paths, integration methods, and other options can be found in the three inference.py files, as well as in additional config files in the configs folder.

Force Calculation

Use scripts/get_gaussian_forces.py and scripts/get_dfmdock_forces.py with configs gaussian_traj_forces and dfmdock_traj_forces to record the forces (among other metrics) along Gaussian and dfmdock trajectories respectively.

Rosetta Interface Scoring

Flags, sample slurm scripts, and a postprocessing python script (score_to_csv.py) can be found in the scripts/rosetta_refine for running the Rosetta docking protocol to compute interface scores for complexes. Alternatively (and recommended), scripts/rosetta_score.py wraps the calling of the rosetta binary and postprocessing to share a similar configuration format to likelihood computation. Running python scripts/rosetta_score.py --config-name=rosetta_db5_scores and python scripts/rosetta_score.py --config-name=rosetta_dfmdock_scores generates rosetta score csv outputs for the ground-truth DB5.5 and the dfmdock-generated samples respectively.

Figure Generation

The code for generating the plots in figures 2-6 as well as the supplemental grid can be found in the figures folder. This code assumes sampling, likelihood, force, and rosetta computation as in the included config files, though it should be usable otherwise with small modifications.

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DiffEnergy

Source code for "Can We Extract Physics-like Energies from Generative Protein Diffusion Models?"S. Sarma, H. Truscott, D. Xu, K. Reid, L. Chu, J. Chen, J. Gray

Install

Set up conda enviroment and install as following:

conda create -n diffenergy python=3.10
conda activate diffenergy
cd /path/to/repo/root
pip install .

To install in editable mode, use:

pip install -e .

Usage

Scripts for model inference, likelihood calculation, and other tools can be found in the scripts folder. Hydra configs for training, inference, likelihood, and force calcluations are in the configs folder. Most scripts directly call classes in diffenergy/gaussian_1d/inference.py or diffenergy/dfmdock/inference.py. Scripts for generating figure plots are in the figures folder. Sampling and likelihood results as used in the paper can be found in the results directory, where inference scripts will output and the figure scripts will reference by default.

Most results files as generated for the paper are present in the results directory, with notable exception of the large folder containing the DFMDock inference trajectories (results/sample_results/dfmdock/trajectories). The complete results folder is hosted at https://zenodo.org/records/20817112.

Sampling

This code allows for sampling from our trimodel Gaussian modal and the modified dfmdock with python scripts/sample_gaussian_1d.py --config-name=sample_gaussian_1d and python scripts/sample_dfmdock.py --config-name=sample_dfmdock respectively.

Likelihood Calculation

Use likelihood_gaussian_1d.py or likelihood_dfmdock.py in the scripts folder for computing likelihood for the 1D Gaussian case or the translational DFMDock case respectively. These files require you to specify the integration method (ode vs diff, rk4 vs trapezoid vs piecewise ODE) and integration path (flow, diffusion, and others) in a hydra config passed with the --config-name command line option. Configs for flow and diffusion (trapezoid integration and piecewise ODE integration) can be found in the configs folder. For example, to compute likelihoods of dfmdock samples using flow trajectories, use the following command:

python scripts/likelihood_dfmdock.py --config-name=dfmdock_flow

Settings like input/output directory, whether to save the computed trajectories, checkpoint file, and many others can be overwritten using the command line by way of hydra overrides, like so:

python scripts/likelihood_dfmdock.py --config-name=dfmdock_diff_piecewise_ode out_dir=results_2 checkpoint=checkpoints/alternate_weights.ckpt

One particularly useful override is to set resume_existing=True:

python scripts/likelihood_gaussian_1d.py --config-name=gaussian_diff_trapezoid ++resume_existing=True

which will tell the program to continue running an existing likelihood, sampling, or force computation operation in out_dir, only processing samples it has not already computed. If neither resume_existing=True or overwrite_output=True (deletes existing output and starts from scratch) are set, the program will raise an exception.

Other likelihood configs include: computing the learned energy at each point along a diffusion trajectory using flow (dfmdock_traj_flow) and computing the learned energy of the ground truth structures (dfmdock_gt_flow).

Config options for alternate paths, integration methods, and other options can be found in the three inference.py files, as well as in additional config files in the configs folder.

Force Calculation

Use scripts/get_gaussian_forces.py and scripts/get_dfmdock_forces.py with configs gaussian_traj_forces and dfmdock_traj_forces to record the forces (among other metrics) along Gaussian and dfmdock trajectories respectively.

Rosetta Interface Scoring

Flags, sample slurm scripts, and a postprocessing python script (score_to_csv.py) can be found in the scripts/rosetta_refine for running the Rosetta docking protocol to compute interface scores for complexes. Alternatively (and recommended), scripts/rosetta_score.py wraps the calling of the rosetta binary and postprocessing to share a similar configuration format to likelihood computation. Running python scripts/rosetta_score.py --config-name=rosetta_db5_scores and python scripts/rosetta_score.py --config-name=rosetta_dfmdock_scores generates rosetta score csv outputs for the ground-truth DB5.5 and the dfmdock-generated samples respectively.

Figure Generation

The code for generating the plots in figures 2-6 as well as the supplemental grid can be found in the figures folder. This code assumes sampling, likelihood, force, and rosetta computation as in the included config files, though it should be usable otherwise with small modifications.

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DiffEnergy

Source code for "Can We Extract Physics-like Energies from Generative Protein Diffusion Models?"S. Sarma, H. Truscott, D. Xu, K. Reid, L. Chu, J. Chen, J. Gray

Install

Set up conda enviroment and install as following:

conda create -n diffenergy python=3.10
conda activate diffenergy
cd /path/to/repo/root
pip install .

To install in editable mode, use:

pip install -e .

Usage

Scripts for model inference, likelihood calculation, and other tools can be found in the scripts folder. Hydra configs for training, inference, likelihood, and force calcluations are in the configs folder. Most scripts directly call classes in diffenergy/gaussian_1d/inference.py or diffenergy/dfmdock/inference.py. Scripts for generating figure plots are in the figures folder. Sampling and likelihood results as used in the paper can be found in the results directory, where inference scripts will output and the figure scripts will reference by default.

Most results files as generated for the paper are present in the results directory, with notable exception of the large folder containing the DFMDock inference trajectories (results/sample_results/dfmdock/trajectories). The complete results folder is hosted at https://zenodo.org/records/20817112.

Sampling

This code allows for sampling from our trimodel Gaussian modal and the modified dfmdock with python scripts/sample_gaussian_1d.py --config-name=sample_gaussian_1d and python scripts/sample_dfmdock.py --config-name=sample_dfmdock respectively.

Likelihood Calculation

Use likelihood_gaussian_1d.py or likelihood_dfmdock.py in the scripts folder for computing likelihood for the 1D Gaussian case or the translational DFMDock case respectively. These files require you to specify the integration method (ode vs diff, rk4 vs trapezoid vs piecewise ODE) and integration path (flow, diffusion, and others) in a hydra config passed with the --config-name command line option. Configs for flow and diffusion (trapezoid integration and piecewise ODE integration) can be found in the configs folder. For example, to compute likelihoods of dfmdock samples using flow trajectories, use the following command:

python scripts/likelihood_dfmdock.py --config-name=dfmdock_flow

Settings like input/output directory, whether to save the computed trajectories, checkpoint file, and many others can be overwritten using the command line by way of hydra overrides, like so:

python scripts/likelihood_dfmdock.py --config-name=dfmdock_diff_piecewise_ode out_dir=results_2 checkpoint=checkpoints/alternate_weights.ckpt

One particularly useful override is to set resume_existing=True:

python scripts/likelihood_gaussian_1d.py --config-name=gaussian_diff_trapezoid ++resume_existing=True

which will tell the program to continue running an existing likelihood, sampling, or force computation operation in out_dir, only processing samples it has not already computed. If neither resume_existing=True or overwrite_output=True (deletes existing output and starts from scratch) are set, the program will raise an exception.

Other likelihood configs include: computing the learned energy at each point along a diffusion trajectory using flow (dfmdock_traj_flow) and computing the learned energy of the ground truth structures (dfmdock_gt_flow).

Config options for alternate paths, integration methods, and other options can be found in the three inference.py files, as well as in additional config files in the configs folder.

Force Calculation

Use scripts/get_gaussian_forces.py and scripts/get_dfmdock_forces.py with configs gaussian_traj_forces and dfmdock_traj_forces to record the forces (among other metrics) along Gaussian and dfmdock trajectories respectively.

Rosetta Interface Scoring

Flags, sample slurm scripts, and a postprocessing python script (score_to_csv.py) can be found in the scripts/rosetta_refine for running the Rosetta docking protocol to compute interface scores for complexes. Alternatively (and recommended), scripts/rosetta_score.py wraps the calling of the rosetta binary and postprocessing to share a similar configuration format to likelihood computation. Running python scripts/rosetta_score.py --config-name=rosetta_db5_scores and python scripts/rosetta_score.py --config-name=rosetta_dfmdock_scores generates rosetta score csv outputs for the ground-truth DB5.5 and the dfmdock-generated samples respectively.

Figure Generation

The code for generating the plots in figures 2-6 as well as the supplemental grid can be found in the figures folder. This code assumes sampling, likelihood, force, and rosetta computation as in the included config files, though it should be usable otherwise with small modifications.

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

DiffEnergy

Source code for "Can We Extract Physics-like Energies from Generative Protein Diffusion Models?"S. Sarma, H. Truscott, D. Xu, K. Reid, L. Chu, J. Chen, J. Gray

Install

Set up conda enviroment and install as following:

conda create -n diffenergy python=3.10
conda activate diffenergy
cd /path/to/repo/root
pip install .

To install in editable mode, use:

pip install -e .

Usage

Scripts for model inference, likelihood calculation, and other tools can be found in the scripts folder. Hydra configs for training, inference, likelihood, and force calcluations are in the configs folder. Most scripts directly call classes in diffenergy/gaussian_1d/inference.py or diffenergy/dfmdock/inference.py. Scripts for generating figure plots are in the figures folder. Sampling and likelihood results as used in the paper can be found in the results directory, where inference scripts will output and the figure scripts will reference by default.

Most results files as generated for the paper are present in the results directory, with notable exception of the large folder containing the DFMDock inference trajectories (results/sample_results/dfmdock/trajectories). The complete results folder is hosted at https://zenodo.org/records/20817112.

Sampling

This code allows for sampling from our trimodel Gaussian modal and the modified dfmdock with python scripts/sample_gaussian_1d.py --config-name=sample_gaussian_1d and python scripts/sample_dfmdock.py --config-name=sample_dfmdock respectively.

Likelihood Calculation

Use likelihood_gaussian_1d.py or likelihood_dfmdock.py in the scripts folder for computing likelihood for the 1D Gaussian case or the translational DFMDock case respectively. These files require you to specify the integration method (ode vs diff, rk4 vs trapezoid vs piecewise ODE) and integration path (flow, diffusion, and others) in a hydra config passed with the --config-name command line option. Configs for flow and diffusion (trapezoid integration and piecewise ODE integration) can be found in the configs folder. For example, to compute likelihoods of dfmdock samples using flow trajectories, use the following command:

python scripts/likelihood_dfmdock.py --config-name=dfmdock_flow

Settings like input/output directory, whether to save the computed trajectories, checkpoint file, and many others can be overwritten using the command line by way of hydra overrides, like so:

python scripts/likelihood_dfmdock.py --config-name=dfmdock_diff_piecewise_ode out_dir=results_2 checkpoint=checkpoints/alternate_weights.ckpt

One particularly useful override is to set resume_existing=True:

python scripts/likelihood_gaussian_1d.py --config-name=gaussian_diff_trapezoid ++resume_existing=True

which will tell the program to continue running an existing likelihood, sampling, or force computation operation in out_dir, only processing samples it has not already computed. If neither resume_existing=True or overwrite_output=True (deletes existing output and starts from scratch) are set, the program will raise an exception.

Other likelihood configs include: computing the learned energy at each point along a diffusion trajectory using flow (dfmdock_traj_flow) and computing the learned energy of the ground truth structures (dfmdock_gt_flow).

Config options for alternate paths, integration methods, and other options can be found in the three inference.py files, as well as in additional config files in the configs folder.

Force Calculation

Use scripts/get_gaussian_forces.py and scripts/get_dfmdock_forces.py with configs gaussian_traj_forces and dfmdock_traj_forces to record the forces (among other metrics) along Gaussian and dfmdock trajectories respectively.

Rosetta Interface Scoring

Flags, sample slurm scripts, and a postprocessing python script (score_to_csv.py) can be found in the scripts/rosetta_refine for running the Rosetta docking protocol to compute interface scores for complexes. Alternatively (and recommended), scripts/rosetta_score.py wraps the calling of the rosetta binary and postprocessing to share a similar configuration format to likelihood computation. Running python scripts/rosetta_score.py --config-name=rosetta_db5_scores and python scripts/rosetta_score.py --config-name=rosetta_dfmdock_scores generates rosetta score csv outputs for the ground-truth DB5.5 and the dfmdock-generated samples respectively.

Figure Generation

The code for generating the plots in figures 2-6 as well as the supplemental grid can be found in the figures folder. This code assumes sampling, likelihood, force, and rosetta computation as in the included config files, though it should be usable otherwise with small modifications.

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages