예제 #1
0
    def _get_baselines(self, meas_analysis, dbisos, unpack,
                       selected_histories):
        isotopes = self.isotopes
        default_fit = self._default_fit_factory('average', 'SEM')
        for dbiso in dbisos:
            mw = dbiso.molecular_weight
            if not mw:
                continue

            name = mw.name
            det = dbiso.detector.name
            try:
                iso = isotopes['{}{}'.format(name, det)]
            except KeyError:
                iso = isotopes[name]

            # kw = dict(dbrecord=dbiso,
            #           name=name,
            #           detector=det,
            #           unpack=unpack)

            kind = dbiso.kind
            if kind == 'baseline':
                result = None
                if selected_histories is None:
                    # todo: this needs to be fixed to handle data_reduction_tag
                    try:
                        result = dbiso.results[-1]
                    except IndexError:
                        result = None

                # kw['name'] = '{} bs'.format(name)
                # r = Baseline(dbresult=result, **kw)
                r = Baseline('{} bs'.format(name), det)
                if result:
                    r.value = result.signal_
                    r.error = result.signal_err
                if unpack:
                    r.unpack_data(dbiso.signal.data)
                fit = self.get_db_fit(meas_analysis, name, 'baseline',
                                      selected_histories)
                if fit is None:
                    fit = default_fit()

                r.set_fit(fit, notify=False)
                iso.baseline = r
            elif kind == 'sniff' and unpack:
                # r = Sniff(**kw)
                r = Sniff(name, det)
                if unpack:
                    r.unpack_data(dbiso.signal.data)
                iso.sniff = r
예제 #2
0
    def _get_baselines(self, meas_analysis, dbisos, unpack, selected_histories):
        isotopes = self.isotopes
        default_fit = self._default_fit_factory('average', 'SEM')
        for dbiso in dbisos:
            mw = dbiso.molecular_weight
            if not mw:
                continue

            name = mw.name
            det = dbiso.detector.name
            try:
                iso = isotopes['{}{}'.format(name, det)]
            except KeyError:
                iso = isotopes[name]

            # kw = dict(dbrecord=dbiso,
            #           name=name,
            #           detector=det,
            #           unpack=unpack)

            kind = dbiso.kind
            if kind == 'baseline':
                result = None
                if selected_histories is None:
                    # todo: this needs to be fixed to handle data_reduction_tag
                    try:
                        result = dbiso.results[-1]
                    except IndexError:
                        result = None

                # kw['name'] = '{} bs'.format(name)
                # r = Baseline(dbresult=result, **kw)
                r = Baseline('{} bs'.format(name), det)
                if result:
                    r.value = result.signal_
                    r.error = result.signal_err
                if unpack:
                    r.unpack_data(dbiso.signal.data)
                fit = self.get_db_fit(meas_analysis, name, 'baseline', selected_histories)
                if fit is None:
                    fit = default_fit()

                r.set_fit(fit, notify=False)
                iso.baseline = r
            elif kind == 'sniff' and unpack:
                # r = Sniff(**kw)
                r = Sniff(name, det)
                if unpack:
                    r.unpack_data(dbiso.signal.data)
                iso.sniff = r