План реализации
Здесь представлен план реализации первых двух заданий.
Для работы с выравниваниями есть библиотека sequence.py, позволяющая читать их из фаста-файла и записывать каждую последовательность в виде объекта класса seq.
Задание 1
- Функция 1. Получает на вход список строк-последовательностей, вызывает функцию 2 по очереди для каждого столбца и составляет из ее результатов список (где индекс элемента соответствует значению n-1, если n - сколько различных букв имеется в позиции выравнивания, а сам элемент - это общее количество таких позиций), который и подается на выход.
- Функция 2. Получает на вход столбец (в виде строки или списка (наверное, лучше списка)), на выходе – сколько разных видов букв в нем встретилось.
- Функция 3. Получает на вход результат работы функции 1 (т.е. список), создает текстовый файл с гистограммой.
Задание 2
- Функция 1. Получает на вход список последовательностей, на выходе выдает частоты встречаемости всех букв (в виде словаря "буква - частота от 0 до 1") и общую длину всех последовательностей (количество букв).
- Функция 2. Получает на вход столбец (в виде строки или списка) и параметр k, на выходе выдает строчку или кортеж (лексически отсортированные) с группой букв, которые встретились в этом столбце (и что-нибудь вроде False, если в нем больше k разных букв).
- Функция 3. На вход получает список последовательностей и параметр k. Вызывает функцию 2 по очереди для каждого столбца и формирует словарь "группа букв - сколько раз встретилась группа". На выход выдает этот словарь.
Функция 4. На вход берет результаты функций 1 и 3, высчитывает относительную частоту встречаемости и выделяет для каждого i (0 < I <= k) верхние 20 групп. На выход выдает верхние 20 групп для каждого i<=k в каком-нибудь текстовом формате.