def __init__(self, command='PALES', verbose=False, debug=False, **free): #euler, noeuler, qDa, qRms, qStd, w, excl, incl, verb, noverb, yzInv, noyzInv, rem, fixedDI, nofixedDI): pass self.args, self.options = self.__parse_free__(free) self.command = str(command) self.verbose = bool(verbose) self.debug = bool(debug) if debug: loki.setLevel(logging.DEBUG) elif verbose: loki.setLevel(logging.INFO)
def __init__(self, input, output=None, fixed_angles=None, rg_limits=None, use_limits=True, seed=None, state=None, jump=None, tally=0, tally_digits=3, name=None, verbose=False, debug=False): # store and/or process inputs self.input = str(input) self.rg_limits = rg_limits self.use_limits = bool(use_limits) self.tally = int(tally) self.tally_digits = int(tally_digits) if output != None: self.output = str(output) else: self.output = self.input + '-' self.fixed_angles = fixed_angles if fixed_angles != None: if type(fixed_angles) != list: if type(fixed_angles) == tuple: self.fixed_angles = list(fixed_angles) else: self.fixed_angles = [fixed_angles] for i in range(len(self.fixed_angles)): if type(self.fixed_angles[i]) in [list, tuple]: lo, hi = str(self.fixed_angles[i][0]), \ str(self.fixed_angles[i][1]) elif re.search('([0-9]+).+([0-9]+)', str(self.fixed_angles[i])): lo, hi = re.search('([0-9]+).+([0-9]+)', \ str(self.fixed_angles[i])).groups() else: lo = hi = str(self.fixed_angles[i]) self.fixed_angles[i] = '%s..%s'%(lo,hi) if name is None: self.name = 'temp-%d'%os.getpid() else: self.name = str(name) if debug: loki.setLevel(logging.DEBUG) elif verbose: loki.setLevel(logging.INFO) # check that required input files exist if not os.path.isfile(self.input+'.seq'): raise ArgumentError, ('No sequence file found.', 'Cyana') if self.fixed_angles and not os.path.isfile(self.input + '.pdb'): raise ArgumentError, ('No model PDB file found for angle fixes.', 'Cyana') # setup temporary files os.system('cp -f %s.seq %s.seq'%(self.input, self.name)) loki.info('Readied the sequence file for further use.') if self.use_limits: for suffix in ['lol', 'upl', 'aco', 'xplor']: if os.path.isfile(self.input + '.' + suffix): os.system('cp -f %s.%s %s.%s'%(self.input, suffix, self.name, suffix)) loki.info("Readied a '%s' file for further use."%suffix) if self.fixed_angles: os.system('cp -f %s.pdb %s.pdb'%(self.input, self.name)) # initialise the random generator self.randgen = Random(seed) if state == None: if jump != None: if sys.version < '2.2': loki.warn('Python older than 2.2. Problems may arise.') elif sys.version > '2.2' and sys.version < '2.3': # this should provide enough room for each run to be in # unique state space self.randgen.jumpahead(jump*self.amount*1.1) else: self.randgen.jumpahead(jump) else: self.randgen.setstate(state) self.__last_macro_size__ = None