def calc_pvalues_pairwise(self, label):
"""
Calculate pvalues for each variant in each pair of Conditions.
"""
if self.check_store("/main/{}/scores_pvalues".format(label)):
return
data = self.store['/main/{}/scores'.format(label)]
cnd1_index = list()
cnd2_index = list()
values_index = list()
values_list = ["z", "pvalue_raw"]
condition_labels = data.columns.levels[0]
for i, cnd1 in enumerate(condition_labels):
for cnd2 in condition_labels[i + 1:]:
cnd1_index.extend([cnd1] * len(values_list))
cnd2_index.extend([cnd2] * len(values_list))
values_index.extend(sorted(values_list))
columns = pd.MultiIndex.from_tuples(zip(cnd1_index, cnd2_index,
values_index),
names=["condition1", "condition2",
"value"])
idx = pd.IndexSlice
result_df = pd.DataFrame(np.nan, index=data.index, columns=columns)
for i, cnd1 in enumerate(condition_labels):
for cnd2 in condition_labels[i + 1:]:
result_df.loc[:, idx[cnd1, cnd2, 'z']] = \
np.absolute(data.loc[:, idx[cnd1, 'score']] -
data.loc[:, idx[cnd2, 'score']]) / \
np.sqrt(data.loc[:, idx[cnd1, 'SE']] ** 2 +
data.loc[:, idx[cnd2, 'SE']] ** 2)
result_df.loc[:, idx[cnd1, cnd2, 'pvalue_raw']] = \
2 * stats.norm.sf(result_df.loc[:, idx[cnd1, cnd2, 'z']])
self.store.put("/main/{}/scores_pvalues".format(label), result_df,
format="table")
评论列表
文章目录