Buckets:
| tags: | |
| - antibody language model | |
| - antibody | |
| - protein language model | |
| base_model: Exscientia/IgT5_unpaired | |
| license: mit | |
| # IgT5 model | |
| Model pretrained on protein and antibody sequences using a masked language modeling (MLM) objective. It was introduced in the paper [Large scale paired antibody language models](https://arxiv.org/abs/2403.17889). | |
| The model is finetuned from IgT5-unpaired using paired antibody sequences from the [Observed Antibody Space](https://opig.stats.ox.ac.uk/webapps/oas/). | |
| # Use | |
| The encoder part of the model and tokeniser can be loaded using the `transformers` library | |
| ```python | |
| from transformers import T5EncoderModel, T5Tokenizer | |
| tokeniser = T5Tokenizer.from_pretrained("Exscientia/IgT5", do_lower_case=False) | |
| model = T5EncoderModel.from_pretrained("Exscientia/IgT5") | |
| ``` | |
| The tokeniser is used to prepare batch inputs | |
| ```python | |
| # heavy chain sequences | |
| sequences_heavy = [ | |
| "VQLAQSGSELRKPGASVKVSCDTSGHSFTSNAIHWVRQAPGQGLEWMGWINTDTGTPTYAQGFTGRFVFSLDTSARTAYLQISSLKADDTAVFYCARERDYSDYFFDYWGQGTLVTVSS", | |
| "QVQLVESGGGVVQPGRSLRLSCAASGFTFSNYAMYWVRQAPGKGLEWVAVISYDGSNKYYADSVKGRFTISRDNSKNTLYLQMNSLRTEDTAVYYCASGSDYGDYLLVYWGQGTLVTVSS" | |
| ] | |
| # light chain sequences | |
| sequences_light = [ | |
| "EVVMTQSPASLSVSPGERATLSCRARASLGISTDLAWYQQRPGQAPRLLIYGASTRATGIPARFSGSGSGTEFTLTISSLQSEDSAVYYCQQYSNWPLTFGGGTKVEIK", | |
| "ALTQPASVSGSPGQSITISCTGTSSDVGGYNYVSWYQQHPGKAPKLMIYDVSKRPSGVSNRFSGSKSGNTASLTISGLQSEDEADYYCNSLTSISTWVFGGGTKLTVL" | |
| ] | |
| # The tokeniser expects input of the form ["V Q ... S S </s> E V ... I K", ...] | |
| paired_sequences = [] | |
| for sequence_heavy, sequence_light in zip(sequences_heavy, sequences_light): | |
| paired_sequences.append(' '.join(sequence_heavy)+' </s> '+' '.join(sequence_light)) | |
| tokens = tokeniser.batch_encode_plus( | |
| paired_sequences, | |
| add_special_tokens=True, | |
| pad_to_max_length=True, | |
| return_tensors="pt", | |
| return_special_tokens_mask=True | |
| ) | |
| ``` | |
| Note that the tokeniser adds a `</s>` token at the end of each paired sequence and pads using the `<pad>` token. For example a batch containing sequences `V Q L </s> E V V`, `Q V </s> A L` will be tokenised to `V Q L </s> E V V </S>` and `Q V </s> A L </s> <pad> <pad>`. | |
| Sequence embeddings are generated by feeding tokens through the model | |
| ```python | |
| output = model( | |
| input_ids=tokens['input_ids'], | |
| attention_mask=tokens['attention_mask'] | |
| ) | |
| residue_embeddings = output.last_hidden_state | |
| ``` | |
| To obtain a sequence representation, the residue tokens can be averaged over like so | |
| ```python | |
| import torch | |
| # mask special tokens before summing over embeddings | |
| residue_embeddings[tokens["special_tokens_mask"] == 1] = 0 | |
| sequence_embeddings_sum = residue_embeddings.sum(1) | |
| # average embedding by dividing sum by sequence lengths | |
| sequence_lengths = torch.sum(tokens["special_tokens_mask"] == 0, dim=1) | |
| sequence_embeddings = sequence_embeddings_sum / sequence_lengths.unsqueeze(1) | |
| ``` | |
Xet Storage Details
- Size:
- 2.9 kB
- Xet hash:
- 1bb4b16a5856dcf4929e35158911081c70def85ddaf1349584fab2cdae1e8d44
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.