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] &
]

En particular, tenga en cuenta la presencia de enlaces aromáticos.

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] &
]

Además, los átomos de oxígeno también parecen haber perdido sus dobles enlaces.

¿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 una Automaticconfiguració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