Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
pFgA_prior = pAgF * self.prior / pAgF_prior
# One-way chi-square test for consistency of activation
pAgF_chi2_vals = one_way(np.squeeze(n_selected_active_voxels),
n_selected)
pAgF_p_vals = special.chdtrc(1, pAgF_chi2_vals)
pAgF_sign = np.sign(n_selected_active_voxels -
np.mean(n_selected_active_voxels))
pAgF_z = p_to_z(pAgF_p_vals, tail='two') * pAgF_sign
# Two-way chi-square for specificity of activation
cells = np.squeeze(
np.array([[n_selected_active_voxels, n_unselected_active_voxels],
[n_selected - n_selected_active_voxels,
n_unselected - n_unselected_active_voxels]]).T)
pFgA_chi2_vals = two_way(cells)
pFgA_p_vals = special.chdtrc(1, pFgA_chi2_vals)
pFgA_p_vals[pFgA_p_vals < 1e-240] = 1e-240
pFgA_sign = np.sign(pAgF - pAgU).ravel()
pFgA_z = p_to_z(pFgA_p_vals, tail='two') * pFgA_sign
images = {
'pA': pA,
'pAgF': pAgF,
'pFgA': pFgA,
('pAgF_given_pF=%0.2f' % self.prior): pAgF_prior,
('pFgA_given_pF=%0.2f' % self.prior): pFgA_prior,
'consistency_z': pAgF_z,
'specificity_z': pFgA_z,
'consistency_chi2': pAgF_chi2_vals,
'specificity_chi2': pFgA_chi2_vals,
'consistency_p': pAgF_p_vals,
'specificity_p': pFgA_p_vals,
p_selected_g_term = n_selected_term / n_term_foci # probForward
l_selected_g_term = p_selected_g_term / p_selected # likelihoodForward
p_selected_g_noterm = n_selected_noterm / n_noterm_foci
p_term_g_selected = p_selected_g_term * p_term / p_selected # probReverse
p_term_g_selected = p_term_g_selected / np.sum(p_term_g_selected) # Normalize
# Significance testing
# Forward inference significance is determined with a binomial distribution
p_fi = 1 - binom.cdf(k=n_selected_term, n=n_term_foci, p=p_selected)
sign_fi = np.sign(n_selected_term - np.mean(n_selected_term)).ravel() # pylint: disable=no-member
# Two-way chi-square test for specificity of activation
cells = np.array([[n_selected_term, n_selected_noterm], # pylint: disable=no-member
[n_unselected_term, n_unselected_noterm]]).T
chi2_ri = two_way(cells)
p_ri = special.chdtrc(1, chi2_ri)
sign_ri = np.sign(p_selected_g_term - p_selected_g_noterm).ravel() # pylint: disable=no-member
# Ignore rare features
p_fi[n_selected_term < 5] = 1.
p_ri[n_selected_term < 5] = 1.
# Multiple comparisons correction across features. Separately done for FI and RI.
if correction is not None:
_, p_corr_fi, _, _ = multipletests(p_fi, alpha=u, method=correction,
returnsorted=False)
_, p_corr_ri, _, _ = multipletests(p_ri, alpha=u, method=correction,
returnsorted=False)
else:
p_corr_fi = p_fi
p_corr_ri = p_ri
# Conditional probabilities
# pAgF = n_selected_active_voxels * 1.0 / n_selected
# pAgU = n_unselected_active_voxels * 1.0 / n_unselected
# One-way chi-square test for consistency of activation
pAgF_chi2_vals = one_way(np.squeeze(n_selected_active_voxels),
n_selected)
iter_pAgF_chi2 = np.max(pAgF_chi2_vals)
# Two-way chi-square for specificity of activation
cells = np.squeeze(
np.array([[n_selected_active_voxels, n_unselected_active_voxels],
[n_selected - n_selected_active_voxels,
n_unselected - n_unselected_active_voxels]]).T)
pFgA_chi2_vals = two_way(cells)
iter_pFgA_chi2 = np.max(pFgA_chi2_vals)
return iter_pAgF_chi2, iter_pFgA_chi2
# Recompute conditions with empirically derived prior (or inputted one)
if prior is None:
# if this is used, p_term_g_selected_prior = p_selected (regardless of term)
prior = p_term
# Significance testing
# One-way chi-square test for consistency of term frequency across terms
chi2_fi = one_way(n_selected_term, n_term)
p_fi = special.chdtrc(1, chi2_fi)
sign_fi = np.sign(n_selected_term - np.mean(n_selected_term)).ravel() # pylint: disable=no-member
# Two-way chi-square test for specificity of activation
cells = np.array([[n_selected_term, n_selected_noterm], # pylint: disable=no-member
[n_unselected_term, n_unselected_noterm]]).T
chi2_ri = two_way(cells)
p_ri = special.chdtrc(1, chi2_ri)
sign_ri = np.sign(p_selected_g_term - p_selected_g_noterm).ravel() # pylint: disable=no-member
# Multiple comparisons correction across terms. Separately done for FI and RI.
if correction is not None:
_, p_corr_fi, _, _ = multipletests(p_fi, alpha=u, method=correction,
returnsorted=False)
_, p_corr_ri, _, _ = multipletests(p_ri, alpha=u, method=correction,
returnsorted=False)
else:
p_corr_fi = p_fi
p_corr_ri = p_ri
# Compute z-values
z_corr_fi = p_to_z(p_corr_fi, 'two') * sign_fi
z_corr_ri = p_to_z(p_corr_ri, 'two') * sign_ri