def __init__(self, handle):
     reader = Reader(handle)
     self.data = []
     reader.read(self.data)
     self.data = self.data[0]
     self.name = self.data.getName()
     self._assemblies = self.__load_assemblies__()
     self._entities = self.__load_entities__()
Beispiel #2
0
 def __init__(self, handle):
     reader = Reader(handle)
     self.data = []
     reader.read(self.data)
     self.data = self.data[0]
     self.name = self.data.getName()
     self._assemblies = self.__load_assemblies__()
     self._entities = self.__load_entities__()
Beispiel #3
0
    def __init__(self, handle=None, data=None):
        if data is None:
            reader = Reader(handle)
            self.data = []
            reader.read(self.data)
            self.data = self.data[0]
        else:
            self.data = data

        if handle is None and data is None:
            raise ValueError("Must give either handle or data")

        self.pdb = self.data.getName()
        self._operators = self.__load_operators__()
        self._assemblies = self.__load_assemblies__()
        self._entities = self.__load_entities__()
        self._chem = self.__load_chem_comp__()
        self.logger = logging.getLogger('fr3d.cif.reader.Cif')
Beispiel #4
0
    def __init__(self, handle=None, data=None):
        if data is None:
            reader = Reader(handle)
            self.data = []
            reader.read(self.data)
            self.data = self.data[0]
        else:
            self.data = data

        if handle is None and data is None:
            raise ValueError("Must give either handle or data")

        self.pdb = self.data.getName()
        self._operators = self.__load_operators__()
        self._assemblies = self.__load_assemblies__()
        self._entities = self.__load_entities__()
        self._chem = self.__load_chem_comp__()
        self.logger = logging.getLogger('fr3d.cif.reader.Cif')
def build_translation_table(filename):
    """Given a file object of a CIF file this will produce a translation table
    usable by translate
    """
    translation_table = {}
    data = []
    with open(filename, 'r') as raw:
        parser = PdbxReader(raw)
        parser.read(data)
    pdb = data[0]
    pdb_id = pdb.getName()

    # If there is no assembly gen then the whole AU is in one file. Here there
    # are no biological assemblies but I don't know how many models there are,
    # so we return a defaultdict which will always return '1_555'.
    if not pdb.getObj('pdbx_struct_assembly_gen'):
        return {pdb_id: defaultdict(lambda: defaultdict(lambda: '1_555'))}

    operator_table = table(pdb, 'pdbx_struct_oper_list')
    if not operator_table:
        raise MissingOperatorTableError(filename)

    translation_table[pdb_id] = {}
    for gen_row in rows(pdb, 'pdbx_struct_assembly_gen'):
        assembly_id = gen_row['assembly_id']

        if not translation_table[pdb_id].get(assembly_id):
            translation_table[pdb_id][assembly_id] = {}

        # Here I am assumming that the AU is always 1_555.
        if '(' in gen_row['oper_expression']:
            model_builder = DefaultUsingKey(lambda k: 'P_%s' % k)
            return {pdb_id: defaultdict(lambda: model_builder)}

        models = gen_row['oper_expression'].split(',')
        for model in models:
            name = operator_table[model]['name']
            translation_table[pdb_id][assembly_id][model] = name

    return translation_table