{"id":10209,"date":"2024-06-06T10:22:50","date_gmt":"2024-06-06T09:22:50","guid":{"rendered":"https:\/\/www.blopig.com\/blog\/?p=10209"},"modified":"2024-06-06T10:24:25","modified_gmt":"2024-06-06T09:24:25","slug":"fine-tune-generated-molecular-poses-with-a-force-field","status":"publish","type":"post","link":"https:\/\/www.blopig.com\/blog\/2024\/06\/fine-tune-generated-molecular-poses-with-a-force-field\/","title":{"rendered":"Fine-tune generated molecular poses with a force field"},"content":{"rendered":"\n<p>Some molecular pose generation methods benefit from an energy relaxation post-processing step. <\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img data-recalc-dims=\"1\" decoding=\"async\" loading=\"lazy\" src=\"https:\/\/i0.wp.com\/github.com\/maabuu\/posebusters_em\/raw\/main\/images\/before_after.png?w=625&#038;ssl=1\" alt=\"Predicted pose before energy minimization\" style=\"width:655px;height:auto\"\/><figcaption class=\"wp-element-caption\">Example of a small molecule pose before and after energy minimization. The pose before minimization is shown in white, the optimized prediction is shown in pink, and a crystal pose is shown as reference in light blue. Note how the aromatic rings are flattened and the leftmost bond is shortened by the optimization.<\/figcaption><\/figure>\n\n\n\n<p>Here is a quick way to do this using OpenMM via a short script I prepared:<\/p>\n\n\n\n<!--more-->\n\n\n\n<h4 class=\"wp-block-heading\">1. Get script<a href=\"https:\/\/github.com\/maabuu\/posebusters_em#get-script\"><\/a><\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">git clone https:\/\/github.com\/maabuu\/posebusters_em.git\ncd posebusters_em<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">2. Setup environment<a href=\"https:\/\/github.com\/maabuu\/posebusters_em#setup-environment\"><\/a><\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">conda create -n posebusters_em openff-forcefields openff-interchange openff-toolkit \"openmm>=8\" \"openmmforcefields>=0.11\" pdbfixer \"rdkit>=2022\" -c conda-forge\nconda activate posebusters_em<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">3. Run minimization<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">python energy_minimization.py test_cases\/7MYU_ZR7\/7MYU_ZR7_protein.pdb test_cases\/7MYU_ZR7\/7MYU_ZR7_prediction.sdf 7MYU_ZR7_prediction_minimized.sdf -t cache_dir<\/pre>\n\n\n\n<p>This example takes ~2 minutes to run on a desktop computer. Depending on the system&#8217;s complexity, runs may take much longer.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>The script is available on <a href=\"https:\/\/github.com\/maabuu\/posebusters_em\">https:\/\/github.com\/maabuu\/posebusters_em<\/a>. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Some molecular pose generation methods benefit from an energy relaxation post-processing step. Here is a quick way to do this using OpenMM via a short script I prepared:<\/p>\n","protected":false},"author":92,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","wikipediapreview_detectlinks":true,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"ngg_post_thumbnail":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[187,296,447,258,291,227,201],"tags":[],"ppma_author":[487],"class_list":["post-10209","post","type-post","status-publish","format-standard","hentry","category-cheminformatics","category-hints-and-tips","category-molecular-design","category-optimization","category-protein-ligand-docking","category-python-code","category-small-molecules"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"authors":[{"term_id":487,"user_id":92,"is_guest":0,"slug":"martin","display_name":"Martin Buttenschoen","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/766a8e998df1df02635f3d2411a8526569f394d114b2fc9ebb896d84bb37484f?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/posts\/10209","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/users\/92"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/comments?post=10209"}],"version-history":[{"count":5,"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/posts\/10209\/revisions"}],"predecessor-version":[{"id":11385,"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/posts\/10209\/revisions\/11385"}],"wp:attachment":[{"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/media?parent=10209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/categories?post=10209"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/tags?post=10209"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=10209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}