Collapsed EM / VBEM abundance estimation over equivalence classes.
Ports salmon's CollapsedEMOptimizer (src/inference/CollapsedEMOptimizer.cpp):
given a finalized set of equivalence classes (each a transcript label, a
count, and per-transcript combined_weights), iteratively estimate the
expected number of fragments originating from each transcript.
The update rules match the C++ exactly:
- EM:
alphaOut[t] += count * (alphaIn[t] * w_t) / sum_j(alphaIn[j] * w_j), with single-transcript classes assigned their full count. - VBEM: replaces
alphaIn[t]withexpTheta[t] = exp(digamma(alphaIn[t] + prior_t) - digamma(sum_j(alphaIn[j] + prior_j))).
Parallelization with rayon and SQUAREM acceleration are deferred; plain iteration converges to the same fixpoint.