Salut!
Je m'aventure gentiment vers le codage de modèles d'évolution de l'ADN (après pas mal de temps passé à coder tout ce qu'il y a autour c'est pas trop tôt me direz vous lol).
L'idée générale c'est de définir quelques concepts de base:
- les éléments de bases sont les quatres bases de la molecule d'ADN: adenine (A), cytosine (C), guanine (G), and thymine (T).
- Une séquence d'ADN est un motif répété de ces bases qui a une longueur n
- Si on laisse passer un temps t, un motif est soumis à des probabilités de modifications ( de A -> T, de T <- A etc)
- L'alphabet ADN (ATGC) peut etre traduit vers un second alphabet (ARN) en remplaçant le T (thymine) par un U (uracile).
- Puis après il y a des correspondances qui traduisent des triplets d'ARN (eg AUU) vers des acides aminés (eg la leucine bien connue de nos potes de musculation adeptes de shakers protéinés).
- Tout ça est blindé de redondances (les traductions ne sont pas uniques)
L'idée (en commençant très simple) c'est de prendre une séquence de lettres et de les muter aléatoirement au cours du temps. Fastoche.
Plus tard faudra commencer à recombiner les séquences en découpant/recollant des morceaux de taille variable.
Quels sont les pièges évidents qui vous viennent à l'esprit et que vous éviteriez et les outils évidents de C++20 pour rester sympa du coté des performances ?
Je pense à:
- utiliser des enums plutôt que des strings/char
- bien sur éviter de copier la séquence tout partout
- definir constexpr certains objets connus à la compilation (comme les matrices de transitions A <-> T <-> G <-> C qui sont connues empiriquement).
- c'est pour les futurs découpages que je suis moins confortable. On veut j'imagine éviter de litteralement tout en petits bouts en mode std::string::substr et std::string::replace ?
Plus généralement, ça vous évoque une ressource évidente à utiliser pour ce genre de problème?
Partager