Какой тип biopython 1.78 MarkovModel.train_visible() training_data?

#python #biopython #markov-models

#python #biopython #марковские модели

Вопрос:

Я хочу обучить марковскую модель второго порядка для последовательности нуклеотидов, используя biopython’s Bio.MarkovModel.train_visible() . То есть, alphabet=["A","T","G","C"], states=["AA","AT","TT"...]

Однако я получаю сообщение об ошибке:

     474     states_indexes = itemindex(states)
    475     outputs_indexes = itemindex(alphabet)
--> 476     for toutputs, tstates in training_data:
    477         if len(tstates) != len(toutputs):
    478             raise ValueError("states and outputs not aligned")
 ValueError: too many values to unpack (expected 2)
  

Указывая, что, вероятно, я даю
Я попытался предоставить свои training_data в виде пары списков:

 training_data=(['A','T'...],['AA','AT'...])
  

и как архивированный список этой пары списков:

 training_data=[('A','AA'),('T','AT')...]
  

но безрезультатно.
Каков правильный формат training_set ?
Спасибо!

Комментарии:

1. Я подозреваю, что это кортеж из двух списков, один из которых содержит выходные данные, а другой список содержит наблюдаемые состояния. Смотрите также help(MarkovModel.train_visible)

Ответ №1:

Посмотрите файл test_MarkovModel.py для примера ожидаемых входных данных:

 >>> from Bio import MarkovModel

>>> states = ["0", "1", "2", "3"]
>>> alphabet = ["A", "C", "G", "T"]
>>> training_data = [
            ("AACCCGGGTTTTTTT", "001112223333333"),
            ("ACCGTTTTTTT", "01123333333"),
            ("ACGGGTTTTTT", "01222333333"),
            ("ACCGTTTTTTTT", "011233333333"),
            ]
>>> markov_model = MarkovModel.train_visible(states, alphabet, training_data)
>>> states = MarkovModel.find_states(markov_model, "AACGTT")
>>> print(states)
[(['0', '0', '1', '2', '3', '3'], 0.008212890625000005)]