Dopamine in psychiatry
"dopamine" AND "psychiatry" AND "schizophrenia"
| Pathway | Origin → Target | Psychiatric/Clinical Role |
|---|---|---|
| Mesolimbic | VTA → nucleus accumbens, limbic areas | Reward, motivation, pleasure; hyperactivity = positive psychotic symptoms |
| Mesocortical | VTA → prefrontal cortex (DLPFC & vmPFC) | Cognition, executive function, affect; hypoactivity = negative/cognitive symptoms of schizophrenia |
| Nigrostriatal | Substantia nigra → striatum/basal ganglia | Motor control; D2 blockade here = EPS, tardive dyskinesia |
| Tuberoinfundibular | Hypothalamus → anterior pituitary | Tonic inhibition of prolactin; D2 blockade here → hyperprolactinemia |
| Thalamic | Multiple midbrain sites → thalamus | Sensory gating; less studied clinically |

| Region | DA State | Symptom Cluster |
|---|---|---|
| Mesolimbic/mesostriatal (subcortical) | Hyperdopaminergia | Positive symptoms: hallucinations, delusions, paranoia |
| Mesocortical → DLPFC | Hypodopaminergia | Negative symptoms: flat affect, avolition, alogia |
| Mesocortical → vmPFC | Hypoactivity | Affective/cognitive symptoms: depression, anhedonia |
| Drug Class | Mechanism | Pathway Effects |
|---|---|---|
| First-generation (e.g., haloperidol) | D2 antagonist | Blocks all 5 pathways - high EPS and prolactin risk |
| Second-generation (e.g., risperidone, olanzapine) | D2 + 5-HT2A antagonism | 5-HT2A blockade in mesocortical partially releases DA, reducing cognitive/affective worsening |
| Clozapine | D2/D4 + multiple receptor antagonism | Loose D2 binding ("fast off"), high affinity for D4, 5-HT2A; minimal EPS; treats treatment-resistant schizophrenia |
| Partial agonists (e.g., aripiprazole, brexpiprazole) | D2 partial agonist | Acts as functional antagonist where DA is high (mesolimbic) and functional agonist where DA is low (mesocortical) |
| Side Effect | Pathway Affected | Mechanism |
|---|---|---|
| EPS (parkinsonism, akathisia, dystonia) | Nigrostriatal D2 blockade | Reduces motor DA tone |
| Tardive dyskinesia | Nigrostriatal D2 blockade (chronic) | Receptor upregulation, supersensitivity |
| Hyperprolactinemia | Tuberoinfundibular D2 blockade | Disinhibition of prolactin release |
| Worsening negative symptoms | Mesocortical D2 blockade | Reduces already-low prefrontal DA |
| Secondary anhedonia/depression | Mesolimbic D2 blockade | Blunts reward signaling |
Create a PDF reference guide comparing dopamine pathways and their psychiatric roles
ls /home/daytona/workspace/ 2>/dev/null || echo "workspace empty"
mkdir -p /home/daytona/workspace/dopamine-guide
~/dopamine-guide/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether, PageBreak
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import BaseDocTemplate, PageTemplate, Frame
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
import os
# ── Output path ──────────────────────────────────────────────────────────────
OUTPUT = "/home/daytona/workspace/dopamine-guide/Dopamine_Pathways_Psychiatric_Reference.pdf"
# ── Color palette ─────────────────────────────────────────────────────────────
DARK_BLUE = colors.HexColor("#1A3A5C")
MED_BLUE = colors.HexColor("#2B6CB0")
LIGHT_BLUE = colors.HexColor("#EBF4FF")
ACCENT = colors.HexColor("#E53E3E")
GREEN = colors.HexColor("#276749")
LIGHT_GREEN = colors.HexColor("#F0FFF4")
PURPLE = colors.HexColor("#553C9A")
LIGHT_PURP = colors.HexColor("#FAF5FF")
ORANGE = colors.HexColor("#C05621")
LIGHT_ORNG = colors.HexColor("#FFFAF0")
GOLD = colors.HexColor("#B7791F")
LIGHT_GOLD = colors.HexColor("#FFFFF0")
GRAY_LIGHT = colors.HexColor("#F7FAFC")
GRAY_MED = colors.HexColor("#CBD5E0")
GRAY_DARK = colors.HexColor("#2D3748")
WHITE = colors.white
# ── Styles ────────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def S(name, **kw):
return ParagraphStyle(name, **kw)
TITLE_STYLE = S("Title",
fontSize=26, fontName="Helvetica-Bold", textColor=WHITE,
alignment=TA_CENTER, leading=32)
SUBTITLE_STYLE = S("Subtitle",
fontSize=13, fontName="Helvetica", textColor=colors.HexColor("#BEE3F8"),
alignment=TA_CENTER, leading=18)
SECTION_TITLE = S("SectionTitle",
fontSize=14, fontName="Helvetica-Bold", textColor=DARK_BLUE,
spaceBefore=14, spaceAfter=6, leading=18)
SUBSECTION = S("Subsection",
fontSize=11, fontName="Helvetica-Bold", textColor=MED_BLUE,
spaceBefore=8, spaceAfter=4, leading=14)
BODY = S("Body",
fontSize=9.5, fontName="Helvetica", textColor=GRAY_DARK,
leading=14, alignment=TA_JUSTIFY, spaceAfter=4)
BODY_BOLD = S("BodyBold",
fontSize=9.5, fontName="Helvetica-Bold", textColor=GRAY_DARK,
leading=14)
CAPTION = S("Caption",
fontSize=8, fontName="Helvetica-Oblique", textColor=colors.HexColor("#718096"),
alignment=TA_CENTER, leading=11)
BULLET = S("Bullet",
fontSize=9.5, fontName="Helvetica", textColor=GRAY_DARK,
leading=14, leftIndent=14, spaceAfter=2,
bulletIndent=4, bulletFontName="Helvetica", bulletFontSize=9.5)
TH = S("TH",
fontSize=9, fontName="Helvetica-Bold", textColor=WHITE,
alignment=TA_CENTER, leading=12)
TD = S("TD",
fontSize=8.5, fontName="Helvetica", textColor=GRAY_DARK,
alignment=TA_LEFT, leading=12)
TD_C = S("TD_C",
fontSize=8.5, fontName="Helvetica", textColor=GRAY_DARK,
alignment=TA_CENTER, leading=12)
TD_B = S("TD_B",
fontSize=8.5, fontName="Helvetica-Bold", textColor=GRAY_DARK,
alignment=TA_LEFT, leading=12)
FOOTER_STYLE = S("Footer",
fontSize=7.5, fontName="Helvetica", textColor=colors.HexColor("#A0AEC0"),
alignment=TA_CENTER)
# ── Helper: color-coded paragraph box ────────────────────────────────────────
def box_para(text, bg=LIGHT_BLUE, border=MED_BLUE, style=BODY):
t = Table([[Paragraph(text, style)]], colWidths=[16.5*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("BOX", (0,0), (-1,-1), 0.8, border),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING",(0,0), (-1,-1), 8),
("ROUNDEDCORNERS", [4]),
]))
return t
# ── Helper: section divider ───────────────────────────────────────────────────
def divider(color=MED_BLUE):
return HRFlowable(width="100%", thickness=1.5, color=color, spaceAfter=4, spaceBefore=4)
# ── Header/Footer ─────────────────────────────────────────────────────────────
def on_page(canvas, doc):
W, H = A4
# Top stripe
canvas.setFillColor(DARK_BLUE)
canvas.rect(0, H - 1.4*cm, W, 1.4*cm, fill=1, stroke=0)
canvas.setFont("Helvetica-Bold", 8)
canvas.setFillColor(WHITE)
canvas.drawCentredString(W/2, H - 0.85*cm, "DOPAMINE IN PSYCHIATRY • Clinical Reference Guide")
# Bottom stripe
canvas.setFillColor(DARK_BLUE)
canvas.rect(0, 0, W, 1.0*cm, fill=1, stroke=0)
canvas.setFont("Helvetica", 7.5)
canvas.setFillColor(colors.HexColor("#BEE3F8"))
canvas.drawCentredString(W/2, 0.35*cm,
f"Page {doc.page} • Based on Stahl's Essential Psychopharmacology & Kaplan & Sadock's Psychiatry • For educational use")
def on_first_page(canvas, doc):
pass # cover has its own design
# ── Document setup ────────────────────────────────────────────────────────────
doc = BaseDocTemplate(OUTPUT, pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=2.2*cm, bottomMargin=1.8*cm)
frame_cover = Frame(0, 0, A4[0], A4[1], leftPadding=0, rightPadding=0,
topPadding=0, bottomPadding=0)
frame_body = Frame(2*cm, 1.6*cm, A4[0]-4*cm, A4[1]-3.8*cm,
leftPadding=0, rightPadding=0, topPadding=0, bottomPadding=0)
doc.addPageTemplates([
PageTemplate(id="Cover", frames=[frame_cover], onPage=on_first_page),
PageTemplate(id="Body", frames=[frame_body], onPage=on_page),
])
# ── Content ───────────────────────────────────────────────────────────────────
story = []
# ═══════════════════════════════════════════════════════════════════════════════
# COVER PAGE
# ═══════════════════════════════════════════════════════════════════════════════
def cover_page(canvas, doc):
W, H = A4
# Deep background
canvas.setFillColor(DARK_BLUE)
canvas.rect(0, 0, W, H, fill=1, stroke=0)
# Diagonal accent band
canvas.setFillColor(MED_BLUE)
p = canvas.beginPath()
p.moveTo(0, H*0.55); p.lineTo(W, H*0.45); p.lineTo(W, H*0.55); p.lineTo(0, H*0.65)
p.close()
canvas.drawPath(p, fill=1, stroke=0)
# Bottom accent
canvas.setFillColor(colors.HexColor("#2C5282"))
canvas.rect(0, 0, W, 3.5*cm, fill=1, stroke=0)
# Title
canvas.setFont("Helvetica-Bold", 32)
canvas.setFillColor(WHITE)
canvas.drawCentredString(W/2, H*0.72, "DOPAMINE IN PSYCHIATRY")
# Subtitle
canvas.setFont("Helvetica", 16)
canvas.setFillColor(colors.HexColor("#BEE3F8"))
canvas.drawCentredString(W/2, H*0.64, "Pathways, Receptors & Clinical Applications")
# Divider line
canvas.setStrokeColor(colors.HexColor("#63B3ED"))
canvas.setLineWidth(2)
canvas.line(3*cm, H*0.60, W - 3*cm, H*0.60)
# Subtitle 2
canvas.setFont("Helvetica-Oblique", 12)
canvas.setFillColor(colors.HexColor("#90CDF4"))
canvas.drawCentredString(W/2, H*0.56, "A Comprehensive Clinical Reference Guide")
# Tags
canvas.setFont("Helvetica", 9)
canvas.setFillColor(colors.HexColor("#63B3ED"))
tags = ["Schizophrenia", "Depression", "Addiction", "ADHD", "Bipolar Disorder",
"Pharmacology", "Antipsychotics"]
x = 2.5*cm
y = H*0.48
for i, tag in enumerate(tags):
tw = canvas.stringWidth(tag, "Helvetica", 9) + 16
canvas.setFillColor(colors.HexColor("#1E4E8C"))
canvas.roundRect(x, y-3, tw, 16, 4, fill=1, stroke=0)
canvas.setFillColor(colors.HexColor("#BEE3F8"))
canvas.drawString(x+8, y+2, tag)
x += tw + 8
if x > W - 4*cm:
x = 2.5*cm; y -= 22
# Bottom info
canvas.setFont("Helvetica", 9)
canvas.setFillColor(colors.HexColor("#90CDF4"))
canvas.drawCentredString(W/2, 2.2*cm, "Based on: Stahl's Essential Psychopharmacology • Kaplan & Sadock's Textbook of Psychiatry")
canvas.drawCentredString(W/2, 1.5*cm, "Synopsis of Psychiatry • Neuroscience: Exploring the Brain")
canvas.setFont("Helvetica", 8)
canvas.setFillColor(colors.HexColor("#63B3ED"))
canvas.drawCentredString(W/2, 0.7*cm, "For Educational Use Only • July 2026")
doc.addPageTemplates([
PageTemplate(id="CoverFull", frames=[
Frame(0, 0, A4[0], A4[1], leftPadding=0, rightPadding=0, topPadding=0, bottomPadding=0)
], onPage=cover_page),
])
# Switch template
from reportlab.platypus import NextPageTemplate
story.append(NextPageTemplate("CoverFull"))
story.append(Spacer(1, A4[1])) # blank placeholder - cover drawn by onPage
story.append(NextPageTemplate("Body"))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════════
# PAGE 2 — OVERVIEW & DOPAMINE BASICS
# ═══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("1. DOPAMINE: FUNDAMENTALS", SECTION_TITLE))
story.append(divider())
story.append(Paragraph(
"Dopamine (DA) is a catecholamine neurotransmitter synthesized from tyrosine via L-DOPA. "
"It is not simply a 'pleasure chemical' — it functions as a <b>prediction error signal</b> and a "
"<b>salience detector</b>, encoding the difference between expected and actual reward. Aberrant "
"salience — driven by tonically elevated mesolimbic DA — is the proposed mechanism by which "
"delusions and hallucinations are formed in schizophrenia.", BODY))
story.append(Spacer(1, 0.3*cm))
# Synthesis box
story.append(Paragraph("Synthesis & Metabolism", SUBSECTION))
steps_data = [
[Paragraph("<b>Step</b>", TH), Paragraph("<b>Substrate</b>", TH),
Paragraph("<b>Enzyme</b>", TH), Paragraph("<b>Product</b>", TH)],
[Paragraph("1", TD_C), Paragraph("L-Tyrosine", TD),
Paragraph("Tyrosine hydroxylase (rate-limiting)", TD), Paragraph("L-DOPA", TD)],
[Paragraph("2", TD_C), Paragraph("L-DOPA", TD),
Paragraph("DOPA decarboxylase (AADC)", TD), Paragraph("Dopamine", TD)],
[Paragraph("3", TD_C), Paragraph("Dopamine", TD),
Paragraph("MAO-A/B, COMT", TD), Paragraph("HVA (homovanillic acid)", TD)],
]
steps_t = Table(steps_data, colWidths=[1.5*cm, 3.5*cm, 7*cm, 4*cm])
steps_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("BACKGROUND", (0,1), (-1,1), LIGHT_BLUE),
("BACKGROUND", (0,2), (-1,2), WHITE),
("BACKGROUND", (0,3), (-1,3), LIGHT_BLUE),
("GRID", (0,0), (-1,-1), 0.5, GRAY_MED),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
]))
story.append(steps_t)
story.append(Spacer(1, 0.4*cm))
# Receptor families
story.append(Paragraph("Dopamine Receptor Families", SUBSECTION))
rec_data = [
[Paragraph("<b>Family</b>", TH), Paragraph("<b>Subtypes</b>", TH),
Paragraph("<b>Coupling</b>", TH), Paragraph("<b>cAMP Effect</b>", TH),
Paragraph("<b>Key Locations</b>", TH), Paragraph("<b>Clinical Relevance</b>", TH)],
[Paragraph("D1-like", TD_B), Paragraph("D1, D5", TD_C),
Paragraph("Gs protein", TD_C), Paragraph("↑ (activate)", TD_C),
Paragraph("PFC (DLPFC), striatum, hippocampus", TD),
Paragraph("Working memory; ADHD; cognitive function", TD)],
[Paragraph("D2-like", TD_B), Paragraph("D2, D3, D4", TD_C),
Paragraph("Gi protein", TD_C), Paragraph("↓ (inhibit)", TD_C),
Paragraph("Striatum, limbic, VTA, pituitary", TD),
Paragraph("Primary antipsychotic target; reward; prolactin", TD)],
]
rec_t = Table(rec_data, colWidths=[1.8*cm, 2*cm, 2.2*cm, 2.2*cm, 4*cm, 4.3*cm])
rec_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("BACKGROUND", (0,1), (-1,1), LIGHT_BLUE),
("BACKGROUND", (0,2), (-1,2), LIGHT_GREEN),
("GRID", (0,0), (-1,-1), 0.5, GRAY_MED),
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
]))
story.append(rec_t)
story.append(Spacer(1, 0.3*cm))
story.append(box_para(
"<b>Key note on D2 autoreceptors:</b> D2/D3 autoreceptors act as a brake on dopamine release. "
"When presynaptic DA is high, autoreceptors fire to reduce further release. Somatodendritic "
"autoreceptors in the VTA slow cell firing; terminal autoreceptors in the striatum inhibit DA release. "
"This feedback differs by pathway — mesocortical neurons have <i>fewer</i> autoreceptors, so DA "
"diffuses more freely in the PFC.",
bg=LIGHT_GOLD, border=GOLD))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════════
# PAGE 3 — THE FIVE DOPAMINE PATHWAYS
# ═══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("2. THE FIVE DOPAMINE PATHWAYS", SECTION_TITLE))
story.append(divider())
story.append(Paragraph(
"The five classic DA pathways each project to distinct brain regions and mediate distinct "
"functions. Their differential response to antipsychotic D2 blockade explains the drug's "
"therapeutic effects and side-effect profile simultaneously.", BODY))
story.append(Spacer(1, 0.3*cm))
pathways_data = [
[Paragraph("<b>Pathway</b>", TH),
Paragraph("<b>Origin → Target</b>", TH),
Paragraph("<b>Normal Function</b>", TH),
Paragraph("<b>Psychiatric Role /\nDysfunction</b>", TH),
Paragraph("<b>Effect of D2\nBlockade</b>", TH)],
# Mesolimbic
[Paragraph("<b>Mesolimbic</b>", TD_B),
Paragraph("VTA → Nucleus accumbens, amygdala, hippocampus", TD),
Paragraph("Reward, motivation, pleasure, emotional memory, reinforcement learning", TD),
Paragraph("Hyperactivity → positive psychotic symptoms (hallucinations, delusions). "
"Mediates addictive drive. Hypoactivity → anhedonia in depression", TD),
Paragraph("Therapeutic: reduces positive symptoms of psychosis", TD)],
# Mesocortical
[Paragraph("<b>Mesocortical</b>", TD_B),
Paragraph("VTA → Prefrontal cortex (DLPFC, vmPFC)", TD),
Paragraph("Executive function, working memory, attention, affect regulation", TD),
Paragraph("Hypoactivity → negative symptoms, cognitive deficits, affective blunting in schizophrenia. "
"Also implicated in ADHD", TD),
Paragraph("May worsen negative/cognitive symptoms by further reducing already-low DA in PFC", TD)],
# Nigrostriatal
[Paragraph("<b>Nigrostriatal</b>", TD_B),
Paragraph("Substantia nigra → Striatum (caudate, putamen, basal ganglia)", TD),
Paragraph("Voluntary movement initiation, motor coordination, habit learning", TD),
Paragraph("Degeneration → Parkinson's disease (tremor, rigidity, bradykinesia). "
"Involved in OCD and tic disorders", TD),
Paragraph("EPS: parkinsonism, akathisia, dystonia (acute). Chronic blockade → tardive dyskinesia", TD)],
# Tuberoinfundibular
[Paragraph("<b>Tuberoinfundibular</b>", TD_B),
Paragraph("Arcuate nucleus (hypothalamus) → Anterior pituitary", TD),
Paragraph("Tonic inhibition of prolactin secretion. Reduced during breastfeeding to permit lactation", TD),
Paragraph("Relatively preserved in untreated schizophrenia. Disrupted by antipsychotics", TD),
Paragraph("Hyperprolactinemia: galactorrhea, gynecomastia, amenorrhea, sexual dysfunction", TD)],
# Thalamic
[Paragraph("<b>Thalamic</b>", TD_B),
Paragraph("Multiple midbrain/brainstem nuclei → Thalamus", TD),
Paragraph("Sensory gating, thalamo-cortical relay modulation, filtering of sensory input", TD),
Paragraph("Proposed role in sensory flood/hallucinogenic states; less clinically defined", TD),
Paragraph("Effects not well characterized clinically", TD)],
]
path_t = Table(pathways_data, colWidths=[2.8*cm, 3*cm, 3.5*cm, 4.5*cm, 2.7*cm])
path_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("BACKGROUND", (0,1), (-1,1), LIGHT_BLUE),
("BACKGROUND", (0,2), (-1,2), LIGHT_GREEN),
("BACKGROUND", (0,3), (-1,3), colors.HexColor("#FFF5F5")),
("BACKGROUND", (0,4), (-1,4), LIGHT_GOLD),
("BACKGROUND", (0,5), (-1,5), LIGHT_PURP),
("GRID", (0,0), (-1,-1), 0.5, GRAY_MED),
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 6),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
]))
story.append(path_t)
story.append(Spacer(1, 0.4*cm))
story.append(box_para(
"<b>Therapeutic window:</b> Antipsychotic D2 receptor occupancy of <b>60–80%</b> is the therapeutic "
"sweet spot. Below 60% → insufficient reduction of positive symptoms. Above 80% → EPS risk "
"increases sharply. Clozapine achieves efficacy at lower occupancy due to its 'fast off' kinetics "
"and multi-receptor profile.",
bg=LIGHT_BLUE, border=MED_BLUE))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════════
# PAGE 4 — DOPAMINE HYPOTHESIS OF SCHIZOPHRENIA
# ═══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("3. THE DOPAMINE HYPOTHESIS OF SCHIZOPHRENIA", SECTION_TITLE))
story.append(divider())
story.append(Paragraph("Historical Development", SUBSECTION))
hist_data = [
[Paragraph("<b>Era</b>", TH), Paragraph("<b>Key Finding</b>", TH), Paragraph("<b>Implication</b>", TH)],
[Paragraph("1950s–60s", TD_C),
Paragraph("Chlorpromazine found to reduce psychosis; recognized as DA blocker", TD),
Paragraph("D2 antagonism → antipsychotic effect", TD)],
[Paragraph("1960s–70s", TD_C),
Paragraph("Antipsychotic potency correlates precisely with D2 receptor affinity", TD),
Paragraph("D2 is the primary therapeutic target", TD)],
[Paragraph("1970s–80s", TD_C),
Paragraph("Amphetamine/cocaine (DA-releasing) induce paranoid psychosis; DA agonists worsen schizophrenia", TD),
Paragraph("Excess DA → positive symptoms", TD)],
[Paragraph("1980s–90s", TD_C),
Paragraph("PFC DA lesions in primates → working memory deficits resembling schizophrenia", TD),
Paragraph("Regional imbalance: subcortical hyper vs cortical hypo-DA", TD)],
[Paragraph("1990s–2000s", TD_C),
Paragraph("PET/SPECT imaging: excess presynaptic DA synthesis in striatum; increased amphetamine-evoked DA release", TD),
Paragraph("First direct in-vivo evidence of hyperdopaminergia", TD)],
[Paragraph("2000s–present", TD_C),
Paragraph("NMDA hypofunction upstream model; mesostriatal (not purely mesolimbic) focus", TD),
Paragraph("Glutamate dysregulation drives striatal hyperdopaminergia", TD)],
]
hist_t = Table(hist_data, colWidths=[2.5*cm, 9*cm, 5*cm])
hist_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("ROWBACKGROUNDS", (0,1), (-1,-1), [LIGHT_BLUE, WHITE]),
("GRID", (0,0), (-1,-1), 0.5, GRAY_MED),
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
]))
story.append(hist_t)
story.append(Spacer(1, 0.4*cm))
story.append(Paragraph("The Two-System Imbalance Model", SUBSECTION))
imbal_data = [
[Paragraph("<b>System</b>", TH), Paragraph("<b>DA State</b>", TH),
Paragraph("<b>Symptoms Produced</b>", TH), Paragraph("<b>Evidence</b>", TH)],
[Paragraph("Mesolimbic /\nMesostriatal\n(subcortical)", TD_B),
Paragraph("HYPERDOPAMINERGIA\n(excess DA)", TD_C),
Paragraph("Positive symptoms:\n• Auditory/visual hallucinations\n• Paranoid delusions\n• Thought disorganization\n• Grandiosity", TD),
Paragraph("• PET: ↑ striatal DA synthesis\n• ↑ amphetamine-evoked DA release\n• Correlates with positive symptom severity", TD)],
[Paragraph("Mesocortical\n(prefrontal cortex)", TD_B),
Paragraph("HYPODOPAMINERGIA\n(reduced DA)", TD_C),
Paragraph("Negative symptoms:\n• Flat affect, avolition\n• Alogia, anhedonia\nCognitive symptoms:\n• ↓ Working memory\n• ↓ Executive function\nAffective symptoms:\n• Depression, anxiety", TD),
Paragraph("• PFC DA ↓ in NHP lesion models\n• D1 receptor hypostimulation\n• Neurodevelopmental NMDA deficit\n• Poor response to D2 blockers", TD)],
]
imbal_t = Table(imbal_data, colWidths=[3*cm, 3*cm, 5.5*cm, 5*cm])
imbal_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("BACKGROUND", (0,1), (-1,1), colors.HexColor("#FFF5F5")),
("BACKGROUND", (0,2), (-1,2), LIGHT_PURP),
("BOX", (0,1), (-1,1), 1.5, ACCENT),
("BOX", (0,2), (-1,2), 1.5, PURPLE),
("GRID", (0,0), (-1,-1), 0.5, GRAY_MED),
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 6),
]))
story.append(imbal_t)
story.append(Spacer(1, 0.3*cm))
story.append(box_para(
"<b>Limitations of the DA hypothesis:</b> Does not explain why antipsychotics take 2–6 weeks for full effect "
"despite rapid D2 blockade. Fails to account for treatment-resistant schizophrenia (~30%). Postmortem DA "
"evidence is confounded by prior antipsychotic exposure. This led to the <b>glutamate/NMDA hypofunction "
"hypothesis</b> as a complementary upstream model.",
bg=LIGHT_ORNG, border=ORANGE))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════════
# PAGE 5 — DOPAMINE ACROSS PSYCHIATRIC DISORDERS
# ═══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("4. DOPAMINE ACROSS PSYCHIATRIC DISORDERS", SECTION_TITLE))
story.append(divider())
disorders_data = [
[Paragraph("<b>Disorder</b>", TH),
Paragraph("<b>DA Abnormality</b>", TH),
Paragraph("<b>Key Pathway(s)</b>", TH),
Paragraph("<b>Clinical Features Linked to DA</b>", TH),
Paragraph("<b>Treatment Implication</b>", TH)],
[Paragraph("Schizophrenia", TD_B),
Paragraph("Subcortical hyper-DA; prefrontal hypo-DA", TD),
Paragraph("Mesostriatal ↑\nMesocortical ↓", TD),
Paragraph("Hallucinations, delusions (hyper-DA); flat affect, cognitive deficits (hypo-DA)", TD),
Paragraph("D2 antagonists/partial agonists; 60–80% D2 occupancy target", TD)],
[Paragraph("Bipolar Disorder\n(Mania)", TD_B),
Paragraph("Excess dopaminergic tone during mania", TD),
Paragraph("Mesolimbic ↑", TD),
Paragraph("Grandiosity, decreased need for sleep, pressured speech, hypersexuality, risk-taking", TD),
Paragraph("Antipsychotics (D2 blockade) as acute antimanic agents; mood stabilizers", TD)],
[Paragraph("Major\nDepression", TD_B),
Paragraph("Reduced DA signaling → impaired reward processing", TD),
Paragraph("Mesolimbic ↓\nMesocortical ↓", TD),
Paragraph("Anhedonia, anergia, psychomotor retardation, amotivation", TD),
Paragraph("Bupropion (DAT + NET inhibitor); augmentation with aripiprazole; MAOIs", TD)],
[Paragraph("ADHD", TD_B),
Paragraph("Hypo-DA (and NE) in prefrontal cortex", TD),
Paragraph("Mesocortical ↓", TD),
Paragraph("Inattention, impulsivity, poor working memory, distractibility", TD),
Paragraph("Stimulants: methylphenidate (DAT blocker), amphetamine (DA releaser + DAT blocker)", TD)],
[Paragraph("Addiction /\nSubstance Use", TD_B),
Paragraph("Acute: DA surge in NAc; chronic: D2 receptor downregulation, blunted reward", TD),
Paragraph("Mesolimbic (NAc)\n— all drugs converge here", TD),
Paragraph("Euphoria (acute); craving, anhedonia in withdrawal; compulsive use despite harm", TD),
Paragraph("Dopamine stabilizers; NRT; naltrexone; DA agonist substitution (e.g., nicotine patch)", TD)],
[Paragraph("Parkinson's\nDisease Psychosis", TD_B),
Paragraph("Nigrostriatal DA depletion; levodopa → mesolimbic hyper-DA", TD),
Paragraph("Nigrostriatal ↓\nMesolimbic ↑ (iatrogenic)", TD),
Paragraph("Visual hallucinations, delusions of infidelity, paranoia from dopaminergic drugs", TD),
Paragraph("Pimavanserin (5-HT2A inverse agonist); clozapine at low dose; avoid classic antipsychotics", TD)],
[Paragraph("OCD", TD_B),
Paragraph("Dysregulation of DA in cortico-striato-thalamic loops", TD),
Paragraph("Nigrostriatal / cortico-striatal", TD),
Paragraph("Compulsive repetitive behaviors (habit system overactivation)", TD),
Paragraph("SSRIs first-line; D2 augmentation with low-dose antipsychotics for refractory cases", TD)],
[Paragraph("Tourette\nSyndrome", TD_B),
Paragraph("Dopaminergic hyperactivity in striatum", TD),
Paragraph("Nigrostriatal ↑", TD),
Paragraph("Motor and vocal tics, involuntary movements and vocalizations", TD),
Paragraph("D2 antagonists (haloperidol, fluphenazine); D2 partial agonists; alpha-2 agonists", TD)],
]
dis_t = Table(disorders_data, colWidths=[2.5*cm, 3.5*cm, 2.8*cm, 4*cm, 3.7*cm])
dis_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("ROWBACKGROUNDS", (0,1), (-1,-1), [LIGHT_BLUE, WHITE, LIGHT_GREEN, WHITE,
LIGHT_PURP, LIGHT_ORNG, LIGHT_GOLD, LIGHT_BLUE]),
("GRID", (0,0), (-1,-1), 0.5, GRAY_MED),
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
]))
story.append(disorders_data[0]) # just appended above already
story.append(dis_t)
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════════
# PAGE 6 — ANTIPSYCHOTICS & DA PHARMACOLOGY
# ═══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("5. ANTIPSYCHOTICS: DOPAMINE PHARMACOLOGY", SECTION_TITLE))
story.append(divider())
story.append(Paragraph(
"All currently approved antipsychotics act on dopamine receptors. The distinction between "
"generations and classes lies in their receptor selectivity, binding kinetics, and D2 occupancy "
"profile — which determine both therapeutic effects and side effects.", BODY))
story.append(Spacer(1, 0.3*cm))
ap_data = [
[Paragraph("<b>Class / Drug</b>", TH),
Paragraph("<b>Mechanism</b>", TH),
Paragraph("<b>D2 Occupancy</b>", TH),
Paragraph("<b>Advantages</b>", TH),
Paragraph("<b>Key Risks</b>", TH)],
[Paragraph("FGA — High potency\n(Haloperidol, Fluphenazine)", TD_B),
Paragraph("Tight D2 antagonism", TD),
Paragraph("80–90%", TD_C),
Paragraph("Effective for positive symptoms; depot formulations available", TD),
Paragraph("High EPS; TD risk; hyperprolactinemia; QTc prolongation", TD)],
[Paragraph("FGA — Low potency\n(Chlorpromazine, Thioridazine)", TD_B),
Paragraph("D2 antagonism + antihistamine, anticholinergic, alpha-1 blockade", TD),
Paragraph("70–80%", TD_C),
Paragraph("Sedating; good for agitation", TD),
Paragraph("Orthostatic hypotension; sedation; anticholinergic effects; metabolic effects", TD)],
[Paragraph("SGA\n(Risperidone, Olanzapine, Quetiapine)", TD_B),
Paragraph("D2 + 5-HT2A antagonism ('serotonin-dopamine antagonists')", TD),
Paragraph("60–80%", TD_C),
Paragraph("Lower EPS than FGAs; better for negative/affective symptoms", TD),
Paragraph("Metabolic syndrome (weight, glucose, lipids); sedation; prolactin (risperidone)", TD)],
[Paragraph("Clozapine", TD_B),
Paragraph("'Fast-off' D2, D4; 5-HT2A, H1, M1, alpha-1/2 antagonism", TD),
Paragraph("20–60%\n(loose binding)", TD_C),
Paragraph("Gold standard for treatment-resistant schizophrenia; reduces suicidality", TD),
Paragraph("Agranulocytosis (requires mandatory CBC monitoring); metabolic syndrome; seizures", TD)],
[Paragraph("D2 Partial Agonists\n(Aripiprazole, Brexpiprazole, Cariprazine)", TD_B),
Paragraph("D2 partial agonist (DA stabilizer): antagonist where DA is high, agonist where DA is low", TD),
Paragraph("70–80%", TD_C),
Paragraph("Functional stabilizer across pathways; minimal prolactin elevation; weight-neutral", TD),
Paragraph("Akathisia; insomnia; activation; may be insufficient in high-severity psychosis", TD)],
[Paragraph("Muscarinic Antipsychotics\n(Xanomeline-trospium, 2026)", TD_B),
Paragraph("M1/M4 muscarinic agonism — indirect DA modulation without direct D2 blockade", TD),
Paragraph("None (indirect)", TD_C),
Paragraph("No EPS; no prolactin elevation; novel mechanism for treatment-resistant cases", TD),
Paragraph("GI side effects; limited long-term data (new class, 2026 Lancet meta-analysis)", TD)],
]
ap_t = Table(ap_data, colWidths=[3.5*cm, 4*cm, 2*cm, 3.5*cm, 3.5*cm])
ap_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.HexColor("#FFF5F5"), LIGHT_BLUE,
LIGHT_GREEN, LIGHT_GOLD, LIGHT_PURP, LIGHT_ORNG]),
("GRID", (0,0), (-1,-1), 0.5, GRAY_MED),
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
]))
story.append(ap_t)
story.append(Spacer(1, 0.4*cm))
# Side effects by pathway
story.append(Paragraph("Antipsychotic Side Effects Mapped to DA Pathways", SUBSECTION))
se_data = [
[Paragraph("<b>Side Effect</b>", TH), Paragraph("<b>Pathway Blocked</b>", TH),
Paragraph("<b>Mechanism</b>", TH), Paragraph("<b>Management</b>", TH)],
[Paragraph("EPS (acute dystonia, parkinsonism, akathisia)", TD_B),
Paragraph("Nigrostriatal", TD),
Paragraph("D2 blockade reduces motor DA tone; >80% occupancy threshold", TD),
Paragraph("Anticholinergics (benztropine); dose reduction; switch to SGA; beta-blockers for akathisia", TD)],
[Paragraph("Tardive dyskinesia", TD_B),
Paragraph("Nigrostriatal (chronic)", TD),
Paragraph("Chronic D2 blockade → receptor upregulation and supersensitivity", TD),
Paragraph("VMAT2 inhibitors (valbenazine, deutetrabenazine); clonazepam; switch to clozapine", TD)],
[Paragraph("Hyperprolactinemia", TD_B),
Paragraph("Tuberoinfundibular", TD),
Paragraph("Removes tonic DA inhibition of prolactin secretion", TD),
Paragraph("Switch to prolactin-sparing agent (aripiprazole, clozapine, quetiapine)", TD)],
[Paragraph("Worsening negative/cognitive symptoms", TD_B),
Paragraph("Mesocortical", TD),
Paragraph("Further reduces already-low DA in PFC; blunts D1-mediated cognition", TD),
Paragraph("Reduce dose; add aripiprazole (partial agonist); address comorbid depression", TD)],
[Paragraph("Anhedonia / 'neuroleptic dysphoria'", TD_B),
Paragraph("Mesolimbic", TD),
Paragraph("Over-blockade blunts reward signaling; 'emotional blunting'", TD),
Paragraph("Dose reduction; switch to partial agonist; evaluate for secondary depression", TD)],
]
se_t = Table(se_data, colWidths=[3.5*cm, 3*cm, 5*cm, 5*cm])
se_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("ROWBACKGROUNDS", (0,1), (-1,-1), [LIGHT_BLUE, WHITE, LIGHT_GOLD, LIGHT_PURP, LIGHT_ORNG]),
("GRID", (0,0), (-1,-1), 0.5, GRAY_MED),
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
]))
story.append(se_t)
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════════
# PAGE 7 — QUICK REFERENCE SUMMARY
# ═══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("6. QUICK REFERENCE SUMMARY", SECTION_TITLE))
story.append(divider())
story.append(Paragraph("Pathway-Symptom-Drug Matrix", SUBSECTION))
matrix_data = [
[Paragraph("<b>DA Pathway</b>", TH),
Paragraph("<b>DA State in Disease</b>", TH),
Paragraph("<b>Symptoms</b>", TH),
Paragraph("<b>Drug Effect</b>", TH),
Paragraph("<b>Result</b>", TH)],
[Paragraph("Mesolimbic", TD_B),
Paragraph("↑ in schizophrenia\n↑ in mania\n↓ in depression\n↑↑ in addiction (acute)", TD),
Paragraph("Hallucinations, delusions\nEuphoria/grandiosity\nAnhedonia\nCraving, euphoria", TD),
Paragraph("D2 blockade", TD_C),
Paragraph("Reduces positive psychotic symptoms\nAntimania\nRisk of anhedonia side effect", TD)],
[Paragraph("Mesocortical", TD_B),
Paragraph("↓ in schizophrenia\n↓ in ADHD\n↓ in depression", TD),
Paragraph("Negative symptoms, cognitive deficits\nInattention, impulsivity\nAmotivation, fatigue", TD),
Paragraph("D2 blockade (undesirable)\nDA agonists / stimulants", TD_C),
Paragraph("May worsen negative symptoms\nImproves attention/cognition", TD)],
[Paragraph("Nigrostriatal", TD_B),
Paragraph("↓ in Parkinson's\n↑ in Tourette's/OCD", TD),
Paragraph("Tremor, rigidity, bradykinesia\nTics, compulsions", TD),
Paragraph("D2 blockade (side effect)\nLevodopa (therapeutic)", TD_C),
Paragraph("EPS / tardive dyskinesia\nReverses Parkinson's motor symptoms", TD)],
[Paragraph("Tuberoinfundibular", TD_B),
Paragraph("↓ when D2 is blocked\nNormal in untreated schizophrenia", TD),
Paragraph("Hyperprolactinemia symptoms", TD),
Paragraph("D2 blockade (side effect)", TD_C),
Paragraph("Galactorrhea, amenorrhea, gynecomastia, sexual dysfunction", TD)],
]
matrix_t = Table(matrix_data, colWidths=[2.8*cm, 3.5*cm, 4*cm, 3*cm, 3.2*cm])
matrix_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("BACKGROUND", (0,1), (-1,1), LIGHT_BLUE),
("BACKGROUND", (0,2), (-1,2), LIGHT_GREEN),
("BACKGROUND", (0,3), (-1,3), LIGHT_GOLD),
("BACKGROUND", (0,4), (-1,4), LIGHT_PURP),
("GRID", (0,0), (-1,-1), 0.5, GRAY_MED),
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
]))
story.append(matrix_t)
story.append(Spacer(1, 0.4*cm))
story.append(Paragraph("Key Clinical Pearls", SUBSECTION))
pearls = [
("D2 occupancy sweet spot", "60–80% D2 receptor occupancy is the therapeutic window. Below 60% = inadequate antipsychotic effect. Above 80% = EPS risk rises sharply."),
("Aberrant salience", "Psychosis is not just 'too much DA.' It is dysregulated salience — mesolimbic DA fires inappropriately, making irrelevant stimuli feel meaningful, generating delusional interpretations."),
("The NMDA-DA link", "NMDA receptor hypofunction in cortical GABA interneurons → loss of inhibitory control → downstream striatal hyperdopaminergia. This is why ketamine/PCP produce psychosis and why glutamate-targeting drugs are being developed."),
("Clozapine's paradox", "Clozapine achieves superior efficacy at lower D2 occupancy (20–60%) than other antipsychotics. Its 'fast off' kinetics, D4 affinity, and broad serotonergic/cholinergic/histaminergic effects explain this."),
("Aripiprazole as stabilizer", "As a D2 partial agonist, aripiprazole acts as a functional antagonist when synaptic DA is high (mesolimbic) and a functional agonist when DA is low (mesocortical) — theoretically addressing both symptom clusters."),
("Depression and DA", "Anhedonia is the most DA-dependent feature of depression. Inflammation-driven impairment of DA signaling in the basal ganglia is a key mechanistic link between immune activation and depressive phenotypes."),
("Prolactin monitoring", "Check prolactin when patients on D2 blockers report amenorrhea, galactorrhea, sexual dysfunction, or gynecomastia. Aripiprazole can normalize prolactin when added to other antipsychotics."),
]
for title, text in pearls:
story.append(box_para(
f"<b>{title}:</b> {text}",
bg=LIGHT_BLUE, border=MED_BLUE))
story.append(Spacer(1, 0.2*cm))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("References", SUBSECTION))
refs = [
"Stahl SM. Stahl's Essential Psychopharmacology: Neuroscientific Basis and Practical Applications, 5th ed. Cambridge University Press, 2021. Ch. 4–5.",
"Sadock BJ, Sadock VA, Ruiz P. Kaplan & Sadock's Comprehensive Textbook of Psychiatry, 10th ed. Wolters Kluwer. Molecular Brain Imaging section.",
"Sadock BJ, Sadock VA, Ruiz P. Kaplan & Sadock's Synopsis of Psychiatry, 11th ed. Wolters Kluwer, pp. 1112–1113.",
"Bear MF, Connors BW, Paradiso MA. Neuroscience: Exploring the Brain, 5th ed. Jones & Bartlett. Ch. 22.",
"Schneider-Thoma J, Zhu Y, Qin M et al. Comparative efficacy and tolerability of antidopaminergic and muscarinic antipsychotics for acute schizophrenia. Lancet. 2026 Feb 28. PMID: 41763745.",
"Feber L et al. Antipsychotic Drugs and Cognitive Function: A Systematic Review and Network Meta-Analysis. JAMA Psychiatry. 2025 Jan 1. PMID: 39412783.",
]
for i, ref in enumerate(refs, 1):
story.append(Paragraph(f"{i}. {ref}", S("Ref", parent=BODY, fontSize=8, spaceAfter=3)))
# ── Build ─────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF saved to: {OUTPUT}")
cd /home/daytona/workspace/dopamine-guide && python generate_pdf.py 2>&1
~/dopamine-guide/generate_pdf.py
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/dopamine-guide/generate_pdf.py'
cd /home/daytona/workspace/dopamine-guide && python generate_pdf.py 2>&1
ls -lh /home/daytona/workspace/dopamine-guide/Dopamine_Pathways_Psychiatric_Reference.pdf
Dopamine Pathways Psychiatric Reference
PDF Document · PDF
| Section | Contents |
|---|---|
| Cover | Styled title page with disorder tags |
| 1. Fundamentals | DA synthesis pathway table, D1-like vs D2-like receptor families with coupling/locations, autoreceptor note |
| 2. The Five Pathways | Full table - origin, target, normal function, psychiatric role, and effect of D2 blockade for all 5 pathways; D2 occupancy therapeutic window callout |
| 3. Schizophrenia Hypothesis | Timeline of evidence (1950s–present); Two-system imbalance model (mesostriatal hyper-DA vs mesocortical hypo-DA); limitations note |
| 4. Disorders Overview | 8 disorders (schizophrenia, bipolar, depression, ADHD, addiction, Parkinson's psychosis, OCD, Tourette's) - DA abnormality, key pathway, clinical features, treatment |
| 5. Antipsychotics | 6 drug classes with mechanism, D2 occupancy, advantages and risks; side effects mapped to specific DA pathways |
| 6. Quick Reference | Pathway-symptom-drug matrix; 7 clinical pearls; 6 references including 2025–2026 meta-analyses |