Вспомним дерево бактерий из предыдущих практикумов:
Перво-наперво разберёмся с предварительной индексацией файлов с протеомами. Работать будем вообще со всеми, что есть.
import os
from Bio import SeqIO
bacteria = ['ROSDO',
'BRUSU',
'RHIME',
'AROAE',
'BORPE',
'POLAQ',
'SHEDO']
files = [bac + '.fasta' for bac in bacteria]
files
['ROSDO.fasta', 'BRUSU.fasta', 'RHIME.fasta', 'AROAE.fasta', 'BORPE.fasta', 'POLAQ.fasta', 'SHEDO.fasta']
for file in files:
!makeblastdb -in Proteomes/{file} -dbtype 'prot'
Теперь запустим blastp
.
for file in files:
!blastp -query CLPX_ECOLI.fasta -db Proteomes/{file} -evalue 0.001 -outfmt '6 sseqid' -out founds/{file}
!ls founds
AROAE.fasta BRUSU.fasta RHIME.fasta SHEDO.fasta BORPE.fasta POLAQ.fasta ROSDO.fasta
Сделаем и расширенную версию выдачи:
for file in files:
!blastp -query CLPX_ECOLI.fasta -db Proteomes/{file} -evalue 0.001 -outfmt '1 sseqid' -out verbose/{file}
Директория с файлами: ссылка.
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
. Вот, что получается:
Содержание 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:
А теперь посмотрим на дерево, в котором найденные ортологические группы схлопнуты:
Красная клада - АТФ-зависимая Clp-протеаза - топология от дерева бактерий отличается: поменяны местами APOAE и POLAQ.
Синяя клада - HslU-субъединица АТФ-зависимой протеазы - топология такая же.
Оранжевая клада - цинковые металлопротеиназы - как с красной кладой: исходная топология получается, если поменять местами APOAE и POLAQ.