Kodomo

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

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

Упражнения

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

Первой группе не успел рассказать про grep. Посмотрите запись занятия с прошлого года.

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

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

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

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

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

  6. (grep, wc) Выведите все строчки файла /P/y22/term1/pr6.txt, которые начинаются на qwerty в любом регистре. Сколько таких строк?

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

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

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

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

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

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

Задания практикума 6

Мягкий дедлайн – 01:00 AM 22 октября, жесткий дедлайн – 01:00 AM 29 октября. После мягкого дедлайна штраф 0.5 балла, после жесткого – 2 балла.

Результат выполнения каждого задания должен быть полноценным сценарием bash, т.е. должен содержать правильный shebang, и как минимум владелец файла (т.е. вы) должен иметь право на его исполнение. Перед записью в очередь на проверку обязательно нужно проверить каждый сценарий, запустив его на любом тестовом примере.

1. Подсчет количества генов РНК в таблице локальных особенностей

Ваша задача – написать скрипт ~/term1/credits/count_RNA.sh, который принимает на вход (STDIN) таблицу локальных особенностей (feature_table) и выводит (STDOUT) одно число – количество генов РНК (строки, содержащие RNA в первом столбце) на прямой цепи. Считайте, что символ + и слово RNA могут встречаться в таблице не только в нужных столбцах, а вообще в любых других (вы ведь не можете быть уверены в обратном).

Внимание, спойлер!

Проще всего реализовать следующую последовательность действий:

  • отрезание заголовка;
  • вырезание нужных колонок;
  • фильтрация по цепи;
  • вырезание нужных колонок;
  • отбор РНК;
  • подсчет числа строк.

2. Получение названий и описаний последовательностей из файла в формате fasta

Ваша задача – написать скрипт ~/term1/credits/desc_seqs.sh, который принимает на вход (STDIN) последовательности в формате fasta, и выводит (STDOUT) названия и описания (если есть) всех последовательнойстей в том порядке, в котором они были во входном потоке.

Как выглядит файл в формате fasta вы можете вспомнить на примере последовательности генома своей бактерии/археи. Вы скачивали и распаковывали этот файл в практикуме 2. Другой пример fasta, который можно использовать для тестировния, называется /P/y19/term3/block2/X5.fasta. Только не копируйте его к себе в домашнюю папку, он приличное количество места занимает.

Каждая запись в fasta имеет следующий вид.

>НАЗВАНИЕ ОПИСАНИЕ
ПОСЛЕДОВА
ТЕЛЬНОСТЬ

Таким образом, ваш скрипт должен выводить только заголовочные строки, т.е. те, которые начинаются с >, причем без самого этого символа в начале. Будет хорошо, если ваш скрипт будет сохранять символы >, если они встречаются в заголовках не на первой позиции (такое действительно бывает).

Обратите внимание, что оба скрипта принимают все нужные данные на 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

2022/1/pr6 (последним исправлял пользователь is_rusinov 2022-10-14 13:33:19)