function [ALIGN inds] = GenomeAlignments(IN_GENOMES, DIST_MAT) % GenomeAlignments % This will align all of the protein segments in the genome structure % and return a cell-array. Each cell is the alignment of one % protein. If the protein is missing then the distance is NaN. % [tree inds] = MakeTree(DIST_MAT); ALIGN = malign(tree, inds); function align=malign(tree, inds) seqs = arrayfun(@(x)(x.Sequence), IN_GENOMES(inds), 'uniformoutput', false); align = multialign(seqs, tree); end function [tree_obj inds]=MakeTree(dist_mat) % MakeTree % Takes a distance matrix and returns a tree object and the indicies % to the rows that are in the tree. % inds = find(~all(isnan(dist_mat)|isinf(dist_mat)|dist_mat==0)); dvec = squareform(dist_mat(inds, inds)); dvec(dvec <= 0) = rand(nnz(dvec <= 0),1)*min(dvec(dvec>0)); tree_obj = seqlinkage(dvec); end end