The computational analysis of post-translational modifications