Downloads · 30 days
0
silicobio/peleke-phi-4-merged
peleke-phi-4-merged is a text generation model from silicobio. Use it when you need the model to write or continue text. It is set up for peft. The card lists the license as gpl-3.0.
This model is a fine-tuned version of microsoft/phi-4 for antibody sequence generation. It takes in an antigen sequence, and returns novel Fv portions of heavy and light chain antibody sequences. (This is a merged ver…
Downloads · 30 days
0
Access
Public
Updated May 17, 2026
Parameters
14.7B
29.3 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors29.3 GB · 100%
From the Hugging Face model README
This model is a fine-tuned version of microsoft/phi-4 for antibody sequence generation. It takes in an antigen sequence, and returns novel Fv portions of heavy and light chain antibody sequences. (This is a merged version of silicobio/peleke-1-phi-4, which includes the fine-tuned LoRA weights.)
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch, re
model_name = 'silicobio/peleke-phi-4'
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.bfloat16,
device_map="auto",
trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
This model uses <epi> and </epi> to annotate epitope residues of interest.
It may be easier to use other characters for annotation, such as [ ]'s. For example: ...CSFS[S][F][V]L[N]WY....
Then, use the following function to properly format the input.
def format_prompt(antigen_sequence):
epitope_seq = re.sub(r'\[([A-Z])\]', r'<epi>\1</epi>', antigen_sequence)
formatted_str = f"Antigen: {epitope_seq}<|im_end|>\nAntibody:"
return formatted_str
## Example HIV-1 gp120 antigen sequence with epitopes marked
antigen_sequence = "VPVWKDADTTLFCASDAKAHETEVHNVWATHACVPTDPNPQEIHLENVTENFNMWKNNMVEQMQEDVISLWDQSLQPCVKLTGGSVIKQACPKISFDPIPIHYCTPAGYVILKCNDKNFNGTGPCKNVSSVQCTHGIKPVVSTQLLLNGSLAEEEIIIRSENLT[N][N]A[K]TIIVHLNKSVEINCTRPSNGGSGSGGDIRKAYCEINGTKWNKVLKQVTEKLKEHFNNKTIIFQPPSGG[D]LEITMHSFNCRGEFFYCNTTQLFNNTCIGNETMKGCNGTITLPCKIKQIINMWQGTGQAMYAPPIDGKINCVSNITGILLT[R]D[G][G]ANNTSNETFRPGGGNIKDNWRSELYKYKVVQIE"
prompt = format_prompt(antigen_sequence)
inputs = tokenizer(prompt, return_tensors="pt")
inputs = {k: v.cuda() for k, v in inputs.items()}
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=1000,
do_sample=True,
temperature=0.7,
pad_token_id=tokenizer.eos_token_id,
use_cache=False,
)
full_text = tokenizer.decode(outputs[0], skip_special_tokens=False)
antibody_sequence = full_text.split('<|im_end|>')[1].replace('Antibody: ', '')
print(f"Antigen: {antigen_sequence}\nAntibody: {antibody_sequence}\n")
This will generate a |-delimited output, which is an Fv portion of a heavy and light chain.
Antigen: NPPTFSPALL...
Antibody: QVQLVQSGGG...|DIQMTQSPSS...
This model was trained with SFT.