Kodomo

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

Учебная страница курса биоинформатики,
год поступления 2020

Все файлы со скриптами сохраняйте в папку ~/term1/block2/sem10, название скрипта – <название_задания>.py

Если в заданиях не оговорено иного, то считается, что пользователь всегда передает вам верные аргументы.

1. reverse_complement

Файл reverse_complement.py должен содержать функцию с именем reverse_complement, которая принимает единственный аргумент — строку, представляющую последовательность цепи ДНК (строку из символов a, t, g, c) и возвращает последовательность комплементарной цепи.

При проверке ваш файл будет тестироваться путём импорта вашей функции в тестирующую программу (соответственно и вы, чтобы протестировать свою функцию, должны будете написать тестирующую программу. Ваша тестирующая программа проверяться и оцениваться не будет).

Пример применения:

>>> import reverse_complement
>>> reverse_complement.reverse_complement("attgcatt")
'aatgcaat'

2. read_sfasta

Файл read_sfasta.py должен содержать функцию read_sfasta, которая принимает на вход путь к файлу в fasta-формате, для которого гарантируется, что каждая последовательность в нём записана двумя строкам — строкой с описанием и строкой с собственно последовательностью. Функция должна возвращать словарь формата {имя_последовательности:последовательность}

Пример применения:

>>> from read_sfasta import read_sfasta
>>> read_sfasta("example.fasta")
{"name1": "ATGC", "name2": "ACGCGG"}

3. write_sfasta

Файл write_sfasta.py должен содержать функцию write_sfasta, которая принимает на вход словарь с последовательностями в формате {имя_последовательности:последовательность} и имя файла, а также аргумент to_upper со значением по умолчанию — False. Функция записывает в этот файл последовательности в формате fasta, если to_upper=True, то все нуклеотиды должны быть записаны верхнем регистре.

>>> from write_sfasta import write_sfasta
>>> dt = {"name1": "ATGC", "name2": "ACGCGG"}
>>> write_sfasta(dt, "out.fasta")
>>> write_sfasta(dt, "out_u.fasta", to_upper=True)

4. reverse_fasta

Файл reverse_fasta.py должен содержать функцию reverse_fasta, которая принимает на вход путь к файлу с последовательностями в формате fasta, для которого гарантируется, что каждая последовательность в нем записана двумя строками — строкой с описанием и строкой с собственно последовательностью. Помимо этого она принимает путь к файлу, куда должна записать reverse_complement последовательностей в формате fasta, сохраняя имена последовательностей без изменений.

Указание: можно использовать функции из предыдущих задач.

5. count_a

Необходимо написать программу, которая принимает файл в формате fasta в качестве аргумента командной строки, с последовательностями в формате fasta, для которого гарантируется, что каждая последовательность в нем записана двумя строками — строкой с описанием и строкой с собственно последовательностью.

После этого для каждой последовательности считается среднее содержание в ней аденинов. Программа выводит для каждой последовательности содержание аденинов с точностью до второго знака.

Входной файл

>name1
AAAAA
>name2 
AAAAT

Вывод

name1 1.00
name2 0.80

6. random_seq

Файл random_seq.py должен содержать функцию random_seq, которая принимает на вход длину последовательности и вероятности 4-х нуклеотидов в виде словаря, по умолчанию равные {"A":0.25, "T": 0.25, "C": 0.25, "G":0.25}.

Функция должна проверять, что сумма вероятностей равна 1.

Функция генерирует случайную последовательность нуклеотидов, в которой нуклеотиды в каждой позиции берутся в заданной вероятностью.

Пример применения:

>>> from random_seq import random_seq
>>> random_seq(5)
ATGCA
>>> random_seq(4, dt={"A":1, "T": 0, "C": 0, "G":0})
AAAA