forgi 2.0.0 documentation

Contents

Source code for forgi.graph.residue

from builtins import str
import collections
import logging

log = logging.getLogger(__name__)
Resid_base = collections.namedtuple("complete_resid", ["chain", "resid"])


[docs]class RESID(Resid_base): # Thanks to https://stackoverflow.com/a/42146452 for hints on extending named_tuples def __repr__(self): return "Res(\"" + resid_to_str(self) + "\")" def __new__(cls, chain, resid=None): if resid is None: r = resid_from_str(chain) return r else: resid = (resid[0], int(resid[1]), str(resid[2])) if chain is not None: chain = str(chain) return Resid_base.__new__(cls, chain, resid)
Res = RESID # So the repr can be used to create a RESID
[docs]def resid_to_str(resid): if resid.chain is not None: out = "{}:{}".format(resid.chain, resid.resid[1]) else: out = str(resid.resid[1]) if resid.resid[2] != " ": out += ".{}".format(resid.resid[2]) return out
[docs]def resid_from_str(resstr): resstr = str(resstr) # Make sure we use future's newstring on python2 if ":" in resstr: chain, resid = resstr.split(":") else: resid = resstr log.debug("No chain given in string {!r}".format(resstr)) chain = None if chain is not None: chain = str(chain) idparts = resid.split(".") if len(idparts) == 1: idparts.append(" ") return RESID(chain, (' ', int(idparts[0]), str(idparts[1])))
[docs]def resid_from_biopython(residue): if residue.parent is not None: return RESID(residue.parent.id, residue.id) else: return RESID(None, residue.id)

Contents