Skip to main content
Data classes used throughout PrimerLab.

Module

from primerlab.core.models import (
    Primer,
    PrimerPair,
    Amplicon,
    QCResult
)
from primerlab.core.models.blast import BlastResult, BlastHit
from primerlab.core.insilico import BindingSite, InsilicoPCRResult

Primer

Single primer representation.

Attributes

AttributeTypeDescription
sequencestrPrimer sequence (5’→3’)
lengthintPrimer length
tmfloatMelting temperature (°C)
gc_contentfloatGC percentage
namestrPrimer name/ID
directionstr”forward” or “reverse”

Example

from primerlab.core.models import Primer

primer = Primer(
    sequence="ATGGTGAGCAAGGGCGAGGAG",
    name="GFP_F1",
    direction="forward"
)

print(f"Sequence: {primer.sequence}")
print(f"Length: {primer.length} bp")
print(f"Tm: {primer.tm:.1f}°C")
print(f"GC: {primer.gc_content:.1f}%")

PrimerPair

Forward + Reverse primer pair.

Attributes

AttributeTypeDescription
forwardPrimerForward primer
reversePrimerReverse primer
amplicon_sizeintProduct size (bp)
tm_difffloatTm difference
scorefloatOverall QC score
probePrimerTaqMan probe (qPCR only)

Example

pair = result.primers[0]

print(f"Forward: {pair.forward.sequence}")
print(f"Reverse: {pair.reverse.sequence}")
print(f"Amplicon: {pair.amplicon_size} bp")
print(f"Tm difference: {pair.tm_diff:.1f}°C")
print(f"Score: {pair.score:.1f}")

Amplicon

Predicted PCR product.

Attributes

AttributeTypeDescription
sequencestrAmplicon sequence
sizeintLength in bp
startintStart position on template
endintEnd position on template
gc_contentfloatGC percentage

Example

amplicon = insilico_result.products[0]

print(f"Size: {amplicon.size} bp")
print(f"Position: {amplicon.start}-{amplicon.end}")
print(f"Sequence: {amplicon.sequence[:50]}...")

BindingSite

Primer binding site analysis result.

Attributes

AttributeTypeDescription
positionintBinding position
mismatchesintNumber of mismatches
mismatch_positionsList[int]Positions of mismatches
three_prime_dgfloat3’ end ΔG (kcal/mol)
estimated_tmfloatCorrected Tm
is_validboolPasses binding criteria
validation_notesList[str]Warnings/notes

Example

from primerlab.core.insilico import analyze_binding

binding = analyze_binding(primer_seq, target_seq)

print(f"Position: {binding.position}")
print(f"Mismatches: {binding.mismatches}")
print(f"3' ΔG: {binding.three_prime_dg:.2f} kcal/mol")
print(f"Valid: {binding.is_valid}")

if binding.validation_notes:
    for note in binding.validation_notes:
        print(f"  Warning: {note}")

BlastResult

Off-target detection result.

Attributes

AttributeTypeDescription
primer_idstrPrimer identifier
hitsList[BlastHit]List of BLAST hits
scorefloatSpecificity score (0-100)
gradestrLetter grade (A-F)
offtarget_countintNumber of off-targets
is_specificboolPasses specificity threshold

BlastHit Attributes

AttributeTypeDescription
subject_idstrHit sequence ID
identityfloatPercent identity
alignment_lengthintAlignment length
mismatchesintNumber of mismatches
evaluefloatE-value

Example

blast_result = offtarget_check(primer, database)

print(f"Specificity Score: {blast_result.score:.1f}")
print(f"Grade: {blast_result.grade}")
print(f"Off-targets: {blast_result.offtarget_count}")

for hit in blast_result.hits[:5]:
    print(f"  {hit.subject_id}: {hit.identity:.1f}% identity")

QCResult

Quality control assessment.

Attributes

AttributeTypeDescription
passedboolOverall QC pass
hairpin_dgfloatHairpin ΔG
homodimer_dgfloatSelf-dimer ΔG
heterodimer_dgfloatCross-dimer ΔG
gc_clampboolHas GC clamp
warningsList[str]QC warnings

Example

qc = primer_pair.qc_result

print(f"QC Passed: {qc.passed}")
print(f"Hairpin ΔG: {qc.hairpin_dg:.2f} kcal/mol")
print(f"Homodimer ΔG: {qc.homodimer_dg:.2f} kcal/mol")
print(f"GC Clamp: {'Yes' if qc.gc_clamp else 'No'}")

for warning in qc.warnings:
    print(f"  ⚠ {warning}")

See Also