1. A method of identifying related positions in a set of biomolecular sequences, comprising: receiving a plurality of sequences of biomolecules, each sequence comprising monomers and corresponding to one or more species; aligning the sequences to generate aligned sequences; mapping the aligned sequences to an evolutionary tree, such that each leaf node of the tree corresponds to one or more of the sequences; selecting a position in the aligned sequences; counting evolutionary events in the selected position, such that each node of the evolutionary tree corresponds to an evolutionary event count for the selected position, the evolutionary event count of each node being the number of times that the identity of a monomer at that position changes in the children of that node; pruning the evolutionary tree; generating a vector for the selected position, the vector comprising the evolutionary event counts of all leaf nodes in the pruned tree; repeating the selecting a position, the counting evolutionary events in the selected position, the pruning the evolutionary tree, and the generating a vector for the selected position, for at least one other selected position; clustering the generated vectors, thereby identifying related positions in the plurality of sequences; wherein at least one of the aligning the sequences, the mapping the aligned sequences, the selecting a position, the counting evolutionary events, the pruning the evolutionary tree, and the clustering the generated vectors is performed by a computing device.