def readParamsFromOptimiserFile(self, iternum): """ read the recon_it000_optimiser.star file to get iteration parameters, such as symmetry and phase residual cutoff """ iterparams = {'iternum': iternum,} #recondir = os.path.join(self.params['rundir'], "recon") recondir = self.params['rundir'] optimiserfile = "recon_it%03d_optimiser.star"%(iternum) optimiserfilepath = os.path.join(recondir, optimiserfile) # Create a dictionary of parameters found in the optimiser file paramdict = {} ### parse optimiser file to populate dictionary f = starFile.StarFile( optimiserfilepath ) f.read() dataBlock = f.getDataBlock("data_optimiser_general") paramdict = dataBlock.getLabelDict() header = f.getHeader() # Parse the header for the command line options used to run relion sheader = header.strip() bits = sheader.split("--") for bit in bits: params = bit.split() key = params[0] if len(params) > 1 : value = params[1] paramdict[key] = value else: paramdict[key] = True if 'ini_high' not in paramdict: paramdict['ini_high'] = 0 iterparams['ctf'] = self.convertBool(paramdict['_rlnDoCorrectCtf']) if paramdict['_rlnDoCorrectCtf'] else False iterparams['ctf_intact_first_peak'] = self.convertBool(paramdict['_rlnDoIgnoreCtfUntilFirstPeak']) if paramdict['_rlnDoIgnoreCtfUntilFirstPeak'] else False iterparams['ctf_corrected_ref'] = self.convertBool(paramdict['_rlnRefsAreCtfCorrected']) if paramdict['_rlnRefsAreCtfCorrected'] else False iterparams['offset_step'] = int(paramdict['offset_step']) iterparams['auto_local_healpix_order'] = int(paramdict['_rlnAutoLocalSearchesHealpixOrder']) iterparams['healpix_order'] = int(paramdict['healpix_order']) iterparams['offset_range'] = int(paramdict['offset_range']) iterparams['ini_high'] = int(paramdict['ini_high']) iterparams['sym'] = paramdict['sym'] ### convert symetry to Appion symtext = apFrealign.convertFrealignSymToAppionSym(iterparams['sym']) symmdata = apSymmetry.findSymmetry(symtext) apDisplay.printMsg("Found symmetry %s with id %s"%(symmdata['eman_name'], symmdata.dbid)) iterparams['symmdata'] = symmdata return iterparams
def readParamsFromOptimiserFile(self, iternum): """ read the recon_it000_optimiser.star file to get iteration parameters, such as symmetry and phase residual cutoff """ iterparams = {'iternum': iternum,} #recondir = os.path.join(self.params['rundir'], "recon") recondir = self.params['rundir'] optimiserfile = "recon_it%03d_optimiser.star"%(iternum) optimiserfilepath = os.path.join(recondir, optimiserfile) # Create a dictionary of parameters found in the optimiser file paramdict = {} ### parse optimiser file to populate dictionary f = starFile.StarFile( optimiserfilepath ) f.read() dataBlock = f.getDataBlock("data_optimiser_general") paramdict = dataBlock.getLabelDict() header = f.getHeader() # Parse the header for the command line options used to run relion sheader = header.strip() bits = sheader.split("--") for bit in bits: params = bit.split() key = params[0] if len(params) > 1 : value = params[1] paramdict[key] = value else: paramdict[key] = True if 'ini_high' not in paramdict: paramdict['ini_high'] = 0 iterparams['ctf'] = self.convertBool(paramdict['_rlnDoCorrectCtf']) if paramdict['_rlnDoCorrectCtf'] else False iterparams['ctf_intact_first_peak'] = self.convertBool(paramdict['_rlnDoIgnoreCtfUntilFirstPeak']) if paramdict['_rlnDoIgnoreCtfUntilFirstPeak'] else False iterparams['ctf_corrected_ref'] = self.convertBool(paramdict['_rlnRefsAreCtfCorrected']) if paramdict['_rlnRefsAreCtfCorrected'] else False iterparams['offset_step'] = int(paramdict['offset_step']) iterparams['auto_local_healpix_order'] = int(paramdict['_rlnAutoLocalSearchesHealpixOrder']) iterparams['healpix_order'] = int(paramdict['healpix_order']) iterparams['offset_range'] = int(paramdict['offset_range']) iterparams['ini_high'] = int(paramdict['ini_high']) iterparams['sym'] = paramdict['sym'] ### convert symetry to Appion symtext = apFrealign.convertFrealignSymToAppionSym(iterparams['sym']) symmdata = apSymmetry.findSymmetry(symtext) apDisplay.printMsg("Found symmetry %s with id %s"%(symmdata['eman_name'], symmdata.dbid)) iterparams['symmdata'] = symmdata return iterparams
def readParamsFromCombineFile(self, iternum): """ read the combine file to get iteration parameters, such as symmetry and phase residual cutoff """ iterparams = { 'iternum': iternum, } recondir = os.path.join(self.params['rundir'], "recon") combinefile = "iter%03d/frealign.iter%03d.proc%03d.sh" % ( iternum, iternum, iternum) conbinefilepath = os.path.join(recondir, combinefile) apDisplay.printMsg("Reading combine file %s for parameters" % (conbinefilepath)) f = open(conbinefilepath, "r") ### locate start for line in f: if line.startswith("### START FREALIGN ###"): break ### parse file cards = [] for line in f: cards.append(line.strip()) if line.startswith("EOF"): break f.close() ### get lots of info from card #1 data = cards[1].split(",") #print data iterparams['cform'] = data[0] iterparams['iflag'] = int(data[1]) iterparams['fmag'] = self.convertBool(data[2]) iterparams['fdef'] = self.convertBool(data[3]) iterparams['fastig'] = self.convertBool(data[4]) iterparams['fpart'] = self.convertBool(data[5]) iterparams['iewald'] = float(data[6]) iterparams['fbeaut'] = self.convertBool(data[7]) iterparams['fcref'] = self.convertBool(data[8]) iterparams['fbfact'] = self.convertBool(data[9]) iterparams['fmatch'] = self.convertBool(data[10]) iterparams['ifsc'] = self.convertBool(data[11]) iterparams['fstat'] = self.convertBool(data[12]) iterparams['iblow'] = int(data[13]) ### get lots of info from card #2 data = cards[2].split(",") #print data iterparams['mask'] = float(data[0]) iterparams['imask'] = float(data[1]) iterparams['wgh'] = float(data[3]) iterparams['xstd'] = float(data[4]) iterparams['pbc'] = float(data[5]) iterparams['boff'] = float(data[6]) iterparams['dang'] = float(data[7]) ### only used for recon search iterparams['itmax'] = int(data[8]) iterparams['ipmax'] = int(data[9]) ### get symmetry info from card #5 apDisplay.printMsg("Found Frealign symmetry %s in card 5" % (cards[5], )) symtext = apFrealign.convertFrealignSymToAppionSym(cards[5]) print symtext symmdata = apSymmetry.findSymmetry(symtext) apDisplay.printMsg("Found symmetry %s with id %s" % (symmdata['eman_name'], symmdata.dbid)) iterparams['symmdata'] = symmdata ### get threshold info from card #6 data = cards[6].split(",") #print data iterparams['target'] = float(data[2]) iterparams['thresh'] = float(data[3]) iterparams['cs'] = float(data[4]) ### get limit info from card #7 data = cards[7].split(",") #print data iterparams['rrec'] = float(data[0]) iterparams['highpass'] = float(data[1]) iterparams['lowpass'] = float(data[2]) iterparams['rbfact'] = float(data[4]) #print iterparams return iterparams
def readParamsFromCombineFile(self, iternum): """ read the combine file to get iteration parameters, such as symmetry and phase residual cutoff """ iterparams = {'iternum': iternum,} recondir = os.path.join(self.params['rundir'], "recon") combinefile = "iter%03d/frealign.iter%03d.proc%03d.sh"%(iternum, iternum, iternum) conbinefilepath = os.path.join(recondir, combinefile) apDisplay.printMsg("Reading combine file %s for parameters"%(conbinefilepath)) f = open(conbinefilepath, "r") ### locate start for line in f: if line.startswith("### START FREALIGN ###"): break ### parse file cards = [] for line in f: cards.append(line.strip()) if line.startswith("EOF"): break f.close() ### get lots of info from card #1 data = cards[1].split(",") #print data iterparams['cform'] = data[0] iterparams['iflag'] = int(data[1]) iterparams['fmag'] = self.convertBool(data[2]) iterparams['fdef'] = self.convertBool(data[3]) iterparams['fastig'] = self.convertBool(data[4]) iterparams['fpart'] = self.convertBool(data[5]) iterparams['iewald'] = float(data[6]) iterparams['fbeaut'] = self.convertBool(data[7]) iterparams['fcref'] = self.convertBool(data[8]) iterparams['fbfact'] = self.convertBool(data[9]) iterparams['fmatch'] = self.convertBool(data[10]) iterparams['ifsc'] = self.convertBool(data[11]) iterparams['fstat'] = self.convertBool(data[12]) iterparams['iblow'] = int(data[13]) ### get lots of info from card #2 data = cards[2].split(",") #print data iterparams['mask'] = float(data[0]) iterparams['imask'] = float(data[1]) iterparams['wgh'] = float(data[3]) iterparams['xstd'] = float(data[4]) iterparams['pbc'] = float(data[5]) iterparams['boff'] = float(data[6]) iterparams['dang'] = float(data[7]) ### only used for recon search iterparams['itmax'] = int(data[8]) iterparams['ipmax'] = int(data[9]) ### get symmetry info from card #5 apDisplay.printMsg("Found Frealign symmetry %s in card 5"%(cards[5], )) symtext = apFrealign.convertFrealignSymToAppionSym(cards[5]) print symtext symmdata = apSymmetry.findSymmetry(symtext) apDisplay.printMsg("Found symmetry %s with id %s"%(symmdata['eman_name'], symmdata.dbid)) iterparams['symmdata'] = symmdata ### get threshold info from card #6 data = cards[6].split(",") #print data iterparams['target'] = float(data[2]) iterparams['thresh'] = float(data[3]) iterparams['cs'] = float(data[4]) ### get limit info from card #7 data = cards[7].split(",") #print data iterparams['rrec'] = float(data[0]) iterparams['highpass'] = float(data[1]) iterparams['lowpass'] = float(data[2]) iterparams['rbfact'] = float(data[4]) #print iterparams return iterparams