예제 #1
0
    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
예제 #2
0
    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')
예제 #3
0
    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')
예제 #4
0
    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