Учебная страница курса биоинформатики,
год поступления 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
Подсказка по заданию: поиск совпадений разумно разбить на две подзадачи:
- получить из файла pgp.txt список логинов (подобный файлу fbb.txt)
- найти все вхождения строк из списка, полученного на шаге (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.
Напишите скрипт, который:
- отбирает 5 случайных идентификаторов из этого списка
- скачивает последовательности, соответствующие отобранным идентификаторам, и кладёт их в файл shuf.fasta, расположенный в текущей папке
Сохраните скрипт в файл ~/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.
Напишите скрипт, который:
- скачивает их все и кладёт в файлы с именами вида ID.fasta
- попарно выравнивает с помощью needle. Наберите команду man needle, чтобы разобраться, как прописывать два входных файла, выходной файл и штрафы за геп (оставьте умолчательные значения gapopen=10 gapextend=0.5). Результаты сохраняйте в файлы с именами вида ID1_ID2.needle.
- находит максимальный score, который получился в результате попарных выравниваний. Разберитесь, где в выходном файле находится score и как его "выдрать" из файла. Когда получите файл, в котором будут только Score, подумайте, как получить из такого файла максимальный score, используя известные вам утилиты.
- печатает фразу: "Proteins ID1 and ID2 are aligned with maximum score X", в которой ID1, ID2 и X заменены на актуальные значения.
Сохраните скрипт в файл ~/term2/linux/credits/<Фамилия>_pr10_scores.sh
(*) Дополнительное задание. Что вы можете сказать о полученном результате? Равен ли максимальный score 0? Почему? Имеют ли полученные выравнивания биологический смысл? Был ли шанс при таком раскладе получить score в 10 раз больше? Опишите свои соображения в форме эссе и сохраните его в файл ~/term2/linux/credits/<Фамилия>_pr10_scores.txt.
Задание 6, самое главное
Выучите материал лекций по линуксу и будьте готовы к написанию контрольной 21 апреля, на которой вам нужно будет составить скрипт для решения похожей задачи. Задача будет включать знания и навыки по Unix с предыдущих занятий, задания по типу индивидуального задания, а также sort, grep и uniq.