Closed dargen3 closed 1 month ago
Hello,
more strange behavior with this structure. If I add hydrogens using the CLI directly to the original structure from the PDB, hydrogens are incorrectly added to the diselenide bonds (I assume the diselenide bond is therefore not detected at all). However, when I fix the structure with PDBFixer and add hydrogens, the message "UserWarning: Missing fragment for atom 'SE'" is printed for selenium atoms and no hydrogens are added (I assume it finds the diselenide bonds, but they are not in the fragment database and therefore it does not add hydrogens). Yet the only part of the mmCIF file that is changed by PDBFixer is the atom_site block. The version of hydride I'm using is 1.2.2. I'm uploading the file as a .txt file because git doesn't support uploading a file with a .cif extension.
Structure from PDB: 3u5s.cif.txt
Structure from PDB protonated with hydride --infile 3u5s.cif --outfile 3u5s_addedH.cif
:
3u5s_addedH.cif.txt
Structure from PDBFixer (only atom_site block is changed): fixed.cif.txt
Structure from PDBFixer protonated with hydride --infile fixed.cif --outfile fixed_addedH.cif
:
fixed_addedH.cif.txt
Hi, sorry for the late response. I have done some investigations on the structure: The original 3u5s
structure does not annotate the diselenide bonds: Usually disulfide bonds would appear in the struct_conn
CIF category typically as disulf
bond, but in this case there is no such bond annotated. Hence, adding hydrogen atoms to them is technically correct.
In the 'fixed' version the elements in the atom_site
category are capitalized, ie. SE
becomes Se
. Hydride identifies them as different elements, so there is no fitting fragment for Se
(hence the warning), but there is for SE
. I would argue that this behavior is actually a bug in Hydride and I will create an issue for that.
Fixing the structure for you use case is unfortunately not possible from the CLI. You can either use Hydride in a Python script, where you add the diselenide bonds before calling add_hydrogen
, or you can edit the input CIF file (adding the bonds in struct_conn
) before passing it to the CLI. For investigating the issue I followed the former variant, although this simple script only adds one specific bond:
import biotite.structure.io.pdbx as pdbx
import biotite.structure as struc
import ammolite
import hydride
pdbx_file = pdbx.CIFFile.read("3u5s.cif")
atoms = pdbx.get_structure(
pdbx_file, model=1, include_bonds=True, extra_fields=["charge"], use_author_fields=False
)
atoms.bonds.add_bond(520, 544, struc.BondType.SINGLE)
atoms, _ = hydride.add_hydrogen(atoms)
pymol_object = ammolite.PyMOLObject.from_structure(atoms)
mask = atoms.res_id == 66
pymol_object.show_as("sticks")
pymol_object.orient(mask)
pymol_object.zoom(mask, buffer=1)
ammolite.cmd.png("test.png")
Hydride also does not complain about a missing fragment here, so a diselenide compound seems to be a part of the fragment library.
If you like a more general way to add diselenide bonds with Biotite, you could adapt this example script:
https://www.biotite-python.org/latest/examples/gallery/structure/contacts/disulfide_bonds.html
I will close this issue as resolved for now, but if there are still open questions, feel free to post them here or to reopen the issue.
Hello,
thank you for your reply, your work and your helpful answer. I really appreciate it!
Hello,
I'd like to report a bug and a potential improvement for selenocysteine.
It appears that the hydride adds hydrogens to the diselenide bond. The structure used is 3u5s from the PDB database downloaded in CIF format. Protonated by CLI. Versions are Biotite 1.0.1, Hydride 1.2.2.
Judging by the fact that hydride didn't report missing a fragment, I'm guessing that hydride doesn't detect Se-Se binding. But I'm afraid that even if it did detect the bond, the diselenide bond is not in the CCD and would need to be added. The structure from https://www.molinstincts.com/structure/Dibenzyl-diselenide-cstr-CT1066654692.html might be useful.
I also suggest adding selenocysteine and pyrolysine to the charge conversion by pH for standard amino acids. The PDB includes them among the standard residues.