Kodomo

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

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

Обязательные задания

Дедлайн – 01:00 AM 9 октября. При записи на проверку номер практикума – 5. В поле URL нужно поставить прочерк.

Не используйте в отчетных файлах конструкции bash и программы, освоение которых не требуется в курсе. В частности это касается всяких подстановок с использованием доллара и/или скобочек в bash, регулярных выражений в grep (за исключением "якорей" ^ и $), программ find, sed и awk, шебангов в сценариях (строк, начинающихся на #!), и еще много чего. Если мы встречаем в домашних или контрольных работах и на коллоквиуме что-то, что не входит в курс, то мы, в первую очередь, считаем, что вы не смогли обойтись более простыми средствами. А значит не освоили материал в полной степени.

Никто вам не запрещает изучать дополнительные темы. Даже, наоборот, это вполне приветствуется. Но только если не мешает проверять освоение вами базовых средств. С удовольствием отвечу (если смогу) на любые вопросы по командной строке, в том числе за рамками программы. Но если встречу в ваших сценариях какие-то конструкции, про которые мы вам не рассказывали, потребую устной сдачи на зачете не только этой темы, но и той базовой, вместо которой она была использована. И баллов за это не поставлю из вредности)

— ИР

Проверять будем наличие четырех файлов в папке ~/term1/credits с указанными ниже именами.

