#pragma css /css/2022.css <<BI>> === 1. Скачивание протеомов === Предлагаю использовать [[https://www.uniprot.org/help/api|REST API]] !UniProt и скачать нужные данные на kodomo из командной строки. Чтобы скачать белковые записи, принадлежащие одному протеому, вам нужно: 1. придумать поисковый запрос к UniProtKB, который выдаст все необходимые белки; 1. преобразовать запрос в URL, который позволит получить записи в нужном формате; 1. написать правильную команду в bash, которая позволит скачать данные по заданному URL и сохранить их в файл с требуемым именем. '''Пункт 1''' не должен вызвать затруднений, поищите нужное поле в конструкторе расширенных поисковых запросов. '''Пункт 2''' самый сложный. Как составить нужный URL и описанно в документации к API. В вашем случае URL будет иметь следующий вид: {{{ https://rest.uniprot.org/uniprotkb/stream?compressed=true&format=txt&query=QUERY }}} Вместо QUERY надо подставить поисковый запрос, подробнее [[https://www.uniprot.org/help/api_queries|здесь]]. Обратите внимание на указание формата и наличие сжатия. Именно это позволит вам загрузить полные белковые записи в формате swiss, сжатые с помощью gzip. Формат gzip -- это, кажется, все еще самый распространенный способ сжатия файлов в Unix-like системах и интернете. И уж точно самый известный. Он позволяет в среднем в несколько раз уменьшить размер произвольных текстовых файлов. При этом полученный файл можно распаковывать при чтении "на лету", почти без снижения скорости чтения. В '''пункте 3''' вы можете использовать либо уже знаковый по прошлому семестру `wget`, либо `curl`. Большой разницы нет (обратите внимание на экранирование URL одинарными кавычками): {{{#!highlight bash wget 'URL' -O AC.swiss.gz # или curl 'URL' > AC.swiss.gz }}} В отчете надо будет указать полные команды, которые вы использовали для скачивания протеомов. {{{#!wiki note green Если все описанное выше совсем сложно, или никак не удается справиться с каким-то из этапов, то можно скачать небходимые записи к себе на компьютер стандартными средствами на сайте !UniProt, потом перекинуть полученный файл на kodomo, там его сжать с помощью команды `gzip` и переименовать нужным образом. Для зачета задания этого будет достаточно. }}} === 2. Работа со сжатыми файлами .gz === Конечно, можно распаковать файл с помощью `gunzip`, как вы это делали в прошлом семестре. Но протеомы все-таки занимают довольно много места на диске, поэтому я рекомендую так не поступать. Тем более, что работать с файлами .gz совсем не сложно, и при чтении на распаковку данных практически не тратится дополнительного времени. Для работы с .gz в командной строке рекомендую использовать команду `zcat`. Это полный аналог `cat`, но эта программа умеет в процессе распаковывать данные в файлах. Примеры: {{{#!highlight bash zcat some-file.gz | wc -l zcat some-file.gz | grep 'что-нибудь' | sort -u # можно и так (сейчас не понадобится) zcat some-file1.gz some-file2.gz some-file3.gz | grep -c 'что-нибудь' }}} Еще есть `zgrep`, который является аналогом `grep` для файлов .gz, можете использовать его. {{{#!highlight bash # Т.е. вместо zcat some-file.gz | grep 'что-нибудь' | sort -u # можно писать zgrep 'что-нибудь' some-file.gz | sort -u }}} Для просмотра сжатых текстовых файлов есть программа `zless` -- аналог `less`. {{{#!highlight bash # можно так zcat some-file.gz | less -S # но удобнее так zless -S some-file.gz }}} Если вы хотите читать файлы .gz из питона, то это тоже делается без проблем. В стандартной библиотеке есть модуть gzip, который позволяет читать и писать файла, сжатые с помощью gzip, ровно так же, как обычные файлы. {{{#!highlight python3 import gzip input_file = gzip.open("file.txt.gz", "rt") # input_file имеет все те же методы, что и объекты файлов, # получаемые с помощью обычного open for line in input_file: print(line.strip()) 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`. Но лучше будет, если вы придумаете, что сравнивать, самостоятельно.