Иногда в Генбанке/Генпепте встречаются идентичные последовательности, чаще всего происходящие от одного и того же вида, но разных штаммов. Т.е. если я поищу "бактериальная хитинсинтаза", то 624-аа белок из Dickeya didantii появится трижды. Есть даже ссылка "идентичные белки".
Есть ли какой-нибудь фильтр, который я могу использовать, чтобы получить только одну последовательность из каждой группы идентичных? Я имею в виду, кроме разбора загруженного файла на моем собственном компьютере.
Я не уверен, есть ли способ в GenBank, но UniProt предлагает UniRef , где вы можете кластеризовать избыточные последовательности или указать более низкое отсечение (например, 90% идентичности ).
Я написал небольшой скрипт для удаления одинаковых последовательностей из фаста, чтобы получить то, что мне нужно. Чтобы распечатать список удаленных последовательностей, раскомментируйте строку 22.
#! /usr/bin/python3
# Removes identical sequences from fasta file
import sys
from Bio import SeqIO
sequences={}
#This is where sequences will be stored
#likely calling str(seq.seq) on every test will be slower
with open(sys.argv[1], 'r') as fasta:
parser=SeqIO.parse(fasta,'fasta')
for seq in parser:
sequences[seq.id]=str(seq.seq)
l=list(sequences.keys())
for j in range(0,len(l)-1,1):
try:
s=sequences[l[j]]
for k in range(j+1,len(l)-1,1):
if sequences[l[k]]==sequences[l[j]]:
del sequences[l[k]]
except KeyError:
pass
#print(l[j],file=sys.stderr)
for j in sequences.keys():
print('>',j,'\n',sequences[j])
WYSIWYG
тердон
тердон
WYSIWYG