示例#1
0
    def parser(self):
        s = System()
        s.pbc = v2lattice(self.a, self.b, self.c)
        for i in self.coords:
            # n is used to distinguish the type of data file
            n = 0
            for j in i:
                # ignore the comments
                if "#" in j:
                    break
                n += 1
            atom = Atom()
            atom.an = int(i[0])
            if n == 7:
                # n = 7 is full type
                atom.name = self.atomtypes[int(i[2]) - 1]
                atom.x[0] = float(i[4])
                atom.x[1] = float(i[5])
                atom.x[2] = float(i[6])
                s.atoms.append(atom)
            elif n == 6 or n == 9:
                # n = 5 is a charge type, n = 8 is a charge type generated
                # by restart2data
                atom.name = self.atomtypes[int(i[1]) - 1]
                atom.x[0] = float(i[3])
                atom.x[1] = float(i[4])
                atom.x[2] = float(i[5])
                s.atoms.append(atom)

        return s
示例#2
0
    def parser(self):
        s = System()
        s.pbc = v2lattice(self.a, self.b, self.c)
        for i in self.coords:
            # n is used to distinguish the type of data file
            n = 0
            for j in i:
                # ignore the comments
                if "#" in j:
                    break
                n += 1
            atom = Atom()
            atom.an = int(i[0])
            if n == 7:
                # n = 7 is full type
                atom.name = self.atomtypes[int(i[2]) - 1]
                atom.x[0] = float(i[4]) 
                atom.x[1] = float(i[5]) 
                atom.x[2] = float(i[6]) 
                s.atoms.append(atom)
            elif n == 5 or n == 8:
                # n = 5 is a charge type, n = 8 is a charge type generated
                # by restart2data
                atom.name = self.atomtypes[int(i[1]) - 1]
                atom.x[0] = float(i[3]) 
                atom.x[1] = float(i[4]) 
                atom.x[2] = float(i[5]) 
                s.atoms.append(atom)

        return s
示例#3
0
文件: msd.py 项目: tarbaig/simpy
 def __lineToAtom(self, line):
     """put each coordinate line into atom class"""
     ai = Atom()
     tokens = line.strip().split()
     ai.number = int(tokens[0])
     ai.name = tokens[1]
     ai.an = tokens[2]
     ai.type1 = tokens[3]
     ai.type2 = tokens[4]
     ai.charge = float(tokens[5])
     ai.x[0] = float(tokens[6])
     ai.x[1] = float(tokens[7])
     ai.x[2] = float(tokens[8])
     ai.resn = int(tokens[9])
     ai.resname = tokens[10]
     ai.cg = int(tokens[11])
     return ai
示例#4
0
文件: msd.py 项目: karthipitt/simpy
 def __lineToAtom(self, line):
     """put each coordinate line into atom class"""
     ai = Atom()
     tokens = line.strip().split()
     ai.number = int(tokens[0])
     ai.name = tokens[1]
     ai.an = tokens[2]
     ai.type1 = tokens[3]
     ai.type2 = tokens[4]
     ai.charge = float(tokens[5])
     ai.x[0] = float(tokens[6])
     ai.x[1] = float(tokens[7])
     ai.x[2] = float(tokens[8])
     ai.resn = int(tokens[9])
     ai.resname = tokens[10]
     ai.cg = int(tokens[11])
     return ai
示例#5
0
    def parser(self):
        s = System()
        s.pbc = v2lattice(self.a, self.b, self.c)
        s.atomtypes = self.atomtypes
        s.n_atoms = self.n_atoms
        s.n_bonds = self.n_bonds
        s.n_angles = self.n_angles
        s.n_dihedrals = self.n_dihedrals
        s.n_impropers = self.n_impropers
        s.n_atomtypes = self.n_atomtypes
        s.n_bondtypes = self.n_bondtypes
        s.n_angletypes = self.n_angletypes
        s.n_dihedraltypes = self.n_dihedraltypes
        s.n_impropertypes = self.n_impropertypes
        s.bonds = self.bonds
        s.angles = self.angles
        s.dihedrals = self.dihedrals
        s.ffparams = self.ffparams

        for i in self.coords:
            # n is used to distinguish the type of data file
            n = 0
            for j in i:
                # ignore the comments
                if "#" in j:
                    break
                n += 1
            atom = Atom()
            atom.an = int(i[0])
            if n == 7:
                # n = 7 is full type
                atom.resn = int(i[1])
                atom.name = self.elements[int(i[2]) - 1]
                atom.element = self.elements[int(i[2]) - 1]
                atom.type2 = int(i[2])
                atom.charge = float(i[3])
                atom.x[0] = float(i[4])
                atom.x[1] = float(i[5])
                atom.x[2] = float(i[6])
                s.atoms.append(atom)
        return s
