Kodomo

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

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

Упражнения

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

Grep

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. Перейдите в папку ~/term1/pr6 и удалите папку test со всем содержимым. Какие для этого понадобятся права?

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

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

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

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

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

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

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

Пример тестового запуска:

kodomo:/$ ~/term1/credits/count_rRNA.sh < '/P/y24/term1/GCF_000008865.2_ASM886v2_feature_table.txt'
      5 + 16S_ribosomal_RNA
      2 - 16S_ribosomal_RNA
      5 + 23S_ribosomal_RNA
      2 - 23S_ribosomal_RNA
      5 + 5S_ribosomal_RNA
      3 - 5S_ribosomal_RNA
kodomo:/$

2. Подсчет количества генов гипотетических белков в таблице локальных особенностей

Ваша задача – написать скрипт ~/term1/credits/count_hypotheticals.sh, который принимает на вход (STDIN) таблицу локальных особенностей (feature_table) и для каждой из молекул ДНК генома выводит (STDOUT) количество генов белков, для которых в процессе аннотации не удалось предположить какую-либо функцию. Такие белки называют "гипотетическими" (hypothetical protein), потому что про них не известно ничего, кроме предполагаемой аминокислотной последовательности. Вы можете считать, что для соответствующих кодирующих участков (CDS) в поле name всегда указано название, оканчивающееся на "hypothetical protein". Обязательным промежуточным этапом должен быть отбор строк, соответствующих именно белок-кодирующим участкам (CDS в первом столбце), мало ли что может означать поле name для участков генома другого типа. Участки генома, которые принадлежат одной молекуле ДНК, имеют одинаковые значения в поле genomic_accession. В выдаче не должно быть нулевых значений, по формату это должна быть таблица с фиксированной шириной столбцов, как в предыдущем пункте, но с сортировкой по убыванию количества генов гипотетических белков.

Пример тестового запуска:

kodomo:/$ ~/term1/credits/count_hypotheticals.sh < '/P/y24/term1/GCF_000008865.2_ASM886v2_feature_table.txt'
    756 NC_002695.2
     37 NC_002128.1
      2 NC_002127.1
kodomo:/$

Обратите внимание, что скрипты принимают все нужные данные на 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* Вычисление частот старт-кодонов по последовательностям CDS (дополнительное)

Ваша задача – написать скрипт ~/term1/credits/count_codons.sh, который принимает на вход (STDIN) нуклеотидные последовательности белок-кодирующих участков генома в формате fasta (cds_from_genomic.fna) и выводит (STDOUT) количество каждого старт-кодона, который встречается в этом геноме. Выдача – две колонки через табулятор – должна быть отсортирована по убыванию количества кодонов. Должен присутствовать заголовок.

Пример тестового запуска (tr исключительно для демонстрации формата выдачи):

kodomo:/$ ~/term1/credits/count_codons.sh < '/P/y24/term1/GCF_000008865.2_ASM886v2_cds_from_genomic.fna' | tr '\t' '|'
Count|Start_codon
4676|ATG
400|GTG
77|TTG
2|ATT
kodomo:/$

2024/1/pr6 (последним исправлял пользователь is_rusinov 2024-10-18 12:11:11)