def log_p_kmer_table(kmer_counts, p_kmers):
"""log_p_kmer_table calculates the probabilty of an observed kmer table
given as a multinomial given the multinomial probabilities. The kmer
table is preferably collapsed, i.e. if a given sequence is present, its
reverse complement is not.
Args:
kmer_counts: the kmer table
p_kmers: the multinomial probabilities
Returns:
the total log probability as a float
"""
total = 0
log_p = 0
total_p = sum(p_kmers.values())
for kmer in p_kmers.keys():
p_kmers[kmer] /= total_p
for kmer, count in kmer_counts.iteritems():
log_p += count*np.log(p_kmers[kmer]) - special.gammaln(count+1)
total += count
log_p += special.gammaln(total+1)
return log_p
评论列表
文章目录