def parse(self, **kwargs): pbmol = next(pybel.readfile('cif', self.filename)) unpack_symmetry(pbmol) natoms = len(pbmol.atoms) names = np.zeros(natoms, dtype=object) charges = np.zeros(natoms, dtype=np.float32) masses = np.zeros(natoms, dtype=np.float64) for i, atom in enumerate(pbmol.atoms): names[i] = atom.type masses[i] = atom.exactmass charges[i] = atom.partialcharge attrs = [ Atomnames(names), Charges(charges), Masses(masses), Resids(np.array([1])), Resnums(np.array([1])), Segids(np.array(['SYSTEM'], dtype=object)), ] return Topology(natoms, 1, 1, attrs=attrs)
def parse(self): """ Access ESPResSo data and return the topology object Returns ------- top : :class:`MDAnalysis.core.topology.Topology` a topology object """ espresso = self.kwargs['espresso'] names = [] atomtypes = [] masses = [] charges = [] for p in espresso.part: names.append("A" + repr(p.type)) atomtypes.append("T" + repr(p.type)) masses.append(p.mass) charges.append(p.q) natoms = len(espresso.part) attrs = [ Atomnames(np.array(names, dtype=object)), Atomids(np.arange(natoms) + 1), Atomtypes(np.array(atomtypes, dtype=object)), Masses(masses), Resids(np.array([1])), Resnums(np.array([1])), Segids(np.array(['System'], dtype=object)), AltLocs(np.array([' '] * natoms, dtype=object)), Resnames(np.array(['R'], dtype=object)), Occupancies(np.zeros(natoms)), Tempfactors(np.zeros(natoms)), ICodes(np.array([' '], dtype=object)), Charges(np.array(charges)), ] top = Topology(natoms, 1, 1, attrs=attrs) return top
def parse(self): """ Access ESPResSo data and return the topology object. Returns ------- top : :class:`MDAnalysis.core.topology.Topology` a topology object """ espresso = self.kwargs['espresso'] names = [] atomtypes = [] masses = [] charges = [] bonds = [] angles = [] dihedrals = [] for p in espresso.part: names.append("A" + repr(p.type)) atomtypes.append("T" + repr(p.type)) masses.append(p.mass) charges.append(p.q) for bond in p.bonds: partner_ids = bond[1:] n_partner = len(partner_ids) if n_partner == 1: bonds.append((p.id, partner_ids[0])) elif n_partner == 2: angles.append((partner_ids[0], p.id, partner_ids[1])) elif n_partner == 3: dihedrals.append( (partner_ids[0], p.id, partner_ids[1], partner_ids[2])) else: continue natoms = len(espresso.part) attrs = [ Atomnames(np.array(names, dtype=object)), Atomids(np.arange(natoms) + 1), Atomtypes(np.array(atomtypes, dtype=object)), Masses(masses), Resids(np.array([1])), Resnums(np.array([1])), Segids(np.array(['System'], dtype=object)), AltLocs(np.array([' '] * natoms, dtype=object)), Resnames(np.array(['R'], dtype=object)), Occupancies(np.zeros(natoms)), Tempfactors(np.zeros(natoms)), ICodes(np.array([' '], dtype=object)), Charges(np.array(charges)), Bonds(bonds), Angles(angles), Dihedrals(dihedrals) ] top = Topology(natoms, 1, 1, attrs=attrs) return top