Kodomo

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

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

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

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

1. count_n_fasta

Программа принимает в качестве аргумента командной строки название файла с одной нуклеотидной последовательностью в формате fasta (последовательность может занимать несколько строк). Программа печатает на стандартный поток вывода количество каждого типа нуклеотидов (A, T, G, C) в последовательности

Пример запуска программы

python3 count_n_fasta.py /nfs/srv/www/htdocs/FBB/year_20/examples/nucl_single.fasta

Пример вывода

A 10
T 4
C 0
G 3

Пример входного файла:

>seq desc
AAAATTTTGAGGA
AAAA

2. uniq_reads

Программа принимает в качестве аргумента командной строки название файла с набором нуклеотидных последовательностей в формате fasta. Гарантируется, что каждая последовательность в файле записана ровно на одной строке (за исключением строки с описанием). Выведите все уникальные последовательности в файле (порядок вывода произволен).

Пример запуска программы

python3 uniq_reads.py /nfs/srv/www/htdocs/FBB/year_20/examples/single_line.fasta

Пример вывода

ATGATGATAG
ATGAAGATAG
CCGATGATAG
ATGATGATTT

Пример входного файла:

>seq1 s
ATGATGATAG
>seq2 d
ATGAAGATAG
>seq3 e
ATGATGATTT
>seq4
ATGATGATAG
>seq5
CCGATGATAG
>seq6
ATGATGATAG
>seq7
CCGATGATAG

3. count_reads_sorted

Программа принимает в качестве аргумента командной строки название файла с набором нуклеотидных последовательностей в формате fasta. Гарантируется, что каждая последовательность в файле записана ровно на одной строке (за исключением строки с описанием). Для каждой последовательности выведите, сколько раз она встретилась. Последовательности выводить в порядке лексикографического возрастания (то есть в алфавитном порядке).

Пример запуска программы

python3 count_reads_sorted.py /nfs/srv/www/htdocs/FBB/year_20/examples/single_line.fasta

Пример вывода

ATGAAGATAG 1
ATGATGATAG 3
ATGATGATTT 1
CCGATGATAG 2

Пример входного файла:

>seq1 s
ATGATGATAG
>seq2 d
ATGAAGATAG
>seq3 e
ATGATGATTT
>seq4
ATGATGATAG
>seq5
CCGATGATAG
>seq6
ATGATGATAG
>seq7
CCGATGATAG

4. fetch_pdb

Программа принимает в командной строке pdb-код (четыре символа) и создаёт файл с именем <код>.pdb, содержащий запись pdb, находящуюся по адресу https://files.rcsb.org/view/<код>.pdb (например, если pdb-код — это 1xyz, то по адресу https://files.rcsb.org/view/1xyz.pdb, создаваемый файл в этом случае должен называться 1xyz.pdb).

Примеры валидных pdb-кодов: 10mh, 1crm, 1ab1, 4ate.

Пример запуска программы

python3 fetch_pdb.py 4ATE

5. split_pdb

Программа принимает в командной строке pdb-код (четыре символа) и записывает два файла:

1) atom.pdb - содержащий только строки, содержащую информацию об атомах (начинаются с ATOM) 2) hetatm.pdb - содержащий только строки, содержащую информацию о лигандах (начинаются с HETATM)

Пример запуска программы

python3 split_pdb.py 4ATE

6. cut_pdb

Программа принимает в командной строке 7 аргументов:

  1. pdb-код
  2. x1
  3. y1
  4. z1
  5. x2
  6. y2
  7. z2

и записывает файл out.pdb, в который записаны только те атомы из строк ATOM, для которых координаты x, y, z удолетворяют следующим условиям:

  1. x1 < x < x2

  2. y1 < y < y2

  3. z1 < z < z2

Пример запуска программы

python3 cut_pdb.py 4ATE 0 0 0 20.5 50.0 100

7. new_user

Программа принимает на вход два аргумента командной строки: 1) файл, содержащий по одному слову в строке ("имена пользователей") 2) слово ("имя нового пользователя").

Если имени нового пользователя нет в файле, то программа выводит OK. Если же такое имя пользователя есть в файле, то программа пишет на первой строке NO, а затем выводит "предложение имени" — имя, которого нет в списке.

Предложение имени должно генерироваться по следующему алгоритму. Оно должно получаться присоединением к первоначально заданному слову какого-либо натурального числа (например, задано "abc", выдаётся "abc1" или "abc9"). При этом "предложение имени" не должно присутствовать в списке (быть новым), а присоединяемое число должно быть наименьшим из возможных при условии новизны.

Пример запуска программы

python3 new_user.py /nfs/srv/www/htdocs/FBB/year_20/examples/existed.txt miaso

Пример вывода

NO
miaso2

Пример входного файла:

serge01
urfin
miaso
miaso1
kesha

8. count_multi_fasta

Программа принимает на вход файл с множеством последовательностей в формате fasta. Программа печатает имя каждой последовательности и ее длину

Пример запуска программы

python3 new_user.py /nfs/srv/www/htdocs/FBB/year_20/examples/multiline.fasta

Пример вывода

seq1 10
seq2 16
seq3 26
seq4 10
seq5 12

Пример входного файла:

>seq1 s
ATGATGATAG
>seq2 d
ATGAAGATAG
AAATGC
>seq3 simple_description
ATGATGATTT
ATGCCCCATT
AAACCC
>seq4 OK
ATGATGATAG
>seq5
CCGATGATAG
CC

9. select_pdb_field

Программа принимает на вход один или два аргумента: 1) файл с множеством последовательностей в формате fasta; 2) выходной файл (опционально).

Часть последовательностей в своем описании содержат подстроки вида PDB_CODE:<pdb_code>

Программа пишет в выходной файл, если он передан, а иначе на стандартный поток вывода, коды PDB (в верхнем регистре), которые содержатся в описании последовательностей.

Пример запуска программы:

python3 select_pdb_field.py /nfs/srv/www/htdocs/FBB/year_20/examples/fasta_wh_pdb.fasta

Пример вывода:

4ATE
98YH
10MH

Пример входного файла:

>seq1 PDB_CODE:4ATE
ATGATGATAG
>seq2 PDB_CODE:98YH
ATGAAGATAG
AAATGC
>seq3 no_info
AAATAAGTGC
>seq4 PDB_CODE:10MH
ATGATGATTT
ATGCCCCATT
AAACCC

10. pipe_download

Ваша программа со стандартного потока ввода принимает файл, в котором на каждой строчке записан код PDB. Если PDB-структура с таким кодом существует, то программа скачивает ее и сохраняет в файл <код>.pdb Если же такой структуры не существует, то программа на стандартный поток ошибок пишет "Error, pdb with code: <code> doesn't exist"

Пример запуска программы на выдаче программы из предыдущего задания

python3 select_pdb_field.py /nfs/srv/www/htdocs/FBB/year_20/examples/fasta_wh_pdb.fasta | python3 pipe_download.py

Пример вывода (стандартный поток ошибок)

Error, pdb with code: 98YH doesn't exist

Пример входного файла:

>seq1 PDB_CODE:4ATE
ATGATGATAG
>seq2 PDB_CODE:98YH
ATGAAGATAG
AAATGC
>seq3 no_info
AAATAAGTGC
>seq4 PDB_CODE:10MH
ATGATGATTT
ATGCCCCATT