Сейчас я реализую вариант с затравкой, начальные значения также предоставляются функции, в которой пробелы удаляются и сравниваются с последовательностями, чтобы убедиться, что начальные числа являются префиксами последовательностей, подлежащих выравниванию. Затем выравнивание начинается после окончания совпадения начального числа.
Принято ли включать оценки совпадения начальных чисел в общий показатель выравнивания, поскольку мои выходные данные почти всегда говорят, что начальное выравнивание имеет более низкий балл, чем простое, что, как я полагаю, вызвано отсутствием показателя выравнивания начального числа в общем показателе выравнивания.
Будьте благодарны за любые указания и улучшения, если я допустил какую-то ошибку в своем понимании. выше
Код: Выделить всё
def seeded_simple_align(sequences,scoring, seed, gap=-1):
score=scoring
#Removing gaps from seed sequences
prefixes=()
for seq in seed:
seq=re.sub('-', '',seq)
prefixes=prefixes + (seq,)
#Checking the prefixes match the beginning of sequences.
if prefixes[0] != sequences[0][0:len(prefixes[0])] or prefixes[1] != sequences[1][0:len(prefixes[1])]:
raise ValueError('Seeds are not prefixes of corresponding sequences')
#Checking seeds are the same length
if len(seed[0]) != len(seed[1]):
raise ValueError('Seeds have different lengths')
#Finding length of prefixes to remove n amount from sequences
start_pos=len(prefixes[0])
#Removing prefixes from sequences to begin alignment
align=()
for seqs in sequences:
seqs=seqs[start_pos:]
align=align + (seqs,)
#Running simple_align on unaligned sequences to get alignment from gap
result=simple_align(align, scoring, gap)
#Find alignment score of seeds
seed_score=0
for i in range(0,len(seed[0])):
if seed[0][i] == '-' and seed[1][i] == '-':
seed_score+=gap
elif seed[0][i] == '-' or seed[1][i] == '-':
seed_score+=gap
else:
seed_score+=score.match(seed[0][i],seed[1][i])
final_result=seed[0]+result[0], seed[1]+result[1], (result[2]+seed_score)
return final_result
scorer=Scoring('BLOSUM80')
seqs=('ATCCGTACGTTAGCGTACGAT','ATCATGTACTTAAGCGGACGAT')
seeds=('ATC-','ATC-')
t6=seeded_simple_align(seqs,scorer,seeds)
print(t6)
Подробнее здесь: https://stackoverflow.com/questions/798 ... algorithms
Мобильная версия