<div dir="ltr"><div dir="ltr"><div>Hi,</div><div><br></div><div>This is a request for feedback on code I would like to contribute to Biopython.  I want to do more cleaning, testing, polishing and documenting before making a pull request, so don't worry yet :-).  This post is to query whether there's sufficient interest to accept the facility into Biopython when I'm ready, hopefully gather some positive feedback and ideas, and to make it publicly available now as it's working for me for most structures.</div><div><br></div><div>This branch ( <a href="https://github.com/rob-miller/biopython/tree/rtm-pic">https://github.com/rob-miller/biopython/tree/rtm-pic</a> ) adds infrastructure for internal coordinates under a .pic attribute on Bio.PDB Chain and Residue objects.  'Internal coordinates' means phi, psi, omega, chi<X> dihedral angles, all bond angles and bond lengths.  Internal coordinates can be read from a PDB structure and used to regenerate identical coordinate PDB chains (HETATMs not withstanding, although there is some support).</div><div><br></div><div>While my primary application is to support structure prediction work, there are some useful side effects.  Probably most interesting is the ability to generate OpenSCAD files to 3D print protein structure models, as it uses the same algorithm for assembly of bond length, angle and dihedral angle data.  (Please be aware that the initial OpenSCAD rendering is reasonably quick, but the detailed rendering to generate an .stl file for printing can take hours depending on your hardware.)  Of lesser note, filtering options add support for removing Hydrogens from PDB structures, and obviously one can make Ramachandran plots and database projects looking at different subsets of chi rotamers and other aspects of protein structure. </div><div><br></div><div>I've made a gist at</div><div><a href="https://gist.github.com/rob-miller/0be208b73fe2ab36fadeeef60831fc92">https://gist.github.com/rob-miller/0be208b73fe2ab36fadeeef60831fc92</a></div><div>to access the basic functionality.  Hopefully this is easy to get working in your hands, if you have a local pdb mirror there is a place to configure access to it near the beginning of the script.</div><div><br></div><div>If you are playing with OpenSCAD and your protein has chain breaks (or you excised lysozyme from a GPCR), increase the -maxp cutoff in the gist options to treat the gap as an extra long peptide bond.</div><div><br></div><div>All development so far has been exclusively on python3, so yes more versions to support.  I am aware of the related projects FragBuilder and PeptideBuilder.</div><div><br></div><div>I hope you like it; please be gentle with me.</div><div><br></div><div>Rob.</div><div><br></div></div></div>