def Pickle(RepInd, Prefix): ''' pickles sim-style traj objects from each replica traj''' # filenames print 'Pickling Replica %d' % RepInd TrajFile = Prefix + '.lammpstrj' LogFile = Prefix + 'lammps.log' myTrajFn = TrajFile + '.%d.gz' % RepInd myLogFn = LogFile + '.%d' % RepInd pickleTraj(myTrajFn, LogFile=myLogFn, LogFileToken='#run production') return
def main(TrajFile, trajtype, fftype = 'wca', N_mon = 25, N_poly = 1, N_water = 1700, savedir = os.getcwd()): Trj = pickleTraj(os.path.abspath(TrajFile)) # Computing for measure in Measures: if measure == 'pmf_Rg_R_EE' or isComputed(savedir, measure, trajtype): continue print 'Computing %s for %s...' % (measure, trajtype) data = compute(trj = Trj, trajtype = trajtype, measure = measure, nmon = N_mon, npoly = N_poly, nwater = N_water) prefix = getFilePrefix(basedir = savedir, data_name = measure, data_type = 'measure', trajtype = trajtype) writeToFile(prefix, data) # Making histograms for measure in Measures: if isBinned(savedir, measure, trajtype): continue print 'Binning %s...' % measure hist_prefix = getFilePrefix(basedir = savedir, data_name = measure, data_type = 'hist', trajtype = trajtype) if measure != 'pmf_Rg_R_EE': compute_prefix = getFilePrefix(basedir = savedir, data_name = measure, data_type = 'measure', trajtype = trajtype) data = readFromFile(compute_prefix) hist = makeHist1D(data) writeToFile(hist_prefix, hist) if measure == 'pmf_Rg_R_EE': Rg_prefix = getFilePrefix(basedir = savedir, data_name = 'Rg', data_type = 'measure', trajtype = trajtype) R_EE_prefix = getFilePrefix(savedir, data_name = 'R_EE', data_type = 'measure', trajtype = trajtype) Rg = readFromFile(Rg_prefix); R_EE = readFromFile(R_EE_prefix) hist = makeHist2D(Rg, R_EE, fftype = fftype) writeToFile(hist_prefix, hist)
def Update(self, TrajFn=None, Temp=None): # updates the compute object if traj or temp is changed # if native pdb is changed then better create another instance if not Temp is None: self.Temp = Temp if not TrajFn is None: self.TrajFn = os.path.abspath(TrajFn) self.Trj = pickleTraj(self.TrajFn) self.FrameRange = range(0, len(self.Trj), StepFreq) self.NFrames = len(self.FrameRange)
def parseTraj(lammpstraj): monomer_atomname = '3' Trj = pickleTraj(lammpstraj) boxlen = Trj.FrameData["BoxL"] mappedatoms = [] for (i, AtomName) in enumerate(Trj.AtomNames): if AtomName == monomer_atomname: mappedatoms.append(i) return (Trj, boxlen, mappedatoms)
def __prepHeadVars(): global Trj, BoxL, AtomNames, AtomTypes, NB, NW Trj = pickleTraj(Traj) BoxL = np.array(Trj.FrameData['BoxL']) AtomNames = Trj.AtomNames if AtomNames2Types: AtomTypes = __AtomName2Type(AtomNames) else: AtomTypes = Trj.AtomTypes if isMappedTrj: NB = len(np.where(AtomTypes == 1)[0]) NW = len(np.where(AtomTypes == 2)[0]) else: NB = len(np.where(AtomTypes < 13)[0]) NW = len(np.where(AtomTypes == 13)[0])
def __init_Srel(self, p, Sys, AATraj, cfg=None): ''' set Sys, Trj and Map for a single traj''' self.NTraj = 1 self.p = p self.cfg = cfg if not cfg is None else self.p.cfg self.Sys = Sys self.Allp = [self.p] self.AllSys = [self.Sys] self.AATraj = AATraj # pickle supplied Traj self.Trj = pickleTraj(self.AATraj) # 1-1 map (since supplied traj will be already mapped) Map = sim.atommap.PosMap() for (i, a) in enumerate(self.Sys.Atom): Map += [sim.atommap.AtomMap(Atoms1=i, Atom2=a)] self.Map = Map
def __init__(self, NativePdb, TrajFn=None, Temp=None, Prefix='compute'): # parse out-prefix self.Prefix = os.path.abspath(Prefix) self.OutPrefix = self.Prefix.split('/')[-1] self.OutDir = os.path.dirname(self.Prefix) # parse traj if not TrajFn is None: self.TrajFn = os.path.abspath(TrajFn) self.Trj = pickleTraj(self.TrajFn) self.FrameRange = range(0, len(self.Trj), StepFreq) self.NFrames = len(self.FrameRange) # record temp if not Temp is None: self.Temp = Temp # cg protein objects for native and predicted self.pNative = ProteinNCOS(NativePdb) self.p = ProteinNCOS(NativePdb)
def makeSys(LDCut = 7.8, NMethane = 25, NWater = 1700): print 'Making system' atomtypeM = sim.chem.AtomType('M', Mass = 16.0427, Charge = 0.0) atomtypeW = sim.chem.AtomType('W', Mass = 18.0, Charge = 0.0) moltypeM = sim.chem.MolType('M', [atomtypeM]) moltypeW = sim.chem.MolType('W', [atomtypeW]) world = sim.chem.World([moltypeM, moltypeW], Dim = 3, Units = sim.units.AtomicUnits) Sys = sim.system.System(world, Name = Prefix) for i in range(NWater): Sys += moltypeW.New() for i in range(NMethane): Sys += moltypeM.New() Filter_MM = sim.atomselect.PolyFilter([atomtypeM, atomtypeM]) Filter_MW = sim.atomselect.PolyFilter([atomtypeM, atomtypeW]) Filter_WW = sim.atomselect.PolyFilter([atomtypeW, atomtypeW]) Filter_MW_LD = sim.atomselect.PolyFilter([atomtypeM, atomtypeW], Ordered = True) Delta = 1.2 Pspline_MM = sim.potential.PairSpline(Sys, Filter = Filter_MM, Cut = 10.0, NKnot = 30, Label = "SP_MM") Pspline_MW = sim.potential.PairSpline(Sys, Filter = Filter_MW, Cut = 10.0, NKnot = 30, Label = "SP_MW") Pspline_WW = sim.potential.PairSpline(Sys, Filter = Filter_WW, Cut = 10.0, NKnot = 30, Label = "SP_WW") Plocaldensity_MW = sim.potential.LocalDensity(Sys, Filter = Filter_MW_LD, Cut = LDCut, LowerCut = LDCut - Delta, NKnot = 30, RhoMin = 0., RhoMax = NMethane, Label = "LD") if fixWW: WWSPKnots = eval(file(os.path.expanduser('~/c25ld/c25_single_site_water/water_spce/spce_ff.dat')).read()) Pspline_WW.SetParam(Knots = WWSPKnots) Sys.ForceField.extend([Pspline_MM, Pspline_MW, Pspline_WW, Plocaldensity_MW]) for P in Sys.ForceField: P.Arg.SetupHist(NBin = 1000, ReportNBin = 100) #Sys.ForceField.SetSplineTreatment(NonbondEneSlope = 50., BondEneSlope = 10., AngleEneSlope = 60.) for Pspline in [Pspline_MM, Pspline_MW, Pspline_WW]: Pspline.EneSlopeInner = None Sys.Load() Trj = pickleTraj(LammpsTraj) Sys.BoxL = Trj.FrameData['BoxL'] Sys.TempSet = 298.0 sim.system.init.positions.CubicLatticeFill(Sys, Random = 0.1) sim.system.init.velocities.Canonical(Sys, Temp = 298.0) Int = Sys.Int for Method in Int.Methods: if hasattr(Method, 'TimeStep'): Method.TimeStep = 3.e-3 return Sys
def __init_MultiSrel(self, p, Sys, AATraj, cfg=None): '''set Sys, Trj and Map for extended ensemble optimization''' self.NTraj = len(AATraj) self.p = p if isinstance(p, list) else [p] * self.NTraj if cfg is None: self.cfg = [x.cfg for x in self.p] else: self.cfg = cfg if isinstance(cfg, list) else [cfg] * self.NTraj self.Sys = Sys if isinstance(Sys, list) else [Sys] * self.NTraj self.Allp = self.p self.AllSys = self.Sys self.AATraj = AATraj # list of pickled Trj objects self.Trj = [pickleTraj(Traj) for Traj in self.AATraj] # list of 1-1 maps (since all supplied trajs will be already mapped) Map = [sim.atommap.PosMap() for i in range(self.NTraj) ] # need to create separate PosMap instances for i in range(self.NTraj): for (j, a) in enumerate(self.Sys[i].Atom): Map[i] += [sim.atommap.AtomMap(Atoms1=j, Atom2=a)] self.Map = Map
def runSrel(Sys): Trj = pickleTraj(LammpsTraj, Verbose = True) Map = sim.atommap.PosMap() for (i, a) in enumerate(Sys.Atom): Map += [sim.atommap.AtomMap(Atoms1 = i, Atom2 = a)] #1:1 mapping since using a mapped traj Int = Sys.Int Int.Method = Int.Methods.VVIntegrate Int.Method.Thermostat = Int.Method.ThermostatLangevin Int.Method.LangevinGamma = 0.01 Sys.TempSet = 298.0 Pspline_MM = Sys.ForceField[0] ; Pspline_MW = Sys.ForceField[1] ; Pspline_WW = Sys.ForceField[2] Plocaldensity = Sys.ForceField[-1] PairPotentialList = [Pspline_MM, Pspline_MW] if fixWW else [Pspline_MM, Pspline_MW, Pspline_WW] print "Resetting all potentials to base case" for Pspline in PairPotentialList: Pspline.SetParam(Knots = 0.) Plocaldensity.SetParam(Knots = 0.) for p in Sys.ForceField: p.FreezeParam() print Sys.ForceField.ParamString() Opt = sim.srel.OptimizeTrajLammpsClass(Sys, Map, Traj = Trj, SaveLoadArgData = True, FilePrefix = Prefix, Verbose = True) sim.srel.optimizetraj.PlotFmt = 'svg' Opt.MinReweightFrac = 0.2 Opt.TempFileDir = os.getcwd() opt_cases = ['SP', 'SPLD'] for i, case in enumerate(opt_cases): Opt.Reset() Opt.FilePrefix = Prefix + '_' + case print "\n\nOptimizing for the case: ", case if case == "SP": for Pspline in PairPotentialList: Pspline.UnfreezeParam() if case == "SPLD": Plocaldensity.UnfreezeParam() Sys.ForceField.Update() Opt.RunConjugateGradient(StepsEquil = 10000000, StepsProd = 20000000, StepsStride = 500)
#write output headers LDCuts = np.arange(4.5, 10.0, 0.1) datalog = '%s_dSreldrc.dat' % datalog_prefix if not os.path.isfile(datalog) or RefreshLogs: of = open(datalog, 'w') of.write('#LDCut \t dSreldrc\n') of.close() #various indexing schemes TrjIter = {'AA': [0, -1, 10], 'CG': [0, -1, 10]} # compile fortcode fcompile() from dSreldrc_fortlib import getdudrc Trj_AA = pickleTraj(LammpsTraj) BoxL = Trj_AA.FrameData['BoxL'][0] #begin looping over different LD cutoffs for i, LDCut in enumerate(LDCuts): print '\n\nLDCut = %g\n' % LDCut #calculate coefficients (coeff, dcoeff) = alg.calcCoeff(LDCut = LDCut, Delta = 1.2) #get AA and CG trj Trj_CG = pickleTraj(base_fmt['cg_trj'] % (fftype, i)) #get Spline Coeffs for CG forcefield ffield_CG = base_fmt['cg_ff'] % (fftype, i)
#!/usr/bin/env python import os, pickle, sys import numpy as np import sim import pickleTraj LammpsTrajIn = os.path.abspath(sys.argv[1]) LammpsTrajOut = os.path.abspath(sys.argv[2]) Trj = pickleTraj(LammpsTrajIn) BoxL = Trj.FrameData['BoxL'] monomer_atomname = '3' mappedatoms = [] for (i,AtomType) in enumerate(Trj.AtomTypes): if AtomType == int(monomer_atomname): mappedatoms.append(i) Map = sim.atommap.PosMap() for (i,j) in enumerate(mappedatoms): Map += [sim.atommap.AtomMap(Atoms1 = j, Atom2 = i, Atom2Name = monomer_atomname)] AtomNames = [monomer_atomname] * len(mappedatoms) MappedTrj = sim.traj.Mapped(Trj, Map, AtomNames = AtomNames) sim.traj.Convert(MappedTrj, sim.traj.LammpsWrite, LammpsTrajOut, Verbose = True) pickleTraj(LammpsTrajOut)
#input files base_fmt = {'cg_ff': ff_fmtstring, 'cg_trj': md_fmtstring} #output arrays LDCuts = np.arange(4.5, 10.0, 0.1) delta_Srel = {'Bennett': np.zeros([len(LDCuts), NBlocks], np.float64), 'Fep' : np.zeros([len(LDCuts), NBlocks], np.float64)} datalog = {'Bennett': '%s_Srel_Bennett.dat' % datalog_prefix, 'Fep': '%s_Srel_Fep.dat' % datalog_prefix } #various indexing schemes poly_dict = SysData['poly_dict'] serial_index = {'AA': (0, poly_dict['N_mon']*poly_dict['N_poly']), 'CG': (0, poly_dict['N_mon']*poly_dict['N_poly'])} #always using a mapped traj #extract all necessary AA data Trj_AA = pickleTraj(LammpsTraj) BoxL = Trj_AA.FrameData['BoxL'] #begin looping over different LD cutoffs for i, LDCut in enumerate(LDCuts[0:-1]): print '\n\nLDCUTs = (%g, %g)\n' % (LDCuts[i], LDCuts[i+1]) #extract all necessary CG data sumfile1 = base_fmt['cg_ff'] % (fftype, i); sumfile2 = base_fmt['cg_ff'] % (fftype, (i+1)) trajfile1 = base_fmt['cg_trj'] % (fftype, i) ; trajfile2 = base_fmt['cg_trj'] % (fftype, (i+1)) ParamString1 = parse_potential.parseParamString(sumfile1); ParamString2 = parse_potential.parseParamString(sumfile2) Trj_CG_1 = pickleTraj(trajfile1); Trj_CG_2 = pickleTraj(trajfile2) #create systems with forcefields of LDCuts i and i+1 Sys1 = alg.makeSys(LDCut = LDCuts[i], Delta = Delta, BoxL = BoxL, fftype = fftype, Prefix = 'bennettsys1',
TrajFn = FMT['TRAJ'] % (TrajPrefix, TempSet) # fancy intro print 'ANALYSING MULTI-PROTEIN FOR %s at %3.2f K' % (Prefix, TempSet) print '----------------------------------------------------------------' # set up Compute object print 'Creating Compute object' calc = cg.Compute(NativePdb = NativePdb, TrajFn = TrajFn, Temp = TempSet, Prefix = OutPrefix, hasPseudoGLY = hasPseudoGLY) # cluster the room temp traj print 'Clustering trajectory' calc.Cluster() # top-cluster contact analysis Trj = pickleTraj(TrajFn) BoxL = Trj.FrameData['BoxL'] ClustPdb = FMT['CLUSTPDB'] % (calc.Prefix, calc.Temp) p = cg.ProteinNCOS(ClustPdb, Model = 1) # top cluster contact map print 'Calculating contact map for top cluster' cmap, cdist = p.GetResContacts(BoxL = BoxL) picklename = FMT['RESCONTACTS'] % (calc.Prefix + '_topclust', calc.Temp) with open(picklename, 'w') as of: pickle.dump(cmap, of) # top cluster dihedrals print 'Calculating dihedral angles for top cluster' Phi, Psi = p.GetPhiPsi(BoxL = BoxL) picklename = FMT['RAMA'] % (calc.Prefix + '_topclust', calc.Temp) with open(picklename, 'w') as of: pickle.dump((Phi, Psi), of)
if isPolymer: NStep = NStep_polymer else: NStep = NStep_methane #system parameters SysData = alg.makeSysData(isPolymer = isPolymer, hasLJ = hasLJ, N_mon = N_mon, N_water = N_water) TempSet = 298.0 Delta = 1.2 #CG forcefield parameters cg_ff_file = cgffPrefix + '_sum.txt' paramstring = pp.parseParamString(cg_ff_file) #boxlength extracted from AA traj BoxL = pickleTraj(LammpsTraj).FrameData['BoxL'] #create the system object Sys = alg.makeSys(LDCut = LDCut, SysData = SysData, fftype = fftype, BoxL = BoxL, Prefix = Prefix, paramstring = paramstring, Delta = 1.2) #initialize system sim.system.init.positions.CubicLattice(Sys, Random = 0.1) sim.system.init.velocities.Canonical(Sys, Temp = TempSet) ##different MD steps Int = Sys.Int #energy minimization print 'Minimizing energy...' Int.Method = Int.Methods.VVQuench Int.Run(NStep['Min'])
cfg = cg.config.Config() cfg.AtomS['GLY'] = cg.const.AtomS_GLY p = cg.topo.ProteinNCOS(Pdb=pdbfile, cfg=cfg, Prefix='protg_test') ret = cg.parsestruct.ParsePdb(p) c_nonnative = ret['c_nonnative'] x, y = zip(*c_nonnative) resnums = list(x) + list(y) resnums = list(set(resnums)) SInds_nonnative = p.GetSInds(ResNums=resnums) d_nonnative_pdb = ret['d_nonnative'] d_ss_nonnative_pdb = ret['d_ss_nonnative'] trj = pickleTraj(trajfile) NFrames = len(trj) if not os.path.isfile('protg_traj_nonnative_ss.txt'): d_ss_nonnative_traj = np.zeros([NFrames, len(c_nonnative)]) pb = sim.utility.ProgressBar( Text='Calculating s-s distances for non-native contacts...', Steps=NFrames * len(c_nonnative)) count = 0 for n in range(NFrames): Pos = trj[n] for k, (i, j) in enumerate(c_nonnative): si = SInds_nonnative[i] sj = SInds_nonnative[j] d_si_sj = Pos[sj] - Pos[si] d = np.sqrt(np.sum(d_si_sj * d_si_sj)) d_ss_nonnative_traj[n, k] = d
if reftable[i,0] == float(conc): NB = reftable[i,1] NW = reftable[i,2] BoxL = reftable[i,3] # parse filenames xyzTrj_original = os.path.join(srcDir, 'conc_%s' % conc, 'CG_trajectory_%s.xyz' % conc) xyzTrj = os.path.join(tarDir, 'NB%dNW%d' % (NB,NW), 'CG_trajectory_%s.xyz' % conc) LammpsTrj = os.path.join(tarDir, 'NB%dNW%d' % (NB,NW), 'NB%dNW%d_prod.lammpstrj' % (NB, NW)) TCLFile = os.path.join(tarDir, 'NB%dNW%d' % (NB, NW), 'conv_xyz.tcl') # copy traj to required location and unzip it if not os.path.isdir(os.path.join(tarDir, 'NB%dNW%d' % (NB, NW))): os.mkdir(os.path.join(tarDir, 'NB%dNW%d' % (NB, NW))) os.system('cp %s %s' % (xyzTrj_original, xyzTrj)) # run vmd VMDExec = '/home/cask0/home/tsanyal/software/tanmoy_vmd/vmd' VMDParams = {'xyz' : xyzTrj.split('/')[-1], 'lammpstrj': LammpsTrj.split('/')[-1], 'boxl': BoxL} file(TCLFile, 'w').write(tclscript % VMDParams) os.chdir(os.path.join(tarDir, 'NB%dNW%d' % (NB, NW))) os.system('%s -dispdev text -e %s' % (VMDExec, TCLFile)) os.system('gzip %s' % LammpsTrj) os.chdir(curr_dir) # pickle final traj pickleTraj(LammpsTrj+'.gz', Verbose = True) if DelTempFiles: [os.remove(x) for x in [TCLFile, xyzTrj]]
# test system of 5 benzene and 10 waters cg.doMinimize = False cg.NB = 5 cg.NW = 10 cg.LammpsTraj = '/home/cask0/home/tsanyal/benwat/data/gromacs/NB50NW450/NB50NW450_prod.lammpstrj.gz' cg.Prefix = 'matchEne' # local density potential params cg.LDCutBW = 7.5 # can change to BB, WW, BW etc to experiment cg.LD_Delta = 1.2 cg.RhoMin = 0 cg.RhoMax = cg.NB testLDKnots = 2 * (1 - 0.3 * np.linspace(0, cg.NB, cg.NLDKnots)) # box length LammpsTrj = pickleTraj(cg.LammpsTraj, Verbose = True) cg.BoxL = LammpsTrj.FrameData['BoxL'] print 'Making system...' Sys = cg.makeSys() sumfile = '/home/cask0/home/tsanyal/benwat/data/cgff/NB50NW450_init/NB50NW450_SP_sum.txt' # load in converged pair splines or 0 pair potential from NB50NW450 and test LD Knots SP_BB = Sys.ForceField[0] ; SP_WW = Sys.ForceField[1] ; SP_BW = Sys.ForceField[2] LD = Sys.ForceField[-1] for P in [SP_BB, SP_WW, SP_BW]: P.SetParam(Knots = [0.] * cg.NSPKnots) #P.SetParam(**pp.parseParam(sumfile, P.Name)) LD.SetParam(Knots = testLDKnots) Sys.ForceField.Update() Sys.TempSet = 300.0 sim.system.init.positions.CubicLatticeFill(Sys, Random = 0.1) sim.system.init.velocities.Canonical(Sys, Temp = 298.0) Int = Sys.Int Sys.Measures.VerboseOutput(StepFreq = 100)
TrjName = GromacsTrj.split('/')[-1] LammpsData = os.path.join(TrjDir, 'temp.data') LammpsTrj = GromacsTrj.split('.')[0] + '_unmapped.lammpstrj' TCLFile = os.path.join(TrjDir, 'conv_trj.tcl') # run vmd VMDExec = '/home/cask0/home/tsanyal/software/tanmoy_vmd/vmd' VMDParams = {'gro' : GromacsStruct, 'xtc': GromacsTrj,'lammpstrj': LammpsTrj} file(TCLFile, 'w').write(tclscript % VMDParams) os.system('%s -dispdev text -e %s' % (VMDExec, TCLFile)) os.system('gzip %s' % LammpsTrj) # map traj using sim LammpsTrjIn = LammpsTrj + '.gz' LammpsTrjOut = GromacsTrj.split('.')[0] + '.lammpstrj.gz' Trj = pickleTraj(LammpsTrjIn, Verbose = False) BoxL = Trj.FrameData['BoxL'] Map = sim.atommap.PosMap() # vmd created lammpstraj places all benzene atoms at the beginning in (C1,H1,C2,H2,...) sequence MassList_B = [12.011, 1.008] * 6 for i in range(0, NB): Map += [sim.atommap.AtomMap(Atoms1 = range(i*12, (i+1)*12), Atom2 = i, Mass1 = MassList_B)] for i in range(0, NW): Map += [sim.atommap.AtomMap(Atoms1 = NB*12 + i, Atom2 = NB+i)] AtomTypes = [1]*NB + [2]*NW MappedTrj = sim.traj.Mapped(Trj, Map, AtomNames = AtomTypes, BoxL = BoxL) sim.traj.Convert(MappedTrj, sim.traj.LammpsWrite, LammpsTrjOut, Verbose = True) # pickle final traj pickleTraj(LammpsTrjOut, Verbose = True) if DelTempFiles: os.remove(TCLFile)
traj = os.path.abspath(sys.argv[1]) fftype = sys.argv[2] nmethanes = int(sys.argv[3]) prefix = sys.argv[4] savedir = sys.argv[5] ## check if computation needs to be done if not os.path.isdir(os.path.join(savedir, 'measure')): os.mkdir(os.path.join(savedir, 'measure')) if not os.path.isdir(os.path.join(savedir, 'hist')): os.mkdir(os.path.join(savedir, 'hist')) measurepickleName = os.path.join(savedir, 'measure', prefix + '.pickle') histpickleName = os.path.join(savedir, 'hist', prefix + '.pickle') if os.path.isfile(histpickleName): quit() ## pickle trajectory trj = pickleTraj(traj) ## frame-selector start = 0; stop = len(trj); freq = 10 frame_range = range(start,stop,freq) nframes = len(frame_range) ## Initialise trajectory reader and read parameters boxl = trj.FrameData['BoxL'] ## make bins bin_centers = range(0, nmethanes+1) bin_vals = np.zeros([nframes, nmethanes+1], np.float64) bin_val_final = np.zeros(nmethanes+1) ## frame stepping
#/usr/bin/env python import os, sys import numpy as np import pickleTraj sys.path.append('../') import cgmodel cgmodel.doMinimize = False cgmodel.NB = 50 ; cgmodel.NW = 450 cgmodel.LDCutBW = 7.8 cgmodel.LammpsTraj = '/home/cask0/home/tsanyal/benwat/data/gromacs/NB50NW450/NB50NW450_npt.lammpstrj.gz' cgmodel.Prefix = 'test' trj = pickleTraj(cgmodel.LammpsTraj, Verbose = True) cgmodel.BoxL = trj.FrameData['BoxL'] Sys = cgmodel.makeSys() cgmodel.runSrel(Sys = Sys)
#!/usr/bin/env python import sim import sys import pickleTraj LammpsTrjIn = sys.argv[1] LammpsTrjOut = sys.argv[2] N_mon = int(sys.argv[3]) N_water = int(sys.argv[4]) Trj = pickleTraj(LammpsTrjIn, Verbose = False) BoxL = Trj.FrameData['BoxL'] Map = sim.atommap.PosMap() for i in range(0, N_water): Map += [sim.atommap.AtomMap(Atoms1 = i*3+2, Atom2= i)] for i in range(0, N_mon): Map += [sim.atommap.AtomMap(Atoms1 = 3*N_water + i, Atom2 = N_water + i)] AtomTypes = [1]*N_water + [2]*N_mon MappedTrj = sim.traj.Mapped(Trj, Map, AtomNames = AtomTypes) sim.traj.Convert(MappedTrj, sim.traj.LammpsWrite, LammpsTrjOut, Verbose = True)
sys.path.append('/home/cask0/home/tsanyal/benwat') import cgmodel as cg #TODO: populate these lists with distinct values for the different lammpstraj # or with same value (need to enquire with Scott) LDCutBB = [] LDCutBW = [] Temp = 300 cg.TempSet = Temp cg.LammpsTraj = LammpsTraj cg.Prefix = 'NB%dNW%d_multi' % (NB, NW) cg.LDCutBB = LDCutBB cg.LDCutBW = LDCutBW trj = pickleTraj(LammpsTraj, Verbose = True) cg.BoxL = trj.FrameData['BoxL'] Sys = cg.makeSys() TrajList = [] NMol = 500 NBList = [50,100,150,200,250,300,350,400,450,500] NWList = [] ; [NWList.append(500-x) for x in NBList] for i, NB in enumerate(NBList): NW = NWList[i] Traj = os.path.join('/home/cask0/home/tsanyal/benwat/data/gromacs/NB%dNW%d/NB%dNW%d_prod.lammpstrj.gz' % (NB, NW)) TrajList.append(Traj) cg.MultiLammpsTraj = TrajList
#check if already computed LogFileName = '/home/cask0/home/tsanyal/c25ld/nov15_runs_new_rc/geom_prop/energy_logs/%s_energy.pickle' % Prefix #if os.path.isfile(LogFileName): exit() #system parameters SysData = alg.makeSysData(isPolymer = isPolymer, hasLJ = hasLJ, N_mon = N_mon, N_water = N_water) TempSet = 298.0 Delta = 1.2 #CG forcefield parameters cg_ff_file = cgffPrefix + '_sum.txt' paramstring = pp.parseParamString(cg_ff_file) #boxlength extracted from AA traj Trj = pickleTraj(LammpsTraj) BoxL = Trj.FrameData['BoxL'] #create the system object Sys = alg.makeSys(LDCut = LDCut, SysData = SysData, fftype = fftype, BoxL = BoxL, Prefix = Prefix, paramstring = paramstring, Delta = 1.2) Sys.TempSet = TempSet Int = Sys.Int Int.Method = Int.Methods.VVIntegrate Int.Method.Thermostat = Int.Method.ThermostatLangevin Int.Method.LangevinGamma = 0.01 #if calcAtomEne and DEBUG: Sys_test = copy.deepcopy(Sys) # Extract potential objects Plj = None; Pspline = None ; Plocaldensity = None if hasLJ: