Бактерии из предыдущего практикума подверглись анализу таксономии по NCBI Taxonomy.
Название | Мнемоника | Таксономия |
---|---|---|
Bifidobacterium longum | BIFLO | Bacteria; Terrabacteria group; Actinobacteria; Actinomycetia; Bifidobacteriales; Bifidobacteriaceae; Bifidobacterium |
Clavibacter michiganensis | CLAMS | Bacteria; Terrabacteria group; Actinobacteria; Actinomycetia; Micrococcales; Microbacteriaceae; Clavibacter |
Corynebacterium diphtheriae | CORDI | Bacteria; Terrabacteria group; Actinobacteria; Actinomycetia; Corynebacteriales; Corynebacteriaceae; Corynebacterium |
Leifsonia xyli | LEIXX | Bacteria; Terrabacteria group; Actinobacteria; Actinomycetia; Micrococcales; Microbacteriaceae; Leifsonia |
Nocardioides sp. | NOCSJ | Bacteria; Terrabacteria group; Actinobacteria; Actinomycetia; Propionibacteriales; Nocardioidaceae; Nocardioides |
Rhodococcus jostii | RHOJR | Bacteria; Terrabacteria group; Actinobacteria; Actinomycetia; Corynebacteriales; Nocardiaceae; Rhodococcus |
Streptomyces avermitilis | STRAW | Bacteria; Terrabacteria group; Actinobacteria; Actinomycetia; Streptomycetales; Streptomycetaceae; Streptomyces |
Thermobifida fusca | THEFY | Bacteria; Terrabacteria group; Actinobacteria; Actinomycetia; Streptosporangiales; Nocardiopsaceae; Thermobifida |
Для построения дерева нужна скобочная модель в формате newick, а для этого нужно посмотреть какая бактерия кому родственник по данным NCBI. Для решения этой задачи был написан мини-скрипт, по результатам работы скрипта достаточно удобно писать скобочную модель. Чем меньше чиселка внутри листа, тем ближе бактерии друг к другу. Собственно, само число описывает количество отличающихся таксонов для двух бактерий.
import itertools as it
bac = \
{
'BIFLO':'Bacteria; Terrabacteria group; Actinobacteria; Actinomycetia; Bifidobacteriales; Bifidobacteriaceae; Bifidobacterium'.split('; '),
'CLAMS':'Bacteria; Terrabacteria group; Actinobacteria; Actinomycetia; Micrococcales; Microbacteriaceae; Clavibacter'.split('; '),
'CORDI':'Bacteria; Terrabacteria group; Actinobacteria; Actinomycetia; Corynebacteriales; Corynebacteriaceae; Corynebacterium'.split('; '),
'LEIXX':'Bacteria; Terrabacteria group; Actinobacteria; Actinomycetia; Micrococcales; Microbacteriaceae; Leifsonia'.split('; '),
'NOCSJ':'Bacteria; Terrabacteria group; Actinobacteria; Actinomycetia; Propionibacteriales; Nocardioidaceae; Nocardioides'.split('; '),
'RHOJR':'Bacteria; Terrabacteria group; Actinobacteria; Actinomycetia; Corynebacteriales; Nocardiaceae; Rhodococcus'.split('; '),
'STRAW':'Bacteria; Terrabacteria group; Actinobacteria; Actinomycetia; Streptomycetales; Streptomycetaceae; Streptomyces'.split('; '),
'THEFY':'Bacteria; Terrabacteria group; Actinobacteria; Actinomycetia; Streptosporangiales; Nocardiopsaceae; Thermobifida'.split('; ')
}
comb = list(map(list, it.combinations(bac.keys(), 2)))
num = [len(set(bac[x[0]] + bac[x[1]])) for x in comb]
st = [i - min(num) + 1 for i in num]
list(zip(comb, st))
[(['BIFLO', 'CLAMS'], 3), (['BIFLO', 'CORDI'], 3), (['BIFLO', 'LEIXX'], 3), (['BIFLO', 'NOCSJ'], 3), (['BIFLO', 'RHOJR'], 3), (['BIFLO', 'STRAW'], 3), (['BIFLO', 'THEFY'], 3), (['CLAMS', 'CORDI'], 3), (['CLAMS', 'LEIXX'], 1), (['CLAMS', 'NOCSJ'], 3), (['CLAMS', 'RHOJR'], 3), (['CLAMS', 'STRAW'], 3), (['CLAMS', 'THEFY'], 3), (['CORDI', 'LEIXX'], 3), (['CORDI', 'NOCSJ'], 3), (['CORDI', 'RHOJR'], 2), (['CORDI', 'STRAW'], 3), (['CORDI', 'THEFY'], 3), (['LEIXX', 'NOCSJ'], 3), (['LEIXX', 'RHOJR'], 3), (['LEIXX', 'STRAW'], 3), (['LEIXX', 'THEFY'], 3), (['NOCSJ', 'RHOJR'], 3), (['NOCSJ', 'STRAW'], 3), (['NOCSJ', 'THEFY'], 3), (['RHOJR', 'STRAW'], 3), (['RHOJR', 'THEFY'], 3), (['STRAW', 'THEFY'], 3)]
Скобочная модель имеет вид: ((CLAMS, LEIXX), (CORDI, RHOJR), BIFLO, NOCSJ, STRAW, THEFY);
from Bio import Phylo
from io import StringIO
tree = Phylo.read(StringIO('((CLAMS, LEIXX), (CORDI, RHOJR), BIFLO, NOCSJ, STRAW, THEFY);'), 'newick')
Phylo.draw_ascii(tree)
___________________________________ CLAMS __________________________________| | |___________________________________ LEIXX | | ___________________________________ CORDI |__________________________________| | |___________________________________ RHOJR _| |__________________________________ BIFLO | |__________________________________ NOCSJ | |__________________________________ STRAW | |__________________________________ THEFY
Результат построения дерева в Python выдал неукорененное дерево, поэтому скобочная модель была загружена в MEGA, которая, в свою очередь, выдала укорененное дерево:
{CLAMS, LEIXX} vs {CORDI, RHOJR, BIFLO, NOCSJ, STRAW, THEFY} - Microbacteriaceae
Судя по картинке из MEGA, такая нетривиальная ветвь только одна. Однако картинка из питона и NCBI Taxonomy говорят, что есть еще одна нетривиальная ветвь:
{CORDI, RHOJR} vs {CLAMS, LEIXX, BIFLO, NOCSJ, STRAW, THEFY} - Corynebacteriales
Малое количество нетривиальных ветвей, которые выделяют таксоны свидетельствуют о том, что некоторые бактерии достаточно далеки друг от друга по таксономии.