{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"> ### In this tutorial we will cover:\n",
"> - how we can optimize conformations in biobuild"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When building a molecule we don't want to have any clashes in there. While Biobuild tries its best to avoid clashes during building, sometimes they still happen, especially when merging larger structures together. \n",
"\n",
"To get rid of them again, Biobuild offers a suite of optimization techniques to obtain better conformations for your molecules. Biobuild optimized molecules by rotating around bonds within the structures. This ensures that the resulting conformations are never skewed and is much faster to compute than classical \"atom wiggling\". The downside of it is that small changes in rotational angles can have large effects on the evaluation of a conformation, which can be challenging for some algorithms. \n",
"\n",
"We will go through how we can optimize molecules in Biobuild and discuss some good and bad practices.\n",
"\n",
"## Short summary\n",
"\n",
"Biobuild allows users to customize optimization workflows for better results. We encourage users to do so in order to improve the results. However, users not wishing to go to the trouble can make use of default settings and use short-cuts to get \"one-line\" optimized structures."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's work on the following molecule:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" \n",
" "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import plotly\n",
"plotly.offline.init_notebook_mode()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"customdata": [
[
"O7",
1,
1,
"PRP",
"A"
],
[
"O",
35,
2,
"SER",
"A"
],
[
"OG",
37,
2,
"SER",
"A"
],
[
"OXT",
38,
2,
"SER",
"A"
],
[
"O3",
43,
3,
"TBA",
"A"
],
[
"O1",
44,
3,
"TBA",
"A"
],
[
"O2",
77,
5,
"HAC",
"A"
],
[
"O1",
78,
5,
"HAC",
"A"
],
[
"O7",
84,
6,
"PRP",
"A"
],
[
"O",
118,
7,
"SER",
"A"
],
[
"OG",
120,
7,
"SER",
"A"
],
[
"OXT",
121,
7,
"SER",
"A"
],
[
"O3",
126,
8,
"TBA",
"A"
],
[
"O1",
127,
8,
"TBA",
"A"
]
],
"hovertemplate": "atom_element=O
x=%{x}
y=%{y}
z=%{z}
atom_id=%{customdata[0]}
atom_serial=%{customdata[1]}
residue_serial=%{customdata[2]}
residue_name=%{customdata[3]}
chain_id=%{customdata[4]}
x=%{x}
y=%{y}
z=%{z}
atom_id=%{customdata[0]}
atom_serial=%{customdata[1]}
residue_serial=%{customdata[2]}
residue_name=%{customdata[3]}
chain_id=%{customdata[4]}
x=%{x}
y=%{y}
z=%{z}
atom_id=%{customdata[0]}
atom_serial=%{customdata[1]}
residue_serial=%{customdata[2]}
residue_name=%{customdata[3]}
chain_id=%{customdata[4]}
x=%{x}
y=%{y}
z=%{z}
atom_id=%{customdata[0]}
atom_serial=%{customdata[1]}
residue_serial=%{customdata[2]}
residue_name=%{customdata[3]}
chain_id=%{customdata[4]}
x=%{x}
y=%{y}
z=%{z}
atom_id=%{customdata[0]}
atom_serial=%{customdata[1]}
residue_serial=%{customdata[2]}
residue_name=%{customdata[3]}
chain_id=%{customdata[4]}