1. Поиск протеома, соответствующего геномной сборке
Идентификатор своей сборки вы можете узнать из таблицы локальных особенностей генома бактерии/археи. Его же выдавал скрипт из первого пункта заданий практикума 5 прошлого семестра.
Получить соответствующий идентификатор INSDC можно на сайте NCBI с помощью поиска по базе Datasets Genome. Введите в окошко поиска идентификатор сборки RefSeq без указания версии сборки – т.е. без той части идентификатора, которая отделена точкой. Это нужно, чтобы вы нашли последнюю версию сборки, если она вдруг изменилась за полгода. В результате поиска вы должны оказаться на странице сборки, нужный вам идентификатор сборки INSDC указан в поле "Submitted GenBank assembly". Используйте его для поиска по UniProt Proteomes, поиск производите только по соответствующему полю.
Если в UniProt нет протеома, который соответствует последней версии сборки из INSDC, попробуйте предыдущую версию (если версия сборки не первая), может быть сборка обновилась недавно и изменения еще не попали в UniProt. Некоторые сборки INSDC вообще не попадают в UniProt Proteomes по той или иной причине. Если поиск по UniProt Proteomes не выдает результатов, то так и напишите в отчете.
2. Скачивание протеомов
Используйте REST API UniProt для скачивания нужных данных на kodomo из командной строки.
Чтобы скачать белковые записи, принадлежащие одному протеому, вам нужно:
- придумать поисковый запрос к UniProtKB, который выдаст все необходимые белки;
- преобразовать запрос в URL, который позволит получить записи в нужном формате;
- написать правильную команду в bash, которая позволит скачать данные по заданному URL и сохранить их в файл с требуемым именем.
Пункт 1 не должен вызвать затруднений, поищите нужное поле в конструкторе расширенных поисковых запросов.
Пункт 2 сложнее. Как составить нужный URL и описанно в документации к API. В вашем случае URL будет иметь следующий вид:
https://rest.uniprot.org/uniprotkb/stream?compressed=true&format=txt&query=QUERY
Вместо QUERY надо подставить поисковый запрос, подробнее здесь. Обратите внимание на указание формата и наличие сжатия. Именно это позволит вам загрузить полные белковые записи в формате swiss, сжатые с помощью gzip. Формат gzip – это, кажется, все еще самый распространенный способ сжатия файлов в Unix-like системах и интернете. И уж точно самый известный. Он позволяет в среднем в несколько раз уменьшить размер произвольных текстовых файлов. При этом полученный файл можно распаковывать при чтении "на лету", почти без снижения скорости чтения.
В пункте 3 вы можете использовать либо уже знакомый по прошлому семестру wget, либо curl. Большой разницы нет (обратите внимание на экранирование URL одинарными кавычками):
1 wget 'URL' -O AC.swiss.gz
2 # или
3 curl 'URL' > AC.swiss.gz
В отчете надо указать полную команду, которую вы использовали для скачивания протеома.
3. Где в записи искать указания на ферментативную активность
Существует классификация ферментов по катализируемой реакции, в рамках которой белку присваивают один или несколько кодов EC. Такие коды могут быть указаны в поле DE, а в расширенном поиске на сайте UniProt есть возможность поиска по EC (можно использовать *, если интересует наличие, а не конкретное значение).
Поле СС разделено на тематические блоки, один из которых называется 'CATALYTIC ACTIVITY'. Не думаю, что этот блок может появляться в записях про белки, которые каталитической активностью не обладают.
В UniProt нет общего ключевого слова (поле KW), которое бы присваивалось каждому белку с предсказанной ферментативной активностью. Однако есть, например, ключевое слово 'Hydrolase' (KW-0378).
Названия ферментов, как правило, оканчиваются на 'ase'. Хотя это правило, конечно, не строгое. Кроме того, ферментативную активность могут проявлять белки, основная функция которых не связана с катализом. Например, тубулин является ГТФазой, но в названии белка это никак не отражается.
Все перечисленное можно использовать как для поиска на сайте, так и для поиска по тексту записей в командной строке. Запрос на сайте и конвейер не обязаны использовать информацию из одинаковых полей. Но постарайтесь придумать методы оценки, которые не будут выдавать совсем уж неадекватные результаты. Например, никак не может быть у бактерии/археи всего около сотни ферментов в протеоме.
3 и 4. Работа со сжатыми файлами .gz
Можно было бы распаковать файл с помощью gunzip, как вы это делали в прошлом семестре. Но протеомы все-таки занимают довольно много места на диске, поэтому в этом практикуме требуется так не поступать. Тем более, что работать с файлами .gz совсем не сложно, и при чтении на распаковку данных практически не тратится дополнительного времени.
Для работы с .gz в командной строке можно использовать команду zcat. Программа работает аналогично cat, но предварительно распаковывает файлы. Поэтому zcat, в отличие от cat, имеет смысл использовать в качестве первой команды конвейера в случае работы с одиночным файлом. Примеры:
1 zcat some-file.gz | wc -l
2 zcat some-file.gz | grep 'что-нибудь' | sort -u
3 # можно использовать аналогично cat, но сейчас не понадобится
4 zcat some-file1.gz some-file2.gz some-file3.gz | wc -l
Еще есть zgrep, который является аналогом grep для файлов .gz, можете использовать его.
1 # Т.е. вместо
2 zcat some-file.gz | grep 'что-нибудь' | sort -u
3 # можно писать
4 zgrep 'что-нибудь' some-file.gz | sort -u
Для просмотра сжатых текстовых файлов есть программа zless – аналог less.
1 # можно так
2 zcat some-file.gz | less -S
3 # но удобнее так
4 zless -S some-file.gz
Если вы хотите читать файлы .gz из питона, то это тоже делается без проблем. В стандартной библиотеке есть модуть gzip, который позволяет читать и писать файла, сжатые с помощью gzip, ровно так же, как обычные файлы.
1 import gzip
2
3 # обратите внимание на режим rt
4 input_file = gzip.open("file.txt.gz", "rt")
5 # input_file имеет все те же методы, что и объекты файлов,
6 # получаемые с помощью обычного open
7 for line in input_file:
8 print(line.strip())
9 input_file.close()
4. Предлагаемые характеристики протеома для изучения
Если вам все это не интересно, или совсем не хватает времени, то можете просто проверить, является ли первая аминокислота каждого белка в протеоме метионином. Если в одном из протеомов найдутся белки, последовательность которых не начинается с М, интересно выяснить, с чем это связано. Для получения первой аминокислоты каждого белка из протеома проще всего использовать seqret и правильный USA, но можно обойтись и конвейером из grep и cut. Но придумайте команду самостоятельно! Всегда готов отвечать на вопросы. А за скопированные команды буду наказывать.
Еще можно подсчитать, сколько раз в протеоме встречаются разные ключевые слова. Аккуратно выполнить это задание не так просто, как кажется на первый взгляд. Насколько сложно может быть устроено это поле можете увидеть в записи D6YSU1. Вряд ли получится обойтись средствами командной строки, проще написать скрипт на Python. Только лишь чисел не будет достаточно. Попытайтесь сделать по ним какие-то выводы о протеоме, которые и приведите в отчете.
Аналогично сравнению частот ключевых слов можно сравнить частоты ключей в таблице локальных особенностей. Хотя в данном случае один ключ может встречаться много раз в одной записи, поэтому общие частоты не будут показательными. Попробуйте придумать, как можно подсчитать количество белков в протеоме, в аннотации которых встречается какой-нибудь интересующий вас ключ. Это вполне можно сделать с помощью знакомых вам команд bash, правда не совсем тривиально. Советую обратить внимание на опции -A и -B у grep, может быть они будут полезны.
Как насчет оценки изученности протеома, путем подсчета количества статей из PubMed, на которые есть ссылки в белковых записях? На сколько это хорошая оценка?
В EMBOSS есть полезная программа wordcount, с помощью которой легко можно оценить частоты разных аминокислот в протеоме. Еще полезной может оказаться infoseq.
Лучше придумайте что-нибудь свое. Особенно будет интересно, если оцениваемая характеристика будет специфичной именно для выбранного вами организма, не зря же вы про него обзор в прошлом семестре писали. Например, если известно, что бактерия является патогеном, то можно поискать белки, которые ей могут в этом помогать.