Economic Burden of Psoriasis Treatment

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.

Economic Burden of Psoriasis Treatment

Psoriasis carries a substantial economic burden spanning direct medical costs, indirect productivity losses, and quality-of-life impacts. Biologic therapies dominate direct costs, often exceeding $20,000-$50,000 per patient per year in the US. Indirect costs from work absenteeism and presenteeism can rival or exceed direct medical expenditures.
Searching sources...
Reading File
Searching PubMed

psoriasis economic burden treatment costs

Searching the Web

economic burden psoriasis treatment costs 2024 2025 biologic therapies

Finding Sources
Reading Article

PMID: 42420624

Reading Article

PMID: 40930460

Finding Sources
Searching PubMed

psoriasis treatment cost-effectiveness biologics phototherapy

Finding Sources
Reading Article

PMID: 41739454

Finding Sources
Reading File
Reading File
Here is a thorough synthesis of the economic burden of psoriasis treatment, integrating the latest peer-reviewed evidence, clinical textbook data, and pharmacoeconomic analyses:

Economic Burden of Psoriasis Treatment

1. Global Scale

The global economic burden of psoriasis reached $148.85 billion in 2021, comprising:
  • $95.15 billion in direct healthcare costs
  • $53.70 billion in indirect costs (productivity losses)
These figures come from a 2026 systematic analysis covering global disease burden from 1990-2021 (Wei et al., J Invest Dermatol 2026, PMID 40930460), which also found that the number of people living with psoriasis nearly doubled between 1990 and 2021 to 43 million cases, with a Bayesian model forecasting continued upward trends through 2040. High-income countries bear the majority of healthcare costs, while lower-income countries suffer disproportionate productivity losses.
In the United States alone, the total economic burden has been estimated to exceed $110 billion annually, with most attributable to moderate-to-severe disease affecting roughly 20% of the ~8 million Americans with psoriasis.

2. Direct Medical Costs

A. Biologic Agents (Dominant Cost Driver)

Biologics produce the most dramatic clinical responses but at enormous cost. Annual US costs by drug class:
Drug / ClassAnnual Payer Cost (US)
Biologics (average, all classes)~$84,000/year
Bimekizumab (IL-17A/F inhibitor)~$84,034/year
Ustekinumab (IL-12/23)~$87,243/year
Brodalumab (IL-17R)~$48,782/year
Adalimumab (TNF-alpha)Lower with biosimilars
Key findings from Kong & Buzney (JAMA Dermatology 2026, PMID 41739454):
  • Mean annual total payer costs: biologics $84,034 vs. office phototherapy $14,760 vs. home phototherapy $6,222
  • Net willingness to pay for payers was negative for biologics (-$59,926) but positive for home phototherapy (+$11,694) - meaning biologics cost more than the QALY gains justify at the $100,000/QALY threshold
  • Patients, however, preferred biologics most (personal WTP +$22,107), creating a payer-patient incentive misalignment

B. Cost per Response Achieved

From comparative meta-analyses of IL-class biologics:
  • Cost per PASI 75 responder is similar across newer biologics
  • Monthly cost per PASI 90/100 responder is lowest for IL-17 inhibitors (secukinumab, ixekizumab) and highest for older agents (etanercept: ~$40,000/month per PASI 90 responder)
  • IL-17 inhibitors are considered the most cost-effective biologics for moderate-to-severe plaque psoriasis

C. Conventional Systemic and Topical Agents

