Учебная страница курса биоинформатики,
год поступления 2018
Библиотеки, модули, функции, исключения
Практически все задания сформулированы; остается придумать проверочные программы для нескольких функций из модуля sequences. Можете придумать самостоятельно. =)
1. Тригонометрия
Мнемоника: trigonometry
Баллы: 1.
Программа принимает угол в градусах и печатает его синус и косинус с четырьмя знаками после запятой. Значение угла может быть любым вещественным числом.
Пример вызова программы:
python pr9_trigonometry.py 90
Пример выдачи:
1.0000 0.0000
Подключите модуль math. С помощью dir и help узнайте, как переводить из градусов в радианы и как вызываются синус и косинус. В подсказках см., как отформатировать действительное число с нужным количеством знаков после запятой.
2. Случайная последовательность
Мнемоника: randomdna
Баллы: 2 (минимум 1)
Для тестирования различных методов обработки биологических последовательностей часто применяют случайные последовательности. Самый простой способ создать случайную последовательность — это выбирать на каждую позицию последовательности случайную букву (одну из A, T, G, C) с равной вероятностью.
Программа принимает два аргумент в командной строке: первый - длина последовательности,второй - по сколько букв выводить в строке выходного файла, и создаёт файл randomseq.fasta, в который пишет случайную последовательность заданной длины с именем "random" и без описания (вспоминайте fasta-формат!).
Пример вызова:
python pr9_randomdna.py 10 5
Пример содержимого файла randomseq.fasta, сформированного программой:
>random CATCA GGGAC
Два балла вместо одного, если после каждого n-го символа последовательности в файле начинается новая строка (n передается опционально вторым аргументом командной строки). Принято сохранять последовательности по 60 или 100 букв в строке. Если длинная последовательность идет в одну строчку - то один балл.
3. Вещественное число?
Мнемоника: is-float
Баллы: 2
Напишите программу, принимающую один аргумент из командной строки и возвращающую 'Is float', если он может быть стандартным образом интерпретирован как вещественное число и "Is not float", если не может (целые числа тоже относятся к вещественным).
4. Сумма всех чисел из файла
Мнемоника total-sum
Баллы 3
Программа получает один аргумент командной строки - имя текстового файла. Находит все числа в файле, вычисляет и печатает их среднее арифметическое.
Числом считается слово s (ограниченное пробелами или любыми whitesymbols {пробел, табулятор \t, конец строки \n, возврат каретки \r и ...}, которое функция float(s) переводит в число.
Пример: test_file.txt содержит строки
row_id \t number1 \t number2 \t соmments\n one \t-10 \t +100.1 \t 2_numbers \n 2. \t 2 \t -0.01 \t\n three \t-100 \t 0 \n
Обращение
python3.6 pr9_total-sum.py test-file
Результат, согласно нашему определению числа: (-10 + 100.1 + 2. + 2 + (-0.01)+ (-100) +0)/7 т.е. среднее
-0.844285714286
5. Создайте модуль sequences.py
Мнемоника: sequences (т.е модуль должен называться pr9_sequences.py)
Баллы: в зависимости от числа созданных работающих функций, минимум 3 - при двух самых простых функциях в модуле. За каждую созданную функцию - не менее одного балла.
Максимум не ограничен, т.к. можете придумать и создать свои функции; обязательно в функции, в комментариях между """ и """ описать что она делает.
Включите в модуль функции:
5.1 Чтение файла в fasta формате
Имя функции read_fasta
Аргумент - имя fasta файла,
Результат - словарь sequences ={name:[descritpion, sequence]}
name и description добываются из первой строки последовательности, т.е. строки, начинающейся с символа ">"
sequence равна объединению строк,лежащих: между строкой с ">" (т.е. первой строкой последовательности) и следующей строкой с ">"; или строкой с ">" и концом файла. Никакой проверки правильности последовательности пока не предусмотрено. Для проверок нужны другие функции, см ниже, 5.5 и 5.6.
5.2 Аминокислотный состав белка
Имя функции aacomp ((aa - от amino acid, стандартное сокращение, comp - от composition)
аргумент - одна аминокислотная последовательность (алфавит двадцать букв, все заглавные)
результат -
словарь aas = {"A": <число аланинов>, "C":<число цистеинов>, ..., }
5.3 состав последовательности нуклеотидов ДНК
Имя функции bpcomp (bp - от base pair, стандартное сокращение)
аргумент - одна нуклеотидная последовательность,
результат -
словарь bps = {"A": <число аденинов>, "T":<число тиминов>, ..., }
5.4 Список имен последовательностей
Имя функции names
аргумент - словарь sequences (см. 5.1) результат - упорядоченный по алфавиту
- список sequence_names = [name1, name2, ...]
5.5 Убрать невидимые символы из последовательности
Имя функции remove_whitespaces
аргумент - строка (например, последовательность нуклеотидов или аминокислотных остатков).
Пояснение. fasta формат допускает так называемые whitespace символы (пробел, конец строки \n, табулятор \t, перевод каретки \r, вертикальную черту \v, конец страницы \f) в строках. Но они - игнорируются. Правильно их убрать из последовательности.
Результат - та же строка, из которой удалены все такие символы. См. в подсказках как это можно сделать
5.6 Проверка корректности последовательности
check_sequence - два аргумента, первый последовательность (из заглавных букв, без whitespaces) второй - алфавит - строка допустимых символов в последовательности allowed_bps = "ATGCN" для ДНК, N
- - не удалось определить; allowed_aas= "ACDEFGHIKLMNPQRSTVWYX" X - не удалось определить аминокислоту. Результат - True - если все символы из allowed и False - в противном случае
5.7 Случайная последовательность
random_sequence
первый аргумент - длина последовательности, второй - алфавит в виде строки допустимых символов,
Результат - случайная последовательность нужной длины
5.8 Запись последовательностей в fasta-файл
write_fasta
Создает файл и записывает в него поданные на вход последовательности в формате fasta с указанным числом символов в строке; если файл уже существует, то последовательноти дописывает в него
первый аргумент - имя файла, в который записывать последовательности; второй аргумент - словарь последовательностей, формат описан в задании 5.1 третий аргумент - число символов в строке
результат - функция возвращает число записанных последовательностей; ну и само собой - файл с записанными последовательностями
Как проверять работу функции из модуля
Написать программу, которая импортирует функции модуля - все или нужную.Использует их и печатает ответ.
Ниже - описаны некоторые программы, использующие сразу несколько функций. Такие программ удобны для проверки, а вы лучше придумайте проверочные программы для каждой функции отдельно.
Перезапись fasta файла с нуклеотидными последовательностями по 60 символов в строке
Мнемоника fine_nuclseqs
Баллы >4'
Проверка 5.1, 5.5, 5.6, 5.8
Три аргумента в комендно строке: имя входного файла; имя выходного файла; число символов в строке выходного файла
алгоритм: чтение входного файла с помощью sequences.read_fasta()
удаление всех whitespaces из всех последовательностей с помощью sequences.remove_whitespaces(); проверка всех последовательностей с помощью sequences.check_sequence() и allowed_bps. Последовательность, не прошедшую проверку, удаляем.
Запись всех посл. в выходной файл с помощью sequences.write_fasta
Итого, весь код этой программы можно уместить в 10 - 15 строк!