Source: https://biology.polytechnique.fr/biocomputing/courses/Alignements_M2.pdf