def sdinp(taskname=None): try: a=inspect.stack() stacklevel=0 for k in range(len(a)): if (string.find(a[k][1], 'ipython console') > 0): stacklevel=k break myf=sys._getframe(stacklevel).f_globals if taskname==None: taskname=myf['taskname'] myf['taskname']=taskname myf['taskname']=taskname if type(taskname)!=str: taskname=taskname.__name__ myf['taskname']=taskname myf['taskname']=taskname try: parameter_checktype(['taskname'],taskname,str) parameter_checkmenu('taskname',taskname,['sdcal','sdfit','sdplot','sdstat','sdlist']) except TypeError, e: print "inp -- TypeError: ", e return except ValueError, e: print "inp -- OptionError: ", e return ###Check if task exists by checking if task_defaults is defined if (myf.has_key(taskname+'_defaults') == False): raise TypeError, "task %s is not defined " %taskname if(myf.has_key('__last_taskname')==False): myf[taskname+'_defaults']() # eval(taskname+'_defaults()') myf['__last_taskname']=taskname ###Comment this section if when running inp you don't want to ###reset task parameter when last task run is different #if(myf['__last_taskname'] != taskname): # myf[taskname+'_defaults']() # myf['__last_taskname']=taskname ############################################################## f=zip(myf[taskname].func_code.co_varnames,myf[taskname].func_defaults) print '# %-12s -- %s '%(taskname,myf[taskname+'_description']()) for j in range(len(f)) : k=f[j][0] #keyVal=eval(k) #if (f[j][1]==None): # myf[k]=eval(k) print '%-15s = \'%10s\'\t# %s '%(str(k),myf[k],myf[taskname+'_description'](k)) except TypeError, e: print "sdinp --error: ", e except Exception, e: print "---",e def sdsave(taskname=None, outfile=''): """ Save current input values to file on disk for a specified task: taskname -- Name of task default: ; example: taskname='bandpass' outfile -- Output file for the task inputs default: taskname.saved; example: outfile=taskname.orion """ try: a=inspect.stack() stacklevel=0 for k in range(len(a)): if (string.find(a[k][1], 'ipython console') > 0): stacklevel=k break myf=sys._getframe(stacklevel).f_globals if taskname==None: taskname=myf['taskname'] myf['taskname']=taskname if type(taskname)!=str: taskname=taskname.__name__ myf['taskname']=taskname parameter_checktype(['taskname','outfile'],[task,outfile],[str,str]) parameter_checkmenu('task',task,['sdcal','sdfit','sdplot','sdstat','sdlist']) ###Check if task exists by checking if task_defaults is defined if (myf.has_key(taskname+'_defaults') == False): raise TypeError, "task %s is not defined " %taskname if taskname==None: taskname=myf['taskname'] myf['taskname']=taskname if outfile=='': outfile=taskname+'.saved' taskparameterfile=open(outfile,'w') print >>taskparameterfile, '%-15s = "%s"'%('taskname', taskname) f=zip(myf[taskname].func_code.co_varnames,myf[taskname].func_defaults) scriptstring='#'+str(taskname)+'(' for j in range(len(f)): k=f[j][0] if(type(myf[k])==str): print >>taskparameterfile, '%-15s = "%s"'%(k, myf[k]) scriptstring=scriptstring+k+'="'+myf[k]+'",' else : print >>taskparameterfile, '%-15s = %s'%(k, myf[k]) scriptstring=scriptstring+k+'='+str(myf[k])+',' scriptstring=scriptstring.rstrip(',') scriptstring=scriptstring+')' print >>taskparameterfile,scriptstring taskparameterfile.close() except TypeError, e: print "sdsave --error: ", e def sdget(taskname=None, outfile=''): """ Get last input values from file on disk for a specified task: taskname -- Name of task default: ; example: taskname='bandpass' outfile -- Output file for the task inputs default: taskname.last then taskname.saved example: outfile=taskname.orion """ try: a=inspect.stack() stacklevel=0 for k in range(len(a)): if (string.find(a[k][1], 'ipython console') > 0): stacklevel=k break myf=sys._getframe(stacklevel).f_globals if taskname==None: taskname=myf['taskname'] myf['taskname']=taskname if type(taskname)!=str: taskname=taskname.__name__ myf['taskname']=taskname parameter_checktype(['taskname','outfile'],[taskname,outfile],[str,str]) parameter_checkmenu('taskname',taskname,['sdcal','sdfit','sdplot','sdstat','sdlist']) ###Check if task exists by checking if task_defaults is defined if (myf.has_key(taskname+'_defaults') == False): raise TypeError, "task %s is not defined " %taskname if taskname==None: taskname=myf['taskname'] myf['taskname']=taskname f=zip(myf[taskname].func_code.co_varnames,myf[taskname].func_defaults) for j in range(len(f)): k=f[j][0] stst = myf[k] if ( type(stst) == str ): sex = k+"='"+stst+"'" else: sex = k+"="+str(stst) exec(sex) if outfile=='': outfile=taskname+'.last' try: taskparameterfile=open(outfile,'r') except: outfile=taskname+'.saved' try: taskparameterfile=open(outfile,'r') except: print "ERROR - no taskname.last or .saved" return taskparameterfile.close() execfile(outfile) # Put the task parameters back into the global namespace f=zip(myf[taskname].func_code.co_varnames,myf[taskname].func_defaults) for j in range(len(f)): k=f[j][0] myf[k] = eval(k) print "Restored parameters from file "+outfile except TypeError, e: print "sdget --error: ", e