Kodomo

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

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

Указания к практикуму 9

Как написать программу на Python, берущую данные из командной строки?

Если в начале скрипта на Python поместить строку "from sys import argv", то при запуске программы образуется список с именем argv, куда попадут все аргументы командной строки, включая само название файла со скриптом. Например, вот такая программа:

from sys import argv
a = int(argv[1])
b = int(argv[2])
print(a + b)

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

python sum.py 15 28
43

(если имя файла с программой — "sum.py"). Если же аргументов будет меньше двух или хотя бы один из них не интерпретируется как целое число, будет выдана ошибка (советую попробовать все варианты).

В вашем случае вам нужно будет открыть на чтение файл с именем argv[1], предполагая, что при запуске он будет приведён после имени программы и будет содержать выдачу needle или water.

Как получить списки идентификаторов Swiss-Prot с заданной мнемоникой организма?

Два варианта:

infoseq 'sw:*_human' -only -name -nohead -out human.txt

Как определить пары с совпадающими мнемониками функции?

Несколько вариантов:

cut -f 1 -d '_' ecoli.txt human.txt | sort | uniq -d > common_mnems.txt

Прежде чем использовать, почитайте man! Особенно man uniq.

Как определить рекомендуемое полное имя белка?

В полной записи Swiss-Prot ищите поле DE. Можно использовать конвейер из entret в grep:

entret sw:eno_bacsu -filter | grep '^DE'

Там ищите слова "RecName: Full=", название белка — после знака равенства. Например, если вы видите в поле DE строку:
DE   RecName: Full=GSX1 {ECO:0000303|PubMed:7768864};
то пишите в качестве названия белка "GSX1".

Как запустить needle и water с параметрами по умолчанию?

В программах EMBOSS опция -auto задаёт значения по умолчанию для всех параметров, для которых это возможно. Имейте в виду, что у выходного файла тоже есть имя по умолчанию, но как раз его лучше задать явно. Например, если ваша пара — ENO_ECOLI и ENO_BACSU, то можно использовать строку вида

needle sw:eno_ecoli sw:eno_bacsu eno.needle -auto

выравнивание появится в файле с именем eno.needle.

Как определить характеристики выравнивания?

В выдаче needle и water (если не задавать другой формат) имеются следующие характеристики: число и процент колонок с идентичными буквами, число и процент колонок с близкими буквами (т.е. теми, для которых значение матрицы замен положительно), число и процент гэпов, вес выравнивания. Число инделей посчитаете своей программой; не забывайте, что один индель может присутствовать в двух "блоках" выравнивания (то есть начинаться на одной строке, продолжаться на другой).

Чтобы посчитать процент покрытия локальным выравниванием для каждой последовательности, нужно определить длину участка, попавшего в выравнивание (по координатам начала и конца) и разделить эту длину на полную длину последовательности. Полные длины есть в выдаче needle (в конце выравнивания), кроме того, длину выдаёт программа infoseq. Покрытием считаем именно долю всего участка, а не только тех букв, для которых нашлось сопоставление в другой последовательности.

Как заставить программу needle выдать выравнивание в fasta-формате?

Добавить параметр -aformat fasta.

Как построить множественное выравнивание?

Есть много способов сделать это, ниже описаны три.

Первый — на kodomo программой muscle. Пусть у вас есть идентификаторы записей в Swiss-Prot, например ENO_BACSU, ENO_ECOLI, ENO_MYCTU, ENO_HAEIN. Создайте списочный файл (скажем, eno.txt) со строками:

sw:eno_bacsu
sw:eno_ecoli
sw:eno_myctu
sw:eno_haein

Затем создайте файл в fasta-формате:

seqret @eno.txt eno.fasta

После этого запустите muscle:

muscle -in eno.fasta -out eno_alignment.fasta

Второй способ. Запустите Jalview. В меню File выберите Fetch sequences. Отметьте Uniprot и нажмите OK. В меню слева выберите Entry name, в окошко справа внесите ID белков, разделённых точкой с запятой ";". Дождитесь появления списка находок. Отметьте НЕУСТАРЕВШИЕ находки (у них "нормальные" поля Protein names и Gene names, без ссылок на другие записи) и нажмите OK. Если всё нормально, появится окошко "Retreived from Uniprot" с последовательностями белков. Теперь надо их выровнять, для этого в меню Web service выберите Alignment и там — любую программу "with Defaults", например "Muscle with Defaults". Через некоторое время появится окошко с выравниванием. Можно "скрестить" этот способ с предыдущим: последовательности добыть seqret'ом, потом невыровнеными импортировать в Jalview и из Jalview запустить выравнивание.

Третий способ. На сайте Uniprot внесите в окно поиска идентификаторы, разделённые словом "or", например:
ENO_BACSU or ENO_ECOLI or ENO_MYCTU or ENO_HAEIN
и запустите поиск (то же самое можно сделать без "or" через ID mapping, разберитесь сами). Отметьте галочками все правильные находки и нажмите кнопку Align. Когда появится выравнивание, нажмите кнопку Download (сразу над словом "Alignment"). Выберите формат FASTA, отметьте Uncompressed и сохраните файл.

2023/2/pr9/hints (последним исправлял пользователь sas 2024-04-12 14:00:44)