def _topology_from_arrays(AtomID, AtomNames, ChainID, ResidueID, ResidueNames): """Build topology object from the arrays stored in the lh5 file""" # Delayed import due to wacky recursive imports in compatibilty from mdtraj import Topology topology = Topology() # assert that the ChainID is just an array of empty strings, which appears # to be the case in our test systems for this legacy format if not np.all(chainid == '' for chainid in ChainID): raise NotImplementedError('Im not prepared to parse multiple chains') chain0 = topology.add_chain() # register the residues registered_residues = {} for i in np.argsort(ResidueID): residue_name = ResidueNames[i] if not isinstance(residue_name, basestring): residue_name = residue_name.decode() if ResidueID[i] not in registered_residues: res = topology.add_residue(residue_name, chain0) registered_residues[ResidueID[i]] = res # register the atoms for i in np.argsort(AtomID): atom_name = AtomNames[i] if not isinstance(atom_name, basestring): atom_name = atom_name.decode() element_symbol = atom_name.lstrip('0123456789')[0] element = mdtraj.pdb.element.get_by_symbol(element_symbol) topology.add_atom(atom_name, element, registered_residues[ResidueID[i]]) topology.create_standard_bonds() return topology
def _topology_from_arrays(AtomID, AtomNames, ChainID, ResidueID, ResidueNames): topology = Topology() # assert that the ChainID is just an array of empty strings, which appears # to be the case in our test systems for this legacy format assert np.all(chainid == '' for chainid in ChainID), 'Im not prepaed to parse multiple chains' chain0 = topology.add_chain() # register the residues registered_residues = {} for i in np.argsort(ResidueID): residue_name = ResidueNames[i] if not isinstance(residue_name, str): residue_name = residue_name.decode() if ResidueID[i] not in registered_residues: res = topology.add_residue(residue_name, chain0) registered_residues[ResidueID[i]] = res # register the atoms for i in np.argsort(AtomID): atom_name = AtomNames[i] if not isinstance(atom_name, str): atom_name = atom_name.decode() element_symbol = atom_name.lstrip('0123456789')[0] element = mdtraj.pdb.element.get_by_symbol(element_symbol) topology.add_atom(atom_name, element, registered_residues[ResidueID[i]]) topology.create_standard_bonds() return topology
def _topology_from_arrays(AtomID, AtomNames, ChainID, ResidueID, ResidueNames): """Build topology object from the arrays stored in the lh5 file""" # Delayed import due to wacky recursive imports in compatibilty from mdtraj import Topology topology = Topology() # assert that the ChainID is just an array of empty strings, which appears # to be the case in our test systems for this legacy format if not np.all(chainid == '' for chainid in ChainID): raise NotImplementedError('Im not prepared to parse multiple chains') chain0 = topology.add_chain() # register the residues registered_residues = {} for i in np.argsort(ResidueID): residue_name = ResidueNames[i] if not isinstance(residue_name, basestring): residue_name = residue_name.decode() if ResidueID[i] not in registered_residues: res = topology.add_residue(residue_name, chain0) registered_residues[ResidueID[i]] = res # register the atoms for i in np.argsort(AtomID): atom_name = AtomNames[i] if not isinstance(atom_name, basestring): atom_name = atom_name.decode() element_symbol = atom_name.lstrip('0123456789')[0] try: element = elem.get_by_symbol(element_symbol) except KeyError: element = None topology.add_atom(atom_name, element, registered_residues[ResidueID[i]]) topology.create_standard_bonds() return topology