Skip to content

Instantly share code, notes, and snippets.

@ChrisWellsWood
Created April 20, 2018 13:56
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ChrisWellsWood/82a315a52b76125d41e24ad369185628 to your computer and use it in GitHub Desktop.
Save ChrisWellsWood/82a315a52b76125d41e24ad369185628 to your computer and use it in GitHub Desktop.
Parameter Optimisation with Metaheuristics in ISAMBARD
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Optimising Model Parameters Using the Evolutionary Optimizers"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from pprint import pprint\n",
"import matplotlib.pyplot as plt\n",
"import nglview as nv\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import isambard.specifications as specifications\n",
"import isambard.optimisation.evo_optimizers as ev_opts\n",
"from isambard.optimisation.evo_optimizers import Parameter"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def show_ball_and_stick(ampal):\n",
" view = nv.show_text(ampal.pdb)\n",
" view.add_ball_and_stick()\n",
" view.remove_cartoon()\n",
" return view"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sometimes your parameter space might be too large to search exhaustively using something like a grid scan, what's more, a grid scan is actually very inefficient as we're not really interested in the vast majority of the parameter space, only promising regions. [Metaheuristics](https://en.wikipedia.org/wiki/Metaheuristic) can be used to efficiently optimise parameters to find a good solution, but does not guarantee that the optima will be found. ISAMBARD has a whole range of metaheuristics available to try and fit parameters."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Getting Ready"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Three things are required to run an optimisation:\n",
"\n",
"1. A specification\n",
"1. A list of amino-acid sequences to be packed onto the model\n",
"1. A list of parameters\n",
"\n",
"The first two are pretty straight forward, chances are you know the specification you want to use and the sequence you want to optimize. In this example I'll use the `CoiledCoil` specification, using the `from_parameters` class method and I'll use the sequence for the [basis-set dimer](http://www.rcsb.org/pdb/explore/explore.do?structureId=4DZM)."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"specification = specifications.CoiledCoil.from_parameters"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"sequences = ['EIAALKQEIAALKKENAALKWEIAALKQ', 'EIAALKQEIAALKKENAALKWEIAALKQ']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So far, so simple, but parameters require a bit more effort to setup."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Parameters"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we look at the signature of `CoiledCoil.from_parameters` it looks like this:\n",
"\n",
"```\n",
"from_parameters(\n",
" n,\n",
" aa=28,\n",
" major_radius=None,\n",
" major_pitch=None,\n",
" phi_c_alpha=26.42,\n",
" minor_helix_type='alpha',\n",
" auto_build=True\n",
" )\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It is expecting arguments in this order, so we need to supply parameters to the optimizer that match this format. We can make a list of parameters using the `Parameter` class:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"parameters = [\n",
" Parameter.static('Oligomeric State', 2),\n",
" Parameter.static('Helix Length', 28),\n",
" Parameter.dynamic('Radius', 5.0, 1.0),\n",
" Parameter.dynamic('Pitch', 200, 60),\n",
" Parameter.dynamic('PhiCA', 283, 27), # 283 is equivalent a g position\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<Parameter: Oligomeric State, ParameterType.STATIC>,\n",
" <Parameter: Helix Length, ParameterType.STATIC>,\n",
" <Parameter: Radius, ParameterType.DYNAMIC>,\n",
" <Parameter: Pitch, ParameterType.DYNAMIC>,\n",
" <Parameter: PhiCA, ParameterType.DYNAMIC>]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"parameters"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> ### Note\n",
"> \"Parameters\" in the `from_parameters` class method name is referring to the geometric parameters that describe a coiled-coil, not the `Parameter` class in the `evo_optimizer` module."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`Parameter`s can be created using the `static` or `dynamic` class method. `Parameter`s created with `Parameter.static` will have fixed values during optimisation, whereas those created with `Parameter.dynamic` will be modified by the optimizer.\n",
"\n",
"The parameters are created using the following arguments:\n",
"\n",
"```python\n",
"Parameter.static('Oligomeric State', 2)\n",
"# ^ ^___ The static value\n",
"# |___ a human readable label\n",
"\n",
"Parameter.dynamic('Radius', 5.0, 1.0)\n",
"# ^ ^ ^___ Value range\n",
"# | |___ Mean value\n",
"# |___ a human readable label\n",
"\n",
"\n",
"```\n",
"\n",
"Both parameter types have a human-readable label. This is for your own reference really, you can use anything you like, as long as you know what parameter it corresponds to. Static parameters have a single value supplied, while the dynamic value has a mean value and a range. For example, in the radius parameter, we've given a mean value of `5.0`, with a range of `1.0`, this means that the optimizer can create values for radius of between `4.0` and `6.0`.\n",
"\n",
"Once you've made your parameter list you can test it to see if it can be used to generate a model correctly:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[2, 28, 5.0, 200, 283]\n"
]
}
],
"source": [
"default_values = [x.default_value for x in parameters]\n",
"print(default_values)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `default_value` property returns either the static value or a dynamic values mean. We can unpack this list in order to supply arguments to the specification."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<Assembly containing 2 Polypeptides>\n"
]
}
],
"source": [
"test_model = specification(*default_values)\n",
"print(test_model)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[5.0, 5.0]\n",
"[200, 200]\n",
"[283, 283]\n"
]
}
],
"source": [
"print(test_model.major_radii)\n",
"print(test_model.major_pitches)\n",
"print(test_model.phi_c_alphas)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As you can see, the model was created as expected using the values we supplied for the parameters. Now we're ready to run an optimisation."
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"## Running an Optimisation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once you have all these things in place, you're ready to initialise the optimizer. There are 4 different evolutionary optimizers in the `evo_optimizers` module:\n",
"\n",
"1. `GA` (Genetic Algorithm) - Good at eliminating unfavourable regions of parameter space.\n",
"1. `DE` (Differential Evolution) - A simple and versatile algorithm that quickly finds the minima in smooth energy landscapes.\n",
"1. `PSO` - (Particle Swarm Optimisation) - A noisy algorithm that explores a lot of the parameter space.\n",
"1. `CMAES` - (Covariance Matrix Adaptive Evolutionary Strategy) - Thoroughly explores regions of parameter space that are likely to contain the minima."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> ### Note\n",
"> It's difficult to know which algorithm is going to be best for your problem, so it's a good idea to try out all of them on a small scale. If you're really unsure about which one to use, the `GA` provides a good balance of parameter-space coverage and thoroughness."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's take a look at the signature for the `GA`:\n",
"\n",
"```python\n",
"# init signature\n",
"GA(specification, sequences, parameters, eval_fn,\n",
" build_fn=default_build, cxpb=0.5, mutpb=0.2, **kwargs)\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here you can see that the `GA`, and in fact all of the evolutionary optimizers, have 4 required arguments to initialize them. We've already sorted out the first three (specification, sequence and parameters), what about `build_fn` and `eval_fn`? These arguments are functions that the optimizer will use to build a model from the parameters it generates and a metric for evaluating those models. This means that the optimizers are highly customisable. As you can see, we're using the default build function, which builds a model and packs on side chains using Scwrl4."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can use any evaluation function you like, as long as it takes an AMPAL object as an input and produces a `float` that follows the thermodynamic principle (*i.e.* lower is better). We'll use the BUDE force field from the `budeff` module. **This is a good place to start, but this might not be appropriate for all problems.** BUFF is a very soft force field, which is good for parametric modelling as it tolerates small clashes that can occur as a result of using a geometric description with restricted degrees of freedom. For your problem you might need a harder force field, or even some completely different way of evaluating models, in which case you can use another evaluation function or make your own."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"import budeff"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Help on function get_internal_energy in module budeff:\n",
"\n",
"get_internal_energy(ampal_obj, ff=None, assign_ff=True)\n",
" Calculates the internal energy of the AMPAL object.\n",
" \n",
" Parameters\n",
" ----------\n",
" ampal_obj: AMPAL Object\n",
" Any AMPAL object with a `get_atoms` method.\n",
" ff: BuffForceField, optional\n",
" The force field to be used for scoring. If no force field is\n",
" provided then the most current version of the BUDE force field\n",
" will be used.\n",
" assign_ff: bool, optional\n",
" If true, then force field assignment on the AMPAL object will be\n",
" will be updated.\n",
" \n",
" Returns\n",
" -------\n",
" BUFF_score: BUFFScore\n",
" A BUFFScore object with information about each of the interactions and\n",
" the atoms involved.\n",
"\n"
]
}
],
"source": [
"help(budeff.get_internal_energy)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`get_internal_energy` takes an AMPAL object (good) and returns a BUFFScore object (bad!). The `BUFFScore` object is great as it gives lots of information about the score that's been produced, but in this instance we just want a float with the total energy. We can wrap the function call in a little function that returns a float."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"def get_buff_total_energy(ampal_object):\n",
" return budeff.get_internal_energy(ampal_object).total_energy"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"opt_ga = ev_opts.GA(specification, sequences, parameters, get_buff_total_energy)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can start the optimizer using the `run_opt` method. `run_opt` has two required arguments: `pop_size` and `generations`. `pop_size` defines the number of children (i.e. sets of parameters) to be evaluated per generation, while `generations` defines the total number of generations you want to run.\n",
"\n",
"One of the great things about the evolutionary optimisers is that they are easy to parallelise, so we can also supply an additional `core` argument, which defines the number of CPU cores you wish to use for the optimisation."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"gen\tevals\tavg \tstd \tmin \tmax \n",
"0 \t61 \t-820.401\t42.0119\t-908.875\t-750.001\n",
"1 \t59 \t-859.86 \t31.4194\t-950.15 \t-807.265\n",
"2 \t60 \t-887.028\t23.8683\t-951.153\t-847.346\n",
"3 \t70 \t-907.257\t15.9615\t-952.863\t-882.028\n",
"4 \t81 \t-922.522\t14.6206\t-972.335\t-903.444\n",
"Evaluated 431 models in total in 0:00:29.523487\n",
"Best fitness is (-972.3348571854714,)\n",
"Best parameters are [2, 28, 4.678360526981807, 151.35365923229745, 277.2061538048508]\n"
]
}
],
"source": [
"opt_ga.run_opt(100, 5, cores=8)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The optimizer prints various statistics about the optimisation both as it's running and after it finishes. After each generation is complete, a range of information about that generation is printed:\n",
"\n",
"* **gen** - the generation number\n",
"* **evals** - the number of models built and evaluated in that generation. Even though a specific `pop_size` is specified, not all models are built, as models with the same or very similar parameters are not recreated. This is most obvious in the `GA` where parameters with a high \"fitness\" are retained in the subsequent generation.\n",
"* **avg** - the average value of the evaluation metric for the generation.\n",
"* **std** - the standard deviation of the evaluation metric for the generation.\n",
"* **min** - the lowest (best) score in the generation.\n",
"* **max** - the highest (worst) score in the generation."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> ### Note\n",
"> This logging information can be written to disk using the `log`, `log_path` and `run_id` keyword arguments on `run_opt`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once the optimisation has finished, the parameters and score for the best model are printed. You can get the AMPAL object for the best model by using the `best_model` property:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<Assembly containing 2 Polypeptides>\n"
]
}
],
"source": [
"optimized_model = opt_ga.best_model\n",
"print(optimized_model)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can then write the PDB to a file and take a look at your optimized model:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "8569ab08e2584484a97aeb8417832499",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"NGLWidget()"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"show_ball_and_stick(optimized_model)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Of course, this was a very quick optimisation, and to find something closer to the global minima you may need a larger value for `pop_size` and `generations`. The std column of output printed by the optimizer gives a good indication of the degree of convergence on a single solution during optimisation, but you should be critical of the optimisation, running it multiple times and evaluating the models produced thoroughly."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Evaluating an Optimisation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are some tools in the optimizer that can give information about the optimisation run that we have performed. The most useful of these is the `make_energy_funnel_data` function, which compares all of the models created during the optimisation to the best model produced."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"funnel_data = opt_ga.make_energy_funnel_data(cores=8)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[(1.3027522006177736, -298.8484245203697, 0),\n",
" (2.161071736631008, -680.2448028357469, 0),\n",
" (1.081332639515601, -209.44680598222155, 0),\n",
" (0.5946687433395427, -780.0047717715055, 0),\n",
" (1.586620620495778, -779.7442957728832, 0)]\n"
]
}
],
"source": [
"pprint(funnel_data[:5])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`make_energy_funnel_data` returns a list of tuples containing the RMSD between a model and the best model from the optimisation, the BUFF internal energy for that model and the generation that the model from. We can use these data to make a plot showing gross properties of the optimisation:"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"xs = [x[0] for x in funnel_data]\n",
"ys = [x[1] for x in funnel_data]\n",
"zs = [x[2] for x in funnel_data]"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1, 1)\n",
"fig.set_size_inches(4, 4)\n",
"ax.grid()\n",
"ax.scatter(xs, ys, c=zs)\n",
"ax.set_xlabel('RMSD (Å)')\n",
"ax.set_ylabel('BUFF Internal Energy')\n",
"None"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this plot, every model produced by the optimizer is shown as a point, with its BUFF internal energy as the Y axis and the RMSD from the best scoring model as the X axis. The colour represents the generation, purple is the first generation and yellow is the last generation.\n",
"\n",
"You can see that there is some sort of structure to the data points, which makes sense; if models have similar RMSDs, they should probably have a similar BUFF internal energy.\n",
"\n",
"Let's take a closer look at the best scoring models:"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1, 1)\n",
"fig.set_size_inches(4, 4)\n",
"ax.grid()\n",
"ax.scatter(xs, ys, c=zs)\n",
"ax.set_ylim(top=-700)\n",
"ax.set_xlabel('RMSD (Å)')\n",
"ax.set_ylabel('BUFF Internal Energy')\n",
"None"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"You can clearly see here that later generations have better scores, although this is specific to the `GA`, other optimisation algorithms may or may not do this depending on how they search the solution space.\n",
"\n",
"The most interesting thing about this plot is that you can see that there is a clear minima, which indicates that this optimisation has converged well. However, there are a number of reasons you might not see this with your optimisation:\n",
"\n",
"1. You haven't sampled enough, increase the `pop_size` or number of `generations`\n",
"1. Your sequence or parameterisation may not have a single deep minima, and might instead have a few similar minima or be quite smooth in general. This could mean that your sequence is quite plastic, allowing a large number of comformations to be adopted."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> ### Problem\n",
"> Try running this optimisation using some of the other optimizer classes (`ev_opts.PSO`, `ev_opts.DE` or `ev_opts.CMAES`). Does the energy funnel look different? Has the optimizer found the same solution?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Conclusions"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The evolutionary optimizers are very effective at searching parameter space, and can be used to fit parameters to a specific amino-acid sequence. Don't forget though that the optimizers are not magic bullets, and the output must be thoroughly scrutinized. If the optimization is not producing sensible results, try changing the evaluation function, it's easy to use your favorite all-atom force field, or even better, produce a meta-score combining a range of different metrics!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment