Exemple #1
0
def stack_mtslice(tdata_list):
    """stack tdata in the list into one instance"""
    mean_temp_list = [tdata.mean_temp for tdata in tdata_list]
    daily_temp_list = [tdata.daily_temp for tdata in tdata_list]
    obs_mean_list = [tdata.obs_mean for tdata in tdata_list]
    obs_std_list = [tdata.obs_std for tdata in tdata_list]
    study_id_list = [tdata.study_id for tdata in tdata_list]
    data_id_list = [tdata.data_id for tdata in tdata_list]
    trimming_weights_list = [tdata.trimming_weights for tdata in tdata_list]

    mean_temp = np.hstack(mean_temp_list)
    daily_temp = np.hstack(daily_temp_list)
    obs_mean = np.hstack(obs_mean_list)
    obs_std = np.hstack(obs_std_list)
    study_id = np.hstack(study_id_list)
    data_id = np.hstack(data_id_list)
    trimming_weights = np.hstack(trimming_weights_list)

    if np.any(data_id == None):
        data_id = None

    return utils.TempData(mean_temp,
                          daily_temp,
                          obs_mean,
                          obs_std,
                          study_id,
                          data_id,
                          trimming_weights=trimming_weights)
Exemple #2
0
def aggregate_mtslice(tdata):
    """aggregate data by the weighted mean"""
    # extract the unique mean and daily pair
    unique_pair = np.unique(np.vstack((tdata.mean_temp, tdata.daily_temp)).T,
                            axis=0)
    mean_temp = unique_pair[:, 0]
    daily_temp = unique_pair[:, 1]

    obs_mean = []
    obs_std = []

    for p in unique_pair:
        valid_id = (tdata.mean_temp == p[0]) &\
            (tdata.daily_temp == p[1]) &\
            (tdata.trimming_weights > 0.5)
        obs_mean_atp = tdata.obs_mean[valid_id]
        obs_std_atp = tdata.obs_std[valid_id]

        ivar = 1.0 / obs_std_atp**2
        obs_mean_atp = obs_mean_atp.dot(ivar) / np.sum(ivar)
        obs_std_atp = np.sqrt(1.0 / np.sum(ivar))

        obs_mean.append(obs_mean_atp)
        obs_std.append(obs_std_atp)

    obs_mean = np.array(obs_mean)
    obs_std = np.array(obs_std)

    study_id = np.arange(obs_mean.size)
    data_id = None

    return utils.TempData(mean_temp, daily_temp, obs_mean, obs_std, study_id,
                          data_id)
Exemple #3
0
def extract_mtslice(tdata, mt):
    """extract the temperature data at given mean_temp"""
    valid_id = tdata.mean_temp == mt

    mean_temp = tdata.mean_temp[valid_id]
    daily_temp = tdata.daily_temp[valid_id]
    obs_mean = tdata.obs_mean[valid_id]
    obs_std = tdata.obs_std[valid_id]
    study_id = tdata.study_id[valid_id]
    if tdata.data_id is not None:
        data_id = tdata.data_id[valid_id]
    else:
        data_id = None
    trimming_weights = tdata.trimming_weights[valid_id]

    return utils.TempData(mean_temp,
                          daily_temp,
                          obs_mean,
                          obs_std,
                          study_id,
                          data_id,
                          trimming_weights=trimming_weights)
Exemple #4
0
def load_data(path_to_data, outcome):
    """load data csv file"""
    df = pd.read_csv(path_to_data)

    mean_temp = df['meanTempDegree'].values
    daily_temp = df['dailyTempCat'].values
    obs_mean = df['lnRr_' + outcome].values
    obs_std = df['se_' + outcome].values
    study_id = df['adm1'].values
    data_id = np.arange(df.shape[0])

    valid_id = ~(np.isnan(obs_std) | np.isnan(obs_mean) | np.isinf(obs_std)
                 | np.isinf(obs_mean))

    mean_temp = mean_temp[valid_id]
    daily_temp = daily_temp[valid_id]
    obs_mean = obs_mean[valid_id]
    obs_std = obs_std[valid_id]
    study_id = study_id[valid_id]
    data_id = data_id[valid_id]

    return utils.TempData(mean_temp, daily_temp, obs_mean, obs_std, study_id,
                          data_id)