Clasificación de secuencias de ADN basada en Milvus
Autor: Mengjia Gu, ingeniera de datos en Zilliz, es licenciada en Estudios de la Información por la Universidad McGill. Sus intereses incluyen las aplicaciones de IA y la búsqueda de similitudes con bases de datos vectoriales. Como miembro de la comunidad del proyecto de código abierto Milvus, ha proporcionado y mejorado varias soluciones, como el sistema de recomendación y el modelo de clasificación de secuencias de ADN. Le gustan los retos y nunca se rinde.
La secuencia de ADN es un concepto popular tanto en la investigación académica como en aplicaciones prácticas, como la trazabilidad de genes, la identificación de especies y el diagnóstico de enfermedades. Mientras que todas las industrias están hambrientas de un método de investigación más inteligente y eficiente, la inteligencia artificial ha atraído mucha atención, especialmente desde el ámbito biológico y médico. Cada vez son más los científicos e investigadores que contribuyen al aprendizaje automático y al aprendizaje profundo en bioinformática. Para que los resultados experimentales sean más convincentes, una opción común es aumentar el tamaño de la muestra. La colaboración con big data en genómica también aporta más posibilidades de casos de uso en la realidad. Sin embargo, la alineación de secuencias tradicional tiene limitaciones que la hacen inadecuada para datos de gran tamaño. Con el fin de hacer menos concesiones en la realidad, la vectorización es una buena opción para un gran conjunto de datos de secuencias de ADN.
La base de datos vectorial de código abierto Milvus es adecuada para datos masivos. Es capaz de almacenar vectores de secuencias de ácidos nucleicos y realizar una recuperación de alta eficiencia. También puede ayudar a reducir el coste de producción o investigación. El sistema de clasificación de secuencias de ADN basado en Milvus sólo tarda milisegundos en realizar la clasificación de genes. Además, muestra una mayor precisión que otros clasificadores comunes en el aprendizaje automático.
Un gen que codifica información genética está formado por una pequeña sección de secuencias de ADN, que consta de 4 bases nucleotídicas [A, C, G, T]. En el genoma humano hay unos 30.000 genes, casi 3.000 millones de pares de bases de ADN, y cada par de bases tiene 2 bases correspondientes. Para permitir diversos usos, las secuencias de ADN pueden clasificarse en varias categorías. Para reducir el coste y facilitar el uso de datos de secuencias de ADN largas, se introduce k-mer en el preprocesamiento de datos. Al mismo tiempo, hace que los datos de secuencias de ADN se parezcan más a un texto sin formato. Además, los datos vectorizados pueden acelerar el cálculo en el análisis de datos o el aprendizaje automático.
1.png
k-mer
El método k-mer se utiliza habitualmente en el preprocesamiento de secuencias de ADN. Extrae una pequeña sección de longitud k a partir de cada base de la secuencia original, convirtiendo así una secuencia larga de longitud s en (s-k+1) secuencias cortas de longitud k. Ajustar el valor de k mejorará el rendimiento del modelo. Las listas de secuencias cortas son más fáciles de leer, extraer y vectorizar.
Vectorización
Las secuencias de ADN se vectorizan en forma de texto. Una secuencia transformada por k-mer se convierte en una lista de secuencias cortas, que se parece a una lista de palabras individuales en una frase. Por lo tanto, la mayoría de los modelos de procesamiento del lenguaje natural deberían funcionar también para los datos de secuencias de ADN. Se pueden aplicar metodologías similares a la formación de modelos, la extracción de características y la codificación. Dado que cada modelo tiene sus propias ventajas e inconvenientes, la selección de modelos depende de la característica de los datos y del objetivo de la investigación. Por ejemplo, CountVectorizer, un modelo de bolsa de palabras, realiza la extracción de características mediante una simple tokenización. No pone límite a la longitud de los datos, pero el resultado obtenido es menos obvio en términos de comparación de similitudes.
Milvus puede gestionar fácilmente datos no estructurados y recuperar los resultados más similares entre billones de vectores en un plazo medio de milisegundos. Su búsqueda de similitudes se basa en el algoritmo de búsqueda del vecino más próximo aproximado (RNA). Estas características hacen de Milvus una gran opción para gestionar vectores de secuencias de ADN y, por tanto, para promover el desarrollo y las aplicaciones de la bioinformática.
A continuación se muestra una demostración de cómo construir un sistema de clasificación de secuencias de ADN con Milvus. El conjunto de datos experimentales incluye 3 organismos y 7 familias de genes. Todos los datos se convierten en listas de secuencias cortas mediante k-mers. Con un modelo CountVectorizer preentrenado, el sistema codifica entonces los datos de secuencia en vectores. El diagrama de flujo que figura a continuación muestra la estructura del sistema y los procesos de inserción y búsqueda.
1.png
Pruebe esta demostración en el Milvus bootcamp.
En Milvus, el sistema crea una colección e inserta los vectores correspondientes de secuencias de ADN en la colección (o partición si está activada). Al recibir una solicitud de consulta, Milvus devolverá las distancias entre el vector de la secuencia de ADN de entrada y los resultados más similares de la base de datos. La clase de la secuencia de entrada y la similitud entre las secuencias de ADN pueden determinarse mediante las distancias vectoriales en los resultados.
# 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
Clasificación de secuenciasde ADN La búsqueda de secuencias de ADN más similares en Milvus podría implicar la familia de genes de una muestra desconocida, y así conocer su posible funcionalidad. Si una secuencia se clasifica como GPCRs, entonces probablemente tiene influencia en las funciones corporales. En esta demostración, Milvus ha permitido con éxito al sistema identificar las familias de genes de las secuencias de ADN humano buscadas.
3.png
4.png
Similitud genética
La similitud media de secuencias de ADN entre organismos ilustra la proximidad entre sus genomas. La demo busca en los datos humanos las secuencias de ADN más similares a las del chimpancé y el perro respectivamente. A continuación, calcula y compara las distancias medias del producto interno (0,97 para el chimpancé y 0,70 para el perro), lo que demuestra que el chimpancé comparte más genes similares con el ser humano que el perro. Con datos más complejos y el diseño del sistema, Milvus es capaz de apoyar la investigación genética incluso a un nivel superior.
search_params = {"metric_type": "IP", "params": {"nprobe": 20}}
Rendimiento
La demostración entrena el modelo de clasificación con un 80% de datos de muestras humanas (3629 en total) y utiliza el resto como datos de prueba. Compara el rendimiento del modelo de clasificación de secuencias de ADN que utiliza Milvus con el basado en Mysql y 5 clasificadores populares de aprendizaje automático. El modelo basado en Milvus supera a sus homólogos en precisión.
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
Con el desarrollo de la tecnología de big data, la vectorización de la secuencia de ADN desempeñará un papel más importante en la investigación y la práctica genéticas. Combinado con el conocimiento profesional en bioinformática, los estudios relacionados pueden beneficiarse aún más de la participación de la vectorización de secuencias de ADN. Por lo tanto, Milvus puede presentar mejores resultados en la práctica. Según los diferentes escenarios y necesidades de los usuarios, la búsqueda de similitudes y el cálculo de distancias impulsados por Milvus muestran un gran potencial y muchas posibilidades.
- Estudio de secuencias desconocidas: Según algunos investigadores, la vectorización puede comprimir los datos de secuencias de ADN. Al mismo tiempo, requiere menos esfuerzo para estudiar la estructura, función y evolución de secuencias de ADN desconocidas. Milvus puede almacenar y recuperar un gran número de vectores de secuencias de ADN sin perder precisión.
- Adaptar dispositivos: Limitada por los algoritmos tradicionales de alineación de secuencias, la búsqueda de similitudes apenas puede beneficiarse de la mejora de los dispositivos(CPU/GPU). Milvus, que admite tanto el cálculo normal en CPU como la aceleración en GPU, resuelve este problema con el algoritmo aproximado del vecino más próximo.
- Detección de virus y rastreo de orígenes: Los científicos han comparado secuencias genómicas y han informado de que el virus COVID19, de probable origen murciélago, pertenece al SARS-COV. Basándose en esta conclusión, los investigadores pueden ampliar el tamaño de la muestra para obtener más pruebas y patrones.
- Diagnosticar enfermedades: Clínicamente, los médicos podrían comparar secuencias de ADN entre pacientes y grupos sanos para identificar genes variantes causantes de enfermedades. Es posible extraer características y codificar estos datos utilizando algoritmos adecuados. Milvus es capaz de devolver distancias entre vectores, que pueden relacionarse con datos de enfermedades. Además de ayudar al diagnóstico de enfermedades, esta aplicación también puede contribuir a inspirar el estudio de terapias dirigidas.
Milvus es una potente herramienta capaz de impulsar una amplia gama de aplicaciones de inteligencia artificial y búsqueda de similitudes vectoriales. Para saber más sobre el proyecto, consulte los siguientes recursos:
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word