Учебная страница курса биоинформатики,
год поступления 2013
Практикум 10. Новый тип данных: словарь
Справочная информация по словарям с примерами доступна в разделе 9.7 подсказок.
Обязательные задания
Задание 1. Создайте скрипт, сообщающий число дней в месяце, заданном пользователем. Используйте словарь месяцев
Создайте файл <Familiya>_pr10_scr01.py. После создания и отладки скрипта выложите его в директорию credits.
Создайте в скрипте словарь, ключами которого являются английские названия месяцев года, а значениями – количество дней в каждом месяце.
- Сделайте так, чтобы пользователь мог ввести название месяца с клавиатуры, а скрипт сообщил ему:
- сколько дней в этом месяце согласно созданному словарю;
- если пользователь вводит название месяца, которое не соответствует ни одному элементу словаря (например, допускает орфографическую ошибку), скрипт должен сообщить ему, что такого месяца не существует.
Следующие усовершенствования скрипта могут повысить балл
- Разрешите пользователю вводить название месяца как с большой, так и с маленькой буквы; да и целиком большими;
Добавьте в скрипт функцию, которая читает файл с нужной информацией о месяцах и создает словарь; такой файл можно скачать из интернета.
Необязательные задания
Задание 2*. Рассчитайте частоты встречаемости аминокислот в протеоме Вашего прокариотического организма
Протеомом называют совокупность всех белков организма.
Для решения задачи следует создать скрипт, использующий словарь аминокислотных остатков. Назовите скрипт <Familiya>_pr10_scr02.py. После отладки выложите его в директорию credits.
- Входные данные для скрипта - файл в fasta-формате с последовательностями всех белков.
Вы можете скачать последовательности белков организма с того же сервера NCBI, с которого Вы скачивали файл с геномом организма: ftp.ncbi.nlm.nih.gov/genomes/Bacteria/. Нужное расширение файла – .faa. Если в геноме несколько хромосом или плазмид, то столько же и файлов с расширением .faa. Выберите один, соответствующий взятой ранее хромосоме, или работайте со всеми - на Ваше усмотрение.
Результатом работы скрипта должен быть текстовый файл с частотами встречаемости аминокислот в протеоме. Назовите его <Familiya>_pr10_aa_freq.txt. Скопируйте его в директорию credits.
Используйте в качестве основы Ваш скрипт scr02 из pr7. Он умеет (по идее) читать такие файлы, ведь ему все равно, сколько последовательностей задать
Примерный алгоритм:
- Скопируйте свой скрипт scr02 из pr7 и переименуйте его.
Добавьте к нему функцию прохода по списку белков и выдачи словаря, ключами которого являются все встреченные в последовательностях буквы, а значениями – их количество. Эта функция получает на вход список белков, а возвращает словарь. Внутри функции:
- Создайте цикл, проходящий по всем элементам списка белков;
- Создайте внутри этого цикла еще один цикл, в котором будет проход по буквам в последовательности каждого белка.
На каждом символе последовательности проверяйте, если ли в словаре элемент с ключом в виде этого символа или нет. Если нету (первый раз Вам встретился, например, аланин, символ A), то создайте такой элемент и присвойте ему значение 1 (встретили аланин 1 раз). Если есть (аланин уже встречался), то прибавьте к значению единицу.
- Вызовите написанную функцию. В словаре сейчас находятся абсолютные величины встречаемости, а нам нужны %. Нужно подсчитать общее количество аминокислот во всем протеоме, которое будет равно сумме всех значений в словаре. Вычислите это значение, пройдя по всем ключам словаря.
Откройте файл для записи. Пройдите по ключам словаря еще раз и напечатайте в файл через знак табуляции \t ключ (аминокислоту) и % встречаемости каждой аминокислоты. Закройте файл.
Поинтересуйтесь:
Встретились ли Вам какие-то необычные буквы аминокислот? Какие считаются обычными можно посмотреть на страничке, посвященной аминокислотам белков.
- Одинаковы ли частоты встречаемости разных аминокислот? Какая из них самая распространенная, а какая встречается реже всего? Как Вы думаете, что это может означать?
Не забывайте смотреть подсказки по python, обновленные и содержащие справочную информацию по новым темам этого занятия.