sequence-algorithms/figures/part1/comparison_matrix_repetitio...

70 lines
1.4 KiB
Lua
Raw Permalink Normal View History

2024-03-12 13:15:22 +01:00
function comparison_matrix(seq)
matrix = {}
for i=1,#seq do
matrix[i] = {}
for j=1,#seq do
if seq[i] == seq[j] then
matrix[i][j] = 1
else
matrix[i][j] = 0
end
end
end
return matrix
end
function split_char(seq)
t = {}
seq:gsub(".",function(c) table.insert(t,c) end)
return t
end
function repr_matrix(matrix)
repr = ""
for i=1,#matrix do
for j=1,#matrix do
repr = repr .. matrix[i][j] .. " "
end
repr = repr .. "\n"
end
return repr
end
function comparison_matrix_tabular(matrix, seq1, seq2)
seq2 = seq2 or seq1
n=#seq1
m=#seq2
repr = [[\begin{tabular}{]] .. string.rep("c", n+1) .. "} \n"
repr = repr .. " "
for i=1,n do
repr = repr .. "& " .. seq1[i] .. " "
end
repr = repr .. "\\\\ \n "
for j=1,m do
repr = repr .. seq2[j] .. " "
for i=1,n do
repr = repr .. "& " .. matrix[i][j] .. " "
end
repr = repr .. " \\\\ \n "
end
repr = repr .. [[\end{tabular}]]
return repr
end
function main()
seq = split_char("ACGUUACGUUGUU")
matrix = comparison_matrix(seq)
print(comparison_matrix_tabular(matrix, seq))
end
function repr_comparison_matrix(seq)
seq = split_char(seq)
matrix = comparison_matrix(seq)
return comparison_matrix_tabular(matrix, seq)
end
main()
return { comparison_matrix=comparison_matrix, comparison_matrix_tabular, repr_comparison_matrix=repr_comparison_matrix }