Pr 4 $\implies$¶

Вспомним дерево бактерий из предыдущих практикумов:

%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png

Перво-наперво разберёмся с предварительной индексацией файлов с протеомами. Работать будем вообще со всеми, что есть.

In [1]:
import os
from Bio import SeqIO
In [2]:
bacteria = ['ROSDO',
            'BRUSU',
            'RHIME',
            'AROAE',
            'BORPE',
            'POLAQ',
            'SHEDO']
files = [bac + '.fasta' for bac in bacteria]
files
Out[2]:
['ROSDO.fasta',
 'BRUSU.fasta',
 'RHIME.fasta',
 'AROAE.fasta',
 'BORPE.fasta',
 'POLAQ.fasta',
 'SHEDO.fasta']
In [23]:
for file in files:
    !makeblastdb -in Proteomes/{file} -dbtype 'prot'

Теперь запустим blastp.

In [4]:
for file in files:
    !blastp -query CLPX_ECOLI.fasta -db Proteomes/{file} -evalue 0.001 -outfmt '6 sseqid' -out founds/{file}
In [5]:
!ls founds
AROAE.fasta  BRUSU.fasta  RHIME.fasta  SHEDO.fasta
BORPE.fasta  POLAQ.fasta  ROSDO.fasta

Сделаем и расширенную версию выдачи:

In [20]:
for file in files:
    !blastp -query CLPX_ECOLI.fasta -db Proteomes/{file} -evalue 0.001 -outfmt '1 sseqid' -out verbose/{file}

Директория с файлами: ссылка.

In [14]:
for file in sorted(files):
    with open(f'founds/{file}') as findings:
        ids = [string.strip() for string in findings]
    
    for record in SeqIO.parse(f'Proteomes/{file}', 'fasta'):
        if record.id in ids:
            name = record.id.split('|')[-1]
            with open('ALL.fasta', 'a') as hom_file:
                print(f'>{name}', file=hom_file)
                print(record.seq, file=hom_file)

Построим дерево на сайте ngphylogeny с помощью связки MAFFT + FastMe. Вот, что получается: %D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-2.png

Содержание newick-файла с деревом:

((((((((CLPX_BORPE:0.234296,CLPX_AROAE:0.158153):0.041324,CLPX_POLAQ:0.178069):0.049644,CLPX_SHEDO:0.219561):0.038551,(CLPX_ROSDO:0.117901,(CLPX_RHIME:0.072066,CLPX_BRUSU:0.063392):0.103068):0.124501):0.459452,((HSLU_SHEDO:0.285123,(HSLU_BORPE:0.262777,HSLU_AROAE:0.264408):0.043376):0.051529,(HSLU_ROSDO:0.255409,(HSLU_RHIME:0.095385,HSLU_BRUSU:0.147146):0.155513):0.211976):0.763776):1.286935,(Q5P8Y1_AROAE:3.165035,(((RUVB_ROSDO:0.347527,RUVB_BRUSU:0.196149):2.620886,(((Q12QI8_SHEDO:0.332595,((Q167Z2_ROSDO:0.501193,(Q92M98_RHIME:0.125869,A0A0H3GCZ6_BRUSU:0.114982):0.134001):0.171295,((A4SXL5_POLAQ:0.260546,Q7VZ57_BORPE:0.169156):0.044903,Q5P1F9_AROAE:0.193069):0.182191):0.069661):0.823347,Q5P0U1_AROAE:1.230187):1.255327,A4T0L3_POLAQ:2.99381):1.617679):0.757264,A0A0H3G530_BRUSU:3.740644):0.336987):0.769224):1.844674,Q16C81_ROSDO:0.940896):0.408974,(A4SZP7_POLAQ:0.167904,Q5P202_AROAE:0.166231):0.2074,Q12N58_SHEDO:0.278446);

Приведём примеры гомологов и паралогов:

Гомологи:

HSLU_AROAE HSLU_RHIME
CLPX_ECOLI CLPX_SHEDO
RUVB_BRUSU RUVB_ROSDO

Паралоги:

Q92M98_RHIME CLPX_RHIME
CLPX_ECOLI FTSH_ECOLI
A4T0L3_POLAQ A4SXL5_POLAQ

Теперь покрасим в один цвет все ортологические группы, размер которых больше 3: %D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-4.png

А теперь посмотрим на дерево, в котором найденные ортологические группы схлопнуты: %D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-5.png

Красная клада - АТФ-зависимая Clp-протеаза - топология от дерева бактерий отличается: поменяны местами APOAE и POLAQ.

Синяя клада - HslU-субъединица АТФ-зависимой протеазы - топология такая же.

Оранжевая клада - цинковые металлопротеиназы - как с красной кладой: исходная топология получается, если поменять местами APOAE и POLAQ.