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] &
]
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] &
]
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 umaAutomaticconfiguraçã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
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino