I am relatively new to Rosetta and have been trying to get my head around RosettaLigand. I have run into a problem with the pdb files that I get out from a run.
In some instances when I run the Rosetta ligand docking, the pdb files that come out for each run show the ligand docked in a logical position. However, the ligand itself is modified to display extra bonds between some atoms that were not in the input/native pdb files.
Is there any way that I can stop this from happening?
Thanks very much.
The PDB files that Rosetta outputs don't contain bonding information. Rosetta will also ignore any CONECT-like bonding information in the input file. As far as Rosetta is concerned, the only information about bonding is the data in the params files - either the ones in the database, or the ones given with -extra_res_fa
The reason you're seeing bonds in the output structure is that your molecular viewing program noticed that there is no connection information in the Rosetta-ouput PDB file, and then proceeded to generate likely atom connections based on the distance between atoms. As a general rule that works, but depending on the cutoffs used and how close the atoms are in the structure, it may count some atoms as bonded which Rosetta wouldn't.
So why are there atoms which are close enough that your molecular viewing program is considering them bonded? It may depend on which atoms are too close. If it's a ligand and protein atom, there may be a deficiency in the scoring of ligand-protein repulsive. On the other hand, if it's an extra bond between two atoms of the ligand, the most likely cause is a bad rotamer. Take a look at the rotamers you generated for the PDB_ROTAMERS in the params file, and see if any of them have atoms that are too close.
The other issue to consider is that RosettaLigand is typically run with a small amount (10-15 degrees or so) of torsional freedom in the ligand. Even if the input rotamers are okay, they could minimize into a too-close approach. By default, there really isn't any consideration of internal energy of the ligand. There's a small weight on fa_intra_rep, which should keep things from being completely overlapping, but might not keep things as separated as you might like. Usually, though, this indicates a starting rotamer that isn't too good to begin with, anyway.
Also keep in mind that RosettaLigand is a stochastic process - not all of the structures it outputs will be good. Some will be garbage. Typically you throw out the worst 95% of structures by total score without bothering to look at them. If the too-close approach structures don't make it into the top 5%, I wouldn't be too concerned. (Though I might check the rotamers, to avoid sampling things that are always going to be garbage.)
Thank you for your quick response and apologies that its taken me awhile to get back to you. I had a look at my files and it is definitely an issue of atoms in the ligand having bonds between them that shouldnt be there. I have not found that there have been any instances of the ligand forming a bond with the protein. What I have found though is that if a ligand has extra bonds in it, it is in all the pdb files generated even though it is not found in the initial input file.
I will try generating new rotamers and see if that helps.
Thanks for the advice!
Thanks for your help thus far.
Since my previous post I decided to try taking the original pdb file (1A52) from the database and dock the native ligand (oestradiol) into it to confirm that the docking is occurring correctly. However when I did this I ran into problems with the files that were generated. The initial input and native pdb has the oestradiol molecule of the correct size but when I view the output files after running Rosetta, the distance between the atoms has decreased considerably. This means that extra bonds have also shown up between atoms again as you had said would happen if the atoms were too close together.
Is there a logical explanation as to why post-Rosetta the ligand being docked is altered? When I have tried this with other non-native ligands, it seems to work fine.
I have uploaded the input file and an example of an output file (1A52_human_EST_0005.txt) in case the reason for this is evident in them.
Any help would be greatly appreciated.
You have an atom naming issue. Rosetta matches up atom coordinates and connectivity by atom names. So the names in the PDB file and the params file need to be the same.
In your input, for example, you have O1 and O10 atoms, but the output has O3 and O17 atoms, indicating that that's what they're named in the params file. What this means is that when Rosetta reads in the PDB, it will discard the O1 and O10 atoms (and give you a warning), and then rebuild the O3 and O17 atom positions based on the params file geometry. Your problem arises with your carbon atoms - you have C1 to C18 atoms, and the params file has C1 to C18 atoms, but dollars to donuts, C3 in the PDB probably doesn't correspond to C3 in the params file. Rosetta then tries to make bonds between atoms that are too close or too far apart, and the ligand gets completely garbled.
This is a consequence of molfile_to_params' tendency to rename atoms. Instead of leaving the original ligand in the PDB, you should replace it (with a text editor or the like) with the PDB of the ligand molfile_to_params outputs. This has all the atoms named appropriately.
Yeah, this is annoying. I had the same issue with ATP params. Renaming is not trivial, neither is aligning the ligand. I used the option:
--keep-names leaves atom names untouched except for duplications
in molfile_to_params in order to keep everything synced. This is probably what you want. Worked like a charmm.
I am trying to design and repack a protein ligand complex (pdb) and I am providing the ligand params as -extra_res_fa ligand.params in the job file. However, when I run the rosetta the ligand is not being recognised or read as a result the output of the ligand is garbled. How to I rectify the problem?