These represent far more affordable options:
  • Methotrexate: Remains the benchmark comparator; very low cost (~$10-30/month for the drug itself)
  • Cyclosporine: Available ~$23/month for 30 days, but not suitable for long-term use
  • Topical corticosteroids: First-line for limited disease; minimal cost
  • Phototherapy (NB-UVB): Highly cost-effective - $14,760/year for office-based and only $6,222/year for home-based treatment; considered the most cost-efficient modality for widespread psoriasis (Andrews' Diseases of the Skin)

D. Step-Therapy Strategies

A step-therapy approach (phototherapy first, switch to biologics at 16 weeks if PASI90 not achieved) achieves similar PASI reductions (95.2%) to biologics alone (91.6%), with less variability and substantially lower system costs, and represents an important cost-containment strategy.

3. Indirect and Societal Costs

Indirect costs are a major component of total burden and include:
  • Work absenteeism and presenteeism: Studies show psoriasis patients lose significant workdays. Moderate-to-severe disease is particularly disabling.
  • Productivity losses contributed $53.7 billion of the 2021 global burden - representing 36% of total costs
  • Psychiatric comorbidities: Psoriasis has high rates of depression and anxiety, which compound functional impairment and healthcare use
  • Cardiovascular and metabolic comorbidities: Patients with psoriasis and a comorbidity (e.g., CVD) incur roughly double the hospital use and costs compared to non-comorbid patients
  • Psoriasis + psoriatic arthritis: ~$9,900 in additional annual costs
  • Psoriasis + CVD: Significantly elevated additional cost burden
Per a Springer 2026 review on economic impact of timely systemic treatment, early treatment of psoriasis to prevent comorbidities (CVD, diabetes, mental health disorders) may yield meaningful long-term cost savings.

4. Comorbidity-Related Cost Amplification

Comorbidities - particularly metabolic syndrome, psoriatic arthritis, depression, and cardiovascular disease - are most prevalent in moderate-to-severe psoriasis. Treatment selection must be tailored, as shown in the comorbidity-therapy matrix from Dermatology 2-Volume Set 5e:
  • Psoriatic arthritis: MTX, anti-TNF, anti-IL-17, anti-IL-12/23, JAK inhibitors all appropriate
  • Crohn's disease: Avoid IL-17 agents
  • Congestive heart failure: Avoid anti-TNF (higher grades)
  • Depression: Most agents compatible; apremilast with some caution
  • These restrictions frequently push patients toward more expensive options, raising costs

5. Payer vs. Patient Cost Perspectives

PerspectivePreferred OptionReason
PayerHome phototherapy, then adalimumab among biologicsLower system costs, acceptable QALY gains
PatientBiologics (especially bimekizumab)Largest quality-of-life gains, lower out-of-pocket burden
Out-of-pocket costsBiologics: $2,000/year (with insurance); Office NB-UVB: $5,004/yearInsurance typically covers biologics heavily
This divergence in incentives highlights the need for policy interventions such as improved coverage for home phototherapy, which offers the best cost-value proposition at the system level.

6. UK and International Perspectives

A 2026 systematic review of UK NHS cost-utility analyses (Clemmet et al., Pharmacoeconomics 2026, PMID 42420624) found that while modelling methods for psoriasis are well-established (induction and maintenance phase structures), future analyses should better incorporate treatment sequencing, real-world effectiveness data, and comorbidity impacts, as current models may underestimate total costs.
For generalized pustular psoriasis (GPP), a rarer but more severe form, mean annual direct costs are approximately $23,675 per patient per year (2024 USD), ranging from $7,791 (Sweden) to $49,891 (Canada).

7. Biosimilars and Cost Mitigation

The entry of biosimilar adalimumab has created meaningful cost savings for payers. Budget impact analyses show formulary inclusion of biosimilar adalimumab in the US produces significant cost reductions. Biosimilars are increasingly central to formulary management strategies aimed at lowering psoriasis treatment expenditure.

Summary

Cost CategoryEstimate
Global total economic burden (2021)$148.85 billion
Direct healthcare costs (global)$95.15 billion
Indirect/productivity costs (global)$53.70 billion
US annual burden (moderate-severe)>$110 billion
Annual biologic cost (US payer)~$48,000-$87,000/patient
Annual phototherapy (home NB-UVB)~$6,222/patient
Comorbidity cost multiplier~2x hospitalizations
Biologics, particularly IL-17 inhibitors, are the most clinically effective but most expensive treatment modality. Phototherapy - especially home-based NB-UVB - offers the best cost-effectiveness from a payer standpoint. Step-therapy and biosimilar adoption represent the most practical system-level cost-containment strategies. The burden is expected to continue growing through 2040 as psoriasis prevalence rises globally.

Key references:

different types of mices and rats used in research

Research mice and rats fall into several broad categories: inbred strains (genetically identical animals for reproducibility), outbred stocks (genetically diverse for general-purpose studies), and genetically modified models (knockouts, transgenics, humanized). Common examples include C57BL/6 and BALB/c mice, Sprague-Dawley and Wistar rats.
Searching sources...
Searching the Web

types of mice and rats used in biomedical research strains models 2024

Searching PubMed

laboratory mouse rat strains biomedical research models

Reading Web Page

https://www.labome.com/method/Laboratory-Mice-and-Rats.html

Here is a thorough reference guide to the types of mice and rats used in research:

Types of Mice and Rats Used in Research

Rodents (Mus musculus for mice, Rattus norvegicus for rats) are the most widely used mammalian models in biomedical research. They offer high genetic homology with humans, rapid reproduction, ease of housing, and well-developed tools for genetic manipulation. Research animals fall into four broad categories: inbred strains, outbred stocks, mutant/spontaneous models, and genetically engineered models.

MICE (Mus musculus)

A. Inbred Strains

Inbred mice are produced by brother-sister mating for 20+ generations, creating near-identical genetic backgrounds. This ensures reproducibility across experiments.
StrainKey FeaturesPrimary Research Uses
C57BL/6 (B6)Most widely used mouse strain globally; black coat; robust immune responses; susceptible to high-fat diet-induced obesityImmunology, oncology, neuroscience, metabolic disease, gene knockout backgrounds
BALB/cAlbino; Th2-skewed immune response; docile temperamentImmunology (allergy, asthma, antibody production), cancer (hybridoma development), infectious disease
FVB/NHigh litter sizes; pronuclear microinjection-friendlyTransgenics generation, oncology
A/JSusceptible to lung tumors; unusual complement systemCancer biology, asthma
DBA/2Susceptible to glaucoma, alcohol preferenceNeuroscience, addiction, ophthalmology
C3HSusceptible to mammary tumors (MMTV-infected); strong Th1 responsesOncology, infectious disease
129 strainsFirst used for embryonic stem cell (ES cell) derivationGene targeting/knockout generation
NZB/NZW F1Spontaneously develops lupus-like diseaseAutoimmunity (SLE model)
NOD (Non-Obese Diabetic)Spontaneously develops Type 1 diabetesAutoimmune diabetes, islet biology
SJLSusceptible to EAE (Experimental Autoimmune Encephalomyelitis)Multiple sclerosis research

B. Outbred Stocks

Genetically diverse, mirroring human population heterogeneity. Referred to as "stocks" rather than "strains."
StockKey FeaturesPrimary Research Uses
CD-1 (ICR)Albino; large litters; most widely used outbred stockToxicology, safety/efficacy testing, pharmacology, aging
Swiss WebsterHardy; robust; good breedersGeneral purpose, virology, neuroscience
ICRSimilar to CD-1; derived from Swiss micePharmacology, toxicology, reproductive studies
NMRIEuropean origin; good breedersNeuropharmacology, general purpose

C. Immunodeficient/Nude/SCID Models

Used for human tumor xenograft studies and immune reconstitution experiments.
ModelDefectPrimary Research Uses
Nude mice (Foxn1^nu^)Lacks thymus; T-cell deficient; hairless phenotypeXenograft tumor studies, immunology
SCID miceLacks functional T and B cellsHuman xenografts, hematopoietic studies
NSG (NOD-SCID gamma)Most immunodeficient; lacks T, B, NK cellsHumanized mouse models, PDX (patient-derived xenograft) tumors
Rag1/Rag2 knockoutsNo mature T or B cellsImmune reconstitution, adoptive transfer
Beige miceNK cell dysfunctionTumor biology, immune deficiency studies

D. Transgenic and Knockout Models

Genetically engineered using CRISPR, Cre-lox, or traditional transgenic approaches.
Model TypeExamplesUses
Knockouts (KO)p53-KO, ApoE-KO, CFTR-KOGene function, cancer, cardiovascular, cystic fibrosis
KnockinHumanized APOE4, HER2-knockinDisease modeling with human alleles
TransgenicsAPP/PS1, 5xFAD (Alzheimer's); db/db obesityNeurodegenerative disease, metabolic syndrome
Conditional KO (Cre-lox)Tissue-specific gene deletionOrgan-specific gene function
Reporter linesGFP/luciferase reportersCell tracking, in vivo imaging
Humanized miceHuman immune system engrafted onto NSGDrug testing, HIV, cancer immunotherapy

E. Specialized/Diverse Population Models

Developed to better capture human genetic diversity:
ModelDescription
Collaborative Cross (CC)Panel of inbred strains derived from 8 founder strains - captures broad genetic diversity
Diversity Outbred (DO)Outbred population from CC founders; mirrors human population variation
BXD strainsC57BL/6 x DBA/2 recombinant inbred panel - widely used in systems genetics

RATS (Rattus norvegicus)

Rats are the second most used research animal. Their larger size makes them better suited for surgical manipulation, behavioral studies, pharmacokinetics, and brain imaging compared to mice.

A. Outbred Stocks (Most Common in Research)

StockKey FeaturesPrimary Research Uses
Sprague-Dawley (SD)Albino; most widely used rat; docile; large littersGeneral pharmacology, toxicology, reproductive studies, behavioral research, surgical models
WistarAlbino; slightly smaller than SD; originated in Philadelphia (Wistar Institute)Nutrition, metabolism, cardiovascular studies, general purpose
Long-EvansHooded (black and white); better vision than albino ratsNeurobehavioral research, learning/memory, vision studies

B. Inbred Rat Strains

StrainKey FeaturesPrimary Research Uses
Fischer 344 (F344)Most common inbred rat; highly reproducible; longer lifespan studiesAging research, toxicology (NCI standard), carcinogenicity testing
Lewis (LEW)Susceptible to EAE and autoimmune arthritisAutoimmunity, transplantation, neuroscience
Brown Norway (BN)Resistant to EAE; albino strain derived from wild ratsImmunology, transplantation (often used as donor in graft-vs-host models)
Dahl Salt-Sensitive (DSS)Develops hypertension on high-salt dietsCardiovascular/hypertension research
SHR (Spontaneously Hypertensive Rat)Develops hypertension spontaneously; SHRSP is stroke-prone variantCardiovascular disease, hypertension, stroke
Zucker Fatty (fa/fa)Leptin receptor mutation; obese phenotypeObesity, type 2 diabetes, metabolic syndrome
GK (Goto-Kakizaki)Non-obese diabetic rat; spontaneous T2DMType 2 diabetes research
WKY (Wistar-Kyoto)Normotensive control for SHR; also used in depression modelsCardiovascular control, psychiatry
BUF, DA, F344, LEW, PVGElevated risk of multiple sclerosis-like diseaseNeuroimmunology

C. Mutant and Immunodeficient Rat Models

ModelDefectUses
Nude rat (Foxn1^rnu^)Athymic; T-cell deficient; hairlessXenograft tumor studies
SCID ratT and B cell deficiencyImmune reconstitution, xenotransplantation
Obese Zucker (fa/fa)Leptin receptor mutationMetabolic research

D. Transgenic Rat Models (Emerging)

CRISPR and base-editing advances have enabled transgenic rat models for:
  • Alzheimer's disease (APP, tau mutations)
  • Retinal degeneration
  • Metabolic syndromes
  • Hypertension (hRen/hAGT - human renin-angiotensin system)
Rats are increasingly favored over mice in neurobehavioral and neuroimaging research due to their larger brain size.

Quick Comparison: Mice vs. Rats in Research

FeatureMiceRats
Most used animal?Yes (#1)#2 after mice
Genetic toolsMore advanced (KO, CRISPR, transgenics)Catching up with CRISPR
SizeSmaller (20-30g)Larger (200-500g)
Behavior/cognition studiesGoodBetter (larger brain)
Surgical modelsMore limitedPreferred
CostLowerHigher
Common backgroundInbred strains (C57BL/6, BALB/c)Outbred stocks (SD, Wistar)

Key Suppliers

Major providers of research rodents include:
  • The Jackson Laboratory (JAX) - largest repository of genetically modified mouse strains (~10,000+ strains)
  • Charles River Laboratories - CD-1, C57BL/6, BALB/c, Sprague-Dawley, Wistar, Long-Evans
  • Taconic Biosciences - inbred, transgenic, and humanized models
  • Envigo/Inotiv - Sprague-Dawley, Wistar, Fischer 344
  • NIH Rat Resource & Research Center (RRRC) - well-characterized inbred and mutant rat strains

Summary by Research Application

Disease AreaPreferred Mouse ModelPreferred Rat Model
OncologyC57BL/6, NSG (xenografts), NOD-SCIDFischer 344, athymic nude rat
NeuroscienceC57BL/6, APP/PS1 (Alzheimer's)Sprague-Dawley, Long-Evans
CardiovascularApoE-KO, C57BL/6SHR, Dahl Salt-Sensitive
Diabetes/MetabolicNOD (T1DM), db/db, ob/obZucker fatty, GK rat
ImmunologyC57BL/6, BALB/c, NSGLewis, Brown Norway
AutoimmunityNOD, SJL (EAE)Lewis (EAE, arthritis)
ToxicologyCD-1, Swiss WebsterSprague-Dawley, Fischer 344
Behavioral/AddictionC57BL/6Sprague-Dawley, Long-Evans
AgingC57BL/6, Fischer 344 congenicFischer 344

This covers the principal strains and stocks. Strain selection is one of the most critical decisions in experimental design - the same intervention in C57BL/6 vs. BALB/c mice, or SD vs. Wistar rats, can yield markedly different results due to background genetic differences in immune polarization, metabolism, and behavior.

Make a reference guide PDF for selecting mice/rats for specific research studies

Reading File
Running Command

mkdir -p /tmp/workspace/rodent-guide && ls /tmp/workspace/

Writing File

~/rodent-guide/generate_guide.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import BaseDocTemplate, Frame, PageTemplate
from reportlab.pdfgen import canvas

OUTPUT = "/tmp/workspace/rodent-guide/Rodent_Research_Selection_Guide.pdf"

# ── Color palette ──────────────────────────────────────────────
NAVY      = colors.HexColor("#1a3558")
BLUE      = colors.HexColor("#2563a8")
TEAL      = colors.HexColor("#0d7377")
LIGHT_BG  = colors.HexColor("#eef3fb")
HEADER_BG = colors.HexColor("#1a3558")
ALT_ROW   = colors.HexColor("#f0f5ff")
WHITE     = colors.white
GOLD      = colors.HexColor("#e8a020")
LIGHT_TEAL= colors.HexColor("#d0f0f0")
MOUSE_BG  = colors.HexColor("#e8f0fb")
RAT_BG    = colors.HexColor("#e8f8f2")

# ── Page numbering callback ─────────────────────────────────────
def add_page_number(canvas_obj, doc):
    canvas_obj.saveState()
    canvas_obj.setFont("Helvetica", 8)
    canvas_obj.setFillColor(colors.HexColor("#888888"))
    w, h = A4
    canvas_obj.drawCentredString(w / 2, 1.2 * cm, f"Page {doc.page}")
    canvas_obj.drawString(2 * cm, 1.2 * cm, "Rodent Model Selection Guide  |  Research Reference")
    canvas_obj.restoreState()

# ── Styles ──────────────────────────────────────────────────────
styles = getSampleStyleSheet()

def S(name, parent="Normal", **kw):
    return ParagraphStyle(name, parent=styles[parent], **kw)

style_title    = S("Title2",  fontSize=28, textColor=WHITE,   alignment=TA_CENTER, spaceAfter=4, fontName="Helvetica-Bold")
style_subtitle = S("Sub",     fontSize=13, textColor=GOLD,    alignment=TA_CENTER, spaceAfter=2, fontName="Helvetica")
style_h1       = S("H1",      fontSize=15, textColor=WHITE,   spaceAfter=4, spaceBefore=6, fontName="Helvetica-Bold")
style_h2       = S("H2",      fontSize=12, textColor=NAVY,    spaceAfter=4, spaceBefore=8, fontName="Helvetica-Bold")
style_h3       = S("H3",      fontSize=10, textColor=TEAL,    spaceAfter=2, spaceBefore=6, fontName="Helvetica-Bold")
style_body     = S("Body2",   fontSize=8.5, leading=12, spaceAfter=3)
style_note     = S("Note",    fontSize=8,  textColor=colors.HexColor("#555555"), leading=11, italics=1)
style_toc_item = S("TOCitem", fontSize=9.5, textColor=BLUE, spaceAfter=3, leftIndent=8)
style_bullet   = S("Bullet2", fontSize=8.5, leading=12, leftIndent=14, spaceAfter=2, bulletIndent=4)
style_th       = S("TH",      fontSize=8.5, textColor=WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER)
style_td       = S("TD",      fontSize=8,   leading=11)
style_td_ctr   = S("TDC",     fontSize=8,   leading=11, alignment=TA_CENTER)

def cell(text, style=None, bg=None):
    """Shorthand for a Paragraph cell."""
    s = style or style_td
    return Paragraph(text, s)

def hdr(text):
    return Paragraph(text, style_th)

def section_banner(title, color=NAVY):
    data = [[Paragraph(title, style_h1)]]
    t = Table(data, colWidths=[17*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), color),
        ("TOPPADDING",   (0,0), (-1,-1), 7),
        ("BOTTOMPADDING",(0,0), (-1,-1), 7),
        ("LEFTPADDING",  (0,0), (-1,-1), 12),
    ]))
    return t

# ── Document ────────────────────────────────────────────────────
doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    leftMargin=2*cm, rightMargin=2*cm,
    topMargin=2.2*cm, bottomMargin=2.2*cm,
    title="Rodent Model Selection Guide",
    author="Research Reference",
)

