def _get_isotope(self, f, name, ncnts, bk): iso = Isotope(name, 'Detector1') iso.set_ublank(bk) iso.name = name iso.set_fit('linear') iso.set_fit_error_type('SEM') rs = (next(f) for i in range(ncnts)) ys, xs = list(zip(*((float(r[0]), float(r[1])) for r in rs))) iso.xs = array(xs) iso.ys = array(ys) return iso
def _get_signals(self, meas_analysis, dbisos, unpack, selected_histories): d = self.isotopes default_fit = self._default_fit_factory('linear', 'SEM') for iso in dbisos: mw = iso.molecular_weight # print iso.kind, iso.detector if not iso.kind == 'signal' or not mw: continue if not iso.detector: continue det = iso.detector.name isoname = mw.name key = isoname if isoname in d: key = '{}{}'.format(isoname, det) result = None # todo: this needs to be fixed to handle data_reduction_tag # if analysis has a dr tag then get its associated select_histories entry # the get the select_fits then the associated results if selected_histories is None: try: result = iso.results[-1] except IndexError: result = None # r = Isotope(mass=mw.mass, # dbrecord=iso, # dbresult=result, # name=isoname, # detector=det, # unpack=unpack) r = Isotope(isoname, det) if unpack: r.unpack_data(iso.signal.data) r.mass = mw.mass if result: r.value = result.signal_ r.error = result.signal_err if r.unpack_error: self.warning('Bad isotope {} {}. error: {}'.format( self.record_id, key, r.unpack_error)) self.temp_status = 1 else: fit = self.get_db_fit(meas_analysis, isoname, 'signal', selected_histories) if fit is None: fit = default_fit() r.set_fit(fit, notify=False) d[key] = r
def _get_signals(self, meas_analysis, dbisos, unpack, selected_histories): d = self.isotopes default_fit = self._default_fit_factory('linear', 'SEM') for iso in dbisos: mw = iso.molecular_weight # print iso.kind, iso.detector if not iso.kind == 'signal' or not mw: continue if not iso.detector: continue det = iso.detector.name isoname = mw.name key = isoname if isoname in d: key = '{}{}'.format(isoname, det) result = None # todo: this needs to be fixed to handle data_reduction_tag # if analysis has a dr tag then get its associated select_histories entry # the get the select_fits then the associated results if selected_histories is None: try: result = iso.results[-1] except IndexError: result = None # r = Isotope(mass=mw.mass, # dbrecord=iso, # dbresult=result, # name=isoname, # detector=det, # unpack=unpack) r = Isotope(isoname, det) if unpack: r.unpack_data(iso.signal.data) r.mass = mw.mass if result: r.value = result.signal_ r.error = result.signal_err if r.unpack_error: self.warning('Bad isotope {} {}. error: {}'.format(self.record_id, key, r.unpack_error)) self.temp_status = 1 else: fit = self.get_db_fit(meas_analysis, isoname, 'signal', selected_histories) if fit is None: fit = default_fit() r.set_fit(fit, notify=False) d[key] = r
def _get_signals(self, isodict, meas_analysis, unpack): for iso in meas_analysis.isotopes: if not iso.kind == 'signal' or not iso.molecular_weight: continue name = iso.molecular_weight.name if name in isodict: continue if not iso.detector: continue det = iso.detector.name result = None if iso.results: result = iso.results[-1] r = Isotope(mass=iso.molecular_weight.mass, dbrecord=iso, dbresult=result, name=name, detector=det, unpack=unpack) if r.unpack_error: self.warning('Bad isotope {} {}. error: {}'.format( self.record_id, name, r.unpack_error)) self.temp_status = 1 else: fit = self.get_db_fit(meas_analysis, name, 'signal') if fit is None: fit = Fit(fit='linear', error_type='SD', filter_outliers=False, filter_outlier_iterations=1, filter_outlier_std_devs=2) r.set_fit(fit) isodict[name] = r
def _get_signals(self, isodict, meas_analysis, unpack): for iso in meas_analysis.isotopes: if not iso.kind == 'signal' or not iso.molecular_weight: continue name = iso.molecular_weight.name if name in isodict: continue if not iso.detector: continue det = iso.detector.name result = None if iso.results: result = iso.results[-1] r = Isotope(mass=iso.molecular_weight.mass, dbrecord=iso, dbresult=result, name=name, detector=det, unpack=unpack) if r.unpack_error: self.warning('Bad isotope {} {}. error: {}'.format(self.record_id, name, r.unpack_error)) self.temp_status = 1 else: fit = self.get_db_fit(meas_analysis, name, 'signal') if fit is None: fit = Fit(fit='linear', error_type='SD', filter_outliers=False, filter_outlier_iterations=1, filter_outlier_std_devs=2) r.set_fit(fit) isodict[name] = r