I'm just going to run the docking without that constraint for now until the new release comes out and then I'll have to re-run it and redo the analysis. I have until the middle of December to decide if we are going to use the docking API or not so hopefully that should be enough time.
What would be the best way to find out when the November release is made available for download?
Glad you could confirm it. Your suggestion will be a problem to complete the project I'm working on since I'll be going through thousands of protein files and some do not have a unique atom names. I went ahead and tried your suggestion on a small set of protein files where it should have worked but unfortunately I was not able to get it to work. I was able to get the atom properly using the protein.atom function. I also generated the config file and then modified it as you indicated (and confirmed the change was done properly). Unfortunately, when I ran the docking, using the existing settings file, I got an 'index out of range' error when docking.py tried to access the settings.ligands.atoms[...] for the constraint. It is possible that something is not right with my 'rig up' and re-docking setup (I assume that it actually worked for you).
At this point, I've wasted way too much time on this issue. Can you provide me with a time frame for the fix to be implemented so I can figure out what my options are?
I know it's been a few days but I wanted to see if you could look at the 'output/gold.err' log that was generated when you ran the code you previously provided above. Another option would be to provide me with the test files (protein.mol2 and ligand.mol2) you used and I will run the code and check the log.
The reason for wanting to do so is that I just found all the docking logs I've generated contain a warning message in gold.err like:
Ligand in file /home/hdelrisco/projects/kreds/Substrate_R_v2.mol2, named Substrate_R,
starting at address 70 raised the following warnings and/or errors
Distance constraint disabled for ligand Substrate_R; no atom 72 in Ligand
---- happens even with your sample SAH.mol2
What this means is that using a different ligand (from the CCDC files) or changing the format of our ligand did not solve the issue; it just moved the error message to a warning message somewhere else. It would be real simple to find out if this is really a problem with my files (using your code to test them) by making sure that using your code and files results in no warning. It's very important to remember that we only have any issues with docking when we try to set the distance constraint between the cofactor (in the protein file) and the ligand - if we use a protein atom instead of the cofactor, it all works perfectly and the API does not have any issues with the ligand file format.
As a result of running your code with my data, it seemed likely that it was a file issue and it was.
It turned out to be the substrate mol2 file (ligand to be docked). None of the other utilities had any problems with it but it seems to cause problems for Gold. It was using an asterisk character for the internal name which I've seen happen before when working on files across multiple apps. I changed it manually just to try it and I can set the constraint now - the person who generated the file will be fixing it properly later.
Thanks for all your help,
The cofactor we include in the protein's PDB file is defined as just a group of HETATM:
HETATM15065 O1 COF Z 1 11.702 15.566 16.752 1.00 0.00 O
Is there something else we may need to specify or any special formatting requirements for Gold?
I took your code above and replaced the protein and ligand file names (also changed the atom labels to search for) and I get the same error message - RuntimeError('Cannot find appropriate protein.'). I tried using a mol2 file for the protein (instead of the PDB just in case) but it did not make any difference. As I previously mentioned, if I use a protein atom instead then I can set the distance constraint just fine and I am also using a substructure constraint that works properly. Let me know if you have any other suggestions.
FYI, I'm using the 2018 CSD API downloaded about a month ago.
I have a working docking setup with a substructure constraint between a protein residue atom and the substrate to be docked. However, I need to add a distance constraint between the cofactor (see below) and the same substrate. Attempts to do this result in a runtime error of 'Cannot find appropriate protein.' The code is based on the CCDC docking sample and works properly w/o the distance constraint.
* the 'fixed' cofactor is part of the protein PDB file (Z:COF1)
* the substrate is the ligand to be docked and is in a separate mol2 file
* I get the cofactor atom using
cofactor_atom = [a for a in self.protein.ligands.atoms if a.label=="H24"]
* I get the substrate atom using (after reading the mol2 file it into self.substrate - same approach used for the substructure constraint that works)
substrate_atom = [a for a in self.substrate.atoms if a.label=="O1"]
* I then try calling the add constraint function which fails (both atoms used are previously found properly)
It looks like the issue is with the cofactor atom being in the protein ligands (if I use a protein residue atom then I can add the constraint). Is there a proper way to define a distance constraint between a cofactor, that is part of the protein pdb file, and the ligand to be docked?