How to Run Protein–Ligand Docking in Rowan

Transcript

Hello all. In this video, we're going to look at how to run protein–ligand docking through Rowan. So docking is one of these classic structure-based drug-design techniques. You can read all about the fundamentals here on Wikipedia or in the primary literature. But basically, the goal of docking is to predict, as it says here, the pose and orientation of a ligand, a small molecule, when bound to a protein receptor or enzyme. And it's really, really easy to do this through Rowan and very fast as well. We'll walk through that process from start to finish today.

To get started, we need a protein structure. So we can go over here to my project, scroll down to the protein ligand section and select "Docking." And what we'll see here is we need to input our protein target via PDB ID, via a PDB file, or via these other input methods. You can select it from your project structures or from previous project history.

For this tutorial, we're gonna be using this crystal structure of Rock1 that's actually already bound to this pyridylbenzamide inhibitor from AbbVie. You can see the paper here: they identified this dual Rock1/Rock2 inhibitor and, as a part of this, they deposited this beautiful crystal structure here in the PDB. That's gonna be our starting point. So all we need to do is just paste this four character code in, say "Load," and then Rowan will automatically pull this in and we can visualize it right here.

A couple things might stand out to us: we've actually got two protein subunits here, we've got two ligands, and we see this little warning note saying that we probably need to sanitize this protein. So experimental protein structures have all of these characteristics. They're often missing hydrogen. Sometimes there's solvent, cofactors, artifacts, salts, all these things that are done experimentally to actually get a clean crystal structure. But we need to remove all of these if we're going to go ahead and use this for docking.

What we'll do is a few things. So first we're just going to remove one of these chains. There's two proteins here; that's how it crystallized experimentally, but we don't actually need this. We'll remove chain B and say "apply." Great, so now we just have one.

We can see that there is already a small molecule ligand in here. So this lovely ligand in green, which we can zoom in on here. That's fine, but that's not really what we want here. So what we're going to do is we're going to say "save pocket for redock." And we have a choice here between which ligands we're going to save. So we can either save J0P—which if we go back and scroll down is actually the name of the ligand of interest—or the other ligand here, which is sulfate. So that's just one of these salts that made it into the crystal. And we don't want to save the sulfate pocket because that's not actually a real ligand.So we'll say "save pocket."

And then we'll say sanitize. OK, so I've just fast-forwarded through the wait. Sanitization here took about a minute. This is not uncommon. And if we look here now, there's all these unresolved residues that have been added to the side here. So if we were going to run MD or some other calculations, we might worry about deleting these unresolved tails that PDBFixer doesn't know how to deal with. But for docking, it really doesn't matter. And we'll just leave them as-is for now for simplicity.

So now, if we're going to dock, we have our protein target all set up, configured, prepared properly for docking. And now we're going to need to input a ligand. And if we go back to look at this ligand, to have an idea of what might bind, we can click on this 2D diagram here and we can see that there's this pyridine, there's this benzamide moiety here, and then there's this dangling ring here with some catechol-looking functionality. And this is a fine ligand, but let's just try docking a simpler version of this.

So we'll draw in 2D. We'll put a pyridine up here, then we'll put another benzene down here. So we'll make an analog of the ligand that works. We'll have a benzamide here. But now we'll just put a propyl chain here. And now we're missing this bottom ring down here. We don't have this ring anymore. We just have two carbons and then an extra carbon here, like a stripped-down mimic, more like a fragment. We'll save this.

And then what we'll see is that we need to convert this into a 3D structure and we'll do so here. And now we're all ready for docking. So we have a protein target. We have the pocket defined. We could choose other ways to do this. We could do a blind dock if we wanted to, or we could manually specify a pocket. But in this case, we already know where the pocket is. So we'll just redock from the saved pose.

And then we can choose our docking settings. So we could go here and we could choose if we want to use AutoDock Vina, we could choose what scoring function. We could do QuickVina. We could choose the exhaustiveness or the number of poses. But for now, we'll just leave it as default. And then we will keep pose refinement on so that we get cleaned up poses at the end and we'll say "Submit."

There we go. By default, this is just given the name of the SMILES, but we can rename this and say "example docking" on 6E9W, just to give it the name of the PDB structure we started from. Now if we want to add any more notes, we can go here and we can say, "we're testing out Rowan's docking workflow on a PDB structure with a stripped-down ligand." We can save these notes for later so that if we come back to this next year and we don't remember what we were doing here, now we know.

So the calculation is actually running. It's been running for 10 seconds. We have all this information saved here: all the settings that we submitted it with, some information about the compute hardware that this is running on, and how many credits this is being charged. And we do now actually have all these logfile details down here.

We could go over here and see that docking has actually finished running already. So this is the pose with the lowest docking score. So we can focus on the pocket here and then flip through the different poses and see the different ways that it tried to bind this ligand. Or we can superimpose all of them and see that there's actually a few different poses being explored here. Most of them are binding over here in this side of the pocket, but pose number two actually sampled a completely different arrangement of the ligand within the pocket, which is over here. And from this, we might actually be able to surmise that if we take this propyl group over here and we add more functionality over here, we might be able to make a longer ligand that actually fits the pocket better and is a much better inhibitor. There's actually space to connect the blue and the red fragments and make one longer ligand.

And if you remember, this propyl group right here was where we actually had the other rings coming off. So if we didn't already know that we could accommodate additional functionality over here, we could learn this from this docking calculation.

Obviously in this view, you can see all sorts of other things, so we can look at the individual interactions. There's this backbone amide that's hydrogen-bonding to the pyridine and all sorts of other things going on: maybe some pi interactions going on with this system and some methionine side chains. We could always do energy-decomposition analysis to try to pin that down, if we wanted to, in more detail. And then of course we can submit this to molecular dynamics or use this as the input to FEP. We could do all sorts of things with this.

But in a nutshell, this is how docking works in Rowan. And the last thing I just want to emphasize is that docking is really, really fast. So this just took 30 seconds here, including building the receptor, optimizing all the output poses, saving it, all of this stuff. This is very, very quick. And if you do batch docking for organization customers, that actually gets down to a second per compound or even less.

So there's a lot of ways to predict protein–ligand binding: docking is by no means the most accurate, but it is among the fastest, and that makes it very useful.