def main(): progname = os.path.basename(sys.argv[0]) usage = """%prog [options] <image1> <image2> <image3> <image4> .... WARNING: Experimental program. Contact [email protected] for more info. Currently only supports bootstrapping an initial probe doing all versus all alignment of the input images """ parser = EMArgumentParser(usage=usage,version=EMANVERSION) parser.add_argument("--align",type=str,help="The aligner and its parameters. e.g. --align=rt.3d.grid:ralt=180:dalt=10:dphi=10:rphi=180:search=5", default="rt.3d.grid") parser.add_argument("--aligncmp",type=str,help="The comparator used for determing the best initial alignment", default="dot.tomo:threshold=0") parser.add_argument("--cmp",type=str,help="The comparator used to obtain the final similarity", default="dot.tomo:threshold=0") parser.add_argument("--ralign",type=str,help="This is the second stage aligner used to refine the first alignment. This is usually the \'refine\' aligner.", default=None) parser.add_argument("--raligncmp",type=str,help="The comparator used for determing the refined alignment", default="dot.tomo:threshold=0") parser.add_argument("--bootstrap",action="store_true",default=True,help="Boot strap alignment") parser.add_argument("--output",type=str,default="e2tomoave.hdf",help="The output image which will store the results matrix") parser.add_argument("--parallel",type=str,default=None,help="Use parallelism") parser.add_argument("--path", default=None, type=str,help="The name of a directory where results are placed. If unspecified will generate one automatically of type tomo_ave_??.") parser.add_argument("--nsoln", default=1, type=int,help="If supplied and greater than 1, the nsoln-best alignments will be written to a text file. This is useful for debug but may be left unspecified") parser.add_argument("--dbls",type=str,help="data base list storage, used by the workflow. You can ignore this argument.",default=None) parser.add_argument("--shrink",type=int,help="Shrink the data as part of the alignment - for speed purposes but at the potential loss of accuracy",default=None) parser.add_argument("--filter",type=str,help="The name and parameters of an EMAN2 processor. Will be applied prior to shrinking.",default=None) parser.add_argument("--ppid", type=int, help="Set the PID of the parent process, used for cross platform PPID",default=-1) parser.add_argument("--verbose", "-v", dest="verbose", action="store", metavar="n", type=int, default=0, help="verbose level [0-9], higner number means higher level of verboseness") if EMUtil.cuda_available(): parser.add_argument("--cuda",action="store_true",help="GPU acceleration using CUDA. Experimental", default=False) (options, args) = parser.parse_args() print options.shrink error_messages = check_options(options,args) if len(error_messages) != 0: msg = "\n" for error in error_messages: msg += error +"\n" parser.error(msg) exit(1) logger=E2init(sys.argv,options.ppid) if options.bootstrap: module = EMBootStrappedAverages(args,options,logger) module.execute() else: print "boot strap only supported technique" E2end(logger)
def execute(self, logid=None): self.exec_() print(logid) if logid: E2end(logid) # We need to log the end of the process, don't we.... return sys.exit()