Exportar para PDB parece perder aromaticidade

Oct 09 2020

Eu tenho uma molécula com os seguintes SORRISOS:

ClearAll[sml];
sml = "O=C(NCC1=CC(NC(C2=CN=C3C=CC=CN23)=O)=C(C)C=C1)NC4=CC=CC(F)=C4";

O enredo é o seguinte:

sml // RightComposition[
    Molecule[#, IncludeHydrogens -> True] &,
    MoleculePlot[#, ImageSize -> Large] &
]

Em particular, observe a presença de ligações aromáticas.

Agora, seguindo o exemplo de exportação na parte inferior da página para arquivos PDB no manual de ajuda, tento exportar a molécula para um arquivo 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"}}
];

A exportação acontece corretamente (ou pelo menos é o que parece) e recebo um arquivo PDB.

Mas quando carrego o arquivo PDB, descubro que a molécula perdeu suas ligações aromáticas:

"mol.pdb" // RightComposition[
    Import[FileNameJoin[{NotebookDirectory[], #}], {"PDB", "Molecule"}] &,
    MoleculePlot[#, ImageSize -> Large] &
]

Além disso, os átomos de oxigênio também parecem ter perdido suas ligações duplas.

O que estou fazendo incorretamente?

Agradeço antecipadamente por sua ajuda.

Respostas

2 JasonB. Oct 09 2020 at 02:02
  • Os arquivos PDB geralmente não contêm nenhuma informação de vínculo e, quando contêm, não contêm tipos de vínculo
  • Perceber os tipos de ligação da geometria 3D é uma operação relativamente cara, o que é bom para moléculas pequenas (<100 átomos), mas realmente demorado para proteínas grandes
  • O importador PDB para o "Molecule"elemento de importação não faz a percepção da ordem de título por padrão e não há uma opção documentada para ativá-lo.
  • O importador XYZ tem uma opção documentada "InferBondTypes"que deve ser adicionada ao importador PDB, talvez com uma Automaticconfiguração que muda o comportamento com base na contagem de átomos.
  • Porém, há uma opção não documentada para ativar a percepção de pedido de título para o importador PDB, que pode ser usada na versão 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