Source code for proteindf_bridge.format
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from .functions import locate
from .atomgroup import AtomGroup
from .atom import Atom
import logging
logger = logging.getLogger(__name__)
[docs]
class Format(object):
[docs]
@classmethod
def is_residue(cls, res):
if not isinstance(res, AtomGroup):
return False
answer = True
if res.get_number_of_groups() > 0:
logger.debug("not allowed groups in residue: name={}".format(res.name))
answer = False
if res.get_number_of_atoms() == 0:
logger.debug("no atoms found in residue: name={}".format(res.name))
return answer
[docs]
@classmethod
def is_chain(cls, chain):
if not isinstance(chain, AtomGroup):
return False
answer = True
if chain.get_number_of_groups() > 0:
for res_key, res in chain.groups():
answer &= cls.is_residue(res)
else:
logger.debug("no groups found in chain: name={}".format(chain.name))
if chain.get_number_of_atoms() != 0:
logger.debug("not allowed any atoms in chain: name={}".format(chain.name))
answer = False
return answer
[docs]
@classmethod
def is_protein(cls, model):
if not isinstance(model, AtomGroup):
return False
answer = True
if model.get_number_of_groups() > 0:
for chain_key, chain in model.groups():
answer &= cls.is_chain(chain)
else:
loc = locate()
logger.debug("no groups found in model: name={} at {}/{}/{}".format(model.name, loc[0], loc[1], loc[2]))
if model.get_number_of_atoms() != 0:
loc = locate()
logger.critical(
"not allowed existing any atoms in model: name={} at {}/{}/{}".format(
model.name, loc[0], loc[1], loc[2]
)
)
answer = False
return answer
[docs]
@classmethod
def is_models(cls, models):
if not isinstance(models, AtomGroup):
return False
answer = True
if models.get_number_of_groups() > 0:
for model_id, model in models.groups():
answer &= cls.is_protein(model)
else:
# logger.warning("no groups found in models: name={}".format(models.name))
pass
if models.get_number_of_atoms() != 0:
# logger.error("not allowed any atoms in models: name={}".format(models.name))
answer = False
return answer