
def write_structure(sequence, structure):
'''Создает представление сворачивания цепочки'''
dot_bracket = ["." for _ in range(len(sequence))] for s in structure:
dot_bracket[min(s)] = "(" dot_bracket[max(s)] = ")"
return "".join(dot_bracket)
def nussinov_algorithm(sequence, min_loop_length = 1):
'''Алгоритм Нуссиновой'''
size = len(sequence)
mat = initialize(size, sequence, min_loop_length) structure = []
traceback(0,size-1, structure, mat, sequence, min_loop_length)
return (structure, mat, write_structure(sequence, structure))
def get_adj_mat_by_sequence(sequence):
'''Создание матрицы смежности по графа по переданной последовательности'''
num_seq = [i+'('+str(n)+')' for n, i in enumerate(sequence)] result = nussinov_algorithm(sequence)
print('Заполненная матрица алгоритма Нуссиновой:\n', pd.DataFrame(result[1], columns=num_seq, index=num_seq)
,'\n\nПердставление свернутой цепочки: ', result[2]
,'\nМеста соединения цепочки: ', *result[0])
size = len(sequence)
adj_mat = [[1 if row-col == 1 or col-row == 1 else 0 for col in range(size)] for row in range(size)]
print('\nМатрица смежности исходного графа (невзвешенный неориентированный граф вида цепочка):', pd.DataFrame(adj_mat, columns=num_seq, index=num_seq), sep='\n')
view_graph(adj_mat, num_seq)
for i in result[0]: adj_mat[i[0]][i[1]] = adj_mat[i[1]][i[0]]
= 9
print('\nМатрица смежности полученного графа (невзвешенный неориентированный граф вида цепочка):', pd.DataFrame(adj_mat, columns=num_seq, index=num_seq), sep='\n')
view_graph(adj_mat, num_seq) return adj_mat
def main(): |
|
||
# rna |
= get_RNA_chain(10) |
|
|
# |
rna |
= 'CUGGGCAACUUCACA' |
# тестовый пример |
# |
rna |
= input('Задайте последовательность цепочки РНК: ') |
|
rna = |
'CAUGCUCUUU' |
|
print('rna: ', rna) get_adj_mat_by_sequence(rna) return 1
if __name__ == "__main__": main()
21