story = []
W = 17 * cm   # usable width

# ═══════════════════════════════════════════════════════════════
#  COVER PAGE
# ═══════════════════════════════════════════════════════════════
cover_data = [[Paragraph("RODENT MODEL<br/>SELECTION GUIDE", style_title)]]
cover_tbl = Table(cover_data, colWidths=[W])
cover_tbl.setStyle(TableStyle([
    ("BACKGROUND", (0,0),(-1,-1), NAVY),
    ("TOPPADDING",   (0,0),(-1,-1), 30),
    ("BOTTOMPADDING",(0,0),(-1,-1), 10),
]))
story.append(cover_tbl)

sub_data = [[Paragraph("Choosing the right Mice &amp; Rat strains for Biomedical Research", style_subtitle)]]
sub_tbl = Table(sub_data, colWidths=[W])
sub_tbl.setStyle(TableStyle([
    ("BACKGROUND", (0,0),(-1,-1), BLUE),
    ("TOPPADDING",   (0,0),(-1,-1), 8),
    ("BOTTOMPADDING",(0,0),(-1,-1), 8),
]))
story.append(sub_tbl)
story.append(Spacer(1, 0.5*cm))

intro = (
    "This reference guide provides a quick-lookup resource for selecting the most appropriate "
    "mouse and rat models for common biomedical research applications. It covers inbred strains, "
    "outbred stocks, immunodeficient models, genetically engineered models, and disease-specific "
    "selections — organized for rapid use at the bench."
)
story.append(Paragraph(intro, style_body))
story.append(Spacer(1, 0.3*cm))
story.append(HRFlowable(width=W, color=GOLD, thickness=2))
story.append(Spacer(1, 0.3*cm))

# TOC
story.append(Paragraph("Contents", style_h2))
toc_items = [
    "1.  Why Rodents? — Key Selection Principles",
    "2.  Inbred Mouse Strains",
    "3.  Outbred Mouse Stocks",
    "4.  Immunodeficient Mouse Models",
    "5.  Transgenic & Knockout Mouse Models",
    "6.  Specialized Diversity Mouse Panels",
    "7.  Common Rat Stocks & Inbred Strains",
    "8.  Specialty & Disease Rat Models",
    "9.  Quick-Reference: Research Application → Model",
    "10. Mice vs. Rats — Head-to-Head Comparison",
    "11. Key Suppliers",
    "12. Strain Selection Tips & Pitfalls",
]
for item in toc_items:
    story.append(Paragraph(item, style_toc_item))

story.append(PageBreak())

# ═══════════════════════════════════════════════════════════════
#  SECTION 1 — Why Rodents
# ═══════════════════════════════════════════════════════════════
story.append(section_banner("1.  Why Rodents? — Key Selection Principles"))
story.append(Spacer(1, 0.3*cm))

principles = [
    ("<b>Genetic homology:</b>", "~85% of mouse protein-coding genes have a human orthologue; rat genome is similarly conserved."),
    ("<b>Rapid reproduction:</b>", "21-day gestation; sexually mature at 6-8 weeks — enables fast generational studies."),
    ("<b>Genetic tools:</b>", "CRISPR, Cre-lox, transgenics, and thousands of characterised strains available off-the-shelf."),
    ("<b>Cost & housing:</b>", "Far less expensive to house and maintain than non-human primates or dogs."),
    ("<b>Reproducibility:</b>", "Inbred strains are near-isogenic — minimises biological noise; outbred stocks reflect population diversity."),
    ("<b>Regulatory acceptance:</b>", "Rodent data are accepted by FDA, EMA, and ICH guidelines for IND/NDA submissions."),
]
for bold, desc in principles:
    story.append(Paragraph(f"{bold} {desc}", style_bullet))

