As having probabilities of zero for the current path is not generally true for the complete path, we give all the possible paths a probability of $$pseudocount$$

This way an edge in the graph that didn't occur in the current path, can still be taken by a new path

Assignment

Given a string Text, a multiple alignment Alignment, a threshold θ, and a pseudocount σ.

Return an optimal hidden path emitting Text in HMM(Alignment,θ,σ).

Example

>>> profile_HMM_sequence_alignment('C', 0.2, 0.01, 'ABC', ['B---B', 'CAACC', 'CC-AB', 'B-BCB', 'CBBBB'])
['M1', 'D2']

>>> profile_HMM_sequence_alignment('CD', 0.3776073047984535, 0.01, 'ABCD', ['CBBAC', 'C-BBD', 'BC--C', 'DCBBC', 'BADCC'])
['M1', 'D2', 'D3', 'D4', 'M5']