Exportar a PDB parece perder aromaticidad
Oct 09 2020
Tengo una molécula con las siguientes SONRISAS:
ClearAll[sml];
sml = "O=C(NCC1=CC(NC(C2=CN=C3C=CC=CN23)=O)=C(C)C=C1)NC4=CC=CC(F)=C4";
La trama tiene el siguiente aspecto:
sml // RightComposition[
Molecule[#, IncludeHydrogens -> True] &,
MoleculePlot[#, ImageSize -> Large] &
]
Ahora, siguiendo el ejemplo de exportación en la parte inferior de la página para archivos PDB en el manual de ayuda, intento exportar la molécula a un archivo PDB:
ClearAll[coords, atoms];
{coords, atoms} = sml // RightComposition[
Molecule[#, IncludeHydrogens -> True] &,
{MoleculeValue[#, "AtomCoordinates"] &, AtomList /* Map[First]}, Through
];
Export[
FileNameJoin[{NotebookDirectory[], "mol.pdb"}],
{{QuantityMagnitude[UnitConvert[coords, "Picometers"]]}, {atoms}},
{{"AdditionalCoordinates", "AdditionalAtoms"}}
];
La exportación se realiza correctamente (o al menos eso parece) y obtengo un archivo PDB.
Pero cuando cargo el archivo PDB, encuentro que la molécula ha perdido sus enlaces aromáticos:
"mol.pdb" // RightComposition[
Import[FileNameJoin[{NotebookDirectory[], #}], {"PDB", "Molecule"}] &,
MoleculePlot[#, ImageSize -> Large] &
]
¿Qué estoy haciendo incorrectamente?
Gracias de antemano por tu ayuda.
Respuestas
2 JasonB. Oct 09 2020 at 02:02
- Los archivos PDB a menudo no contienen información de bonos y, cuando lo hacen, no contienen tipos de bonos.
- Percibir los tipos de enlaces a partir de la geometría 3D es una operación relativamente costosa, lo que está bien para moléculas pequeñas (<100 átomos) pero requiere mucho tiempo para proteínas grandes
- El importador de PDB para el
"Molecule"elemento de importación no realiza la percepción del pedido de bonos de forma predeterminada y no hay una opción documentada para activarlo. - El importador XYZ tiene una opción documentada
"InferBondTypes"que debe agregarse al importador PDB, tal vez con unaAutomaticconfiguración que cambie el comportamiento según el recuento de átomos. - Sin embargo, existe una opción indocumentada para activar la percepción de la orden de fianza para el importador de PDB, que se puede usar en la versión 12.1
sml = "O=C(NCC1=CC(NC(C2=CN=C3C=CC=CN23)=O)=C(C)C=C1)NC4=CC=CC(F)=C4";
element = {"PDB", "Molecule"};
sml // Molecule //
ExportString[#, element]& //
ImportString[#, element, "UseOpenBabel" -> True]& //
MoleculePlot