Example #1
0
def write_gro(strucC,data_file):
    """
    Write gromacs structure file 
    """
    #
    latvec = strucC.getLatVec()

    gro_lines =  " com2gro \n"
    gro_lines += " %-2i \n"  %( int(len(strucC.ptclC)) )
    atom_indx = 0 
    for pid, pt_i  in strucC.ptclC:
        atom_indx += 1
        if( atom_indx > 10000): atom_indx = 1
        r_i = pt_i.position
        r_i_nm = [units.convert_angstroms_nm(r_i[0]) ,units.convert_angstroms_nm(r_i[1]) ,units.convert_angstroms_nm(r_i[2]) ]
        gro_lines += "%5d%-5s%5s%5d%8.3f%8.3f%8.3f\n"  % ( pt_i.tagsDict["residue"],pt_i.tagsDict["resname"][:5],pt_i.tagsDict["gtype"][:5],atom_indx,r_i_nm[0],r_i_nm[1],r_i_nm[2] )
    gro_lines += " %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f \n" % (units.convert_angstroms_nm(latvec[0][0]),units.convert_angstroms_nm(latvec[1][1]),units.convert_angstroms_nm(latvec[2][2]),units.convert_angstroms_nm(latvec[0][1]),units.convert_angstroms_nm(latvec[0][2]),units.convert_angstroms_nm(latvec[1][0]),units.convert_angstroms_nm(latvec[1][2]),units.convert_angstroms_nm(latvec[2][0]),units.convert_angstroms_nm(latvec[2][1])) 

    F = open( data_file, 'w' )
    F.write(gro_lines)
    F.close()