Таблица локальных особенностей – файл ~/term1/genome/*_feature_table.txt, который вы получили для выбранной бактерии/археи в практикуме №2. Вам потребуется составить два сценария (в обиходе скрипта) bash, которые будут по таблице локальных особенностей выводить некоторую информацию.

Не пропускайте пояснения в рамках!

Существует три основных способа передачи информации из файла в программу.

  1. Передача имени файла в аргументе командной строки – наиболее универсальный способ, но вы пока не обладаете достаточными знаниями для его реализации.

  2. Использование фиксированного имени файла. Это проще всего реализовать, но такую программу очень неудобно использовать. Такой подход называется жестким кодированием (хардкодингом) и порицается среди разработчиков ПО. Но, тем не менее, так должен быть устроен первый сценарий ft_info.sh. Он должен предполагать, что таблица локальных особенностей является единственным файлом, подходящим под маску ../genome/*_feature_table.txt (именно такой, с точностью до символа!). Такая маска позволит вам запускать этот сценарий прямо из папки credits, а мы для проверки сможем скопировать скрипт и подложить в нужное место проверочную таблицу.

  3. Cчитывание всех данные со стандартного потока ввода. Нужный файл в этом случае подставляется при запуске с помощью перенаправления потоков средствами bash. Так должен работать второй сценарий. Это удобнее при использовании (данные можно получать из любого файла, или даже из выдачи другой команды в конвейере), но накладывает определенные ограничения на саму программу, ведь данные с STDIN можно прочитать только один раз. В вашем случае указанное ограничение не будет проблемой, ведь второй сценарий будет содержать всего один конвейер.

В таблице локальных особенностей генома (feature_table) каждая строка (запись) соответствует одной "локальной особенности" (feature) – некоторому участку последовательности, которому приписана функция. Локальные особенности бывают разных типов, например, gene (любой ген, белок-кодирующий, РНК-кодирующий, псевдоген), CDS (белок-кодирующая последовательность), rRNA (участок ДНК, кодирующий рибосомальную РНК) и т.д. Тип записи указан в первой колонке. Список типов фиксированный, у каждого типа есть принятое обозначение. Почти любой анализ таблицы локальных особенностей должен начинаться с отбора записей только нужного типа (или типов). Так как колонка первая, а все обозначения типов фиксированные, то это надежно можно делать даже с помощью grep.

grep '^rRNA' feature_table.tsv | ... # отбор записей про рРНК

Оба сценария необходимо проверить на тестовой таблице и сравнить полученную выдачу с приведенным ниже образцом! Если выдача сценария на тестовой таблице отличается от образца (за исключением порядка строк и количества пробельных символов в конвейере 3 и базовом варианте сценария 2), то проверка сразу завершается без зачета задания.

Оба сценария должны выводить всю информацию в STDOUT. Файлы *.out с выдачей сценариев для таблицы локальных особенностей вашей бактерии/археи вы должны создать с помощью инструкции перенаправления потока в команде запуска сценария.

1. Базовая информация о геноме

Нужно составить сценарий с именем ~/term1/credits/ft_info.sh, который будет содержать три следующих конвейера. Созданный сценарий нужно будет запустить в папке ~/term1/credits и сохранить его выдачу в файл ft_info.out.

Конвейер 1

Должен читать файл ../genome/*_feature_table.txt и выводить идентификатор сборки генома, который содержится в третьей колонке файла (assembly). Значение в этой колонке должно быть одинаковым в каждой строке таблицы, поэтому вы можете вывести значение из любой строки, кроме заголовка.

Конвейер 2

Должен читать файл ../genome/*_feature_table.txt и выводить количество репликонов в геноме. У каждого репликона в таблице свое уникальное имя (столбец с путающим названием chromosome) и идентификатор (столбец genomic_accession). Другими словами, вы можете посчитать и вывести, сколько различных значений в любом из этих столбцов. Только не забудьте предварительно удалить заголовок!

Конвейер 3

Должен читать файл ../genome/*_feature_table.txt и выводить количество любых генов (gene в первом столбце) на прямой и обратной цепях. В этом конвейере не получится обойтись без grep для отбора строк, соответствующих генам. Формат выдачи (порядок строк и количество пробелов) не важен, но должно быть понятно, какое число относится к прямой цепи, а какое – к обратной. Внимание! Вам нужно придумать один конвейер, который будет выводить обе строки. Подсказка – никаких других цепей, кроме прямой (обозначаемой плюсом в столбце strand) и обратной (обозначаемой минусом), не существует.

Пример запуска и выдачи сценария (на тестовой таблице, обратите внимание на текущую папку):

kodomo:~$ cd /P/y26/term1
kodomo:/P/y26/term1$ bash ~/term1/credits/ft_info.sh
GCF_000008865.2
3
   2747 +
   2670 -
kodomo:/P/y26/term1$

2. Информация о генах тРНК

Нужно составить сценарий с именем ~/term1/credits/tRNA_counts.sh, который будет выводить количество тРНК (tRNA в первом столбце) каждого типа. Типом тРНК будем считать часть её имени (столбец name) после tRNA-. Обычно это просто трехбуквенное название соответствующей аминокислоты. Порядок строк и количество пробельных символов в выдаче не имеет значения. Исходную таблицу локальных особенностей сценарий должен считывать из потока STDIN. Результат запуска сценария для таблицы локальных особенностей выбранной вами бактерии/археи нужно записать в файл ~/term1/credits/tRNA_counts.out.

Пример запуска и выдачи сценария (на тестовой таблице):

kodomo:~/term1/credits$ bash tRNA_counts.sh < /P/y26/genome/test_feature_table.txt
      5 Ala
     18 Arg
      4 Asn
      3 Asp
      1 Cys
      4 Gln
      4 Glu
      6 Gly
      1 His
     11 Ile
      7 Leu
      5 Lys
      7 Met
      2 Phe
      4 Pro
      1 Sec
      5 Ser
      4 Thr
      1 Trp
      3 Tyr
      7 Val
kodomo:~/term1/credits$

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

kodomo:~/term1/credits$ bash tRNA_counts.sh < /P/y26/genome/test_feature_table.txt
Количество_тРНК,Тип_тРНК
18,Arg
11,Ile
7,Val
7,Met
7,Leu
6,Gly
5,Ser
5,Lys
5,Ala
4,Thr
4,Pro
4,Glu
4,Gln
4,Asn
3,Tyr
3,Asp
2,Phe
1,Trp
1,Sec
1,His
1,Cys
kodomo:~/term1/credits$

2026/1/pr5 (последним исправлял пользователь sas 2026-10-02 13:19:51)