Exemplo n.º 1
0
 def nrg_data(self,
              params: NRGParams,
              x: np.ndarray,
              which_data: str = 'dndt',
              which_x: str = 'occupation',
              real_data: Optional[np.ndarray] = None,
              which_fit_data: str = 'i_sense') -> Data1D:
     """For NRG data only"""
     nrg_generator = NrgUtil(inital_params=params)
     if real_data is not None:
         fit = nrg_generator.get_fit(x=x,
                                     data=real_data,
                                     which_data=which_fit_data)
         params = NRGParams.from_lm_params(fit.params)
     return nrg_generator.data_from_params(params,
                                           x=x,
                                           which_data=which_data,
                                           which_x=which_x)
Exemplo n.º 2
0
def get_nrg_integrated(dat: DatHDF) -> Data1D:
    from temp import get_avg_i_sense_data, get_centered_x_at_half_occ, get_centers, get_2d_data
    from dat_analysis.analysis_tools.nrg import NrgUtil, NRGParams
    # i_data = get_avg_i_sense_data(dat, None, _center_func, overwrite=False, hot_or_cold='hot')
    data2d = get_2d_data(dat, hot_or_cold='cold', csq_datnum=None)
    if _center_func(dat):
        centers = get_centers(dat, data2d, name=None, overwrite=False)
    else:
        centers = [0] * data2d.data.shape[0]
    hot_data2d = get_2d_data(dat, hot_or_cold='hot', csq_datnum=None)
    avg_data, avg_x = dat.NrgOcc.get_avg_data(x=data2d.x,
                                              data=hot_data2d.data,
                                              centers=centers,
                                              return_x=True,
                                              name='hot_cold_centers',
                                              check_exists=False,
                                              overwrite=False)
    i_data = Data1D(avg_x, avg_data)
    i_data.x = get_centered_x_at_half_occ(dat,
                                          None,
                                          fit_name='csq_forced_theta')
    init_fit = dat.NrgOcc.get_fit(name='csq_forced_theta')
    new_pars = U.edit_params(init_fit.params, ['theta', 'g'], [None, None],
                             vary=[True, False])
    nrg = NrgUtil(None)
    new_fit = nrg.get_fit(i_data.x,
                          i_data.data,
                          initial_params=new_pars,
                          which_data='i_sense')

    expected_data = nrg.data_from_params(NRGParams.from_lm_params(
        new_fit.params),
                                         x=i_data.x,
                                         which_data='dndt')
    expected_data.data = np.cumsum(expected_data.data)
    expected_data.data = expected_data.data / expected_data.data[-1] * np.log(
        2)
    expected_data.x = expected_data.x / 100  # Convert to real mV
    return expected_data