Задание 1. Программа подсчёта инделей
Назначение программы
Программа indels.py предназначена для анализа результатов глобального (needle) или локального (water) выравнивания двух последовательностей. Она подсчитывает количество инделей — непрерывных блоков гэпов (-) — в каждой из двух выровненных последовательностей и выводит суммарный результат.
Использование
python indels.py <файл с выравниванием>
Программа не требует дополнительного ввода от пользователя.
Исходный код
import sys
import re
def count_indels(seq):
count = 0
in_gap = False
for c in seq:
if c == '-':
if not in_gap:
count += 1
in_gap = True
else:
in_gap = False
return count
def parse_emboss_alignment(filename):
seqs = {}
with open(filename) as f:
for line in f:
# Пропускаем строки комментариев и пустые строки
if line.startswith('#') or line.startswith('/') or not line.strip():
continue
# Извлекаем название последовательности и её часть
match = re.match(r'^(\S+)\s+\d+\s+([A-Za-z-]+)\s+\d+', line)
if match:
name = match.group(1)
seq_part = match.group(2)
if name not in seqs:
seqs[name] = ''
seqs[name] += seq_part
names = list(seqs.keys())
if len(names) < 2:
raise ValueError("Не удалось найти две последовательности в файле")
return names[0], seqs[names[0]], names[1], seqs[names[1]]
if len(sys.argv) != 2:
print("Использование: python indels.py <файл_выравнивания>")
sys.exit(1)
name1, seq1, name2, seq2 = parse_emboss_alignment(sys.argv[1])
i1 = count_indels(seq1)
i2 = count_indels(seq2)
print(f"{name1} {i1}")
print(f"{name2} {i2}")
print(f"Total {i1 + i2}")
Краткое описание работы программы
- Парсинг файла — функция
parse_emboss_alignment()читает файл, игнорирует служебные строки (#,/) и с помощью регулярного выраженияr'^(\S+)\s+\d+\s+([A-Za-z-]+)\s+\d+'извлекает названия последовательностей и их фрагменты (буквы и символы-), собирая полные последовательности в словарь. - Подсчёт инделей — функция
count_indels()проходит по строке последовательности, считая каждый переход от символа (не гэпа) к гэпу как один индель. Несколько подряд идущих гэпов считаются как один индель. - Вывод результатов — программа печатает три строки:
- название первой последовательности и количество её инделей
- название второй последовательности и количество её инделей
Totalи сумму инделей обеих последовательностей
Задание 2. Глобальное и локальное выравнивание гомологичных белков
Глобальное выравнивание (needle)
| Protein Name | ID 1 | ID 2 | Score | % Identity | % Similarity | Gaps | Indels |
|---|---|---|---|---|---|---|---|
| Chaperone protein DnaK | DNAK_ECOLI | DNAK_BACSU | 1767.0 | 55.4% | 72.9% | 33 | 5 |
| DNA gyrase subunit A | GYRA_ECOLI | GYRA_BACSU | 2227.0 | 50.7% | 68.6% | 72 | 7 |
| DNA-directed RNA polymerase subunit beta | RPOB_ECOLI | RPOB_BACSU | 3034.0 | 42.5% | 55.5% | 433 | 17 |
Локальное выравнивание (water)
| Protein Name | ID 1 | ID 2 | Score | % Identity | % Similarity | Gaps | Indels | Coverage 1 | Coverage 2 |
|---|---|---|---|---|---|---|---|---|---|
| Chaperone protein DnaK | DNAK_ECOLI | DNAK_BACSU | 1767.0 | 55.8% | 73.3% | 30 | 4 | 99.7% | 99.2% |
| DNA gyrase subunit A | GYRA_ECOLI | GYRA_BACSU | 2228.0 | 52.6% | 71.3% | 38 | 4 | 96.1% | 98.9% |
| DNA-directed RNA polymerase subunit beta | RPOB_ECOLI | RPOB_BACSU | 3039.0 | 43.7% | 57.0% | 396 | 14 | 99.5% | 96.5% |
Задание 4. Комментарии к выравниваниям
Введение
В рамках выполнения задания были проведены глобальное (программа needle) и локальное (программа water) выравнивания трёх пар гомологичных белков: DNAK, GYRA и RPOB из Escherichia coli (штамм K12) и Bacillus subtilis (штамм 168).
1. Пара DNAK (шаперон DnaK)
2. Пара GYRA (ДНК-гираза, субъединица A)
3. Пара RPOB (РНК-полимераза, субъединица beta)
Все три пары белков гомологичны, но по-разному:
Общие выводы
Задание 5. Результат применения программ выравнивания к неродственным белкам
Выбор пары: DNAK_ECOLI (шаперон DnaK) и GYRA_BACSU (ДНК-гираза). Эти белки выполняют разные функции и не имеют эволюционного родства.
Результаты глобального выравнивания (needle)
| Score | % Identity | % Similarity | Gaps |
|---|---|---|---|
| 93.5 | 15.5% | 28.5% | 419/939 (44.6%) |
Результаты локального выравнивания (water)
| Score | % Identity | % Similarity | Gaps |
|---|---|---|---|
| 108.0 | 18.6% | 34.9% | 206/565 (36.5%) |
Сравнение с гомологичными парами
| Параметр | Гомологичная пара (DNAK) | Неродственная пара (DNAK vs GYRA) |
|---|---|---|
| Score (needle) | 1767.0 | 93.5 |
| % Identity (needle) | 55.4% | 15.5% |
| Gaps (needle) | 33 (5.1%) | 419 (44.6%) |
Выводы
- Score зависит от длины белков, поэтому абсолютные пороги (Score > 500) ненадёжны.
- Для оценки гомологии лучше смотреть на процент идентичности и долю гэпов
- Локальное выравнивание может быть обманчивым: находит один похожий участок даже у неродственных белков и выдаёт неинформативные результаты, поэтому первостепенно выполнение глобального выравнивания.
Задание 6. Множественное выравнивание
(а) Мнемоника и информация о белках
Мнемоника: DNAK
Рекомендованное полное имя белка из ECOLI: Chaperone protein DnaK (Heat shock protein 70)
Количество найденных белков: по запросу id:DNAK* AND reviewed:true найдена 801 запись. Уникальных белков с разными суффиксами организмов – около 25.
Выбранные 5 белков (помимо DNAK_ECOLI и DNAK_BACSU):
| № | ID | Организм |
|---|---|---|
| 1 | DNAK_MYCTU | Mycobacterium tuberculosis |
| 2 | DNAK_AQUAE | Aquifex aeolicus |
| 3 | DNAK_BORBU | Borrelia burgdorferi |
| 4 | DNAK_HELPY | Helicobacter pylori |
| 5 | DNAK_STAA8 | Staphylococcus aureus |
(б) Как делалось выравнивание
Семь последовательностей в формате FASTA были объединены в один файл. Множественное выравнивание выполнено с помощью программы Muscle из командной строки:
muscle -align dnaK_7.fasta -output alignment_pr9.fa
Полученное выравнивание в формате FASTA загружено в программу Jalview через File → Input Alignment → From File. В Jalview закрыты все лишние окна, применена раскраска колонок по проценту идентичности (Colour → Percentage Identity).
(в) Гиперссылка на файл с проектом Jalview
Ссылка на файл выравнивания alignment_pr9.fa
(г) Комментарии к выравниванию
По моему мнению, белок DNAK_BACSU выровнялся хуже всего (наибольшее количество отклоняющихся от консенсусных позиций в колонках, гэпы). Белок DnaK (Hsp70) является высококонсервативным, поэтому даже эволюционно далёкие представители имеют много консервативных позиций.
Все ли они гомологичны? Да, все представленные белки являются гомологичными. Они принадлежат к одному семейству белков теплового шока 70 кДа.
Характеристики выравнивания
- Наиболее консервативные участки: 152 -184 (3 не абсолютно консервативные колонки), 366-408 (5 не абсолютно консервативных колонок)
- Наименее консервативный участок: 79 - 102
Практикум 9. Выравнивание последовательностей | Мисюрёва Анастасия | 2026