Classification de séquences ADN basée sur Milvus
Auteur : Mengjia Gu, ingénieure data chez Zilliz, est diplômée de l’Université McGill avec un master en sciences de l’information. Ses centres d’intérêt incluent les applications d’IA et la recherche de similarité avec des 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 un système de recommandation et un modèle de classification de séquences d’ADN. Elle aime les défis et n’abandonne jamais !
Introduction
La séquence d’ADN est un concept populaire à la fois dans la recherche universitaire et les applications pratiques, telles que la traçabilité génétique, l’identification des espèces et le diagnostic des maladies. Alors que toutes les industries aspirent à une méthode de recherche plus intelligente et efficace, l’intelligence artificielle a suscité beaucoup d’attention, en particulier dans les domaines biologique et médical. De plus en plus de scientifiques et de chercheurs contribuent au machine learning et au deep learning 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 davantage de possibilités de cas d’utilisation dans la réalité. Cependant, l’alignement traditionnel de séquences présente des limites, qui le rendent inadapté aux grands volumes de données. Afin de faire moins de compromis dans la réalité, la vectorisation est un bon choix pour un grand jeu de données de séquences d’ADN.
La base de données vectorielle 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 une recherche à haute efficacité. Elle peut également aider à réduire le coût de production ou de recherche. Le système de classification de séquences d’ADN basé sur Milvus ne prend que quelques millisecondes pour effectuer la classification génétique. De plus, il affiche une précision supérieure à celle d’autres classificateurs courants en machine learning.
Traitement des données
Un gène qui encode 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]. Il existe environ 30 000 gènes dans le génome humain, près de 3 milliards de paires de bases d’ADN, et chaque paire de bases possède 2 bases correspondantes. Pour prendre en charge des usages divers, les séquences d’ADN peuvent être classées en différentes catégories. Afin de réduire le coût et de faciliter l’utilisation des données de longues séquences d’ADN, k-mer est introduit dans le prétraitement des données. En même temps, cela rend les données de séquences d’ADN plus similaires à du texte brut. En outre, les données vectorisées peuvent accélérer les calculs dans l’analyse de données ou le machine learning.
Figure 1.
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. Ajuster la valeur de k améliorera les performances du modèle. Les listes de courtes séquences sont plus faciles pour la lecture des données, l’extraction de caractéristiques et la vectorisation.
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 courtes séquences, qui ressemble à une liste de mots individuels dans une phrase. Par conséquent, la plupart des modèles de traitement automatique du langage naturel devraient également fonctionner pour les données de séquences d’ADN. Des méthodologies similaires peuvent être appliquées à l’entraînement du modèle, à l’extraction de caractéristiques et à l’encodage. Étant donné que chaque modèle a ses propres avantages et inconvénients, la sélection des modèles dépend de la caractéristique 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 une tokenisation directe. Il ne fixe aucune limite à la longueur des données, mais le résultat renvoyé est moins évident en termes de comparaison de similarité.
Démo Milvus
Milvus peut facilement gérer des données non structurées et retrouver les résultats les plus similaires parmi des billions de vecteurs avec un délai moyen de l’ordre de la milliseconde. Sa recherche de similarité repose sur l’algorithme de recherche des plus proches voisins approximatifs (ANN). Ces points forts font de Milvus une excellente option pour gérer les vecteurs de séquences d’ADN, et ainsi favoriser le développement et les applications de la bioinformatique.
Voici une démo montrant comment construire un système de classification de séquences d’ADN avec Milvus. Le jeu de données expérimental comprend 3 organismes et 7 familles de gènes. Toutes les données sont converties en listes de courtes séquences 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 illustre la structure du système ainsi que les processus d’insertion et de recherche.
Figure 2.
Essayez cette démo sur Milvus bootcamp.
Dans Milvus, le système crée une collection et insère les vecteurs correspondants des 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 en entrée et les résultats les plus similaires dans la base de données. La classe de la séquence en entrée et la similarité entre les séquences d’ADN peuvent être déterminées par les distances vectorielles 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 de séquences d’ADN La recherche des séquences d’ADN les plus similaires dans Milvus pourrait indiquer la famille de gènes d’un échantillon inconnu, et ainsi permettre d’en apprendre davantage sur sa fonctionnalité possible. Si une séquence est classée comme GPCR, alors elle a probablement une influence sur les fonctions corporelles. Dans cette démo, Milvus a permis au système d’identifier avec succès les familles de gènes des séquences d’ADN humaines recherchées.
Figure 3.
Figure 4.
Similarité génétique
La similarité moyenne des séquences d’ADN entre 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 de produit interne (0,97 pour le chimpanzé et 0,70 pour le chien), ce qui prouve que le chimpanzé partage avec l’humain des gènes plus similaires que le chien. Avec des données et une conception système plus complexes, Milvus est capable de prendre en charge la recherche génétique à un niveau encore plus élevé.
search_params = {"metric_type": "IP", "params": {"nprobe": 20}}
Performance
La démo entraîne le modèle de classification avec 80 % des données d’échantillons humains (3629 au total) et utilise le reste comme données de test. Elle compare les performances du modèle de classification de séquences d’ADN utilisant Milvus avec celles d’un modèle alimenté par Mysql et de 5 classificateurs populaires d’apprentissage automatique. Le modèle basé sur Milvus surpasse ses homologues en 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)
Figure 5.
Exploration approfondie
Avec le développement de la technologie des mégadonnées, la vectorisation des séquences d’ADN jouera un rôle plus important dans la recherche et la pratique génétiques. Associées à des connaissances professionnelles en bioinformatique, les études connexes peuvent bénéficier davantage de l’implication de la vectorisation des séquences d’ADN. Par conséquent, Milvus peut présenter de meilleurs résultats en pratique. Selon différents scénarios et besoins des utilisateurs, la recherche de similarité et le calcul de distance alimentés par Milvus montrent un grand potentiel et de nombreuses possibilités.
- Étudier les séquences inconnues : Selon certains chercheurs, la vectorisation peut compresser les données de séquences d’ADN. Dans le même temps, elle nécessite moins d’efforts pour étudier la structure, la fonction et l’évolution des séquences d’ADN inconnues. Milvus peut stocker et récupérer un très grand nombre de vecteurs de séquences d’ADN sans perte de précision.
- Adapter les appareils : Limitée par les algorithmes traditionnels d’alignement de séquences, la recherche de similarité peut difficilement bénéficier de l’amélioration des appareils (CPU/GPU). Milvus, qui prend en charge à la fois le calcul CPU régulier et l’accélération GPU, résout ce problème grâce à un algorithme de plus proches voisins approximatifs.
- Détecter les virus et retracer les origines : Des scientifiques ont comparé des 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 élargir la taille de l’échantillon pour obtenir davantage de preuves et de tendances.
- Diagnostiquer les maladies : Cliniquement, les médecins pourraient comparer les séquences d’ADN entre les patients et un groupe sain afin d’identifier les gènes variants qui provoquent 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 de maladies. En plus d’aider au diagnostic des maladies, cette application peut également contribuer à inspirer l’étude de la thérapie ciblée.
En savoir plus sur Milvus
Milvus est un outil puissant capable d’alimenter un vaste éventail d’applications d’intelligence artificielle et de recherche de similarité vectorielle. Pour en savoir plus sur le projet, consultez les ressources suivantes :
Continuer à lire

Why We Built Vector Lakebase: Rethinking Unstructured Data Architecture for AI
Vector Lakebase: a unified, lake-native data foundation for AI workloads — and an answer to what happens after vector databases succeed.

Announcing VDBBench 1.0: Open-Source VectorDB Benchmarking with Your Real-World Production Workloads
Discover VDBBench 1.0, an open-source tool for benchmarking vector databases with real-world production data, streaming ingestion, and concurrent workloads.

Legal Document Analysis: Harnessing Zilliz Cloud's Semantic Search and RAG for Legal Insights
Enhance legal document analysis with Zilliz Cloud’s Semantic Search and RAG. Improve accuracy, efficiency, and scalability for contracts, case law, and compliance.



