Kodomo

Пользователь

Учебная страница курса биоинформатики,
год поступления 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)

аргумент - одна аминокислотная последовательность (алфавит двадцать букв, все заглавные)

результат -

5.3 состав последовательности нуклеотидов ДНК

Имя функции bpcomp (bp - от base pair, стандартное сокращение)

аргумент - одна нуклеотидная последовательность,

результат -

5.4 Список имен последовательностей

Имя функции names

аргумент - словарь sequences (см. 5.1) результат - упорядоченный по алфавиту

5.5 Убрать невидимые символы из последовательности

Имя функции remove_whitespaces

аргумент - строка (например, последовательность нуклеотидов или аминокислотных остатков).

Пояснение. fasta формат допускает так называемые whitespace символы (пробел, конец строки \n, табулятор \t, перевод каретки \r, вертикальную черту \v, конец страницы \f) в строках. Но они - игнорируются. Правильно их убрать из последовательности.

Результат - та же строка, из которой удалены все такие символы. См. в подсказках как это можно сделать

5.6 Проверка корректности последовательности

check_sequence - два аргумента, первый последовательность (из заглавных букв, без whitespaces) второй - алфавит - строка допустимых символов в последовательности allowed_bps = "ATGCN" для ДНК, N

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 строк!