Classification des séquences d'ADN sur la base de Milvus
Auteur : Mengjia Gu, ingénieur en données chez Zilliz, est titulaire d'un master en sciences de l'information de l'université McGill. Elle s'intéresse aux applications de l'intelligence artificielle et à la recherche de similarités dans les bases de données vectorielles. En tant que membre de la communauté du projet open-source Milvus, elle a fourni et amélioré diverses solutions, comme le système de recommandation et le modèle de classification des séquences d'ADN. Elle aime les défis et n'abandonne jamais !
La séquence d'ADN est un concept populaire tant dans la recherche universitaire que dans les applications pratiques, telles que la traçabilité des gènes, l'identification des espèces et le diagnostic des maladies. Alors que toutes les industries sont à la recherche d'une méthode de recherche plus intelligente et plus efficace, l'intelligence artificielle a attiré beaucoup d'attention, en particulier dans les domaines biologique et médical. De plus en plus de scientifiques et de chercheurs contribuent à l'apprentissage automatique et à l'apprentissage profond en bio-informatique. Pour rendre les résultats expérimentaux plus convaincants, une option courante consiste à augmenter la taille de l'échantillon. La collaboration avec le big data en génomique apporte également plus de possibilités de cas d'utilisation dans la réalité. Cependant, l'alignement traditionnel des séquences présente des limites qui le rendent inadapté aux données volumineuses. Afin de faire moins de compromis dans la réalité, la vectorisation est un bon choix pour un grand ensemble de données de séquences d'ADN.
La base de données vectorielles open source Milvus est adaptée aux données massives. Elle est capable de stocker des vecteurs de séquences d'acides nucléiques et d'effectuer des recherches très efficaces. Elle peut également contribuer à réduire les coûts de production ou de recherche. Le système de classification des séquences d'ADN basé sur Milvus ne prend que quelques millisecondes pour classer les gènes. En outre, il présente une précision supérieure à celle d'autres classificateurs courants dans le domaine de l'apprentissage automatique.
Un gène qui code l'information génétique est constitué d'une petite section de séquences d'ADN, qui se compose de 4 bases nucléotidiques [A, C, G, T]. Le génome humain compte environ 30 000 gènes, soit près de 3 milliards de paires de bases d'ADN, et chaque paire de bases a deux bases correspondantes. Pour permettre diverses utilisations, les séquences d'ADN peuvent être classées en plusieurs catégories. Afin de réduire le coût et de faciliter l'utilisation des données des longues séquences d'ADN, le k-mer est introduit dans le prétraitement des données. En même temps, il rend les données de séquences d'ADN plus semblables à du texte brut. En outre, les données vectorisées peuvent accélérer les calculs dans l'analyse des données ou l'apprentissage automatique.
1.png
k-mer
La méthode k-mer est couramment utilisée dans le prétraitement des séquences d'ADN. Elle extrait une petite section de longueur k à partir de chaque base de la séquence originale, convertissant ainsi une longue séquence de longueur s en (s-k+1) courtes séquences de longueur k. L'ajustement de la valeur de k permet d'améliorer les performances du modèle. Les listes de séquences courtes sont plus faciles à lire, à extraire et à vectoriser.
Vectorisation
Les séquences d'ADN sont vectorisées sous forme de texte. Une séquence transformée par k-mer devient une liste de séquences courtes, qui ressemble à une liste de mots individuels dans une phrase. Par conséquent, la plupart des modèles de traitement du langage naturel devraient également fonctionner pour les données relatives aux séquences d'ADN. Des méthodologies similaires peuvent être appliquées à la formation des modèles, à l'extraction des caractéristiques et à l'encodage. Chaque modèle ayant ses propres avantages et inconvénients, la sélection des modèles dépend des caractéristiques des données et de l'objectif de la recherche. Par exemple, CountVectorizer, un modèle de sac de mots, met en œuvre l'extraction de caractéristiques par le biais d'une simple tokenisation. Il ne fixe aucune limite à la longueur des données, mais le résultat obtenu est moins évident en termes de comparaison de similarité.
Milvus peut facilement gérer des données non structurées et rappeler les résultats les plus similaires parmi des trillions de vecteurs dans un délai moyen de quelques millisecondes. Sa recherche de similarité est basée sur l'algorithme de recherche ANN (Approximate Nearest Neighbor). Ces caractéristiques font de Milvus une excellente option pour gérer les vecteurs de séquences d'ADN et promouvoir ainsi le développement et les applications de la bio-informatique.
Voici une démonstration montrant comment construire un système de classification de séquences d'ADN avec Milvus. L'ensemble de données expérimentales comprend 3 organismes et 7 familles de gènes. Toutes les données sont converties en listes de séquences courtes par k-mers. Avec un modèle CountVectorizer pré-entraîné, le système encode ensuite les données de séquences en vecteurs. L'organigramme ci-dessous décrit la structure du système et les processus d'insertion et de recherche.
1.png
Essayez cette démo au camp d'entraînement Milvus.
Dans Milvus, le système crée une collection et insère les vecteurs correspondants de séquences d'ADN dans la collection (ou la partition si elle est activée). Lorsqu'il reçoit une requête, Milvus renvoie les distances entre le vecteur de la séquence d'ADN d'entrée et les résultats les plus similaires dans la base de données. La classe de la séquence d'entrée et la similarité entre les séquences d'ADN peuvent être déterminées par les distances entre les vecteurs dans les résultats.
# Insert vectors to Milvus collection (partition "human")
DNA_human = collection.insert([human_ids, human_vectors], partition_name='human')
# Search topK results (in partition "human") for test vectors
res = collection.search(test_vectors, "vector_field", search_params, limit=topK, partition_names=['human'])
for results in res:
res_ids = results.ids # primary keys of topK results
res_distances = results.distances # distances between topK results & search input
Classification des séquences d'ADNLa recherche des séquences d'ADN les plus similaires dans Milvus pourrait impliquer la famille de gènes d'un échantillon inconnu, ce qui permettrait d'en apprendre davantage sur sa fonctionnalité éventuelle. Si une séquence est classée comme GPCR, elle a probablement une influence sur les fonctions de l'organisme. Dans cette démonstration, Milvus a permis au système d'identifier les familles de gènes des séquences d'ADN humain recherchées.
3.png
4.png
Similitude génétique
La similarité moyenne des séquences d'ADN entre les organismes illustre la proximité de leurs génomes. La démo recherche dans les données humaines les séquences d'ADN les plus similaires à celles du chimpanzé et du chien respectivement. Elle calcule et compare ensuite les distances moyennes entre les produits intérieurs (0,97 pour le chimpanzé et 0,70 pour le chien), ce qui prouve que le chimpanzé partage plus de gènes similaires avec l'homme que le chien. Avec des données et une conception de système plus complexes, Milvus est en mesure de soutenir la recherche génétique à un niveau encore plus élevé.
search_params = {"metric_type": "IP", "params": {"nprobe": 20}}
Performances
La démo entraîne le modèle de classification avec 80 % des données de l'échantillon humain (3629 au total) et utilise le reste comme données de test. Elle compare les performances du modèle de classification des séquences d'ADN qui utilise Milvus avec celui qui est alimenté par Mysql et 5 classificateurs d'apprentissage automatique populaires. Le modèle basé sur Milvus surpasse ses homologues en termes de précision.
from sklearn.model_selection import train_test_split
X, y = human_sequence_kmers, human_labels
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
1.png
Avec le développement de la technologie du big data, la vectorisation des séquences d'ADN jouera un rôle plus important dans la recherche et la pratique génétiques. Combinées aux connaissances professionnelles en bioinformatique, les études connexes peuvent bénéficier davantage de l'implication de la vectorisation des séquences d'ADN. Milvus peut donc présenter de meilleurs résultats dans la pratique. En fonction des différents scénarios et des besoins des utilisateurs, la recherche de similarité et le calcul de distance alimentés par Milvus présentent un grand potentiel et de nombreuses possibilités.
- Étudier des séquences inconnues: Selon certains chercheurs, la vectorisation permet de compresser les données relatives aux séquences d'ADN. En même temps, l'étude de la structure, de la fonction et de l'évolution de séquences d'ADN inconnues demande moins d'efforts. Milvus peut stocker et récupérer un très grand nombre de vecteurs de séquences d'ADN sans perdre en précision.
- Adapter les appareils: Limitée par les algorithmes traditionnels d'alignement de séquences, la recherche de similarités peut à peine bénéficier de l'amélioration des appareils(CPU/GPU). Milvus, qui prend en charge à la fois le calcul CPU normal et l'accélération GPU, résout ce problème grâce à l'algorithme approximatif du plus proche voisin.
- Détecter les virus et retracer leurs origines: Les scientifiques ont comparé les séquences génomiques et rapporté que le virus COVID19, probablement d'origine chauve-souris, appartient au SARS-COV. Sur la base de cette conclusion, les chercheurs peuvent augmenter la taille de l'échantillon pour obtenir davantage de preuves et de modèles.
- Diagnostiquer des maladies: D'un point de vue clinique, les médecins pourraient comparer les séquences d'ADN entre les patients et les groupes sains afin d'identifier les gènes variants à l'origine des maladies. Il est possible d'extraire des caractéristiques et d'encoder ces données à l'aide d'algorithmes appropriés. Milvus est capable de renvoyer les distances entre les vecteurs, qui peuvent être liées aux données relatives aux maladies. Outre l'aide au diagnostic des maladies, cette application peut également inspirer l'étude des thérapies ciblées.
Milvus est un outil puissant capable d'alimenter une vaste gamme d'applications d'intelligence artificielle et de recherche de similarités vectorielles. Pour en savoir plus sur le projet, consultez les ressources suivantes :
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word