AbAffinity is a Large Language Model designed to predict the binding affinity of scFv antibody sequences against the SARS-CoV-2 HR2 peptide. It takes the antibody heavy and light chain sequences as input and predicts the binding affinity against a peptide common to all SARS-CoV-2 variants.
Key Features
Predict Binding Affinity: Given the input antibody sequence, predict binding affinity.
Antibody Representation: Provides both residue-level and sequence-level embeddings (representations) of the antibody.
Attention Contact Map: Generates residue-residue attention maps for the input antibody sequence.
1from abaffinity import AbAffinity
23# Example usage4abmodel=AbAffinity()567# The model takes complete scFv sequences as input. Heavy and Light chain are connected with a linker sequence. 8# Use make_scFv() method from the model to get the complete scFv sequence from heavy chain and light chain sequence.910heavy_seq ='EVQLVESGAEVKKPGASVKVSCKASGYTFTSYGISWVRQAPGQGLEWMGWISAYNGNTNYAQKLQGRVTMTTDTSTSTAYMELRSLRSDDTAVYYCARVGRGVIDHWGQGTLVTVSS'11light_seq ='SSELTQDPAVSVALGQTVRITCEGDSLDYYYANWYQQKPGQAPILVIYGKNNRPSGIADRFSGSNSGDTSSLIITGAQAEDEADYYCSSRDSSGFEVTFGAGTKLTVL'1213scFv_seq = abmodel.make_scFv(heavy_seq, light_seq)14print(scFv_seq)# Output: EVQLVESGAEVKKPGASVKVSCKASGYTFTSYGISWVRQAPGQGLEWMGWISAYNGNTNYAQKLQGRVTMTTDTSTSTAYMELRSLRSDDTAVYYCARVGRGVIDHWGQGTLVTVSSGGGGSGGGGSGGGGSSSELTQDPAVSVALGQTVRITCEGDSLDYYYANWYQQKPGQAPILVIYGKNNRPSGIADRFSGSNSGDTSSLIITGAQAEDEADYYCSSRDSSGFEVTFGAGTKLTVL1516# Use `get_affinity()` method to get the predicted binding affinity of the antibody sequence. 17pred_affinity = abmodel.get_affinity(scFv_seq)18print(pred_affinity)# Output: tensor([3.1595]) 192021# Use `get_embeddings()` method to get the embeddings for input sequences. 22# Use `mode='res'` to get residue wise embeddings, and `mode='seq'` will give sequence embedding. 2324res_emb = abmodel.get_embeddings(scFv_seq, mode='res')25print(res_emb.shape)# Output: torch.Size([258, 1280])2627seq_emb = abmodel.get_embeddings(scFv_seq, mode='seq')28print(seq_emb.shape)# Output: torch.Size([1280]) 2930# Use `get_contact_map()` method to get the contact maps of the given antibody sequence. 31# Use `mode='VH-VL'` if you want to plot the contacts for heavy chain and light chain separately, and `mode='scFv'` to plot single contacts for the entire scFv sequence. 3233contacts = abmodel.get_contact_map(scFv_seq, mode ='scFv')34print(contacts.shape)# Output: contact map figure, (240, 240)
License
This project is licensed under the MIT License.
Acknowledgments
If you find this work useful, please cite:
@article{ashraf2024large,
title={A Large Language Model Guides the Affinity Maturation of Variant Antibodies Generated by Combinatorial Optimization},
author={Ashraf, Faisal Bin and Zhang, Zihao and Paco, Karen and Mendivil, Mariana P and Lay, Jordan A and Ray, Animesh and Lonardi, Stefano},
journal={bioRxiv},
pages={2024--12},
year={2024},
publisher={Cold Spring Harbor Laboratory}
}
@article{ashraf2026abaffinity,
title={AbAffinity: A Large Language Model for Predicting Antibody Binding Affinity against SARS-CoV-2},
author={Ashraf, Faisal Bin and Ray, Animesh and Lonardi, Stefano},
journal={arXiv preprint arXiv:2603.04480},
year={2026}
}