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 }