def _infer_multiplets_from_observed(n_obs_multiplets, n_cells0, n_cells1):
""" Given a number of observed multiplets and cell counts for two transcriptomes,
infer the total number of multiplets (observed + unobserved) """
if n_cells0 == 0 or n_cells1 == 0:
return 0
# Prior probability of a doublet given counts for each cell type (ignore N_cells > 2)
p_obs_multiplet = 2*(float(n_cells0)/float(n_cells0+n_cells1))*(float(n_cells1)/float(n_cells0+n_cells1))
# Brute force MLE of binomial n
n_mle = 0
if n_obs_multiplets > 0:
likelihood = scipy.stats.binom.pmf(n_obs_multiplets, xrange(0, n_cells0 + n_cells1), p_obs_multiplet)
n_mle = np.argmax(likelihood)
return n_mle
评论列表
文章目录