Example #2
0
def write_itp(paramC, out_itp):
    """"
    Write gromacs parameter file
    """

    F = open(out_itp, 'w')
    F.write(';  new ff parameters \n')
    F.write(' \n ')

    F.write(' \n [ defaults ] ')
    F.write(
        ' \n ; nbfunc        comb-rule       gen-pairs       fudgeLJ fudgeQQ ')
    nbfunc = paramC.get_nbfunc()
    combmixrule = paramC.get_combmixrule()
    genpairs = paramC.get_genpairs()
    fudgeLJ = paramC.get_fudgeLJ()
    fudgeQQ = paramC.get_fudgeQQ()

    F.write(' \n  %d %d %s  %f %f ' %
            (nbfunc, combmixrule, genpairs, fudgeLJ, fudgeQQ))
    F.write(' \n ')
    F.write(' \n ')

    ljtypC_p = paramC.ljtypC
    btypC_p = paramC.btypC
    atypC_p = paramC.atypC
    dtypC_p = paramC.dtypC
    imptypC_p = paramC.imptypC

    #
    # Write particle types
    #
    F.write('\n [ atomtypes ] ')
    for lj_p, ljObj_p in ljtypC_p:
        sigma = units.convert_angstroms_nm(ljObj_p.sigma)
        epsilon = units.convert_kcalmol_kJmol(ljObj_p.epsilon)
        out_line = "\n %s   %d  %f %f %s %f %f  " % (
            ljObj_p.ptype1, ljObj_p.pid, ljObj_p.get_mass(), ljObj_p.charge,
            ljObj_p.ptype, sigma, epsilon)
        F.write(out_line)

    F.write(' \n ')
    #
    # Write bond types
    #
    F.write('\n [ bondtypes ] ')
    for b_p, btypeObj_p in btypC_p:
        g_type = btypeObj_p.get_g_indx()
        if (g_type == 1):
            r0 = units.convert_angstroms_nm(btypeObj_p.get_r0())
            kb = units.convert_kb_g_bond(btypeObj_p.get_kb())
            out_line = "\n %s   %s  %d   %f  %f  " % (btypeObj_p.get_ptype1(),
                                                      btypeObj_p.get_ptype2(),
                                                      g_type, r0, kb)
        else:
            print "  unknown gromacs bond type index  ", g_type
            sys.exit(" error in printing itp file ")

        F.write(out_line)
    F.write(' \n ')
    #
    # Write angle  types
    #
    F.write('\n [ angletypes ] ')
    for a_p, atypeObj_p in atypC_p:
        g_type = atypeObj_p.get_g_indx()
        if (g_type == 1):
            theta0 = atypeObj_p.get_theta0()
            kb = units.convert_kb_g_angle(atypeObj_p.get_kb())
            out_line = "\n %s   %s   %s  %d   %f  %f  " % (
                atypeObj_p.get_ptype1(), atypeObj_p.get_ptype2(),
                atypeObj_p.get_ptype3(), g_type, theta0, kb)
        else:
            print "  unknown gromacs angle type index  ", g_type
            sys.exit(" error in printing itp file ")
        F.write(out_line)
    F.write(' \n ')
    #
    # Write dihedral  types
    #
    F.write('\n [ dihedraltypes ] ')
    for d_p, dtypObj_p in dtypC_p:
        g_type = dtypObj_p.get_g_indx()
        if (g_type == 1 or g_type == 4 or g_type == 9):
            theat_s = dtypObj_p.get_theat_s()
            kb = units.convert_kcalmol_kJmol(dtypObj_p.get_kb())
            mult = dtypObj_p.get_mult()
            #print "  theat_s , kb ,mult ",theat_s , kb ,mult
            out_line = "\n %s   %s   %s   %s  %d   %f  %f  %d " % (
                dtypObj_p.get_ptype1(), dtypObj_p.get_ptype2(),
                dtypObj_p.get_ptype3(), dtypObj_p.get_ptype4(), g_type,
                theat_s, kb, mult)
        elif (g_type == 2):
            e0, ke_kcalmol = dtypObj_p.getimp()
            ke = units.convert_kcalmol_kJmol(ke_kcalmol)
            out_line = "\n %s   %s   %s   %s  %d   %f  %f  " % (
                dtypObj_p.get_ptype1(), dtypObj_p.get_ptype2(),
                dtypObj_p.get_ptype3(), dtypObj_p.get_ptype4(), g_type, e0, ke)
            error_line = "No impropers should be in dihedral type container "
            sys.exit(error_line)
        elif (g_type == 3):
            Clist_kcalmol = dtypObj_p.get_rbClist()
            Clist = []
            for Cindx in Clist_kcalmol:
                Clist.append(units.convert_kcalmol_kJmol(Cindx))
            out_line = "\n %s   %s   %s   %s  %d  %f  %f  %f  %f  %f %f " % (
                dtypObj_p.get_ptype1(), dtypObj_p.get_ptype2(),
                dtypObj_p.get_ptype3(), dtypObj_p.get_ptype4(), g_type,
                Clist[0], Clist[1], Clist[2], Clist[3], Clist[4], Clist[5])
        else:
            print "  unknown gromacs dihedral type index  ", g_type
            sys.exit(" error in printing itp file ")
        F.write(out_line)

    for d_p, imptypObj_p in imptypC_p:
        g_type = imptypObj_p.get_g_indx()
        if (g_type == 2):
            e0, ke_kcalmol = imptypObj_p.getimp()
            ke = units.convert_kb_g_angle(ke_kcalmol)
            out_line = "\n %s   %s   %s   %s  %d   %f  %f  " % (
                imptypObj_p.get_ptype1(), imptypObj_p.get_ptype2(),
                imptypObj_p.get_ptype3(), imptypObj_p.get_ptype4(), g_type, e0,
                ke)
        elif (g_type == 3):
            e0, ke_kcalmol = imptypObj_p.getimp()
            pn = imptypObj_p.get_pn()
            ke = units.convert_kb_g_angle(ke_kcalmol)
            out_line = "\n %s   %s   %s   %s  %d   %f  %f  %d " % (
                imptypObj_p.get_ptype1(), imptypObj_p.get_ptype2(),
                imptypObj_p.get_ptype3(), imptypObj_p.get_ptype4(), g_type, e0,
                ke, np)
        else:
            print "  unknown gromacs improper dihedral type index  ", g_type
            sys.exit(" error in printing itp file ")
        F.write(out_line)

    F.write(' \n ')

    F.close()
