Показать только оценку выравнивания ДНК в биопитоне

У меня есть данные о последовательности ДНК. Например,

X="ACGGGT"
Y="ACGGT"

Я хочу знать оценку выравнивания, поэтому я использовал функцию парного 2 биопитона. Например,

from Bio import pairwise2
from Bio.pairwise2 import format_alignment

alignments = pairwise2.align.globalxx(X, Y)
for a in alignments:
    print(format_alignment(*a))

Это успешно показало выравнивание ДНК, но мне нужна только оценка, как показано ниже. Есть ли способ показать только счет?

введите здесь описание изображения

Я использовал биопитон, но если есть лучший способ, буду признателен.


person Tom_Hanks    schedule 24.03.2019    source источник


Ответы (1)


Возьмите 3-й элемент каждого кортежа выравнивания (или для лучшего результата проанализируйте только аргумент score_only):

>>> from Bio import pairwise2
>>> X="ACGGGT"
>>> Y="ACGGT"
>>> alignments = pairwise2.align.globalxx(X, Y)
>>> [a[2] for a in alignments]
[5.0, 5.0, 5.0]
>>> pairwise2.align.globalxx(X, Y, score_only=True)
5.0

Также см. новый модуль Bio.Align, который может быть более производительным для многих вариантов использования. Если вам нужен только лучший результат, вы можете использовать aligner.score() в качестве комментариев Markus:

>>> from Bio import Align
>>> aligner = Align.PairwiseAligner()
>>> alignments = aligner.align(X,Y)
>>> [a.score for a in alignments]
[5.0, 5.0, 5.0]
>>> aligner.score(X, Y)
5.0

Если вам нужны только оценки, то отказ от создания полных выравниваний — это самый быстрый и эффективный способ использования памяти для обоих модулей.

person Chris_Rands    schedule 24.03.2019
comment
Для PairwiseAligner вместо aligner.align(X, Y) можно просто сделать aligner.score(X, Y). Обратите внимание, что вычисление только оценок (в pairwise2с score_only=True, в PairwiseAligner с score) происходит быстрее и экономит память. Поэтому вы всегда должны делать это, когда вас не интересует само выравнивание. - person Markus; 25.03.2019
comment
Во-первых, большое спасибо. Я протестировал два метода на двух генах: первый = 20803, второй = 30386. pairwise2 с score_only=True дает около 11 секунд, а aligner.score дает около 3 секунд, что почти в 4 раза быстрее. - person ibra; 27.11.2020