def _calcGNOM(self, dmax): start = int(self.spinctrlIDs['qstart']) end = int(self.spinctrlIDs['qend']) self.gnom_settings['npts'] = 0 path = self.raw_settings.get('GnomFilePath') # TODO: temp path cwd = os.getcwd() savename = 't_dat.dat' while os.path.isfile(os.path.join(path, savename)): savename = 't' + savename outname = 't_out.out' while os.path.isfile(os.path.join(path, outname)): outname = 't' + outname save_sasm = SASM.SASM( copy.deepcopy(self.curr_sasm.i), copy.deepcopy(self.curr_sasm.q), copy.deepcopy(self.curr_sasm.err), copy.deepcopy(self.curr_sasm.getAllParameters())) save_sasm.setParameter('filename', savename) save_sasm.setQrange((start, end)) try: SASFileIO.saveMeasurement( save_sasm, path, self.raw_settings, filetype='.dat') except SASExceptions.HeaderSaveError as error: printer = ErrorPrinter(self.raw_settings, self._stdout) printer.showSaveError('header') os.chdir(path) try: iftm = SASCalc.runGnom( savename, outname, dmax, self.gnom_settings, new_gnom=self.new_gnom, raw_settings=self.raw_settings) except SASExceptions.NoATSASError as error: print('Error running GNOM/DATGNOM:', str(error), file=self._stdout) self.cleanupGNOM(path, savename, outname) os.chdir(cwd) return None os.chdir(cwd) # self.cleanupGNOM(path, savename, outname) return iftm
def saveSASM(self, sasm, filetype='dat', save_path=''): """Save SASM object to file.""" newext = filetype filename = sasm.getParameter('filename') check_filename, _ = os.path.splitext(filename) check_filename = check_filename + newext filepath = os.path.join(save_path, check_filename) # file_exists = os.path.isfile(filepath) filepath = save_path try: SASFileIO.saveMeasurement(sasm, filepath, self._raw_settings, filetype=newext) except SASExceptions.HeaderSaveError: self.error_printer.showSaveError('header')
def saveIFTM(self, iftm, save_path): """Save IFTM object to file.""" if iftm.getParameter('algorithm') == 'GNOM': newext = '.out' else: newext = '.ift' filename = iftm.getParameter('filename') check_filename, ext = os.path.splitext(filename) check_filename = check_filename + newext filepath = os.path.join(save_path, check_filename) # file_exists = os.path.isfile(filepath) filepath = save_path try: SASFileIO.saveMeasurement( iftm, filepath, self.raw_settings, filetype=newext) except SASExceptions.HeaderSaveError: printer = ErrorPrinter(self.raw_settings, self._stdout) printer.showSaveError('header')
def _initGNOM(self, sasm): analysis_dict = sasm.getParameter('analysis') if 'GNOM' in analysis_dict: iftm = self._initGnomValues(sasm) assert False else: path = self.raw_settings.get('GnomFilePath') # TODO: temp files? cwd = os.getcwd() savename = 't_dat.dat' while os.path.isfile(os.path.join(path, savename)): savename = 't' + savename save_sasm = SASM.SASM( copy.deepcopy(sasm.i), copy.deepcopy(sasm.q), copy.deepcopy(sasm.err), copy.deepcopy(sasm.getAllParameters())) save_sasm.setParameter('filename', savename) save_sasm.setQrange(sasm.getQrange()) try: SASFileIO.saveMeasurement( save_sasm, path, self.raw_settings, filetype='.dat') except SASExceptions.HeaderSaveError as error: printer = ErrorPrinter(self.raw_settings, self._stdout) printer.showSaveError('header') os.chdir(path) try: init_iftm = SASCalc.runDatgnom(savename, sasm, self.raw_settings) except SASExceptions.NoATSASError as error: print( 'Error running GNOM/DATGNOM:', str(error), file=self._stdout) self.cleanupGNOM(path, savename=savename) os.chdir(cwd) return None os.chdir(cwd) if init_iftm is None: outname = 't_datgnom.out' while os.path.isfile(outname): outname = 't' + outname if 'guinier' in analysis_dict: rg = float(analysis_dict['guinier']['Rg'][0]) # TODO: [0]? dmax = int(rg * 3.) #Mostly arbitrary guess at Dmax print("????:", rg) else: print( 'No DMAX found warning:', 'No Guinier analysis found, arbirary value 80 will be set to DMAX.', file=self._stdout) dmax = 80 #Completely arbitrary default setting for Dmax os.chdir(path) try: init_iftm = SASCalc.runGnom( savename, outname, dmax, self.gnom_settings, new_gnom=self.new_gnom, raw_settings=self.raw_settings) except SASExceptions.NoATSASError as error: print( 'Error running GNOM/DATGNOM', str(error), file=self._stdout) self.cleanupGNOM(path, savename=savename, outname=outname) os.chdir(cwd) return None os.chdir(cwd) self.cleanupGNOM(path, outname=outname) self.cleanupGNOM(path, savename=savename) iftm = self._initDatgnomValues(sasm, init_iftm) # plotPanel.plotPr(iftm) return iftm