示例#6
0
    def parser(self):
        s = System()
        s.pbc = v2lattice(self.a, self.b, self.c)
        s.atomtypes = self.atomtypes
        s.n_atoms = self.n_atoms
        s.n_bonds = self.n_bonds
        s.n_angles = self.n_angles
        s.n_dihedrals = self.n_dihedrals
        s.n_impropers = self.n_impropers
        s.n_atomtypes = self.n_atomtypes
        s.n_bondtypes = self.n_bondtypes
        s.n_angletypes = self.n_angletypes
        s.n_dihedraltypes = self.n_dihedraltypes
        s.n_impropertypes = self.n_impropertypes
        s.bonds = self.bonds
        s.angles = self.angles
        s.dihedrals = self.dihedrals
        s.ffparams = self.ffparams

        for i in self.coords:
            # n is used to distinguish the type of data file
            n = 0
            for j in i:
                # ignore the comments
                if "#" in j:
                    break
                n += 1
            atom = Atom()
            atom.an = int(i[0])
            if n == 7:
                # n = 7 is full type
                atom.resn = int(i[1])
                atom.name = self.elements[int(i[2]) - 1]
                atom.element = self.elements[int(i[2]) - 1]
                atom.type2 = int(i[2])
                atom.charge = float(i[3])
                atom.x[0] = float(i[4]) 
                atom.x[1] = float(i[5]) 
                atom.x[2] = float(i[6]) 
                s.atoms.append(atom)
        return s
示例#7
0
文件: dump.py 项目: erinshawusc/simpy
    def parser(self,):
        """ parse dump file into System
        """
        s = System()
        s.name = self.name

        # transform a, b, c to [xx, xy, yz]
        # [yx, yy, yz] and [zx, zy, zz]
        # caution! A hard coded code for specified dump file
        a = []
        # some dump file only have xl and xh. Normalize to three terms
        if len(self.a) == 2:
            self.a.append(0.0)
        if len(self.b) == 2:
            self.b.append(0.0)
        if len(self.c) == 2:
            self.c.append(0.0)
        #a.append(float(self.a[1]) - float(self.a[0]))
        #@ref: http://lammps.sandia.gov/doc/Section_howto.html#howto_12
        xlo = float(self.a[0]) - min(0.0, float(self.a[2]), float(self.b[2]),\
              float(self.a[2]) + float(self.c[2])) 
        xhi = float(self.a[1]) - max(0.0, float(self.a[2]), float(self.b[2]),\
              float(self.a[2]) + float(self.c[2]))
        a.append(xhi - xlo)
        a.append(0.0)
        a.append(0.0)
        #print a
        b = []
        b.append(float(self.a[2]))
        ylo = float(self.b[0]) - min(0.0, float(self.c[2]))
        yhi = float(self.b[1]) - max(0.0, float(self.c[2]))
        b.append(yhi - ylo)
        b.append(0.0)
        #print b
        c = []
        c.append(float(self.b[2]))
        c.append(float(self.c[2]))
        c.append(float(self.c[1]) - float(self.c[0]))
        s.pbc = v2lattice(a, b, c)
        #print c
        # begin to parse atoms
        flag = 0
        if os.path.exists("inp"):
            flag = 1
            n2a = self.parseInp()
        counter = 0
        for i in self.coords:
            atom = Atom()
            if flag:
                atom.name = n2a[int(i[1])]
            else:
                atom.name = i[1]
            """
            atom.x[0] = float(i[3])
            atom.x[1] = float(i[4])
            atom.x[2] = float(i[5])
            """
            atom.an = counter + 1
            atom.x[0] = float(i[2])
            atom.x[1] = float(i[3])
            atom.x[2] = float(i[4])
            s.atoms.append(atom)
            counter += 1
        return s
示例#8
0
    def parser(self, ):
        """ parse dump file into System
        """
        s = System()
        s.name = self.name

        # transform a, b, c to [xx, xy, yz]
        # [yx, yy, yz] and [zx, zy, zz]
        # caution! A hard coded code for specified dump file
        a = []
        # some dump file only have xl and xh. Normalize to three terms
        if len(self.a) == 2:
            self.a.append(0.0)
        if len(self.b) == 2:
            self.b.append(0.0)
        if len(self.c) == 2:
            self.c.append(0.0)
        #a.append(float(self.a[1]) - float(self.a[0]))
        #@ref: http://lammps.sandia.gov/doc/Section_howto.html#howto_12
        xlo = float(self.a[0]) - min(0.0, float(self.a[2]), float(self.b[2]),\
              float(self.a[2]) + float(self.c[2]))
        xhi = float(self.a[1]) - max(0.0, float(self.a[2]), float(self.b[2]),\
              float(self.a[2]) + float(self.c[2]))
        a.append(xhi - xlo)
        a.append(0.0)
        a.append(0.0)
        #print a
        b = []
        b.append(float(self.a[2]))
        ylo = float(self.b[0]) - min(0.0, float(self.c[2]))
        yhi = float(self.b[1]) - max(0.0, float(self.c[2]))
        b.append(yhi - ylo)
        b.append(0.0)
        #print b
        c = []
        c.append(float(self.b[2]))
        c.append(float(self.c[2]))
        c.append(float(self.c[1]) - float(self.c[0]))
        s.pbc = v2lattice(a, b, c)
        #print c
        # begin to parse atoms
        flag = 0
        if os.path.exists("inp"):
            flag = 1
            n2a = self.parseInp()
        counter = 0
        for i in self.coords:
            atom = Atom()
            if flag:
                atom.name = n2a[int(i[1])]
            else:
                atom.name = i[1]
            """
            atom.x[0] = float(i[3])
            atom.x[1] = float(i[4])
            atom.x[2] = float(i[5])
            """
            atom.an = counter + 1
            atom.x[0] = float(i[2])
            atom.x[1] = float(i[3])
            atom.x[2] = float(i[4])
            s.atoms.append(atom)
            counter += 1
        return s