Практикум 9
- Глобальное парное выравнивание гомологичных белков
- Локальное парное выравнивание гомологичных белков
- Результат применения программ выравнивания к неродственным белкам
- Множественное выравнивание белков и импорт в Jalview
- Параметры программ needle и water
- Подсчёт инделей
Ссылка на блокнот Google colab, в котором был проведён поиск белков с совпадающими мнемониками функции.
Скрипт для подсчёта количества инсерций и делеций.
Protein name | ID1 | ID2 | Score | Identity | Similarity | Gaps | Indels |
---|---|---|---|---|---|---|---|
Chemotaxis protein CheW | CHEW_ECOLI | CHEW_BACSU | 197.5 | 26.1% | 46.7% | 37 | 5 |
Acyl-coenzyme A dehydrogenase* | FADE_ECOLI | FADE_BACSU | 261.5 | 15.5% | 26.5% | 454 | 32 |
LexA repressor | LEXA_ECOLI | LEXA_BACSU | 296.5 | 32.7% | 51.2% | 15 | 5 |
Скрипт для подсчёта покрытия выравнивания.
Protein name | ID1 | ID2 | Score | Identity | Similarity | Gaps | Indels | Coverage 1 | Coverage 2 |
---|---|---|---|---|---|---|---|---|---|
Chemotaxis protein CheW | CHEW_ECOLI | CHEW_BACSU | 199.5 | 28.6% | 51.6% | 24 | 3 | 91.6% | 92.9% |
Acyl-coenzyme A dehydrogenase | FADE_ECOLI | FADE_BACSU | 278.5 | 24.3% | 42.3% | 107 | 26 | 60.4% | 79.0% |
LexA repressor | LEXA_ECOLI | LEXA_BACSU | 300.5 | 33.5% | 52.4% | 13 | 4 | 97.5% | 98.5% |
Пусть этими белками будут CYSM_ECOLI (Cysteine synthase B) и DNAA_ECOLI (Chromosomal replication initiator protein DnaA).
Скрипты для подсчёта инделей и покрытия выравнивания.
Alignment algorythm | Score | % Identity | % Similarity | Gaps | Indels | Coverage 1 | Coverage 2 |
---|---|---|---|---|---|---|---|
needle | 26.5 | 7.9% | 14.5% | 420 | 14 | - | - |
water | 42.5 | 17.5% | 39.4% | 31 | 4 | 35.3 | 29.1 |
В процессе эволюции белок может терять или приобретать значительные по длине фрагменты, часто целые домены, и что-то подобное можно наблюдать на белках FADE_ECOLI и FADE_BACSU: последний из них меньше, и из-за этого их coverage при локальном выравнивании довольно сильно различается, а identity и similarity при глобальном выравнивании заметно меньше таковых при локальном.
Ситуация с неродственными белками чем-то на это похожа: identity и similarity для локального выравнивания сильно выше, чем для глобального, так как алгоритм выбирает небольшие кусочки из каждого белка, которые случайно оказались похожи. Из-за этого coverage очень низок для обоих белков.
При этом score для обоих алгоритмов очень мал, намного меньше даже, чем score явно не очень консервативного белка FADE.
Мнемонике LEXA для E. coli соответствует название LexA repressor. Этот фермент является репрессором ряда белков, участвующих в SOS репарации
По запросу (id:LEXA_*) AND (reviewed:true) на UniProt находится 446 результатов. Из них были выбраны белки для 5 организмов разной степени родственности.
Название организма | ID белка |
---|---|
Bacillus cereus (strain AH820) | LEXA_BACC0 |
Bacillus anthracis | LEXA_BACAN |
Geobacillus kaustophilus | LEXA_GEOKA |
Geobacillus thermodenitrificans | LEXA_GEOTN |
Mycobacterium bovis | LEXA_MYCBP |
Затем был создан файл, в котором были перечислены 5 USA:
sw:lexa_bacc0
sw:lexa_bacan
sw:lexa_geoka
sw:lexa_geotn
sw:lexa_mycbp
Затем последовательности соответствующих белков были записаны в файл lexa.fasta
.
seqret @lexa.txt lexa.fasta
Здесь символ @
говорит, что нужно прочитать файл lexa.txt
и каждую строку использовать как отдельный
USA.
После этого файл с последовательностями белков был передан алгоритму muscle.
По полученному выравниванию видно, что белки явно гомологичные. Также видно, что пары белков LEXA_BACC0, LEXA_BACAN и LEXA_GEOKA, LEXA_GEOTN более похожи между собой: часто если есть замена одной аминокислоты на другую в одном из них, такая же замена есть и в другом, так как это белки разных видов одного рода. В то же время LEXA_MYCBP, как и можно было ожидать, сильно отличается от всех остальных, в том числе имеет два крупных инделя с 1 по 23 и со 108 по 116 аминокислотные остатки.
Есть участки с высокой консервативностью, например с 45 по 64 аминокислотные остатки они либо не различаются вовсе, либо заменились только у Mycobacterium bovis, и только на сходные по физическим свойствам (к примеру, в 51 столбце Ile и Val, а в 63 столбце Thr и Ser), и участки с низкой консервативностью, например с 96 по 104 аминокислотные остатки, где эти остатки могут различаться даже у близких видов и иметь совершенно разные физические свойства (например, 102 остаток - Val, Thr или Lys).
Алгоритмы needle и water, запущенные без опции -auto
, запрашивают два параметра: штраф за открытие инделя (Gap opening
penalty) и штраф за его продолжение (Gap extension penalty). Изменение выравнивания при различных параметрах рассмотрено на примере
CHEW_ECOLI и CHEW_BACSU.
Алгоритм needle
При увеличении штрафа за открытие инделя алгоритм "старается" избавиться инделей. При этом уменьшается как количество инделей, так и доля гэпов в выравнивании. При уменьшении штрафа за продолжение инделя появляется много маленьких инделей (доля гэпов возрастает не так резко, как количество инделей).
Увеличение штрафа за продолжение инделя снижает долю гэпов в выравнивании, почти не влияя на их количество. Если одновременно с этим снизить штраф за начало гэпа (например, здесь штраф за открытие инделя 1.0, а за его продолжение - 10.0), влияние на долю гэпов слабее, так как появляется много инделей из 1 гэпа, хотя всё равно есть это снижение (здесь по сравнениию со значением штрафов 1.0 и 0.5 соответственно).
При уменьшении штрафа за продолжение инделя происходит что-то довольно странное, не могу это никак объяснить.
Gap opening penalty | Gap extension penalty | Indels number | Identity, % | Similarity, % | Gaps, % |
---|---|---|---|---|---|
10.0 | 0.5 | 5 | 26.1 | 46.7 | 20.6 |
20.0 | 0.5 | 3 | 25.4 | 49.7 | 8.9 |
1.0 | 0.5 | 47 | 32.7 | 50.3 | 37.7 |
10.0 | 10.0 | 5 | 26.5 | 50.6 | 10.0 |
10.0 | 0.01 | 10 | 28.4 | 49.4 | 16.5 |
1.0 | 10.0 | 46 | 29.2 | 51.6 | 31.8 |
Алгоритм water
Количество инделей в выравнивании алгоритмом water похожим образом меняется в зависимости от параметров.
При увеличении штрафа за открытие инделя или его продолжение, coverage уменьшается, видимо, алгорим, выбирает как более оптимельное выравнивание то, в которое не включены индели, находящиеся по краям, и то, что находится дальше них. При уменьшении штрафа за начало инделя – наоборот, coverage возрастает, а штраф за его продолжение практически ни на что не влияет.
Увеличение штрафа за продолжение инделя при низком штрафе за его начало снова слабее влияет, чем при высоком.
Gap opening penalty | Gap extension penalty | Indels number | Identity | Similarity | Gaps | Coverage 1 | Coverage 2 |
---|---|---|---|---|---|---|---|
10.0 | 0.5 | 3 | 28.6 | 51.6 | 14.9 | 91.6 | 92.9 |
20.0 | 0.5 | 0 | 27.9 | 55.7 | 0.0 | 83.8 | 89.7 |
1.0 | 0.5 | 46 | 33.2 | 51.0 | 36.7 | 98.2 | 100.0 |
10.0 | 10.0 | 2 | 29.1 | 56.7 | 1.4 | 83.8 | 89.7 |
10.0 | 0.01 | 3 | 28.6 | 51.6 | 14.9 | 91.6 | 92.9 |
1.0 | 10.0 | 43 | 32.8 | 53.2 | 30.6 | 95.2 | 100.0 |
#!/usr/bin/env python3
path = input()
f = open(path)
lines = []
for line in f:
if line[0].isalpha():
lines.append(line.split())
name1 = lines[0][0]
name2 = lines[1][0]
seq1 = ''.join([line[2] for line in lines if line[0] == name1])
seq2 = ''.join([line[2] for line in lines if line[0] == name2])
is_indel = False
indel_cnt1 = 0
for c in seq1:
if c == '-' and not is_indel:
is_indel = True
indel_cnt1 += 1
elif c != '-' and is_indel:
is_indel = False
is_indel = False
indel_cnt2 = 0
for c in seq2:
if c == '-' and not is_indel:
is_indel = True
indel_cnt2 += 1
elif c != '-' and is_indel:
is_indel = False
print(indel_cnt1)
print(indel_cnt2)
print('Total', indel_cnt1 + indel_cnt2)