Kodomo

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

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

Практикум 10. Домашнее задание по теме "Линукс, продолжение"

Создайте папку ~/term2/linux/pr10. В ней храните временные файлы задания. Результаты кладите в папку ~/term2/linux/credits

Все результаты работы сохраняйте в этой папке.

Отчетность по всем заданиям - скрипт, если не оговорено иного. Скрипт должен выполнять задание от начала до конца и работать от имени любого пользователя и из любой папки. При проверке я буду менять входные файлы и проверять работу скрипта на новых файлах. Просьба это учитывать при написании скриптов.

Скрипты не должны выдавать постороннюю информацию, в том числе сообщения о начале работы. Лучше пишите комментарий в скрипте:

# begin
do smth
# next step
make coffee
# cleanup
make clean
# bye

Задание 1 (sort, uniq)

В файле /home/export/samba/public/y14/term2/linux/pr10/short-dna.fasta лежат короткие последовательности ДНК в формате fasta. Гарантируется, что каждая последовательность имеет длину 10. Было замечено, что многие последовательности в файле повторяются. Задача: рассчитать, сколько раз встретилась каждая последовательность. Отсортировать таблицу в порядке убывания числа встреч.

Начало таблицы:

     12 AGCGCGCATA
     11 GCAACCACTA
      9 TGACACGTAA

Сохраните команду, которая решает это задание, в файл ~/term2/linux/credits/<Фамилия>_pr10_short-dna.sh

(*) Дополнительное задание. Рассчитайте, сколько раз встретились числа в полученной вами таблице (для этого допишите ещё пару команд в конвеер). Подсказки: отобрать первую колонку можно с помощью awk (в гугле написано, как именно). После этого uniq -c и sort -h. Начало таблицы, которая должна получиться:

    255 1
    122 2
     65 3

Сохраните команду, которая решает это задание, в файл ~/term2/linux/credits/<Фамилия>_pr10_short-dna2.sh

(*) Дополнительное задание. Постройте в Excel график по данным из таблицы, которую вы только что получили. По OX отложено число раз, сколько встретилась последовательность, а по оси OY отложено число последовательностей, которые встретились такое число раз. Изучите график и предположите, по какому закону распределены числа встреч последовательностей. Ответ на почту bnagaev@gmail.com

Задание 2 (grep)

В файле /home/export/samba/public/y14/term2/linux/pr10/pgp.txt находится список email-адресов людей, сделавших вклад в развитие ИТ. В файле /home/export/samba/public/y14/term2/linux/pr10/fbb.txt сохранен список логинов всех преподавателей, студентов и выпускников ФББ. Как-то раз я задался вопросом: сколько логинов из первого файла по случайным причинам совпали с логинами из второго файла.

Задача: найти все совпадения логинов из второго файла с логинами из первого файла. Должен полностью совпадать логин с логином, а не с именем и другими частями первого файла. Можно считать, что логин в первом файле начинается после "<" и заканчивается перед "@". Список логинов отсортировать и избавиться от дубликатов.

У меня получилось примерно 50 уникальных логинов.

Ограничение на время работы скрипта: не больше 10 секунд.

Сохраните команду, которая решает это задание, в файл ~/term2/linux/credits/<Фамилия>_pr10_fbb-logins.sh

Подсказка по заданию: поиск совпадений разумно разбить на две подзадачи:

  1. получить из файла pgp.txt список логинов (подобный файлу fbb.txt)
  2. найти все вхождения строк из списка, полученного на шаге (1), в файле fbb.txt

Оба этих шага можно реализовать с помощью grep. См. упражнения.

(*) Дополнительное задание. Выберите из списка находок одного человека и разберитесь, какой вклад он сделал в развитие ИТ. Эссе сохраните в файл ~/term2/linux/credits/<Фамилия>_pr10_person.txt

Задание 3

Индивидуальное задание, которое вы получили на занятии в печатном виде.

Дополнительное задание 4 (shuf, head, циклы, wget/curl)

Последовательность белка можно получить из uniprot, загрузив содержимое URL http://www.ebi.ac.uk/Tools/dbfetch/dbfetch?db=UniProtKB&id=ID&format=fasta&style=raw

В этой строке надо на место ID подставить реальный идентификатор белка.

В файле /home/export/samba/public/y14/term2/linux/pr10/uniprot-ids.txt лежат случайные идентификаторы белков из uniprot.

Напишите скрипт, который:

Сохраните скрипт в файл ~/term2/linux/credits/<Фамилия>_pr10_shuf.sh

(*) Дополнительное задание. Вася запустил скрипт, который вы только что написали, 2 раза. С какой вероятностью он получил один и тот же файл дважды? (Считать, что shuf выдаёт все возможные перестановки с равной вероятностью.) Свои соображения и расчёты присылайте на bnagaev@gmail.com.

Дополнительное задание 5

Последовательность белка можно получить из uniprot, загрузив содержимое URL http://www.ebi.ac.uk/Tools/dbfetch/dbfetch?db=UniProtKB&id=ID&format=fasta&style=raw

В этой строке надо на место ID подставить реальный идентификатор белка.

В файле /home/export/samba/public/y14/term2/linux/pr10/uniprot-ids.txt лежат случайные идентификаторы белков из uniprot.

Напишите скрипт, который:

Сохраните скрипт в файл ~/term2/linux/credits/<Фамилия>_pr10_scores.sh

(*) Дополнительное задание. Что вы можете сказать о полученном результате? Равен ли максимальный score 0? Почему? Имеют ли полученные выравнивания биологический смысл? Был ли шанс при таком раскладе получить score в 10 раз больше? Опишите свои соображения в форме эссе и сохраните его в файл ~/term2/linux/credits/<Фамилия>_pr10_scores.txt.

Задание 6, самое главное

Выучите материал лекций по линуксу и будьте готовы к написанию контрольной 21 апреля, на которой вам нужно будет составить скрипт для решения похожей задачи. Задача будет включать знания и навыки по Unix с предыдущих занятий, задания по типу индивидуального задания, а также sort, grep и uniq.