story.append(Spacer(1, 0.4*cm))
story.append(Paragraph(
    "<b>Three core questions before choosing a model:</b>",
    style_body
))
q_data = [
    ["Q1", "Do you need genetic uniformity (reproducibility) or diversity (population modelling)?", "→ Inbred strain vs. outbred stock"],
    ["Q2", "Does the background immune system matter (intact vs. compromised)?",                    "→ Immunocompetent vs. immunodeficient"],
    ["Q3", "Is a specific gene, pathway or human disease phenotype required?",                      "→ Transgenic / knockout / spontaneous mutant"],
]
q_tbl = Table(q_data, colWidths=[1.2*cm, 9.5*cm, 6.3*cm])
q_tbl.setStyle(TableStyle([
    ("BACKGROUND",   (0,0), (0,-1), BLUE),
    ("TEXTCOLOR",    (0,0), (0,-1), WHITE),
    ("FONTNAME",     (0,0), (0,-1), "Helvetica-Bold"),
    ("BACKGROUND",   (1,0), (-1,-1), LIGHT_BG),
    ("FONTSIZE",     (0,0), (-1,-1), 8),
    ("LEADING",      (0,0), (-1,-1), 11),
    ("LEFTPADDING",  (0,0), (-1,-1), 6),
    ("RIGHTPADDING", (0,0), (-1,-1), 6),
    ("TOPPADDING",   (0,0), (-1,-1), 5),
    ("BOTTOMPADDING",(0,0), (-1,-1), 5),
    ("ROWBACKGROUNDS",(1,0),(-1,-1),[LIGHT_BG, ALT_ROW]),
    ("GRID",         (0,0), (-1,-1), 0.3, colors.HexColor("#cccccc")),
    ("VALIGN",       (0,0), (-1,-1), "MIDDLE"),
]))
story.append(q_tbl)
story.append(PageBreak())

# ═══════════════════════════════════════════════════════════════
#  SECTION 2 — Inbred Mouse Strains
# ═══════════════════════════════════════════════════════════════
story.append(section_banner("2.  Inbred Mouse Strains   (Mus musculus)", color=BLUE))
story.append(Spacer(1, 0.25*cm))
story.append(Paragraph(
    "Inbred strains are generated by ≥20 generations of brother-sister mating, producing animals that are "
    ">98% genetically identical. They are the gold standard for mechanistic studies requiring reproducibility.",
    style_body
))
story.append(Spacer(1, 0.2*cm))

mouse_inbred_headers = ["Strain", "Coat", "Immune Bias", "Key Characteristics", "Primary Uses"]
mouse_inbred_rows = [
    ["C57BL/6 (B6)", "Black", "Th1", "Most widely used; high genetic stability; susceptible to HFD-induced obesity; good for transgenics", "Immunology, oncology, neuroscience, metabolic disease, knockout backgrounds"],
    ["BALB/c", "Albino", "Th2", "Docile; good antibody producer; high susceptibility to allergy/asthma models", "Allergy, asthma, hybridoma production, infectious disease, cancer (syngeneic)"],
    ["DBA/2", "Dilute brown", "Th1", "Alcohol preference; susceptible to glaucoma; cardiac sensitivity", "Addiction, ophthalmology, cardiology"],
    ["A/J", "Albino", "Th2", "High lung tumour susceptibility; unusual complement activity", "Lung cancer, asthma, complement studies"],
    ["C3H/He", "Agouti", "Th1", "MMTV-infected; high mammary tumour incidence; strong macrophage response", "Mammary oncology, infectious disease"],
    ["FVB/N", "Albino", "Th1", "Large, clear pronuclei → excellent for microinjection; high litter sizes", "Transgenic generation, oncology"],
    ["129 strains", "Varies", "Mixed", "First ES cell isolation; used as knockout founders; poor behavioural phenotype", "Gene targeting, embryonic stem cells"],
    ["SJL/J", "Albino", "Th1", "Highly susceptible to EAE; reticulosarcoma-prone", "Multiple sclerosis (EAE), autoimmunity"],
    ["NOD", "Albino", "Th1", "Spontaneous autoimmune diabetes; defective NK-cell activity", "Type 1 diabetes, autoimmunity, islet biology"],
    ["NZB/NZW F1", "Black/White", "Th2", "Spontaneous lupus-like nephritis; anti-dsDNA antibodies", "Systemic lupus erythematosus (SLE)"],
    ["MRL/lpr", "Albino", "Mixed", "Fas-deficient; lymphoproliferation; severe autoimmunity", "Autoimmunity, rheumatoid arthritis, SLE"],
    ["AKR/J", "Albino", "Th1", "High spontaneous leukaemia incidence (>90% by 1 year)", "Leukaemia, oncology"],
    ["C57BL/10", "Black", "Th1", "Near-isogenic to C57BL/6; useful for congenic studies", "Muscular dystrophy, immunogenetics"],
]

col_w = [2.2*cm, 1.1*cm, 1.3*cm, 6.5*cm, 5.9*cm]
h_row = [hdr(h) for h in mouse_inbred_headers]
tbl_data = [h_row]
for i, row in enumerate(mouse_inbred_rows):
    bg = MOUSE_BG if i % 2 == 0 else WHITE
    tbl_data.append([cell(row[0], style_td), cell(row[1], style_td_ctr),
                     cell(row[2], style_td_ctr), cell(row[3], style_td),
                     cell(row[4], style_td)])

tbl = Table(tbl_data, colWidths=col_w, repeatRows=1)
tbl.setStyle(TableStyle([
    ("BACKGROUND",   (0,0), (-1,0),  NAVY),
    ("ROWBACKGROUNDS",(0,1),(-1,-1), [MOUSE_BG, WHITE]),
    ("GRID",         (0,0), (-1,-1), 0.3, colors.HexColor("#bbbbbb")),
    ("TOPPADDING",   (0,0), (-1,-1), 4),
    ("BOTTOMPADDING",(0,0), (-1,-1), 4),
    ("LEFTPADDING",  (0,0), (-1,-1), 5),
    ("RIGHTPADDING", (0,0), (-1,-1), 5),
    ("VALIGN",       (0,0), (-1,-1), "TOP"),
]))
story.append(tbl)
story.append(PageBreak())

# ═══════════════════════════════════════════════════════════════
#  SECTION 3 — Outbred Mouse Stocks
# ═══════════════════════════════════════════════════════════════
story.append(section_banner("3.  Outbred Mouse Stocks", color=TEAL))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
    "Outbred stocks maintain genetic diversity within a closed colony. They are called 'stocks' (not strains). "
    "Best suited for toxicology, general pharmacology, and studies requiring population heterogeneity.",
    style_body
))
story.append(Spacer(1, 0.2*cm))

outbred_headers = ["Stock", "Coat", "Key Features", "Best Uses", "Limitations"]
outbred_rows = [
    ["CD-1 (ICR)", "Albino", "Most widely used outbred stock; large litters; docile; broad genetic diversity", "Toxicology, safety/efficacy testing, pharmacology, aging, reproductive studies", "High variability can reduce statistical power"],
    ["Swiss Webster", "Albino", "Hardy; robust breeders; easily maintained", "General purpose, virology, neuroscience, drug screening", "Genetic drift over time between colonies"],
    ["ICR", "Albino", "Similar to CD-1; derived from Swiss mice; used in Asia predominantly", "Pharmacology, toxicology, reproductive biology", "Genetic differences between suppliers"],
    ["NMRI", "Albino", "European outbred; good reproductive performance", "Neuropharmacology, general screening", "Less characterised than CD-1"],
    ["CF-1", "Albino", "Charles River outbred; consistent colony", "Reproductive toxicology, general studies", "Limited genetic characterisation"],
]
col_w2 = [1.9*cm, 1.1*cm, 4.2*cm, 5.3*cm, 4.5*cm]
h_row2 = [hdr(h) for h in outbred_headers]
tbl2_data = [h_row2] + [[cell(r[0]), cell(r[1], style_td_ctr), cell(r[2]), cell(r[3]), cell(r[4])] for r in outbred_rows]
tbl2 = Table(tbl2_data, colWidths=col_w2, repeatRows=1)
tbl2.setStyle(TableStyle([
    ("BACKGROUND",   (0,0), (-1,0),  TEAL),
    ("ROWBACKGROUNDS",(0,1),(-1,-1), [LIGHT_TEAL, WHITE]),
    ("GRID",         (0,0), (-1,-1), 0.3, colors.HexColor("#bbbbbb")),
    ("TOPPADDING",   (0,0), (-1,-1), 4),
    ("BOTTOMPADDING",(0,0), (-1,-1), 4),
    ("LEFTPADDING",  (0,0), (-1,-1), 5),
    ("VALIGN",       (0,0), (-1,-1), "TOP"),
]))
story.append(tbl2)

# ═══════════════════════════════════════════════════════════════
#  SECTION 4 — Immunodeficient Models
# ═══════════════════════════════════════════════════════════════
story.append(Spacer(1, 0.5*cm))
story.append(section_banner("4.  Immunodeficient Mouse Models", color=colors.HexColor("#7b2d8b")))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
    "Immunodeficient mice accept xenografts (human tumour or tissue transplants) and are essential for "
    "humanisation experiments and adoptive transfer studies.",
    style_body
))
story.append(Spacer(1, 0.2*cm))