Example #3
0
def write_gro(strucC, data_file):
    """
    Write gromacs structure file 
    """
    #
    latvec = strucC.getLatVec()

    gro_lines = " com2gro \n"
    gro_lines += " %-2i \n" % (int(len(strucC.ptclC)))
    atom_indx = 0
    for pid, pt_i in strucC.ptclC:
        atom_indx += 1
        if (atom_indx > 10000): atom_indx = 1
        r_i = pt_i.position
        r_i_nm = [
            units.convert_angstroms_nm(r_i[0]),
            units.convert_angstroms_nm(r_i[1]),
            units.convert_angstroms_nm(r_i[2])
        ]
        gro_lines += "%5d%-5s%5s%5d%8.3f%8.3f%8.3f\n" % (
            pt_i.tagsDict["residue"], pt_i.tagsDict["resname"][:5],
            pt_i.tagsDict["gtype"][:5], atom_indx, r_i_nm[0], r_i_nm[1],
            r_i_nm[2])
    gro_lines += " %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f \n" % (
        units.convert_angstroms_nm(
            latvec[0][0]), units.convert_angstroms_nm(
                latvec[1][1]), units.convert_angstroms_nm(
                    latvec[2][2]), units.convert_angstroms_nm(latvec[0][1]),
        units.convert_angstroms_nm(
            latvec[0][2]), units.convert_angstroms_nm(
                latvec[1][0]), units.convert_angstroms_nm(
                    latvec[1][2]), units.convert_angstroms_nm(latvec[2][0]),
        units.convert_angstroms_nm(latvec[2][1]))

    F = open(data_file, 'w')
    F.write(gro_lines)
    F.close()
