Пояснения к заданиям практикума 8
1. Поиск протеома, соответствующего геномной сборке
Во многих базах NCBI, аналогично UniProtKB, у записей есть уникальные идентификаторы и коды доступа. Однако, чаще всего их функции дублируются, так как записи не претерпевают объединения и/или разделения. Поэтому с определенного момента от идентификаторов в NCBI решили отказаться, или, по крайней мере, спрятали их от пользователей. Идентификаторами геномных сборок ниже называются их коды доступа.
Идентификаторы геномных сборок в INSDC (GenBank/ENA/DDBJ) имеют вид GCA_xxxxxxxxx.x, а в RefSeq – GCF_xxxxxxxxx.x.
Идентификатор своей сборки вы можете узнать из таблицы локальных особенностей генома бактерии/археи. Его же выдавал скрипт из первого пункта заданий практикума 5 прошлого семестра.
Получить соответствующий идентификатор INSDC можно на сайте NCBI с помощью поиска по базе Datasets Genome. Введите в окошко поиска идентификатор сборки без указания версии – т.е. без той части идентификатора, которая отделена точкой. Это нужно, чтобы вы нашли последнюю версию сборки, если она вдруг изменилась за полгода. В результате поиска вы должны оказаться на странице сборки, нужный вам идентификатор сборки INSDC указан в поле "Submitted GenBank assembly". Используйте его для поиска по UniProt Proteomes, поиск производите только по соответствующему полю (оно называется "Genome Assembly" в конструкторе поисковых запросов).
Если в 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 одинарными кавычками):
В отчете надо указать полную команду, которую вы использовали для скачивания протеома.
3. Работа со сжатыми файлами .gz
Можно было бы распаковать файл с помощью gunzip, как вы это делали в прошлом семестре. Но протеомы все-таки занимают довольно много места на диске, поэтому в этом практикуме требуется так не поступать. Тем более, что работать с файлами .gz совсем не сложно, и при чтении на распаковку данных практически не тратится дополнительного времени.
Для работы с .gz в командной строке можно использовать команду zcat. Программа работает аналогично cat, но читает сжатые файлы, распаковывая их "на лету". Поэтому zcat, в отличие от cat, имеет смысл использовать в качестве первой команды конвейера в случае работы с одиночным файлом. Примеры:
Еще есть zgrep, который является аналогом grep для файлов .gz, можете использовать его.
Для просмотра сжатых текстовых файлов есть программа zless – аналог less.
Если вы хотите читать файлы .gz из python, то это тоже делается без проблем. В стандартной библиотеке есть модуть gzip, который позволяет читать и писать сжатые в формате gzip файлы ровно так же, как обычные файлы.
3. Как посчитать записи, а не строки
Чтобы в файле формата swiss подсчитать не сами интересующие строки, а записи, которые эти строки содержат, можно написать довольно тривиальный скрипт на python.
Но можно обойтись и средствами grep, правда придется немного поломать голову. Дальше приведены подсказки. Не читайте их сразу, попробуйте догадаться самостоятельно.
Подсказка 1. Одного grep будет недостаточно, потребуется составить конвейер из нескольких grep (достаточно трех).
Подсказка 2. Формат swiss предполагает наличие разделителей записей (//). Хотя было бы достаточно и полей, которые встречаются в каждой записи ровно один раз (ID, PE, SQ).
Подсказка 3. Программа grep умеет отбирать не только строки по шаблону, но и соседние с ними, см. описание опций в разделе "Context Line Control").
Подсказка 4. Предлагаемая последовательность действий:
- Отобрать не только интересующие строки, но и метки границ всех записей.
- Исключить границы записей, которые не содержат интересующих строк (здесь и понадобится контроль контекста).
- Посчитать оставшиеся границы записей.
Аналогичным образом выполняется упражнение со звездочкой.
4. Где в записи искать указания на ферментативную активность
Существует классификация ферментов по катализируемой реакции, в рамках которой белку присваивают один или несколько кодов EC. Такие коды могут быть указаны в поле DE, а в расширенном поиске на сайте UniProt есть возможность поиска по EC (можно использовать *, если интересует наличие, а не конкретное значение).
Поле СС разделено на тематические блоки, один из которых называется 'CATALYTIC ACTIVITY'. Не думаю, что этот блок может появляться в записях про белки, которые каталитической активностью не обладают.
В UniProt нет общего ключевого слова (поле KW), которое бы присваивалось каждому белку с предсказанной ферментативной активностью. Однако есть, например, ключевое слово 'Hydrolase' (KW-0378).
Названия ферментов, как правило, оканчиваются на 'ase'. Хотя это правило, конечно, не строгое. Кроме того, ферментативную активность могут проявлять белки, основная функция которых не связана с катализом. Например, тубулин является ГТФазой, но в названии белка это никак не отражается.
Все перечисленное можно использовать для поиска. В запросах на сайте можно комбинировать условия для нескольких полей. Хотя бы один из запросов должен выдавать более-менее адекватный результат. В протеоме, включающем тысячи белков, никак не может быть всего около сотни ферментов.
Один из запросов на сайте UniProt можно заменить на конвейер bash или скрипт на python. Но результатом конвейера/скрипта должно быть количество записей! См. предыдущее пояснение к заданию 3.

2024
2023
2022
2021
2020
2019
2018
2017