immuno_hdrs = ["Model", "Immune Defect", "Engraftment Capacity", "Primary Uses"]
immuno_rows = [
    ["Nude (Foxn1<sup>nu</sup>)", "No thymus → T-cell deficient; B cells present but dysfunctional", "Moderate (human tumour xenografts)", "Xenograft tumour studies, monoclonal antibody production"],
    ["SCID (CB-17)", "No functional T or B cells (DNA-PKcs mutation)", "Good (human cell/tissue engraftment)", "Human xenografts, hematopoietic reconstitution, HIV research"],
    ["NSG (NOD-SCID gamma)", "No T, B, or NK cells; defective complement; IL-2Rγ null", "Excellent — gold standard for human engraftment", "Humanised mouse models, PDX tumours, CAR-T cell testing, stem cell research"],
    ["NRG (NOD-Rag1-gamma)", "Similar to NSG; Rag1 knockout background", "Excellent", "Human immune reconstitution, PDX models"],
    ["Rag1/Rag2 KO", "No mature T or B cells", "Good", "Adoptive immune transfer, lymphocyte reconstitution"],
    ["Beige (Chediak-Higashi)", "NK cell dysfunction; neutrophil defects", "Moderate", "NK cell biology, innate immunity studies"],
    ["BRG (BALB/c-Rag2-gamma)", "No T, B, NK cells on BALB/c background", "Excellent", "Xenografts, humanisation on BALB/c background"],
]
col_w3 = [2.8*cm, 4.5*cm, 3.5*cm, 6.2*cm]
h_row3 = [hdr(h) for h in immuno_hdrs]
tbl3_data = [h_row3] + [[cell(r[0]), cell(r[1]), cell(r[2]), cell(r[3])] for r in immuno_rows]
tbl3 = Table(tbl3_data, colWidths=col_w3, repeatRows=1)
tbl3.setStyle(TableStyle([
    ("BACKGROUND",   (0,0), (-1,0),  colors.HexColor("#7b2d8b")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1), [colors.HexColor("#f5eefa"), WHITE]),
    ("GRID",         (0,0), (-1,-1), 0.3, colors.HexColor("#cccccc")),
    ("TOPPADDING",   (0,0), (-1,-1), 4),
    ("BOTTOMPADDING",(0,0), (-1,-1), 4),
    ("LEFTPADDING",  (0,0), (-1,-1), 5),
    ("VALIGN",       (0,0), (-1,-1), "TOP"),
]))
story.append(tbl3)
story.append(PageBreak())

# ═══════════════════════════════════════════════════════════════
#  SECTION 5 — Transgenic / Knockout Models
# ═══════════════════════════════════════════════════════════════
story.append(section_banner("5.  Transgenic & Knockout Mouse Models", color=colors.HexColor("#c0392b")))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
    "Genetically engineered mouse models (GEMMs) allow precise manipulation of gene function. "
    "Created via traditional pronuclear injection, ES cell targeting, or CRISPR-Cas9.",
    style_body
))
story.append(Spacer(1, 0.2*cm))

gemm_hdrs = ["Model / Name", "Genetic Modification", "Disease Modelled", "Research Use"]
gemm_rows = [
    ["APP/PS1", "Human APP + PSEN1 mutations (transgenic)", "Alzheimer's disease (amyloid plaques)", "Neurodegeneration, drug testing for AD"],
    ["5xFAD", "5 AD mutations in APP & PSEN1", "Aggressive early-onset Alzheimer's", "Amyloid biology, neuroinflammation"],
    ["3xTg-AD", "APP, PSEN1, tau mutations", "Amyloid + tau pathology (full AD spectrum)", "Full AD pathology, tau therapeutics"],
    ["db/db", "Leptin receptor knockout (BKS background)", "Type 2 diabetes + obesity", "Metabolic syndrome, insulin resistance, nephropathy"],
    ["ob/ob", "Leptin gene knockout", "Severe obesity + hyperinsulinaemia", "Obesity, metabolic studies"],
    ["ApoE-KO", "ApoE gene knockout", "Atherosclerosis (on HFD)", "Cardiovascular disease, lipid metabolism"],
    ["LDLR-KO", "LDL receptor knockout", "Hypercholesterolaemia, atherosclerosis", "Cardiovascular, statin testing"],
    ["p53-KO", "Trp53 knockout", "Cancer predisposition model", "Tumour suppressor function, DNA damage"],
    ["PyMT", "MMTV-PyMT transgene", "Spontaneous mammary tumours", "Breast cancer, metastasis research"],
    ["hACE2 transgenic", "Human ACE2 expression", "SARS-CoV-2 susceptibility", "COVID-19 research, antiviral testing"],
    ["Cre-lox (conditional KO)", "Tissue-specific Cre recombinase + floxed gene", "Organ-specific gene deletion", "Cell-type-specific gene function"],
    ["Reporter lines (GFP/Luciferase)", "Fluorescent/bioluminescent reporters", "Cell tracking, lineage tracing", "In vivo imaging, developmental biology"],
]
col_w4 = [3.0*cm, 4.0*cm, 4.0*cm, 6.0*cm]
h_row4 = [hdr(h) for h in gemm_hdrs]
tbl4_data = [h_row4] + [[cell(r[0]), cell(r[1]), cell(r[2]), cell(r[3])] for r in gemm_rows]
tbl4 = Table(tbl4_data, colWidths=col_w4, repeatRows=1)
tbl4.setStyle(TableStyle([
    ("BACKGROUND",   (0,0), (-1,0),  colors.HexColor("#c0392b")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1), [colors.HexColor("#fdf0ee"), WHITE]),
    ("GRID",         (0,0), (-1,-1), 0.3, colors.HexColor("#cccccc")),
    ("TOPPADDING",   (0,0), (-1,-1), 4),
    ("BOTTOMPADDING",(0,0), (-1,-1), 4),
    ("LEFTPADDING",  (0,0), (-1,-1), 5),
    ("VALIGN",       (0,0), (-1,-1), "TOP"),
]))
story.append(tbl4)

story.append(Spacer(1, 0.4*cm))
story.append(Paragraph(
    "<b>Note on background strain:</b> The genetic background profoundly influences phenotype. "
    "Most knockouts are backcrossed onto C57BL/6 for uniformity. Always match controls to the exact background strain and generation.",
    style_note
))
story.append(PageBreak())

# ═══════════════════════════════════════════════════════════════
#  SECTION 6 — Diversity Panels
# ═══════════════════════════════════════════════════════════════
story.append(section_banner("6.  Specialised Diversity Mouse Panels", color=colors.HexColor("#2d6a4f")))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
    "These resources capture broad genetic diversity and are recommended by NIH/Infrafrontier "
    "to improve translational relevance and reduce single-strain bias.",
    style_body
))
story.append(Spacer(1, 0.2*cm))

div_hdrs = ["Panel", "Description", "Founders", "Best Uses"]
div_rows = [
    ["Collaborative Cross (CC)", "Panel of ~60 inbred strains derived from 8 genetically diverse founder strains", "A/J, C57BL/6J, 129S1, NOD, NZO, CAST, PWK, WSB", "Complex trait analysis, infectious disease, cancer susceptibility, population genomics"],
    ["Diversity Outbred (DO)", "Outbred population continuously bred from CC founders; captures maximum allelic diversity", "Same 8 founders as CC", "QTL mapping, drug response variability, microbiome studies, precision medicine modelling"],
    ["BXD strains", "Recombinant inbred panel from C57BL/6 x DBA/2 cross; 100+ strains", "C57BL/6 + DBA/2", "Systems genetics, gene expression QTL, neuroscience, alcohol studies"],
    ["Hybrid F1 (e.g. B6D2F1)", "First-generation cross of two inbred strains; heterozygous but uniform", "Two inbred strains", "Aging studies (NIA aging panel), tumour challenge models"],
]
col_w5 = [3.2*cm, 5.5*cm, 3.8*cm, 4.5*cm]
h_row5 = [hdr(h) for h in div_hdrs]
tbl5_data = [h_row5] + [[cell(r[0]), cell(r[1]), cell(r[2]), cell(r[3])] for r in div_rows]
tbl5 = Table(tbl5_data, colWidths=col_w5, repeatRows=1)
tbl5.setStyle(TableStyle([
    ("BACKGROUND",   (0,0), (-1,0),  colors.HexColor("#2d6a4f")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1), [colors.HexColor("#d8f3dc"), WHITE]),
    ("GRID",         (0,0), (-1,-1), 0.3, colors.HexColor("#cccccc")),
    ("TOPPADDING",   (0,0), (-1,-1), 5),
    ("BOTTOMPADDING",(0,0), (-1,-1), 5),
    ("LEFTPADDING",  (0,0), (-1,-1), 5),
    ("VALIGN",       (0,0), (-1,-1), "TOP"),
]))
story.append(tbl5)
story.append(PageBreak())