Example #4
0
def write_itp(paramC,out_itp):
    """"
    Write gromacs parameter file
    """
    
    F = open( out_itp,'w')
    F.write(';  new ff parameters \n')
    F.write(' \n ')
    
    
    F.write(' \n [ defaults ] ')
    F.write(' \n ; nbfunc        comb-rule       gen-pairs       fudgeLJ fudgeQQ ')
    nbfunc = paramC.get_nbfunc()
    combmixrule =  paramC.get_combmixrule()
    genpairs =  paramC.get_genpairs()
    fudgeLJ =  paramC.get_fudgeLJ()
    fudgeQQ =  paramC.get_fudgeQQ()

    
    F.write(' \n  %d %d %s  %f %f ' % ( nbfunc,combmixrule,genpairs,fudgeLJ,fudgeQQ  ))
    F.write(' \n ')
    F.write(' \n ')

    ljtypC_p =  paramC.ljtypC
    btypC_p =  paramC.btypC
    atypC_p =  paramC.atypC
    dtypC_p =  paramC.dtypC
    imptypC_p =  paramC.imptypC

    #
    # Write particle types   
    #
    F.write('\n [ atomtypes ] ')
    for lj_p, ljObj_p  in ljtypC_p:
        sigma = units.convert_angstroms_nm( ljObj_p.sigma )
        epsilon = units.convert_kcalmol_kJmol( ljObj_p.epsilon )
        out_line = "\n %s   %d  %f %f %s %f %f  "%(ljObj_p.ptype1,ljObj_p.pid,ljObj_p.get_mass(),ljObj_p.charge,ljObj_p.ptype,sigma,epsilon)
        F.write(out_line)

    F.write(' \n ')
    #
    # Write bond types
    #
    F.write('\n [ bondtypes ] ')
    for b_p, btypeObj_p  in btypC_p:
        g_type = btypeObj_p.get_g_indx()
        if( g_type == 1 ):
            r0 = units.convert_angstroms_nm(  btypeObj_p.get_r0() )
            kb = units.convert_kb_g_bond( btypeObj_p.get_kb()) 
            out_line = "\n %s   %s  %d   %f  %f  "%(btypeObj_p.get_ptype1(),btypeObj_p.get_ptype2(),g_type,r0,kb)
        else:
            print "  unknown gromacs bond type index  ",g_type
            sys.exit(" error in printing itp file ")
            
        F.write(out_line)
    F.write(' \n ')
    #
    # Write angle  types
    #
    F.write('\n [ angletypes ] ')
    for a_p,atypeObj_p in atypC_p:        
        g_type = atypeObj_p.get_g_indx()
        if( g_type == 1  ):
            theta0 = atypeObj_p.get_theta0()
            kb = units.convert_kb_g_angle( atypeObj_p.get_kb()) 
            out_line = "\n %s   %s   %s  %d   %f  %f  "%(atypeObj_p.get_ptype1(),atypeObj_p.get_ptype2(),atypeObj_p.get_ptype3(),g_type,theta0,kb)
        else:
            print "  unknown gromacs angle type index  ",g_type
            sys.exit(" error in printing itp file ")
        F.write(out_line)
    F.write(' \n ')
    #
    # Write dihedral  types
    #
    F.write('\n [ dihedraltypes ] ')
    for d_p,dtypObj_p in dtypC_p:
        g_type = dtypObj_p.get_g_indx()
        if( g_type == 1 or g_type == 4  or g_type == 9 ):
            theat_s = dtypObj_p.get_theat_s()
            kb = units.convert_kcalmol_kJmol( dtypObj_p.get_kb() )
            mult =  dtypObj_p.get_mult()
            #print "  theat_s , kb ,mult ",theat_s , kb ,mult
            out_line = "\n %s   %s   %s   %s  %d   %f  %f  %d "%(dtypObj_p.get_ptype1(),dtypObj_p.get_ptype2(),dtypObj_p.get_ptype3(),dtypObj_p.get_ptype4(),g_type,theat_s,kb,mult)
        elif( g_type == 2  ):
            e0, ke_kcalmol  = dtypObj_p.getimp()
            ke = units.convert_kcalmol_kJmol( ke_kcalmol )
            out_line = "\n %s   %s   %s   %s  %d   %f  %f  "%(dtypObj_p.get_ptype1(),dtypObj_p.get_ptype2(),dtypObj_p.get_ptype3(),dtypObj_p.get_ptype4(),g_type,e0, ke)
            error_line = "No impropers should be in dihedral type container "
            sys.exit(error_line)
        elif( g_type == 3  ):
            Clist_kcalmol  = dtypObj_p.get_rbClist()
            Clist = []
            for Cindx in Clist_kcalmol:
                Clist.append( units.convert_kcalmol_kJmol(Cindx))
            out_line = "\n %s   %s   %s   %s  %d  %f  %f  %f  %f  %f %f "%(dtypObj_p.get_ptype1(),dtypObj_p.get_ptype2(),dtypObj_p.get_ptype3(),dtypObj_p.get_ptype4(),g_type,Clist[0],Clist[1],Clist[2],Clist[3],Clist[4],Clist[5])            
        else:
            print "  unknown gromacs dihedral type index  ",g_type
            sys.exit(" error in printing itp file ")
        F.write(out_line)

    for d_p,imptypObj_p in imptypC_p:
        g_type = imptypObj_p.get_g_indx()
        if( g_type == 2  ):
            e0, ke_kcalmol  = imptypObj_p.getimp()
            ke = units.convert_kb_g_angle( ke_kcalmol )
            out_line = "\n %s   %s   %s   %s  %d   %f  %f  "%(imptypObj_p.get_ptype1(),imptypObj_p.get_ptype2(),imptypObj_p.get_ptype3(),imptypObj_p.get_ptype4(),g_type,e0, ke)            
        elif( g_type == 3  ):
            e0, ke_kcalmol  = imptypObj_p.getimp()
            pn  = imptypObj_p.get_pn()
            ke = units.convert_kb_g_angle( ke_kcalmol )
            out_line = "\n %s   %s   %s   %s  %d   %f  %f  %d "%(imptypObj_p.get_ptype1(),imptypObj_p.get_ptype2(),imptypObj_p.get_ptype3(),imptypObj_p.get_ptype4(),g_type,e0, ke, np)            
        else:
            print "  unknown gromacs improper dihedral type index  ",g_type
            sys.exit(" error in printing itp file ")
        F.write(out_line)


    F.write(' \n ')


    F.close()