Implement the profile_HMM method which takes a threshold percentage, an alphabet and a list of patterns.
The function should return the transmission and emission matrices for the given alphabet.
The function also has to filter the amount of states according to if the percentage of '-' on a given index is higher or lower than the given deletion threshold.
>>> profile_HMM(0.25, 'ABCDE', ['BAB', 'D-D']) ({'I1': {'I1': 0.0, 'E': 0.0, 'D1': 0.0, 'D2': 0.0, 'I0': 0.0, 'I2': 0.0, 'M2': 1.0, 'M1': 0.0, 'S': 0.0}, 'D2': {'I1': 0.0, 'E': 0.0, 'D1': 0.0, 'D2': 0.0, 'I0': 0.0, 'I2': 0.0, 'M2': 0.0, 'M1': 0.0, 'S': 0.0}, 'D1': {'I1': 0.0, 'E': 0.0, 'D1': 0.0, 'D2': 0.0, 'I0': 0.0, 'I2': 0.0, 'M2': 0.0, 'M1': 0.0, 'S': 0.0}, 'E': {'I1': 0.0, 'E': 0.0, 'D1': 0.0, 'D2': 0.0, 'I0': 0.0, 'I2': 0.0, 'M2': 0.0, 'M1': 0.0, 'S': 0.0}, 'I2': {'I1': 0.0, 'E': 0.0, 'D1': 0.0, 'D2': 0.0, 'I0': 0.0, 'I2': 0.0, 'M2': 0.0, 'M1': 0.0, 'S': 0.0}, 'S': {'I1': 0.0, 'E': 0.0, 'D1': 0.0, 'D2': 0.0, 'I0': 0.0, 'I2': 0.0, 'M2': 0.0, 'M1': 1.0, 'S': 0.0}, 'I0': {'I1': 0.0, 'E': 0.0, 'D1': 0.0, 'D2': 0.0, 'I0': 0.0, 'I2': 0.0, 'M2': 0.0, 'M1': 0.0, 'S': 0.0}, 'M1': {'I1': 0.5, 'E': 0.0, 'D1': 0.0, 'D2': 0.0, 'I0': 0.0, 'I2': 0.0, 'M2': 0.5, 'M1': 0.0, 'S': 0.0}, 'M2': {'I1': 0.0, 'E': 1.0, 'D1': 0.0, 'D2': 0.0, 'I0': 0.0, 'I2': 0.0, 'M2': 0.0, 'M1': 0.0, 'S': 0.0}}, {'D1': {'A': 0.0, 'E': 0.0, 'B': 0.0, 'C': 0.0, 'D': 0.0}, 'D2': {'A': 0.0, 'E': 0.0, 'B': 0.0, 'C': 0.0, 'D': 0.0}, 'I1': {'A': 1.0, 'E': 0.0, 'B': 0.0, 'C': 0.0, 'D': 0.0}, 'E': {'A': 0.0, 'E': 0.0, 'B': 0.0, 'C': 0.0, 'D': 0.0}, 'I2': {'A': 0.0, 'E': 0.0, 'B': 0.0, 'C': 0.0, 'D': 0.0}, 'I0': {'A': 0.0, 'E': 0.0, 'B': 0.0, 'C': 0.0, 'D': 0.0}, 'S': {'A': 0.0, 'E': 0.0, 'B': 0.0, 'C': 0.0, 'D': 0.0}, 'M2': {'A': 0.0, 'E': 0.0, 'B': 0.5, 'C': 0.0, 'D': 0.5}, 'M1': {'A': 0.0, 'E': 0.0, 'B': 0.5, 'C': 0.0, 'D': 0.5}})