# ═══════════════════════════════════════════════════════════════
#  SECTION 7 — RAT STOCKS AND STRAINS
# ═══════════════════════════════════════════════════════════════
story.append(section_banner("7.  Rat Stocks & Inbred Strains   (Rattus norvegicus)", color=colors.HexColor("#1a6b3c")))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
    "The rat is the #2 most used research animal. Larger size enables surgical manipulations, "
    "catheter implantation, serial blood sampling, and detailed behavioural phenotyping. "
    "CRISPR has rapidly expanded the transgenic rat toolkit.",
    style_body
))
story.append(Spacer(1, 0.3*cm))

story.append(Paragraph("Outbred Rat Stocks", style_h3))
outbred_rat_hdrs = ["Stock", "Coat", "Key Features", "Primary Research Uses"]
outbred_rat_rows = [
    ["Sprague-Dawley (SD)", "Albino", "Most widely used rat worldwide; docile; excellent breeders; large litters; predictable growth curves", "General pharmacology/toxicology, reproductive toxicology, behavioral studies, surgical models, cardiovascular, neuroscience"],
    ["Wistar", "Albino", "Slightly smaller than SD; originated at Wistar Institute (1906); calmer temperament; uniform growth", "Nutrition, metabolism, cardiovascular research, general purpose, teaching labs"],
    ["Long-Evans", "Hooded (black/white)", "Intact visual system (pigmented retina); good spatial learning; superior vision to albino rats", "Neurobehavioral studies, learning & memory, vision research, addiction models"],
    ["Holtzman", "Albino", "SD-derived; used for neuroscience and drug studies", "Neuroscience, pharmacology"],
]
col_w6 = [2.8*cm, 1.2*cm, 6.0*cm, 7.0*cm]
h_row6 = [hdr(h) for h in outbred_rat_hdrs]
tbl6 = Table([h_row6] + [[cell(r[0]), cell(r[1], style_td_ctr), cell(r[2]), cell(r[3])] for r in outbred_rat_rows],
             colWidths=col_w6, repeatRows=1)
