Skip to content

Basic Inference

This tutorial demonstrates how to run inference with a pre-trained DNA language model for sequence classification tasks.

Full Notebook

View Full Notebook

Prerequisites

uv pip install -e '.[base,inference,cuda124]'

Load Configuration

from dnallm import load_config

configs = load_config("./inference_config.yaml")

Load Model and Tokenizer

from dnallm import load_model_and_tokenizer

model_name = "zhangtaolab/plant-dnagpt-BPE-promoter"
model, tokenizer = load_model_and_tokenizer(
    model_name,
    task_config=configs['task'],
    source="modelscope"
)

Create Inference Engine

from dnallm import DNAInference

inference_engine = DNAInference(
    model=model,
    tokenizer=tokenizer,
    config=configs
)

Predict Single Sequences

Pass a list of DNA sequences directly:

seqs = [
    "GCACTTTACTTAAAGTAAAAAGAAAAAAACTGTGCGCTCTCCAACTACCGCAGCAACGTGTCGAGCACAGGAACACGTGTCACTTCAGTTCTTCCAATTGCTGGGGCCCACCACTGTTTACTTCTGTACAGGCAGGTGGCCATGCTGATGACACTCCACACTCCTCGACTTTCGTAGCAGCAAGCCACGCGTGACCGAGAAGCCTCGCG",
    "TTGTCATCACATTTGATCAACTACGATTTATGTTGTACTATTCATCTGTTTTCTCCTTTTTTTTTCCCTTATTGACAGGTTGTGGAGGTTCACAACGAACAGAATACAAGAAATTTTGGTAATCATTTGAGGACTTTCATGGGGTATGAATTGTGTGCTATAATAAATTAA"
]

results = inference_engine.infer_seqs(seqs)
print(results)

Predict from File

For batch inference on a dataset:

# Predict from file
seq_file = './test.csv'
results, metrics = inference_engine.infer_file(seq_file, label_col='label', evaluate=True)
print(metrics)

When evaluate=True, the inference engine compares predictions against ground-truth labels and returns accuracy, precision, recall, and F1 scores.