def computeRate(selector): myMultistrand = MergeSim() myMultistrand.setOptionsFactory2(genOptions, NUMOFPATHS, selector) myMultistrand.setNumOfThreads(NUMOFTHREADS) myMultistrand.setTerminationCriteria(TERMINATIONCRIT) myMultistrand.setLeakMode() # the new leak object -- faster bootstrapping. myMultistrand.printTrajectory() return 0.0, 0.0, 0.0 myMultistrand.run() myFSR = myMultistrand.results low, high = myFSR.doBootstrap() return myFSR.k1(), low, high
# FD: This script is now set to use 4 threads and just 50,000 trajectories. # FD: This is different from the results in case1.pdf # FD: The results of this study heavily depend on the parameterization of the Metropolis model: JS or DNA23 (see below). from multistrand.objects import StopCondition, Domain, Complex, Strand from multistrand.options import Options, Literals from multistrand.concurrent import MergeSim from multistrand._options.interface import FirstStepResult import numpy as np ATIME_OUT = 10.0 myMultistrand = MergeSim() myMultistrand.setNumOfThreads(8) myMultistrand.setLeakMode() def first_step_simulation(strand_seq, trials, T=25, material="DNA"): print( "Running first step mode simulations for %s (with Boltzmann sampling)..." % (strand_seq)) # Using domain representation makes it easier to write secondary structures. onedomain = Domain(name="onedomain", sequence=strand_seq) gdomain = Domain(name="gdomain", sequence="TTTT") top = Strand(name="top", domains=[onedomain]) bot = top.C dangle = Strand(name="Dangle", domains=[onedomain, gdomain])