Я пытаюсь получить количество вставок и зазоров, содержащихся в последовательности последовательностей, относительно ссылки, с которой они были выровнены; поэтому все последовательности имеют одинаковую длину.Как получить количество несвязанных вставок и пробелов в последовательности в Python?
Например
>reference
AGCAGGCAAGGCAA--GGAA-CCA
>sequence1
AAAA---AAAGCAATTGGAA-CCA
>sequence2
AGCAGGCAAAACAA--GGAAACCA
В этом примере sequence1 имеет две вставки (два Т) и трех пробелов. Последний пробел не следует учитывать, поскольку он появляется как в ссылке, так и в последовательности1. Последовательность2 имеет одну вставку (A перед последним триплетом) и отсутствие пробелов. (Опять же, пробелы разделяются ссылкой и не должны вводить счет.). Существует также 3 полиморфизма в последовательностях 1 и 2 в последовательности 2.
Мой текущий скрипт может дать оценку различий, но не счет «соответствующих пробелов и вставок», как описано выше. Например
records = list(SeqIO.parse(file("sequences.fasta"),"fasta"))
reference = records[0] #reference is the first sequence in the file
del records[0]
for record in records:
gaps = record.seq.count("-") - reference.seq.count("-")
basesinreference = reference.seq.count("A") + reference.seq.count("C") + reference.seq.count("G") + reference.seq.count("T")
basesinsequence = record.seq.count("A") + record.seq.count("C") + record.seq.count("G") + record.seq.count("T")
print(record.id)
print(gaps)
print(basesinsequence - basesinreference)
#Gives
sequence1
1 #Which means sequence 1 has one more Gap than the reference
-1 #Which means sequence 1 has one base less than the reference
sequence2
-1 #Which means sequence 2 has one Gap less than the reference
1 #Which means sequence 2 has one more base than the reference
Я являюсь своего рода Python newy и все еще изучаю инструменты этого языка. Есть ли способ достичь этого? Я думаю о разделении последовательностей и итеративном сравнении одной позиции за раз и подсчета разницы, но я не уверен, возможно ли это на Python (не говоря уже о том, что это было бы ужасно медленно.)
Th опция отлично работает для пробелов, но не обнаруживает полиморфизм. Я обновил последовательности в моем примере, чтобы включить 3 и 2 полиморфизма, соответственно. – j91
@ j91 Вы должны были упомянуть, что вы хотели проверить полиморфизм раньше ... И вы должны объяснить, что это означает в терминах последовательностей, не все, кто читает ваш вопрос, - это биолог. Но я добавлю обновленную версию своего кода. –