Motivación: se ha demostrado que los modelos de lenguaje de proteínas generales resumen la semántica de las secuencias de proteínas en representaciones que son útiles para los métodos predictivos de última generación. Sin embargo, para problemas específicos de anticuerpos, como la restauración de los residuos perdidos debido a los errores de secuenciación, un modelo entrenado únicamente en anticuerpos puede ser más poderoso. Los anticuerpos son uno de los pocos tipos de proteínas donde el volumen de datos de secuencia necesarios para tales modelos de lenguaje está disponible, por ejemplo, en la base de datos de espacio de anticuerpos observada (OAS).
Resultados: Aquí, presentamos a Ablang, un modelo de lenguaje capacitado en las secuencias de anticuerpos en la base de datos OAS. Demostramos el poder de Ablang al usarlo para restaurar los residuos faltantes en los datos de la secuencia de anticuerpos, un problema clave con la secuenciación del repertorio del receptor de células B, por ejemplo, más del 40% de las secuencias de OAS les faltan los primeros 15 aminoácidos. Ablang restaura los residuos faltantes de las secuencias de anticuerpos mejor que usar las líneas germinales IMGT o el modelo de lenguaje de proteína general ESM-1B. Además, Ablang no requiere conocimiento de la línea germinal del anticuerpo y es siete veces más rápido que ESM-1B.
Disponibilidad e implementación: Ablang es un paquete Python disponible en https://github.com/oxpig/ablang.
Ablang está disponible gratuitamente y se puede instalar con PIP.
pip install ablango directamente de Github.
pip install -U git+https://github.com/oxpig/AbLang.gitNB: Si usa el argumento "Align = True", debe instalar manualmente una versión de ANARCI en el mismo entorno. Anarci también se puede instalar usando BioConda; Sin embargo, esta versión es mantenida por un tercero.
conda install -c bioconda anarciAquí se puede encontrar un cuaderno Jupyter que muestra los diferentes casos de uso de Ablang y sus bloques de construcción.
Actualmente, Ablang se puede usar para generar tres representaciones/codificaciones diferentes para secuencias de anticuerpos.
RES Codificaciones: estas codificaciones son 768 valores para cada residuo, útiles para predicciones específicas de residuos.
Codificaciones SEQ: estas codificaciones son 768 valores para cada secuencia, útiles para predicciones específicas de secuencia. La misma longitud de codificaciones para cada secuencia significa que estas codificaciones también eliminan la necesidad de alinear las secuencias de anticuerpos.
RES-LIKELIDADES: Estas codificaciones son las probabilidades de cada aminoácido en cada posición en una secuencia de anticuerpos dada, útil para explorar posibles mutaciones. El orden de los aminoácidos sigue el vocabulario de Ablang.
Estas representaciones se pueden usar para una gran cantidad de aplicaciones de diseño de anticuerpos. Como ejemplo, hemos utilizado las re-Likeliess de Ablang para restaurar los residuos faltantes en secuencias de anticuerpos debido a errores de secuenciación, como bases ambiguas o las limitaciones de las técnicas de secuenciación utilizadas.
La restauración de las secuencias de anticuerpos se puede hacer utilizando el modo "Restaurar" como se ve a continuación.
import ablang
heavy_ablang = ablang.pretrained("heavy") # Use "light" if you are working with light chains
heavy_ablang.freeze()
seqs = [
'EV*LVESGPGLVQPGKSLRLSCVASGFTFSGYGMHWVRQAPGKGLEWIALIIYDESNKYYADSVKGRFTISRDNSKNTLYLQMSSLRAEDTAVFYCAKVKFYDPTAPNDYWGQGTLVTVSS',
'*************PGKSLRLSCVASGFTFSGYGMHWVRQAPGKGLEWIALIIYDESNK*YADSVKGRFTISRDNSKNTLYLQMSSLRAEDTAVFYCAKVKFYDPTAPNDYWGQGTL*****',
]
heavy_ablang(seqs, mode='restore')
La salida de lo anterior se ve a continuación.
array(['EVQLVESGPGLVQPGKSLRLSCVASGFTFSGYGMHWVRQAPGKGLEWIALIIYDESNKYYADSVKGRFTISRDNSKNTLYLQMSSLRAEDTAVFYCAKVKFYDPTAPNDYWGQGTLVTVSS',
'QVQLVESGGGVVQPGKSLRLSCVASGFTFSGYGMHWVRQAPGKGLEWIALIIYDESNKYYADSVKGRFTISRDNSKNTLYLQMSSLRAEDTAVFYCAKVKFYDPTAPNDYWGQGTLVTVSS'],
dtype='<U121')Para la restauración de un número desconocido de residuos faltantes en los extremos de las secuencias de anticuerpos, el parámetro "Alinear" se puede establecer en True.
seqs = [
'EV*LVESGPGLVQPGKSLRLSCVASGFTFSGYGMHWVRQAPGKGLEWIALIIYDESNKYYADSVKGRFTISRDNSKNTLYLQMSSLRAEDTAVFYCAKVKFYDPTAPNDYWGQGTLVTVSS',
'PGKSLRLSCVASGFTFSGYGMHWVRQAPGKGLEWIALIIYDESNK*YADSVKGRFTISRDNSKNTLYLQMSSLRAEDTAVFYCAKVKFYDPTAPNDYWGQGTL',
]
heavy_ablang(seqs, mode='restore', align=True)
La salida de lo anterior se ve a continuación.
array(['EVQLVESGPGLVQPGKSLRLSCVASGFTFSGYGMHWVRQAPGKGLEWIALIIYDESNKYYADSVKGRFTISRDNSKNTLYLQMSSLRAEDTAVFYCAKVKFYDPTAPNDYWGQGTLVTVSS',
'QVQLVESGGGVVQPGKSLRLSCVASGFTFSGYGMHWVRQAPGKGLEWIALIIYDESNKYYADSVKGRFTISRDNSKNTLYLQMSSLRAEDTAVFYCAKVKFYDPTAPNDYWGQGTLVTVSS'],
dtype='<U121') @article{Olsen2022,
title={AbLang: An antibody language model for completing antibody sequences},
author={Tobias H. Olsen, Iain H. Moal and Charlotte M. Deane},
journal={bioRxiv},
doi={https://doi.org/10.1101/2022.01.20.477061},
year={2022}
}