Hi again!
So in my quest to use OpenMM from Chimera, my first proof-of-concept attempts consist of using a PDB file as intermediate to convert chimera.Molecule objects to OpenMM Topologies (using openmm.app.PDBFile loader).
While not ideal yet, it'd be convenient to use StringIO() as a memory file, and I have been more or less successful. This is my strategy:
memfile = StringIO()
m = chimera.openModels.list()
chimera.pdbWrite(m, m[0].openState.xform, memfile)
memfile.seek(0)
# pass memfile to openmm.app.PDBFile and do OpenMM stuff
memfile.close()
It works, but some residues are not properly recognised... I dumped the converted PDB to an actual file and saw that the problematic residue (an ARG) is totally messed up! I've attached the results: original file is the mol2, the converted one is the pdb, and also a Chimera session with both superimposed.
What's the recommended method to convert a chimera.Molecule to a PDB file (if possible, in-memory) with Chimera Python API?
Thanks a lot!