Учебная страница курса биоинформатики,
год поступления 2021
Упражнения
Упражнения обязательно нужно выполнить полностью. Если не успели во время занятия, то проделайте после. Но в отчете их отражать не нужно.
(chmod) Скопируйте сценарий ~/term1/credits/script_pr5.sh в папку ~/term1/pr6 (её предварительно нужно создать). И сделайте из него полноценный исполняемый файл: добавьте shebang и установите для владельца право на исполнение. Запустите сценарий на исполнение из папки ~/term1/pr6 без указания интерпретатора (то есть первым (нулевым) аргументом команды должно быть имя файла сценария). Попробуйте запустить его из другой папки. Только не испортите в процессе исходный скрипт, я его еще не проверил!
(which) Определите, где на kodomo лежит исполняемый файл bash.
(file) Узнайте, что программа file пишет про исполняемый файл bash, про исполняемый файл env, про ваш скрипт из credits, про его новый вариант из pr6.
(grep) Выведите все строчки файла /P/y21/term1/pr6.txt, которые содержат слово qwerty.
(grep, less) Выведите все строчки файла /P/y21/term1/pr6.txt, которые содержат слово qwerty в любом регистре букв. Посмотрите эти строки в less.
(grep, wc) Выведите все строчки файла /P/y21/term1/pr6.txt, которые начинаются на qwerty в любом регистре. Сколько таких строк?
(grep) Выведите все строчки файла /P/y21/term1/pr6.txt, которые заканчиваются на qwerty в любом регистре.
(grep) Выведите все строчки файла /P/y21/term1/pr6.txt, которые полностью равны qwerty (без учета регистра).
* (grep) Выведите все строчки файла /P/y21/term1/pr6.txt, которые либо начинаются на qwerty, либо заканчиваются на qwerty.
(grep) Выведите все строчки файла /P/y21/term1/pr6.txt, которые содержат слово ^qwerty.
(grep) Выведите все строчки файла /P/y21/term1/pr6.txt, которые содержат слово qwerty$.
Задания практикума 6
Окончательная версия заданий, можете приступать к выполнению.
Мягкий дедлайн – 23:59 15 октября, жесткий дедлайн – 01:00 22 октября. После мягкого дедлайна штраф 0.5 балла, после жесткого – 2 балла.
Результат выполнения каждого задания должен быть полноценным сценарием bash, т.е. должен содержать правильный shebang, и как минимум владелец файла (т.е. вы) должен иметь право на его исполнение. Перед записью в очередь на проверку обязательно нужно проверить каждый сценарий, запустив его на любом тестовом примере.
Подсчет количества последовательностей в файле fasta
Ваша задача – написать скрипт ~/term1/credits/count_seqs.sh, который принимает на вход (STDIN) текст в формате fasta и выводит (STDOUT) одно число – количество последовательностей во входном потоке.
Как выглядит файл в формате fasta вы можете вспомнить на примере последовательности генома своей бактерии/археи. Вы скачивали и распаковывали этот файл в практикуме 2. В этом файле может оказаться только одна последовательность. В этом случае можете использовать для тестирования сценария файл /P/y19/term3/block2/X5.fasta. Только к себе в домашнюю папку его не копируйте, он приличное количество места занимает.
При выполнении задания будет сложно обойтись без grep (можно попробовать и без него, используя tr, но только в качестве упражнения).
Получение координат открытых рамок считывания (CDS) с прямой цепи
Ваша задача – написать скрипт ~/term1/credits/cds_coords.sh, который принимает на вход (STDIN) таблицу локальных особенностей генома (такую же, как вы скачивали в пр. 2 для своей бактерии/археи), и выводит (в STDOUT) координаты (столбцы start и end) открытых рамок считывания (CDS в первом столбце) с прямой цепи (+ в столбце strand). В выдаче должно быть два столбца, а не три.
Символ + является специальным для grep! По-хорошему его нужно правильно экранировать. За отсутствие аккуратного экраниварования буду снижать баллы даже в случае правильного вывода.
Это задание довольно просто выполняется с помощью нескольких циклов вырезания нужных столбцов (cut) и фильтрации строк (grep). Не забудьте избавиться от заголовка таблицы.
Вместо экранирования специальных символов для grep можно воспользоваться его опцией, которая отключает интерпретацию всех спец. символов в grep. Но такой способ вам не подойдет, если вы собираетесь использовать другие специальные символы (например, ^ или $).
Обратите внимание, что оба скрипта принимают все нужные данные на STDIN! Т.е. ваш скрипт должен работать примерно так, как это делает tr:
echo "DATA" | tr -d 'A' | less
# или
tr -d 'A' < data.txt > output.txt
Скрипты, которые ожидают название файла в качестве аргумента, или, тем более, используют фиксированное название входного файла, засчитанны не будут. Т.е. так нельзя:
./script.sh data.txt | less
# и так тоже нельзя
./script.sh
Error: data.txt: No such file or directory