tbl6.setStyle(TableStyle([
    ("BACKGROUND",   (0,0), (-1,0),  colors.HexColor("#1a6b3c")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1), [RAT_BG, WHITE]),
    ("GRID",         (0,0), (-1,-1), 0.3, colors.HexColor("#cccccc")),
    ("TOPPADDING",   (0,0), (-1,-1), 4), ("BOTTOMPADDING",(0,0), (-1,-1), 4),
    ("LEFTPADDING",  (0,0), (-1,-1), 5), ("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(tbl6)

story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Inbred Rat Strains", style_h3))

inbred_rat_hdrs = ["Strain", "Coat", "Key Feature / Phenotype", "Primary Research Uses"]
inbred_rat_rows = [
    ["Fischer 344 (F344)", "Albino", "Most common inbred rat; long lifespan studies; NCI standard toxicology strain; mononuclear cell leukaemia with age", "Aging research, carcinogenicity/toxicology testing (NCI), oncology"],
    ["Lewis (LEW)", "Albino", "Highly susceptible to EAE and adjuvant-induced arthritis; accepts allografts poorly", "Autoimmunity (EAE, RA), transplantation immunology, addiction"],
    ["Brown Norway (BN)", "Agouti", "Resistant to EAE; often used as allograft donor; Th2-biased", "Immunology, transplantation (donor strain), allergy"],
    ["Wistar-Kyoto (WKY)", "Albino", "Normotensive control for SHR; also a model of depression/anxiety", "Cardiovascular control, psychiatric disease models"],
    ["SHR (Spontaneously Hypertensive Rat)", "Albino", "Develops hypertension spontaneously by 6-8 weeks; SHRSP variant is stroke-prone", "Hypertension, cardiovascular disease, stroke"],
    ["Dahl Salt-Sensitive (SS/Jr)", "Albino", "Develops severe hypertension on high-salt diet; renal damage", "Hypertension, renal disease, cardiovascular"],
    ["Zucker Fatty (fa/fa)", "Albino", "Leptin receptor mutation; severely obese; insulin resistant; hyperlipidaemia", "Obesity, type 2 diabetes, metabolic syndrome, cardiovascular"],
    ["Goto-Kakizaki (GK)", "Albino", "Non-obese spontaneous Type 2 diabetic rat; moderate hyperglycaemia", "Type 2 diabetes (non-obese model), pancreatic beta-cell research"],
    ["Brattleboro Rat", "Albino", "Vasopressin (ADH) deficiency; diabetes insipidus phenotype", "Kidney/renal physiology, water balance, ADH research"],
    ["BUF / DA / PVG", "Various", "Elevated multiple sclerosis-like susceptibility", "Neuroimmunology, MS models"],
]
col_w7 = [2.8*cm, 1.2*cm, 6.5*cm, 6.5*cm]
h_row7 = [hdr(h) for h in inbred_rat_hdrs]
tbl7 = Table([h_row7] + [[cell(r[0]), cell(r[1], style_td_ctr), cell(r[2]), cell(r[3])] for r in inbred_rat_rows],
             colWidths=col_w7, repeatRows=1)
tbl7.setStyle(TableStyle([
    ("BACKGROUND",   (0,0), (-1,0),  colors.HexColor("#155c34")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1), [RAT_BG, WHITE]),
    ("GRID",         (0,0), (-1,-1), 0.3, colors.HexColor("#cccccc")),
    ("TOPPADDING",   (0,0), (-1,-1), 4), ("BOTTOMPADDING",(0,0), (-1,-1), 4),
    ("LEFTPADDING",  (0,0), (-1,-1), 5), ("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(tbl7)
story.append(PageBreak())

# ═══════════════════════════════════════════════════════════════
#  SECTION 8 — Specialty / Immunodeficient Rat Models
# ═══════════════════════════════════════════════════════════════
story.append(section_banner("8.  Specialty & Immunodeficient Rat Models", color=colors.HexColor("#6d2b7a")))
story.append(Spacer(1, 0.2*cm))

spec_rat_hdrs = ["Model", "Defect / Feature", "Primary Uses"]
spec_rat_rows = [
    ["Nude Rat (Foxn1<sup>rnu</sup>)", "Athymic; T-cell deficient; hairless; B cells present", "Human tumour xenografts, cancer biology, monoclonal antibody production"],
    ["SCID Rat", "No functional T or B cells", "Xenotransplantation, immune reconstitution, human cell engraftment"],
    ["hRen/hAGT Rat", "Human renin-angiotensin transgene", "Hypertension, renin-angiotensin system, antihypertensive drug testing"],
    ["SD-Tg(CAG-EGFP)", "Ubiquitous GFP expression", "Cell tracking, transplantation, developmental studies"],
    ["Alzheimer Rat (CRISPR APP/tau)", "Human APP + tau mutations via CRISPR", "Alzheimer's disease, tau biology, neurodegeneration drug testing"],
    ["SHR/cp", "SHR + corpulent (obese) trait", "Metabolic syndrome with hypertension, cardiovascular-metabolic comorbidity"],
]
col_w8 = [3.5*cm, 6.5*cm, 7.0*cm]
h_row8 = [hdr(h) for h in spec_rat_hdrs]
tbl8 = Table([h_row8] + [[cell(r[0]), cell(r[1]), cell(r[2])] for r in spec_rat_rows],
             colWidths=col_w8, repeatRows=1)
tbl8.setStyle(TableStyle([
    ("BACKGROUND",   (0,0), (-1,0),  colors.HexColor("#6d2b7a")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1), [colors.HexColor("#f5eefa"), WHITE]),
    ("GRID",         (0,0), (-1,-1), 0.3, colors.HexColor("#cccccc")),
    ("TOPPADDING",   (0,0), (-1,-1), 4), ("BOTTOMPADDING",(0,0), (-1,-1), 4),
    ("LEFTPADDING",  (0,0), (-1,-1), 5), ("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(tbl8)
story.append(PageBreak())

# ═══════════════════════════════════════════════════════════════
#  SECTION 9 — Quick Reference: Research Application → Model
# ═══════════════════════════════════════════════════════════════
story.append(section_banner("9.  Quick-Reference: Research Application → Recommended Model", color=GOLD))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
    "Use this table when you know your research area and need rapid model selection guidance.",
    style_body
))
story.append(Spacer(1, 0.2*cm))

quick_hdrs = ["Research Area", "First-Choice Mouse", "First-Choice Rat", "Notes"]
quick_rows = [
    ["Oncology — syngeneic tumours",     "C57BL/6 (with B16, LLC, MC38 tumours)\nBALB/c (with CT26, 4T1)",
     "Fischer 344",
     "Match tumour cell line to host strain MHC haplotype"],
    ["Oncology — xenograft (human)",     "NSG or NRG (immunodeficient)",
     "Nude or SCID rat",
     "NSG gives best engraftment; use PDX for translational relevance"],
    ["Immunology — Th1 responses",       "C57BL/6",       "Lewis",         "C57BL/6 is strongly Th1-biased"],
    ["Immunology — Th2/allergy",         "BALB/c or A/J", "Brown Norway",  "BALB/c best for IgE and allergy models"],
    ["Autoimmunity (EAE/MS)",            "SJL/J (relapsing-remitting EAE)\nC57BL/6 (chronic EAE)", "Lewis rat",  "EAE induction protocol varies by strain"],
    ["Type 1 Diabetes",                  "NOD mouse",     "LEW.1AR1/Ztm-iddm", "NOD most studied; monitor for sex differences"],
    ["Type 2 Diabetes / Obesity",        "db/db or ob/ob (B6 background)", "Zucker Fatty (fa/fa) or GK rat", "GK for non-obese T2DM; Zucker for obese T2DM"],
    ["Cardiovascular / Hypertension",    "ApoE-KO or LDLR-KO (on HFD)",  "SHR or Dahl Salt-Sensitive",  "Rats preferred for BP telemetry and cardiac surgery"],
    ["Atherosclerosis",                  "ApoE-KO + high-fat diet",       "LDLR-KO rat (CRISPR)",         "ApoE-KO on C57BL/6 most standard"],
    ["Alzheimer's Disease",              "APP/PS1, 5xFAD, 3xTg-AD",      "hAPP/tau CRISPR rat",           "5xFAD for fast amyloid accumulation; 3xTg for tau"],
    ["Parkinson's Disease",              "C57BL/6 (MPTP, rotenone models)", "Sprague-Dawley (6-OHDA)",    "Rats preferred for motor behaviour readouts"],
    ["Stroke / Brain Injury",            "C57BL/6 (MCAo model)",          "Sprague-Dawley or Wistar",      "Rats preferred — larger brain, better imaging, surgery"],
    ["Addiction / Reward",               "C57BL/6 (high alcohol preference)", "Sprague-Dawley or Long-Evans", "Long-Evans preferred for operant behaviour tasks"],
    ["Depression / Anxiety",             "C57BL/6 (stress models)",       "WKY rat (genetic model); SD (CMS)", "Forced swim, social defeat stress protocols"],
    ["Toxicology / Safety Testing",      "CD-1 (ICR) outbred",            "Sprague-Dawley (ICH guideline)", "ICH S1B/S5 guidelines specify SD and CD-1"],
    ["Reproductive Toxicology",          "CD-1 or Swiss Webster",         "Sprague-Dawley",                "SD timed-pregnant widely used for developmental tox"],
    ["Infectious Disease (bacterial)",   "C57BL/6 or BALB/c",             "Wistar or SD",                  "Strain susceptibility varies by pathogen"],
    ["Infectious Disease (viral)",       "C57BL/6, hACE2 transgenic (COVID)", "Cotton rat for RSV (Sigmodon hispidus)", "Cotton rat is gold standard for RSV research"],
    ["Kidney / Renal Disease",           "C57BL/6 (UUO, cisplatin models)", "Dahl SS, Zucker Diabetic Fatty", "Rats better for surgical renal models"],
    ["Aging Research",                   "C57BL/6, F1 hybrids (B6D2F1)",  "Fischer 344 / F344xBN F1 hybrid", "NIA distributes aged rodents to researchers"],
    ["Humanised Models / PDX",           "NSG → engraft human HSCs or PDX", "NSG rat equivalent",           "NSG + human cytokine support for best reconstitution"],
    ["Gene Function Studies",            "Cre-lox conditional KO on C57BL/6", "CRISPR KO rat",             "Use congenic controls; validate Cre specificity"],
    ["Drug Pharmacokinetics (PK/PD)",    "CD-1 or C57BL/6",               "Sprague-Dawley",                "Rats allow serial sampling; larger blood volumes"],
]
col_w9 = [3.5*cm, 4.3*cm, 4.3*cm, 4.9*cm]
h_row9 = [hdr(h) for h in quick_hdrs]
tbl9_data = [h_row9]
for i, r in enumerate(quick_rows):
    bg = colors.HexColor("#fffbec") if i % 2 == 0 else WHITE
    tbl9_data.append([cell(r[0]), cell(r[1]), cell(r[2]), cell(r[3])])
tbl9 = Table(tbl9_data, colWidths=col_w9, repeatRows=1)
tbl9.setStyle(TableStyle([
    ("BACKGROUND",   (0,0), (-1,0),  colors.HexColor("#b77a00")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1), [colors.HexColor("#fffbec"), WHITE]),
    ("GRID",         (0,0), (-1,-1), 0.3, colors.HexColor("#dddddd")),
    ("TOPPADDING",   (0,0), (-1,-1), 4), ("BOTTOMPADDING",(0,0), (-1,-1), 4),
    ("LEFTPADDING",  (0,0), (-1,-1), 5), ("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(tbl9)
story.append(PageBreak())

# ═══════════════════════════════════════════════════════════════
#  SECTION 10 — Mice vs Rats comparison
# ═══════════════════════════════════════════════════════════════
story.append(section_banner("10.  Mice vs. Rats — Head-to-Head Comparison", color=NAVY))
story.append(Spacer(1, 0.2*cm))

comp_hdrs = ["Feature", "Mouse (Mus musculus)", "Rat (Rattus norvegicus)"]
comp_rows = [
    ["Popularity",          "#1 most used lab animal",                  "#2 most used lab animal"],
    ["Body weight",         "20–30 g",                                  "200–500 g"],
    ["Lifespan",            "~2 years",                                 "~2.5–3 years"],
    ["Gestation",           "~21 days",                                 "~22 days"],
    ["Litter size",         "8–12 pups",                                "8–14 pups"],
    ["Cost",                "Lower",                                    "Higher (cage space, feed)"],
    ["Genetic tools",       "Extensive (knockouts, transgenics, CRISPR, 10,000+ JAX strains)", "Rapidly expanding via CRISPR"],
    ["Surgical suitability","Limited by size; feasible",               "Preferred — larger vessels, catheterisation, organ access"],
    ["Behavioural studies", "Good; extensive validated tests",          "Excellent; larger brain, richer repertoire"],
    ["Brain imaging (MRI)", "Challenging (small size)",                 "Much better (larger brain)"],
    ["Serial blood sampling","Difficult (<0.1 mL/draw)",               "Practical (jugular/carotid catheter)"],
    ["Pharmacokinetics",    "Acceptable; volume limitations",           "Preferred for PK/PD studies"],
    ["Husbandry",           "Easier, cheaper",                         "More space, more food"],
    ["Common background",   "Inbred strains (C57BL/6, BALB/c)",        "Outbred stocks (SD, Wistar)"],
    ["Regulatory toxicology","ICH-accepted outbred: CD-1",             "ICH-accepted outbred: Sprague-Dawley"],
    ["Neuroscience preference","Standard for genetics",                 "Preferred for behaviour, physiology, surgical"],
]
col_w10 = [4.0*cm, 6.5*cm, 6.5*cm]
h_row10 = [hdr(h) for h in comp_hdrs]
tbl10_data = [h_row10]
for i, r in enumerate(comp_rows):
    tbl10_data.append([cell(r[0], style_td), cell(r[1], style_td), cell(r[2], style_td)])
tbl10 = Table(tbl10_data, colWidths=col_w10, repeatRows=1)
tbl10.setStyle(TableStyle([
    ("BACKGROUND",   (0,0), (-1,0),   NAVY),
    ("BACKGROUND",   (1,1), (1,-1),   MOUSE_BG),
    ("BACKGROUND",   (2,1), (2,-1),   RAT_BG),
    ("ROWBACKGROUNDS",(0,1),(0,-1),   [LIGHT_BG, ALT_ROW]),
    ("GRID",         (0,0), (-1,-1),  0.3, colors.HexColor("#cccccc")),
    ("TOPPADDING",   (0,0), (-1,-1),  4), ("BOTTOMPADDING",(0,0), (-1,-1), 4),
    ("LEFTPADDING",  (0,0), (-1,-1),  5), ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("FONTNAME",     (0,1), (0,-1),   "Helvetica-Bold"),
    ("FONTSIZE",     (0,1), (0,-1),   8),
]))
story.append(tbl10)
story.append(PageBreak())

# ═══════════════════════════════════════════════════════════════
#  SECTION 11 — Key Suppliers
# ═══════════════════════════════════════════════════════════════
story.append(section_banner("11.  Key Suppliers & Repositories", color=colors.HexColor("#34495e")))
story.append(Spacer(1, 0.2*cm))

sup_hdrs = ["Supplier", "Speciality", "Notable Strains/Stocks", "Website"]
sup_rows = [
    ["The Jackson Laboratory (JAX)", "Largest mouse repository globally; 10,000+ strains; cryopreservation", "C57BL/6J, BALB/cJ, NOD/ShiLtJ, NSG, 5xFAD, DO, CC strains", "jax.org"],
    ["Charles River Laboratories", "Most widely used commercial supplier; GLP-certified facilities", "CD-1, C57BL/6, BALB/c, Sprague-Dawley, Wistar, Long-Evans", "criver.com"],
    ["Taconic Biosciences", "Custom transgenics; humanised models; germ-free rodents", "NSG, NRG, GEMM service, germ-free C57BL/6", "taconic.com"],
    ["Envigo / Inotiv", "Toxicology-grade animals; GLP stocks", "SD, Wistar, Fischer 344, CD-1, Beagle", "envigo.com"],
    ["Janvier Labs (EU)", "European supplier; SPF-certified; FELASA health monitoring", "C57BL/6J, BALB/cJ, Wistar, SD, RjHan:WI", "janvier-labs.com"],
    ["NIH Rat Resource & Research Center (RRRC)", "Rat strains, cryopreservation, IVF services", "Inbred, hybrid, mutant rat strains", "rrrc.missouri.edu"],
    ["MMRRC (Mouse Mutant Resource & Research Center)", "Mutant and knockout mouse strains; NIH-funded", "Thousands of GEMM lines", "mmrrc.org"],
    ["European Mouse Mutant Archive (EMMA/Infrafrontier)", "EU repository; CC strains, mutants", "CC founder and descendant strains", "infrafrontier.eu"],
]
col_w11 = [3.5*cm, 4.0*cm, 5.5*cm, 4.0*cm]
h_row11 = [hdr(h) for h in sup_hdrs]
tbl11_data = [h_row11] + [[cell(r[0]), cell(r[1]), cell(r[2]), cell(r[3])] for r in sup_rows]
tbl11 = Table(tbl11_data, colWidths=col_w11, repeatRows=1)
tbl11.setStyle(TableStyle([
    ("BACKGROUND",   (0,0), (-1,0),  colors.HexColor("#34495e")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1), [LIGHT_BG, WHITE]),
    ("GRID",         (0,0), (-1,-1), 0.3, colors.HexColor("#cccccc")),
    ("TOPPADDING",   (0,0), (-1,-1), 4), ("BOTTOMPADDING",(0,0), (-1,-1), 4),
    ("LEFTPADDING",  (0,0), (-1,-1), 5), ("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(tbl11)

# ═══════════════════════════════════════════════════════════════
#  SECTION 12 — Tips & Pitfalls
# ═══════════════════════════════════════════════════════════════
story.append(Spacer(1, 0.5*cm))
story.append(section_banner("12.  Strain Selection Tips & Common Pitfalls", color=colors.HexColor("#c0392b")))
story.append(Spacer(1, 0.2*cm))

tips = [
    ("<b>Background strain matters enormously.</b>", "The same gene knockout can produce opposite phenotypes on C57BL/6 vs. BALB/c backgrounds. Always backcross to ≥10 generations onto your target background before publishing."),
    ("<b>Sex is a biological variable.</b>",          "NIH mandates inclusion of both sexes. NOD diabetes incidence differs markedly by sex. SHR males develop hypertension earlier than females."),
    ("<b>Supplier drift is real.</b>",                "C57BL/6J (Jackson) differs genetically from C57BL/6N (other suppliers) — the Nnt mutation affects metabolism. Always specify sub-strain (J vs. N)."),
    ("<b>Age and housing matter.</b>",                "Gut microbiome, circadian rhythm, group housing, and bedding all affect experimental outcomes. Report all husbandry details."),
    ("<b>Always use matched controls.</b>",           "Littermate wild-type controls are preferred over vendor controls. For knockouts, use the same F-generation and cross."),
    ("<b>Albino vs. pigmented.</b>",                  "Albino strains (BALB/c, SD) have poor vision — avoid visual behaviour tasks. Use pigmented strains (C57BL/6, Long-Evans) for vision/retina research."),
    ("<b>Pilot your model.</b>",                      "Phenotype penetrance and severity often vary between facilities. Run a small pilot to validate the phenotype in your specific vivarium."),
    ("<b>Consider sample size and power.</b>",         "Inbred strains reduce variance, requiring fewer animals. Outbred stocks have higher variance, requiring larger cohorts — factor this into power calculations."),
    ("<b>Health status.</b>",                          "Specify SPF (specific pathogen free) status. Helicobacter pylori, Pasteurella, and MHV can confound immunology and GI experiments silently."),
]
for bold, desc in tips:
    story.append(Paragraph(f"• {bold} {desc}", style_bullet))
    story.append(Spacer(1, 0.1*cm))

story.append(Spacer(1, 0.3*cm))
story.append(HRFlowable(width=W, color=GOLD, thickness=2))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
    "<b>References:</b> Wei et al., J Invest Dermatol (2026) · Kong &amp; Buzney, JAMA Dermatol (2026) · "
    "Merck Veterinary Manual (2024) · NIH ORIP Rodent Models Fact Sheet (2025) · "
    "The Jackson Laboratory strain resources (jax.org) · Labome Laboratory Mice and Rats survey",
    style_note
))

# ── Build ──────────────────────────────────────────────────────
doc.build(story, onFirstPage=add_page_number, onLaterPages=add_page_number)
print(f"PDF generated: {OUTPUT}")
Running Command

cd /tmp/workspace/rodent-guide && python generate_guide.py 2>&1

Running Command

ls -lh /tmp/workspace/rodent-guide/

Your reference guide PDF is ready! Here's a summary of what's included:

Rodent Research Selection Guide

PDF Document · PDF


What's inside (12 sections):

SectionContent
1Why Rodents? - Key selection principles & 3 core decision questions
2Inbred Mouse Strains - C57BL/6, BALB/c, NOD, SJL, NZB/W, MRL/lpr, A/J, FVB, C3H, 129, DBA/2, AKR + immune bias & uses
3Outbred Mouse Stocks - CD-1, Swiss Webster, ICR, NMRI, CF-1
4Immunodeficient Mouse Models - Nude, SCID, NSG, NRG, Rag KO, Beige, BRG
5Transgenic & Knockout Models - APP/PS1, 5xFAD, db/db, ApoE-KO, hACE2, Cre-lox, reporter lines
6Diversity Panels - Collaborative Cross, Diversity Outbred, BXD, F1 hybrids
7Rat Stocks & Inbred Strains - SD, Wistar, Long-Evans, Fischer 344, Lewis, SHR, Dahl SS, Zucker, GK, Brattleboro
8Specialty Rat Models - Nude rat, SCID rat, hRen/hAGT, Alzheimer CRISPR rat
9Quick-Reference Table - 23 research areas mapped to first-choice mouse and rat models
10Mice vs. Rats Head-to-Head - 16 feature comparisons
11Key Suppliers - JAX, Charles River, Taconic, Envigo, RRRC, MMRRC, EMMA
129 critical strain selection tips & pitfalls (background strain, sex, supplier drift, etc.)

defeciency of oxidative phosphorylation- def in appearance of mitochondrial fragementation - neurodegeneration-loss of balance in mitochondrial dynamics-large production of reactive oxygen disease-post transitional modification of protein image

Reading File
Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.

image

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.

Tau, a Microtubule-associated protein, was identified in 1975 by Weingarten et al.[1], encoded by 16 exons comprising the MAPT gene. Tau is an intrinsically disordered, natively unfolded, highly soluble protein found on chromosome 17q21.31. It promotes the assembly and stabilisation of microtubules [2]. It is a single-chain isoform produced by alternative splicing of 6 isoforms, ranging from 352 to 441 amino acids, that contains either {0N,1N or 2N} amino-terminal inserts and {3R or 4R} MTB (Microtubule binding repeats) [1] Specific tau isoforms are expressed in the peripheral nervous system. Tau is predominantly expressed in the CNS, where it is augmented in neuronal axons to maintain the axonal cytoskeleton and microtubule stability; low levels of tau expression have been detected in the salivary gland, testes, pancreas, and adipose tissue mark citation

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.
This is a shared conversation. Sign in to Orris to start your own chat.