Kodomo

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

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

Упражнения

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

Названия команд приведены не случайно. Прочитайте задание, а потом читайте man для указанных команд и придумывайте, как упражнение можно выполнить. Часто будет нужна не команда в чистом виде, а модифицированная какой-нибудь опцией (а иногда и несколькими).

  1. (mkdir) Создать папку ~/term1/pr5, дальше все делайте в этой папке.

  2. (less) Посмотреть содержимое файла ~/term1/genome/*_feature_table.txt (далее FT), который вы получили при выполнении практикума 2.

  3. (man, less) Разобраться, что делают опции -S, -U и -N команды less, опробовать их на FT. Разобраться, как устроен этот файл.

  4. (cut) Вырезать первую колонку файла FT, сохранить её в файл col1.txt. Вырезать две первые колонки из FT, сохранить в cols.tsv.

  5. (wc) Сколько строк в файле FT? Убедитесь, что количество строк в col1.txt и cols.tsv не отличается.

  6. (sort) Определить, какие уникальные пары значений встречаются в колонках из cols.tsv (вывести в терминал).

  7. (sort, less) Как в предыдущем, но сразу перенаправить в less.

  8. (sort, uniq) Посчитать (и вывести в терминал) количество вхождений для каждого уникального значения из файла col1.txt. Сколько в исходном файле было строчек CDS? А сколько tRNA?

  9. (sort, uniq) Аналогично предыдущему, но для файла cols.tsv (то есть нужно вывести количество встреч каждой уникальной пары значений из колонок).

  10. * (sort, uniq, sort, less) Отсортируйте выдачу из предыдущего пункта (с помощью конвейера, без записи в файл) по количеству встреч пар. Посмотрите результат в less (не сохраняйте в файл и не печатайте просто так в терминал).

  11. (head) Сохраните 5 первых строк из файла FT в файл rows.tsv.

  12. (tail, less) Перенаправьте в less все строки FT, кроме первой (иногда нужно удалить строку-заголовок).

  13. (head, tr) Выведите (в терминал или в less) заголовки столбцов из FT, по одному в строке.

  14. * (cut, tr, sort, uniq) Сколько в файле FT всего строчек, для которых в первой колонке указана какая-нибудь РНК?

  15. (cut, tr) Создайте файл coords.tsv, который будет содержать табличку из трех колонок: start, end и strand, которые будут идентичны соответствующим колонкам файла FT за исключением того, что в колонке strand будут не + и -, а 1 и 0 (для прямой и обратной цепи соответственно).

  16. * (tail, cut, tr, sort, wc) Посчитайте, сколько уникальных координат (начала или конца участка генома) в файле FT. На выходе должно быть одно число.

Упражнения с * сложнее, чем остальные. Наверно, они получатся не у всех. Но попытаться стоит.

Программа tr ничего не знает о структуре текста, она умеет только заменять (и удалять) все вхождения символа на другой символ. Можно заменять сразу несколько разных символов, но это не значит, что можно заменять конкретные слова! Если вы попытаетесь заменить все вхождения AB то заменятся все A и все B. А еще можно заменять управляющие символы (типа переноса строки), какие обозначения понимает tr описано в мануале.

А у uniq есть одна важная особенность, из-за которой эту программу можно использовать почти исключительно в связке с sort. Про это тоже можно прочитать в man uniq – последний абзац раздела DESCRIPTION, начинающийся с Note: ...

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

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

Не нужно делать wiki-страницу с "отчетом". Проверять буду только файлы на kodomo. При записи в очередь вместо URL указывайте прочерк.

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

Результатом выполнения заданий должно быть два текстовых файла:

  1. ~/term1/credits/script_pr5.sh, этот текстовый файл должен содержать команды, описанные ниже, по одной на каждый пункт задания.

  2. ~/term1/credits/script_pr5.out – файл, содержащий выдачу сценария из предыдущего пункта, запущенного для таблицы локальных особенностей вашей бактерии/археи.

Скрипт должен выводить все данные в STDOUT, файл ~/term1/credits/script_pr5.out вы должны создать с помощью перенаправления выдачи средствами bash после того, как допишите и проверите скрипт! Иначе у меня не будет нормального способа проверять эти скрипты, если каждый из них будет норовить создать файл в моей домашней папке (или уж тем более в вашей). Скрипты, которые читают неправильный файл или пытаются создать файл с выдачей, проверять не буду.

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

bash 'script_pr5.sh'

Все строчки файла bash будет интерпретировать в качестве команд. Поэтому в файле не должно быть постороннего текста! Допускаются только пустые строки для визуального разделения команд.

Крайне важно, чтобы сценарий имел разделители строк в формате Unix!

Все команды сценария должны будут работать с таблицей локальных особенностей вашей бактерии или археи. Они должны предполагать, что к файлу можно получить доступ по маске ../genome/*_feature_table.txt. Это позволит вам тестировать сценарий прямо в папке ~/term1/credits. А я смогу проверить его на тестовой таблице, предварительно скопировав к себе. То есть, например, в сценарии может быть команда head -1 ../genome/*_feature_table.txt

Команда 1

Эта команда (на самом деле, конечно, конвейер из команд) должна выводить идентификатор сборки генома (то, что содержится в столбце assembly). Все значения в этом столбце в вашем файле должны быть одинаковыми (можете в этом убедиться, на всякий случай), поэтому можете вырезать нужное поле из любой строки, кроме заголовка. Пример выдачи:

GCF_000008865.2

Команда 2

Эта команда должна выводить длины 4х самых длинных продуктов генов (столбец product_length), отсортированные по убыванию длины без повторений. Никак дополнительно фильтровать строчки таблицы не нужно, пустые значения сами окажутся внизу при правильной сортировке. А вот от заголовка нужно предварительно избавиться. Пример выдачи:

5291
3169
2793
2113

Команда 3

Эта команда должна печатать две строки, в которых содержится число участков генома (т.е. строк в таблице локальных особенностей) на каждой из двух цепей ДНК. Опять же, не забудеть удалить заголовок, строки фильтровать не нужно. Порядок строк в выдаче неважен. Пример выдачи (в выдаче не должно быть пробелов):

5438+
5260-

Команда 4 (доп.)

Как команда 3, но строчки с повторяющимися координатами нужно считать только один раз. Порядок строк в выдаче неважен. Пример формата выдачи:

2747+
2671-

Результат

Таким образом, содержимое файла ~/term1/credits/script_pr5.out в данном конкретном случае будет следующим:

GCF_000008865.2
5291
3169
2793
2113
5438+
5260-

Или (если выполнено дополнительное задание):

GCF_000008865.2
5291
3169
2793
2113
5438+
5260-
2747+
2671-

Этот пример вполне реальный. Именно на этой геномной сборке и буду проверять ваши сценарии. Таблица локальных особенностей есть на kodomo, файл /P/y23/term1/GCF_000008865.2_ASM886v2_feature_table.txt.

2023/1/pr5 (последним исправлял пользователь is_rusinov 2023-10-06 07:24:53)