def createImagicBatchFileScaling(self): # IMAGIC batch file creation filename = os.path.join(self.params['rundir'], "prepareStack.batch") f = open(filename, 'w') f.write("#!/bin/csh -f\n") f.write("setenv IMAGIC_BATCH 1\n") append_log = False ### log file for imagic MRA, appended only if options are given #### Bin down stack, low-pass filter and high-pass filter images if self.params['bin'] > 1: f.write( str(self.imagicroot) + "/stand/coarse.e <<EOF > prepareStack.log\n") f.write("start\n") f.write("start_coarse\n") f.write(str(self.params['bin']) + "\n") f.write("EOF\n") f.write( str(self.imagicroot) + "/stand/im_rename.e <<EOF >> prepareStack.log\n") f.write("start_coarse\n") f.write("start\n") f.write("EOF\n") append_log = True if self.params['highpass'] is not None and self.params[ 'lowpass'] is not None: ### convert to IMAGIC-specific filtering parameters highpass, lowpass = apIMAGIC.convertFilteringParameters( self.params['highpass'], self.params['lowpass'], self.params['apix']) f.write( str(self.imagicroot) + "/incore/incband.e OPT BAND-PASS <<EOF") if append_log is True: f.write(" >> prepareStack.log\n") else: f.write(" > prepareStack.log\n") f.write("start\n") f.write("start_filt\n") f.write(str(highpass) + "\n") f.write("0\n") f.write(str(lowpass) + "\n") f.write("NO\n") f.write("EOF\n") f.write( str(self.imagicroot) + "/stand/im_rename.e <<EOF >> prepareStack.log\n") f.write("start_filt\n") f.write("start\n") f.write("EOF\n") append_log = True f.close() return filename
def createImagicBatchFileScaling(self): # IMAGIC batch file creation filename = os.path.join(self.params["rundir"], "prepareStack.batch") f = open(filename, "w") f.write("#!/bin/csh -f\n") f.write("setenv IMAGIC_BATCH 1\n") append_log = False ### log file for imagic MRA, appended only if options are given #### Bin down stack, low-pass filter and high-pass filter images if self.params["bin"] > 1: f.write(str(self.imagicroot) + "/stand/coarse.e <<EOF > prepareStack.log\n") f.write("start\n") f.write("start_coarse\n") f.write(str(self.params["bin"]) + "\n") f.write("EOF\n") f.write(str(self.imagicroot) + "/stand/im_rename.e <<EOF >> prepareStack.log\n") f.write("start_coarse\n") f.write("start\n") f.write("EOF\n") append_log = True if self.params["highpass"] is not None and self.params["lowpass"] is not None: ### convert to IMAGIC-specific filtering parameters highpass, lowpass = apIMAGIC.convertFilteringParameters( self.params["highpass"], self.params["lowpass"], self.params["apix"] ) f.write(str(self.imagicroot) + "/incore/incband.e OPT BAND-PASS <<EOF") if append_log is True: f.write(" >> prepareStack.log\n") else: f.write(" > prepareStack.log\n") f.write("start\n") f.write("start_filt\n") f.write(str(highpass) + "\n") f.write("0\n") f.write(str(lowpass) + "\n") f.write("NO\n") f.write("EOF\n") f.write(str(self.imagicroot) + "/stand/im_rename.e <<EOF >> prepareStack.log\n") f.write("start_filt\n") f.write("start\n") f.write("EOF\n") append_log = True f.close() return filename
def createImagicBatchFileMRA(self): # IMAGIC batch file creation ##### DELETE HEADERS!!!!!!!!!! apIMAGIC.copyFile(self.params['rundir'], "start.hed", headers=True) apIMAGIC.copyFile(self.params['rundir'], "references.hed", headers=True) filename = os.path.join(self.params['rundir'], "imagicMRA.batch") f = open(filename, 'w') f.write("#!/bin/csh -f\n") f.write("setenv IMAGIC_BATCH 1\n") append_log = False ### log file for imagic MRA, appended only if options are given #### OPTION OF PREPARING MULTI-REFERENCE ALIGNMENT REFERENCES if (self.params['refs'] is True and self.params['thresh_refs'] is not None and self.params['maskrad_refs'] is not None): f.write(str(self.imagicroot) + "/align/alirefs.e <<EOF") if append_log is True: f.write(" >> multiReferenceAlignment.log\n") else: f.write(" > multiReferenceAlignment.log\n") f.write("ALL\n") f.write("CCF\n") f.write("references\n") f.write("NO\n") f.write(str(self.params['maskrad_refs']) + "\n") f.write("references_prep\n") f.write(str(self.params['thresh_refs']) + "\n") f.write("0.1\n") f.write("-180,180\n") if self.params['mirror'] is True: f.write("YES\n") f.write("NO\n") f.write("TANDEM\n") else: f.write("NO\n") f.write("5\n") f.write("NO\n") f.write("EOF\n") f.write( str(self.imagicroot) + "/stand/im_rename.e <<EOF >> multiReferenceAlignment.log\n") f.write("references_prep\n") f.write("references\n") f.write("EOF\n") append_log = True ### if centering is specified, center particle in a reference-free translational alignment to the total sum if self.params['center'] is True: if self.params['nproc'] > 1: f.write(str(self.imagicroot)+"/openmpi/bin/mpirun -np "+str(self.params['nproc'])+\ " -x IMAGIC_BATCH "+str(self.imagicroot)+"/align/alimass.e_mpi <<EOF") if append_log is True: f.write(" >> multiReferenceAlignment.log\n") else: f.write(" > multiReferenceAlignment.log\n") f.write("YES\n") f.write(str(self.params['nproc']) + "\n") else: f.write(str(self.imagicroot) + "/align/alimass.e <<EOF") if append_log is True: f.write(" >> multiReferenceAlignment.log\n") else: f.write(" > multiReferenceAlignment.log\n") f.write("NO\n") f.write("start\n") f.write("start_cent\n") f.write("TOTSUM\n") f.write("CCF\n") f.write(str(self.params['max_shift_orig']) + "\n") f.write("3\n") f.write("NO_FILTER\n") f.write("EOF\n") # f.write(str(self.imagicroot)+"/stand/im_rename.e <<EOF >> multiReferenceAlignment.log\n") # f.write("start_cent\n") # f.write("start\n") # f.write("EOF\n") append_log = True ### multi-reference alignment if self.params['nproc'] > 1: f.write(str(self.imagicroot)+"/openmpi/bin/mpirun -np "+str(self.params['nproc'])+\ " -x IMAGIC_BATCH "+str(self.imagicroot)+"/align/mralign.e_mpi <<EOF") ### there is a bug in IMAGIC that makes the logfile tremendously big # if append_log is True: # f.write(" >> multiReferenceAlignment.log\n") # else: # f.write(" > multiReferenceAlignment.log\n") f.write("\n") f.write("YES\n") f.write(str(self.params['nproc']) + "\n") else: f.write(str(self.imagicroot) + "/align/mralign.e <<EOF") ### there is a bug in IMAGIC that makes the logfile tremendously big # if append_log is True: # f.write(" >> multiReferenceAlignment.log\n") # else: # f.write(" > multiReferenceAlignment.log\n") f.write("\n") f.write("NO\n") f.write("FRESH\n") f.write("ALL_REFERENCES\n") f.write("ALIGNMENT\n") f.write("%s\n" % (self.params['alignment_type'])) if self.params['alignment_type'].lower() == "all": f.write("%s\n" % (self.params['first_alignment'])) if self.params['alignment_type'].lower() == "brute_force": f.write("%d\n" % (self.params['num_orientations'])) f.write("CCF\n") if self.params['center'] is True: f.write("start_cent\n") else: f.write("start\n") f.write("alignstack\n") f.write("start\n") f.write("references\n") if self.params['lowpass_refs'] is not None: hpfilt_imagic, lpfilt_imagic = apIMAGIC.convertFilteringParameters( "", self.params['lowpass_refs'], self.params['apix']) f.write("LOWPASS\n") f.write(str(lpfilt_imagic) + "\n") else: f.write("NO\n") f.write("NO\n") f.write(str(self.params['max_shift_orig']) + "\n") if self.params['center'] is True: f.write(str(self.params['max_shift_this']) + "\n") f.write("-180,180\n") if self.params['center'] is True: f.write("-180,180\n") f.write("INTERACTIVE\n") f.write(str(self.params['samp_param']) + "\n") f.write( str(self.params['minrad']) + "," + str(self.params['maxrad']) + "\n") f.write(str(self.params['numiter']) + "\n") f.write("NO\n") f.write("EOF\n") ### write out alignment parameters to file f.write( str(self.imagicroot) + "/stand/headers.e <<EOF >> multiReferenceAlignment.log\n") f.write("PLT\n") f.write("INDEX\n") f.write("NUMBER_OF_INDEX\n") f.write("100;112;113;104;107\n" ) ### rotation, shiftx, shifty, ccc, reference num # f.write("NO\n") f.write("alignstack\n") f.write("outparams.plt\n") f.write("EOF\n") f.close() return filename
def createImagicBatchFileMRA(self): # IMAGIC batch file creation ##### DELETE HEADERS!!!!!!!!!! apIMAGIC.copyFile(self.params['rundir'], "start.hed", headers=True) apIMAGIC.copyFile(self.params['rundir'], "references.hed", headers=True) filename = os.path.join(self.params['rundir'], "imagicMRA.batch") f = open(filename, 'w') f.write("#!/bin/csh -f\n") f.write("setenv IMAGIC_BATCH 1\n") append_log = False ### log file for imagic MRA, appended only if options are given #### OPTION OF PREPARING MULTI-REFERENCE ALIGNMENT REFERENCES if (self.params['refs'] is True and self.params['thresh_refs'] is not None and self.params['maskrad_refs'] is not None): f.write(str(self.imagicroot)+"/align/alirefs.e <<EOF") if append_log is True: f.write(" >> multiReferenceAlignment.log\n") else: f.write(" > multiReferenceAlignment.log\n") f.write("ALL\n") f.write("CCF\n") f.write("references\n") f.write("NO\n") f.write(str(self.params['maskrad_refs'])+"\n") f.write("references_prep\n") f.write(str(self.params['thresh_refs'])+"\n") f.write("0.1\n") f.write("-180,180\n") if self.params['mirror'] is True: f.write("YES\n") f.write("NO\n") f.write("TANDEM\n") else: f.write("NO\n") f.write("5\n") f.write("NO\n") f.write("EOF\n") f.write(str(self.imagicroot)+"/stand/im_rename.e <<EOF >> multiReferenceAlignment.log\n") f.write("references_prep\n") f.write("references\n") f.write("EOF\n") append_log = True ### if centering is specified, center particle in a reference-free translational alignment to the total sum if self.params['center'] is True: if self.params['nproc'] > 1: f.write(str(self.imagicroot)+"/openmpi/bin/mpirun -np "+str(self.params['nproc'])+\ " -x IMAGIC_BATCH "+str(self.imagicroot)+"/align/alimass.e_mpi <<EOF") if append_log is True: f.write(" >> multiReferenceAlignment.log\n") else: f.write(" > multiReferenceAlignment.log\n") f.write("YES\n") f.write(str(self.params['nproc'])+"\n") else: f.write(str(self.imagicroot)+"/align/alimass.e <<EOF") if append_log is True: f.write(" >> multiReferenceAlignment.log\n") else: f.write(" > multiReferenceAlignment.log\n") f.write("NO\n") f.write("start\n") f.write("start_cent\n") f.write("TOTSUM\n") f.write("CCF\n") f.write(str(self.params['max_shift_orig'])+"\n") f.write("3\n") f.write("NO_FILTER\n") f.write("EOF\n") # f.write(str(self.imagicroot)+"/stand/im_rename.e <<EOF >> multiReferenceAlignment.log\n") # f.write("start_cent\n") # f.write("start\n") # f.write("EOF\n") append_log = True ### multi-reference alignment if self.params['nproc'] > 1: f.write(str(self.imagicroot)+"/openmpi/bin/mpirun -np "+str(self.params['nproc'])+\ " -x IMAGIC_BATCH "+str(self.imagicroot)+"/align/mralign.e_mpi <<EOF") ### there is a bug in IMAGIC that makes the logfile tremendously big # if append_log is True: # f.write(" >> multiReferenceAlignment.log\n") # else: # f.write(" > multiReferenceAlignment.log\n") f.write("\n") f.write("YES\n") f.write(str(self.params['nproc'])+"\n") else: f.write(str(self.imagicroot)+"/align/mralign.e <<EOF") ### there is a bug in IMAGIC that makes the logfile tremendously big # if append_log is True: # f.write(" >> multiReferenceAlignment.log\n") # else: # f.write(" > multiReferenceAlignment.log\n") f.write("\n") f.write("NO\n") f.write("FRESH\n") f.write("ALL_REFERENCES\n") f.write("ALIGNMENT\n") f.write("%s\n" % (self.params['alignment_type'])) if self.params['alignment_type'].lower() == "all": f.write("%s\n" % (self.params['first_alignment'])) if self.params['alignment_type'].lower() == "brute_force": f.write("%d\n" % (self.params['num_orientations'])) f.write("CCF\n") if self.params['center'] is True: f.write("start_cent\n") else: f.write("start\n") f.write("alignstack\n") f.write("start\n") f.write("references\n") if self.params['lowpass_refs'] is not None: hpfilt_imagic, lpfilt_imagic = apIMAGIC.convertFilteringParameters("", self.params['lowpass_refs'], self.params['apix']) f.write("LOWPASS\n") f.write(str(lpfilt_imagic)+"\n") else: f.write("NO\n") f.write("NO\n") f.write(str(self.params['max_shift_orig'])+"\n") if self.params['center'] is True: f.write(str(self.params['max_shift_this'])+"\n") f.write("-180,180\n") if self.params['center'] is True: f.write("-180,180\n") f.write("INTERACTIVE\n") f.write(str(self.params['samp_param'])+"\n") f.write(str(self.params['minrad'])+","+str(self.params['maxrad'])+"\n") f.write(str(self.params['numiter'])+"\n") f.write("NO\n") f.write("EOF\n") ### write out alignment parameters to file f.write(str(self.imagicroot)+"/stand/headers.e <<EOF >> multiReferenceAlignment.log\n") f.write("PLT\n") f.write("INDEX\n") f.write("NUMBER_OF_INDEX\n") f.write("100;112;113;104;107\n") ### rotation, shiftx, shifty, ccc, reference num # f.write("NO\n") f.write("alignstack\n") f.write("outparams.plt\n") f.write("EOF\n") f.close() return filename