Kodomo

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

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

Упражнения

Упражнения обязательно нужно выполнить полностью. Если не успели во время занятия, то проделайте после. Но в отчете их отражать не нужно.

Grep

  1. (grep) Выведите все строчки файла /P/y23/term1/pr6.txt, которые содержат слово qwerty.

  2. (grep, less) Выведите все строчки файла /P/y23/term1/pr6.txt, которые содержат слово qwerty в любом регистре букв. Посмотрите эти строки в less.

  3. (grep, wc) Выведите все строчки файла /P/y23/term1/pr6.txt, которые начинаются на qwerty в любом регистре. Сколько таких строк? Как можно посчитать нужные строки с помощью только grep без wc?

  4. (grep) Выведите все строчки файла /P/y23/term1/pr6.txt, которые заканчиваются на qwerty в любом регистре.

  5. Выведите все строчки файла /P/y23/term1/pr6.txt, которые полностью равны qwerty (без учета регистра).

  6. * (grep -e) Выведите все строчки файла /P/y23/term1/pr6.txt, которые либо начинаются на qwerty, либо заканчиваются на qwerty.

  7. Выведите все строчки файла /P/y23/term1/pr6.txt, которые содержат слово ^qwerty.

  8. Выведите все строчки файла /P/y23/term1/pr6.txt, которые содержат слово qwerty$.

  9. Выведите все строчки файла /P/y23/term1/pr6.txt, которые заканчиваются на qwerty$.

  10. Из файла со скаченным геномом бактерии в формате fasta выведите только строки заголовков (они начинаются на >). Сколько в файле последовательностей "репликонов" (т.е. отдельных молекул ДНК: хромосом или плазмид).

  11. * (grep, grep, cut) Выведите первые 10 нуклеотидов для каждого репликона (в выдаче должно быть строк столько, сколько в геноме репликонов, в каждой строке 10 нуклеотидов).

Права доступа

У вас есть возможность изменения прав доступа для всех файлов и папок, которые вы создали. Используйте её только когда это действительно необходимо, почти всегда стандартные права доступа должны вас устраивать. Из этого правила есть всего два исключения: право на исполнение скриптов, содержащих shebang (давайте его только себе), и исправление прав доступа файлов, скопированных с других компьютеров. У таких файлов могут сохраняться странные права. Таким файлам можно смело давать право на чтение для всех, если его еще нет. Все равно доступ в вашу домашнюю папку имеет только весьма ограниченный круг пользователей.

Не меняйте права доступа в домашнюю папку, даже если они вам кажутся странными!

  1. Создайте папку ~/term1/pr6, дальше все делайте исключительно в этой папке, если явным образом не указано обратное.

  2. (chmod) Скопируйте сценарий ~/term1/credits/script_pr5.sh в папку ~/term1/pr6. Cделайте из него полноценный исполняемый файл: добавьте shebang и установите для владельца право на исполнение. Запустите сценарий на исполнение из папки ~/term1/pr6 без указания интерпретатора (то есть первым (нулевым) аргументом команды должно быть имя файла сценария). Попробуйте запустить его из другой папки, разберитесь, почему он не работает. Только не испортите в процессе исходный скрипт, все операции производите с копией!

  3. (which) Определите, где на kodomo лежат исполняемые файлы bash, env, ls, file и т.д.

  4. (file) Узнайте, что программа file пишет про исполняемый файл bash, про исполняемый файл env, про ваш скрипт из credits, про его новый вариант из pr6.

  5. Создайте папку test внутри pr6. Какие права у вас есть на эту папку? Скопируйте в эту папку скрипт script_pr5.sh.

  6. Теперь изменяйте права для себя (owner) на эту папку и пробуйте просматривать её содержимое, переименовывать или просматривать в ней файлы. Убедитесь, что права на папки работают именно так, как рассказали преподаватели.
  7. Убедитесь, что у вас есть права rx на папку pr6 и перейдите в нее. Изменяйте права для себя на файл скрипта, и пробуйте его редактировать, запускать или просматривать. Убедитесь, что права на файлы работают именно так, как рассказали преподаватели.

  8. Перейдите в папку ~/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

2023/1/pr6 (последним исправлял пользователь is_rusinov 2023-10-20 09:56:42)