<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hi Steven,<div class=""><span class="Apple-tab-span" style="white-space:pre">      </span>That module should be documented, and we will fix that, but nonetheless directly calling those routines would typically be about your third choice for saving PDB files.  The first choice would be to execute the equivalent ChimeraX command directly with code like:</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre">       </span><i class="">from chimerax.core.commands import run</i></div><div class=""><i class=""><span class="Apple-tab-span" style="white-space:pre">  </span>run(session, "save /path/to/file.pdb #1")</i></div><div class=""><span style="font-style: normal;" class=""><br class=""></span></div><div class=""><span style="font-style: normal;" class="">This approach has the advantage of not needing to find equivalent API calls to every command you want to execute, or figuring out what arguments are needed for those calls.  This approach is discussed in the </span><a href="https://www.cgl.ucsf.edu/chimerax/docs/devel/tutorials/introduction.html#pro-tip" class="">"Pro Tip" section near the top of the Developer Tutorial.</a></div><div class=""><span class="Apple-tab-span" style="white-space:pre">   </span>The second approach would be to use the "save command" manager.  That manager knows which bundles provide support for saving various file formats, and provides a generic interface for saving files, <i class="">e.g.</i><span style="font-style: normal;" class="">:</span></div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span><i class="">session.save_command.save_data("/path/to/file.pdb", models=[model1],  </i><span style="font-style: normal;" class="">[other Python </span>format-specific keywords]<i class="">)</i></div><div class=""><i class=""><br class=""></i></div><div class=""><span style="font-style: normal;" class="">This second approach has the disadvantage that the values for the keywords may not be obvious in some cases (</span><i class="">i.e.</i><span style="font-style: normal;" class=""> you would have to look at the underlying API).  This approach is discussed in the </span><a href="https://www.cgl.ucsf.edu/chimerax/docs/devel/core/commands/user_commands.html#save" class="">Python Functions implementing User Commands</a> documentation, under "save".</div><div class=""><span class="Apple-tab-span" style="white-space:pre">     </span>And finally, the third approach would be to call the PDB-saving API directly.  Something like:</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span><i class="">from chimerax.pdb import save_pdb</i></div><div class=""><i class=""><span class="Apple-tab-span" style="white-space:pre">       </span>save_pdb(session, "/path/to/file.pdb", models=[model1])</i></div><div class=""><span style="font-style: normal;" class=""><br class=""></span></div><div class="">The only advantage of this third approach is in the rare case where you need to use an esoteric Python-only keyword argument that isn't supported in the equivalent "save" command.  For instance, save_pdb() has a <i class="">polymeric_res_names</i><span style="font-style: normal;" class=""> argument for when you need to output residues in ATOM records that would otherwise be output as HETATM records (this capability is used by the modeller bundle).</span></div><div class=""><br class=""></div><div class=""><div class="">--Eric</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre">       </span>Eric Pettersen</div><div class=""><span class="Apple-tab-span" style="white-space:pre">    </span>UCSF Computer Graphics Lab</div><div><br class=""><blockquote type="cite" class=""><div class="">On Feb 19, 2021, at 10:05 AM, Steven Truong <<a href="mailto:sdt45@cam.ac.uk" class="">sdt45@cam.ac.uk</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">To whom it may concern,<br class=""><br class="">Hello!  I was hoping to ask for some help in Python Scripting in ChimeraX.  Specifically, I am trying to fit structure files (.PDB) to electron density maps (.MAP).  Is there a way to do this in .PY scripts in ChimeraX?  I can’t seem to find such a command like “fitmap” in the documentation here (<a href="https://www.cgl.ucsf.edu/chimerax/docs/devel/modules.html" class="">https://www.cgl.ucsf.edu/chimerax/docs/devel/modules.html</a>).  Additionally, it seems like the “Read and Write PDB Files” page (<a href="https://www.cgl.ucsf.edu/chimerax/docs/devel/bundles/atomic/src/pdbio.html" class="">https://www.cgl.ucsf.edu/chimerax/docs/devel/bundles/atomic/src/pdbio.html</a>) of the documentation page hasn’t been updated.  Is there another place that outlines how to save structures?<br class=""><br class="">Thank you,<br class="">Steven Truong<br class=""><a href="mailto:sdt45@cam.ac.uk" class="">sdt45@cam.ac.uk</a><br class="">Cambridge University<br class=""><br class="">_______________________________________________<br class="">ChimeraX-users mailing list<br class="">ChimeraX-users@cgl.ucsf.edu<br class="">Manage subscription:<br class="">https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users<br class=""><br class=""></div></div></blockquote></div><br class=""></div></body></html>