Учебная страница курса биоинформатики,
год поступления 2023
Упражнения
Упражнения обязательно нужно выполнить полностью. Если не успели во время занятия, то проделайте после. Но в отчете их отражать не нужно.
Grep
(grep) Выведите все строчки файла /P/y23/term1/pr6.txt, которые содержат слово qwerty.
(grep, less) Выведите все строчки файла /P/y23/term1/pr6.txt, которые содержат слово qwerty в любом регистре букв. Посмотрите эти строки в less.
(grep, wc) Выведите все строчки файла /P/y23/term1/pr6.txt, которые начинаются на qwerty в любом регистре. Сколько таких строк? Как можно посчитать нужные строки с помощью только grep без wc?
(grep) Выведите все строчки файла /P/y23/term1/pr6.txt, которые заканчиваются на qwerty в любом регистре.
Выведите все строчки файла /P/y23/term1/pr6.txt, которые полностью равны qwerty (без учета регистра).
* (grep -e) Выведите все строчки файла /P/y23/term1/pr6.txt, которые либо начинаются на qwerty, либо заканчиваются на qwerty.
Выведите все строчки файла /P/y23/term1/pr6.txt, которые содержат слово ^qwerty.
Выведите все строчки файла /P/y23/term1/pr6.txt, которые содержат слово qwerty$.
Выведите все строчки файла /P/y23/term1/pr6.txt, которые заканчиваются на qwerty$.
Из файла со скаченным геномом бактерии в формате fasta выведите только строки заголовков (они начинаются на >). Сколько в файле последовательностей "репликонов" (т.е. отдельных молекул ДНК: хромосом или плазмид).
* (grep, grep, cut) Выведите первые 10 нуклеотидов для каждого репликона (в выдаче должно быть строк столько, сколько в геноме репликонов, в каждой строке 10 нуклеотидов).
Права доступа
У вас есть возможность изменения прав доступа для всех файлов и папок, которые вы создали. Используйте её только когда это действительно необходимо, почти всегда стандартные права доступа должны вас устраивать. Из этого правила есть всего два исключения: право на исполнение скриптов, содержащих shebang (давайте его только себе), и исправление прав доступа файлов, скопированных с других компьютеров. У таких файлов могут сохраняться странные права. Таким файлам можно смело давать право на чтение для всех, если его еще нет. Все равно доступ в вашу домашнюю папку имеет только весьма ограниченный круг пользователей.
Не меняйте права доступа в домашнюю папку, даже если они вам кажутся странными!
Создайте папку ~/term1/pr6, дальше все делайте исключительно в этой папке, если явным образом не указано обратное.
(chmod) Скопируйте сценарий ~/term1/credits/script_pr5.sh в папку ~/term1/pr6. Cделайте из него полноценный исполняемый файл: добавьте shebang и установите для владельца право на исполнение. Запустите сценарий на исполнение из папки ~/term1/pr6 без указания интерпретатора (то есть первым (нулевым) аргументом команды должно быть имя файла сценария). Попробуйте запустить его из другой папки, разберитесь, почему он не работает. Только не испортите в процессе исходный скрипт, все операции производите с копией!
(which) Определите, где на kodomo лежат исполняемые файлы bash, env, ls, file и т.д.
(file) Узнайте, что программа file пишет про исполняемый файл bash, про исполняемый файл env, про ваш скрипт из credits, про его новый вариант из pr6.
Создайте папку test внутри pr6. Какие права у вас есть на эту папку? Скопируйте в эту папку скрипт script_pr5.sh.
- Теперь изменяйте права для себя (owner) на эту папку и пробуйте просматривать её содержимое, переименовывать или просматривать в ней файлы. Убедитесь, что права на папки работают именно так, как рассказали преподаватели.
Убедитесь, что у вас есть права rx на папку pr6 и перейдите в нее. Изменяйте права для себя на файл скрипта, и пробуйте его редактировать, запускать или просматривать. Убедитесь, что права на файлы работают именно так, как рассказали преподаватели.
Перейдите в папку ~/term1/pr6 и удалите папку test со всем содержимым. Какие для этого понадобятся права?
Обязательные задания
Мягкий дедлайн – 01:00 AM 20 октября, жесткий дедлайн – 01:00 AM 27 октября. После мягкого дедлайна штраф 0.5 балла, после жесткого – 2 балла.
Результат выполнения каждого задания должен быть полноценным сценарием bash, т.е. должен содержать правильный shebang, и как минимум владелец файла (т.е. вы) должен иметь право на его исполнение. Перед записью в очередь на проверку обязательно нужно проверить каждый сценарий, запустив его на любом тестовом примере.
1. Подсчет количества псевдогенов в таблице локальных особенностей
Ваша задача – написать скрипт ~/term1/credits/count_pseudogene.sh, который принимает на вход (STDIN) таблицу локальных особенностей (feature_table) и выводит (STDOUT) одно число – количество псевдогенов (соответствующая пометка есть во втором столбце) на обратной цепи. Считайте, что символ - и слово pseudogene могут встречаться в таблице не только в нужных столбцах, а вообще в любых других (вы ведь не можете быть уверены в обратном).
2. Получение названий последовательностей из файла в формате fasta
Ваша задача – написать скрипт ~/term1/credits/seq_names.sh, который принимает на вход (STDIN) последовательности в формате fasta, и выводит (STDOUT) названия всех последовательнойстей в том порядке, в котором они были во входном потоке, по одному в строке. Название последовательности – это то, что после символа > и до первого пробела (или конца строки). Чаще всего в качестве названия последовательности в fasta указывают её идентификатор в какой-нибудь базе данных, т.е. какой-то нечитаемый набор символов.
Как выглядит файл в формате fasta вы можете вспомнить на примере последовательности генома своей бактерии/археи. Вы скачивали и распаковывали этот файл в практикуме 2. Другой пример fasta, который можно использовать для тестировния, называется /P/y19/term3/block2/X5.fasta. Только не копируйте его к себе в домашнюю папку, он занимает приличное количество места.
Обратите внимание, что все скрипты принимают все нужные данные на STDIN и выдают данные на STDOUT! Т.е. ваш скрипт должен работать примерно так, как это делает 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
3* Подсчет количества тРНК по таблице локальных особенностей (дополнительное)
Ваша задача – написать скрипт ~/term1/credits/count_tRNA.sh, который принимает на вход (STDIN) таблицу локальных особенностей (feature_table) и выводит (STDOUT) количество тРНК для каждой аминокислоты. Определить, что строка таблицы соответствует тРНК, можно по значению в первом столбце. Информацио о соответствующей аминокислоте предлагаю вам найти в таблице самостоятельно. Выдача должна быть отсортирована по убыванию количества тРНК, а для аминокислот с одинаковым количеством тРНК – по трехбуквенному обозначению аминокислоты по алфавиту. Пример выдачи скрипта для файла /P/y23/term1/GCF_000008865.2_ASM886v2_feature_table.txt (выдача вашего скрипта должна полностью соответствовать этому формату):
18/Arg 11/Ile 7/Leu 7/Met 7/Val 6/Gly 5/Ala 5/Lys 5/Ser 4/Asn 4/Gln 4/Glu 4/Pro 4/Thr 3/Asp 3/Tyr 2/Phe 1/Cys 1/His 1/Sec 1/Trp