Kodomo

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

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

1. Скачивание протеомов

Предлагаю использовать REST API UniProt и скачать нужные данные на kodomo из командной строки.

Чтобы скачать белковые записи, принадлежащие одному протеому, вам нужно:

  1. придумать поисковый запрос к UniProtKB, который выдаст все необходимые белки;
  2. преобразовать запрос в URL, который позволит получить записи в нужном формате;
  3. написать правильную команду в 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

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

Если все описанное выше совсем сложно, или никак не удается справиться с каким-то из этапов, то можно скачать небходимые записи к себе на компьютер стандартными средствами на сайте UniProt, потом перекинуть полученный файл на kodomo, там его сжать с помощью команды gzip и переименовать нужным образом. Для зачета задания этого будет достаточно.

2. Работа со сжатыми файлами .gz

Конечно, можно распаковать файл с помощью gunzip, как вы это делали в прошлом семестре. Но протеомы все-таки занимают довольно много места на диске, поэтому я рекомендую так не поступать. Тем более, что работать с файлами .gz совсем не сложно, и при чтении на распаковку данных практически не тратится дополнительного времени.

Для работы с .gz в командной строке рекомендую использовать команду zcat. Это полный аналог cat, но эта программа умеет в процессе распаковывать данные в файлах. Примеры:

   1 zcat some-file.gz | wc -l
   2 zcat some-file.gz | grep 'что-нибудь' | sort -u
   3 # можно и так (сейчас не понадобится)
   4 zcat some-file1.gz some-file2.gz some-file3.gz | grep -c 'что-нибудь'

Еще есть 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 input_file = gzip.open("file.txt.gz", "rt")
   4 # input_file имеет все те же методы, что и объекты файлов,
   5 # получаемые с помощью обычного open
   6 for line in input_file:
   7     print(line.strip())
   8 input_file.close()

3. Сравнение протеомов

Например, можно подсчитать, сколько раз в каждом из протеомов встречаются разные ключевые слова, и например, сравнить списки 10 самых частых ключевых слов между протеомами. В этом вам могут помочь grep, tr, cut, sort, uniq. Аккуратно выполнить это задание не так просто, как кажется на первый взгляд. Может быть проще написать скрипт на python.

Еще можно проверить, правда ли, что первая аминокислота в каждом белке – метионин. Если в одном из протеомов найдутся белки, последовательность которых не начинается с М, можно попробовать выяснить, с чем это связано. Для получения первой аминокислоты из каждого белка проще всего использовать seqret и правильный USA. В USA в именах файлов и идентификаторах записей можно использовать * и ?, которые значат то же самое, что в bash. Только не забудьте экранировать эти символы, чтобы их не перехватил bash.

Аналогично сравнению частот ключевых слов можно сравнить частоты ключей в таблице локальных особенностей. Хотя в данном случае один ключ может встречаться много раз в одной записи, поэтому общие частоты будут не очень показательными. Можете попробовать придумать, как можно подсчитать количество белков в протеоме, в аннотации которых встречается какой-нибудь интересующий вас ключ. Это вполне можно сделать с помощью знакомых вам команд bash, правда не совсем тривиально. Советую обратить внимание на опции -A и -B у grep, может быть они будут полезны.

Как насчет подсчета количества статей из PubMed, на которые ссылаются все белки в протеоме? Может ли это число что-то сказать о качестве аннотации протеома?

Еще в EMBOSS есть полезная программа wordcount, с помощью которой легко можно оценить частоты разных аминокислот в протеоме. Еще полезными могут оказаться infoseq, inforesidue, pepstats.

Но лучше будет, если вы придумаете, что сравнивать, самостоятельно.

2022/2/pr8/hints (последним исправлял пользователь is_rusinov 2023-03-28 15:37:47)