Motivação: Demonstrou-se que os modelos gerais de linguagem de proteínas resumem a semântica das seqüências de proteínas em representações úteis para métodos preditivos de ponta. No entanto, para problemas específicos de anticorpos, como restaurar os resíduos perdidos devido a erros de sequenciamento, um modelo treinado apenas em anticorpos pode ser mais poderoso. Os anticorpos são um dos poucos tipos de proteínas em que o volume de dados de sequência necessários para esses modelos de idiomas está disponível, por exemplo, no banco de dados de espaço de anticorpos observados (OEA).
Resultados: Aqui, introduzimos o Ablang, um modelo de idioma treinado nas seqüências de anticorpos no banco de dados OAS. Demonstramos o poder do Ablang usando-o para restaurar os resíduos ausentes nos dados de sequência de anticorpos, um problema-chave com o sequenciamento de repertório de receptores de células B, por exemplo, mais de 40% das seqüências de OAs estão ausentes dos 15 primeiros aminoácidos. O Ablang restaura os resíduos ausentes das sequências de anticorpos melhor do que usar linhas de germ de imgt ou o modelo de linguagem de proteína geral ESM-1B. Além disso, o Ablang não requer conhecimento da linha germinativa do anticorpo e é sete vezes mais rápido que o ESM-1B.
Disponibilidade e implementação: o Ablang é um pacote Python disponível em https://github.com/oxpig/ablang.
O Ablang está disponível gratuitamente e pode ser instalado com PIP.
pip install ablangou diretamente do github.
pip install -U git+https://github.com/oxpig/AbLang.gitNB: Se você usar o argumento "align = true", precisará instalar manualmente uma versão do ANARCI no mesmo ambiente. A ANARCI também pode ser instalada usando Bioconda; No entanto, esta versão é mantida por terceiros.
conda install -c bioconda anarciUm notebook Jupyter mostrando os diferentes casos de uso do Ablang e seus blocos de construção pode ser encontrado aqui.
Atualmente, o Ablang pode ser usado para gerar três representações/codificações diferentes para sequências de anticorpos.
Codificações: Essas codificações são 768 valores para cada resíduo, úteis para previsões específicas de resíduos.
Codificação de SEQ: Essas codificações são 768 valores para cada sequência, úteis para previsões específicas de sequência. O mesmo comprimento das codificações para cada sequência significa que essas codificações também remove a necessidade de alinhar as sequências de anticorpos.
Resistência de resistência: Essas codificações são as probabilidades de cada aminoácido em cada posição em uma determinada sequência de anticorpos, útil para explorar possíveis mutações. A ordem dos aminoácidos segue o vocabulário do Ablang.
Essas representações podem ser usadas para uma infinidade de aplicações de design de anticorpos. Como exemplo, usamos as residências de resistência do Ablang para restaurar os resíduos ausentes nas sequências de anticorpos devido a erros de sequenciamento, como bases ambíguas ou as limitações das técnicas de sequenciamento utilizadas.
A restauração das sequências de anticorpos pode ser feita usando o modo "Restauração", como visto abaixo.
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')
A saída do acima é vista abaixo.
array(['EVQLVESGPGLVQPGKSLRLSCVASGFTFSGYGMHWVRQAPGKGLEWIALIIYDESNKYYADSVKGRFTISRDNSKNTLYLQMSSLRAEDTAVFYCAKVKFYDPTAPNDYWGQGTLVTVSS',
'QVQLVESGGGVVQPGKSLRLSCVASGFTFSGYGMHWVRQAPGKGLEWIALIIYDESNKYYADSVKGRFTISRDNSKNTLYLQMSSLRAEDTAVFYCAKVKFYDPTAPNDYWGQGTLVTVSS'],
dtype='<U121')Para a restauração de um número desconhecido de resíduos ausentes nas extremidades das sequências de anticorpos, o parâmetro "alinhado" pode ser definido como true.
seqs = [
'EV*LVESGPGLVQPGKSLRLSCVASGFTFSGYGMHWVRQAPGKGLEWIALIIYDESNKYYADSVKGRFTISRDNSKNTLYLQMSSLRAEDTAVFYCAKVKFYDPTAPNDYWGQGTLVTVSS',
'PGKSLRLSCVASGFTFSGYGMHWVRQAPGKGLEWIALIIYDESNK*YADSVKGRFTISRDNSKNTLYLQMSSLRAEDTAVFYCAKVKFYDPTAPNDYWGQGTL',
]
heavy_ablang(seqs, mode='restore', align=True)
A saída do acima é vista abaixo.
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}
}