Part A: Vision 142. Functional Anatomy of Eye 1165 143. Image-forming Mechanism 1172 144. Photoreceptor Mechanism 1177 145. Visual Pathway and Visual Cortex 1181 146. Visual Acuity, Visual Field, Light and Dark Adaptations, and Visual Reflexes 1188 147. Color Vision 1193 148. Movements of the Eye All of this in a very structured exam ready notes pdf from all the physiology books include diseases treatments drygs and clinical corelation
mkdir -p /home/daytona/workspace/vision-physiology-notes
~/vision-physiology-notes/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm, mm
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
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 ListFlowable, ListItem
import os
OUTPUT = "/home/daytona/workspace/vision-physiology-notes/Vision_Physiology_ExamNotes.pdf"
# ─── Color Palette ───────────────────────────────────────────────────────────
DARK_BLUE = colors.HexColor("#1A3A5C")
MED_BLUE = colors.HexColor("#2E6DA4")
LIGHT_BLUE = colors.HexColor("#D6E8F7")
TEAL = colors.HexColor("#1D7A8C")
TEAL_LIGHT = colors.HexColor("#D0EEF3")
GREEN = colors.HexColor("#1A6B3A")
GREEN_LIGHT = colors.HexColor("#D4EDE0")
RED = colors.HexColor("#A52A2A")
RED_LIGHT = colors.HexColor("#FAE0E0")
ORANGE = colors.HexColor("#C05A00")
ORANGE_LIGHT= colors.HexColor("#FDE8CC")
YELLOW_LIGHT= colors.HexColor("#FFFBCC")
PURPLE = colors.HexColor("#5A2D82")
PURPLE_LIGHT= colors.HexColor("#EEE0FA")
GRAY_BG = colors.HexColor("#F4F6F9")
GRAY_BORDER = colors.HexColor("#CCCCCC")
WHITE = colors.white
BLACK = colors.black
# ─── Document ────────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
OUTPUT, pagesize=A4,
leftMargin=1.8*cm, rightMargin=1.8*cm,
topMargin=2*cm, bottomMargin=2*cm
)
# ─── Styles ──────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def S(name, **kw):
return ParagraphStyle(name, **kw)
cover_title = S("cover_title", fontName="Helvetica-Bold", fontSize=28, textColor=WHITE,
alignment=TA_CENTER, spaceAfter=8, leading=34)
cover_sub = S("cover_sub", fontName="Helvetica", fontSize=14, textColor=LIGHT_BLUE,
alignment=TA_CENTER, spaceAfter=6)
cover_info = S("cover_info", fontName="Helvetica", fontSize=11, textColor=WHITE,
alignment=TA_CENTER, spaceAfter=4)
ch_heading = S("ch_heading", fontName="Helvetica-Bold", fontSize=16, textColor=WHITE,
alignment=TA_LEFT, spaceAfter=4, spaceBefore=2, leading=20)
sec_heading = S("sec_heading", fontName="Helvetica-Bold", fontSize=13, textColor=DARK_BLUE,
spaceAfter=4, spaceBefore=10, leading=16)
sub_heading = S("sub_heading", fontName="Helvetica-Bold", fontSize=11, textColor=TEAL,
spaceAfter=3, spaceBefore=7, leading=14)
mini_heading = S("mini_heading", fontName="Helvetica-Bold", fontSize=10, textColor=DARK_BLUE,
spaceAfter=2, spaceBefore=5)
body = S("body", fontName="Helvetica", fontSize=9.5, leading=13,
spaceAfter=4, alignment=TA_JUSTIFY, textColor=BLACK)
body_b = S("body_b", fontName="Helvetica-Bold", fontSize=9.5, leading=13,
spaceAfter=3, textColor=BLACK)
bullet_style = S("bullet_style", fontName="Helvetica", fontSize=9.5, leading=13,
leftIndent=14, firstLineIndent=-10, spaceAfter=2, textColor=BLACK)
sub_bullet = S("sub_bullet", fontName="Helvetica", fontSize=9, leading=12,
leftIndent=26, firstLineIndent=-10, spaceAfter=2, textColor=colors.HexColor("#333333"))
mnemonic_style= S("mnemonic", fontName="Helvetica-Bold", fontSize=10, textColor=PURPLE,
spaceAfter=2, spaceBefore=2)
clinical_text = S("clinical_text", fontName="Helvetica", fontSize=9.5, leading=13,
textColor=colors.HexColor("#1A1A1A"), alignment=TA_JUSTIFY)
drug_text = S("drug_text", fontName="Helvetica", fontSize=9.5, leading=13,
textColor=colors.HexColor("#1A1A1A"))
caption = S("caption", fontName="Helvetica-Oblique", fontSize=8.5, textColor=colors.HexColor("#555555"),
alignment=TA_CENTER, spaceBefore=1, spaceAfter=4)
story = []
# ════════════════════════════════════════════════════════════════════════════
# HELPERS
# ════════════════════════════════════════════════════════════════════════════
def colored_box(content_list, bg=LIGHT_BLUE, border=MED_BLUE, left_bar=True, radius=4):
"""Wrap flowables in a colored rounded table cell."""
bar = Table([[""]], colWidths=[4], rowHeights=[1])
bar.setStyle(TableStyle([("BACKGROUND", (0,0), (-1,-1), border)]))
if left_bar:
outer = Table([[bar, Table([[c] for c in content_list],
colWidths=[doc.width - 4 - 8])]])
outer.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("BOX", (0,0), (-1,-1), 0.5, border),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING",(0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
else:
inner = [[c] for c in content_list]
outer = Table(inner, colWidths=[doc.width])
outer.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("BOX", (0,0), (-1,-1), 1, border),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING",(0,0), (-1,-1), 6),
]))
return outer
def chapter_banner(num, title):
banner_data = [[Paragraph(f"Chapter {num}", S("ch_sub", fontName="Helvetica", fontSize=10,
textColor=LIGHT_BLUE, spaceAfter=1))],
[Paragraph(title, ch_heading)]]
tbl = Table(banner_data, colWidths=[doc.width])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING",(0,0), (-1,-1), 8),
("ROWBACKGROUNDS",(0,0),(-1,-1),[DARK_BLUE]),
]))
return tbl
def section(title):
story.append(Spacer(1, 6))
story.append(Paragraph(title, sec_heading))
story.append(HRFlowable(width="100%", thickness=1.5, color=MED_BLUE, spaceAfter=4))
def subsection(title):
story.append(Paragraph(title, sub_heading))
def mini(title):
story.append(Paragraph(title, mini_heading))
def B(text):
story.append(Paragraph(text, body))
def BB(text):
story.append(Paragraph(text, body_b))
def bullet(text):
story.append(Paragraph(f"• {text}", bullet_style))
def sub_b(text):
story.append(Paragraph(f"◦ {text}", sub_bullet))
def sp(h=4):
story.append(Spacer(1, h))
def clinical_box(title, *lines):
content = [Paragraph(f"🩺 {title}", S("cbox_h", fontName="Helvetica-Bold", fontSize=10,
textColor=TEAL, spaceAfter=3))]
for l in lines:
content.append(Paragraph(f"• {l}", clinical_text))
tbl = Table([[c] for c in content], colWidths=[doc.width])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), TEAL_LIGHT),
("BOX", (0,0), (-1,-1), 1.5, TEAL),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING",(0,0), (-1,-1), 6),
]))
story.append(tbl)
sp(4)
def drug_box(title, *lines):
content = [Paragraph(f"💊 {title}", S("dbox_h", fontName="Helvetica-Bold", fontSize=10,
textColor=GREEN, spaceAfter=3))]
for l in lines:
content.append(Paragraph(f"• {l}", drug_text))
tbl = Table([[c] for c in content], colWidths=[doc.width])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), GREEN_LIGHT),
("BOX", (0,0), (-1,-1), 1.5, GREEN),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING",(0,0), (-1,-1), 6),
]))
story.append(tbl)
sp(4)
def mnemonic_box(mnemonic, meaning):
content = [
Paragraph(f"✦ MNEMONIC: {mnemonic}", mnemonic_style),
Paragraph(meaning, S("m2", fontName="Helvetica", fontSize=9, textColor=PURPLE, leading=12))
]
tbl = Table([[c] for c in content], colWidths=[doc.width])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), PURPLE_LIGHT),
("BOX", (0,0), (-1,-1), 1.5, PURPLE),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING",(0,0), (-1,-1), 5),
]))
story.append(tbl)
sp(4)
def imp_box(title, *lines):
content = [Paragraph(f"⚡ {title}", S("ibox_h", fontName="Helvetica-Bold", fontSize=10,
textColor=RED, spaceAfter=3))]
for l in lines:
content.append(Paragraph(f"• {l}", S("imp_t", fontName="Helvetica", fontSize=9.5,
leading=13, textColor=colors.HexColor("#1A1A1A"))))
tbl = Table([[c] for c in content], colWidths=[doc.width])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), RED_LIGHT),
("BOX", (0,0), (-1,-1), 1.5, RED),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING",(0,0), (-1,-1), 6),
]))
story.append(tbl)
sp(4)
def two_col_table(headers, rows, col_widths=None):
if col_widths is None:
col_widths = [doc.width * 0.35, doc.width * 0.65]
data = [[Paragraph(f"<b>{h}</b>", S("th", fontName="Helvetica-Bold", fontSize=9,
textColor=WHITE)) for h in headers]]
for row in rows:
data.append([Paragraph(str(c), S("td", fontName="Helvetica", fontSize=9, leading=12))
for c in row])
tbl = Table(data, colWidths=col_widths)
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, GRAY_BG]),
("BOX", (0,0), (-1,-1), 0.5, GRAY_BORDER),
("INNERGRID", (0,0), (-1,-1), 0.3, GRAY_BORDER),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(tbl)
sp(6)
def multi_col_table(headers, rows, col_widths=None):
if col_widths is None:
n = len(headers)
col_widths = [doc.width / n] * n
data = [[Paragraph(f"<b>{h}</b>", S("mth", fontName="Helvetica-Bold", fontSize=9,
textColor=WHITE)) for h in headers]]
for row in rows:
data.append([Paragraph(str(c), S("mtd", fontName="Helvetica", fontSize=8.5, leading=12))
for c in row])
tbl = Table(data, colWidths=col_widths)
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MED_BLUE),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_BLUE]),
("BOX", (0,0), (-1,-1), 0.5, MED_BLUE),
("INNERGRID", (0,0), (-1,-1), 0.3, GRAY_BORDER),
("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)
sp(6)
# ════════════════════════════════════════════════════════════════════════════
# COVER PAGE
# ════════════════════════════════════════════════════════════════════════════
cover_bg = Table([
[Paragraph("PHYSIOLOGY", S("cv1", fontName="Helvetica", fontSize=13, textColor=LIGHT_BLUE,
alignment=TA_CENTER, spaceAfter=6))],
[Paragraph("SPECIAL SENSES", S("cv2", fontName="Helvetica-Bold", fontSize=11, textColor=LIGHT_BLUE,
alignment=TA_CENTER, spaceAfter=6))],
[Paragraph("PART A: VISION", cover_title)],
[Spacer(1, 10)],
[HRFlowable(width="60%", thickness=2, color=LIGHT_BLUE, hAlign="CENTER")],
[Spacer(1, 10)],
[Paragraph("Chapters 142 – 148", cover_sub)],
[Spacer(1, 6)],
[Paragraph("Functional Anatomy • Image Formation • Photoreceptors", cover_info)],
[Paragraph("Visual Pathway • Visual Acuity • Color Vision • Eye Movements", cover_info)],
[Spacer(1, 14)],
[Paragraph("Diseases • Clinical Correlations • Drugs & Treatments", cover_info)],
[Spacer(1, 20)],
[HRFlowable(width="40%", thickness=1, color=LIGHT_BLUE, hAlign="CENTER")],
[Spacer(1, 10)],
[Paragraph("Sources: Guyton & Hall | Ganong | Costanzo | Medical Physiology (Boron)", cover_info)],
[Paragraph("Exam-Ready Notes | July 2026", cover_info)],
], colWidths=[doc.width + 3.6*cm])
cover_bg.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
("LEFTPADDING", (0,0), (-1,-1), 20),
("RIGHTPADDING", (0,0), (-1,-1), 20),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
("ALIGN", (0,0), (-1,-1), "CENTER"),
]))
# Wrap in a frame that fills the page
from reportlab.platypus import Frame
story.append(Spacer(1, 2*cm))
story.append(cover_bg)
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════════
# CHAPTER 142 — FUNCTIONAL ANATOMY OF THE EYE
# ════════════════════════════════════════════════════════════════════════════
story.append(chapter_banner("142", "Functional Anatomy of the Eye"))
sp(8)
section("Overview")
B("The eye is a specialized sense organ designed to detect electromagnetic radiation (light) in the visible spectrum (400–750 nm). It transduces light energy into nerve impulses interpreted by the brain as vision.")
section("Layers of the Eyeball")
B("The wall of the eye consists of three concentric layers:")
multi_col_table(
["Layer", "Composition", "Key Structures", "Function"],
[
["Outer (Fibrous)", "Fibrous connective tissue", "Cornea, sclera, conjunctiva, corneal epithelium",
"Protection; cornea refracts light; sclera maintains shape"],
["Middle (Uvea/Vascular)", "Vascular + smooth muscle", "Iris, ciliary body, choroid",
"Nutrition; regulates light entry (iris); accommodation (ciliary); absorbs stray light (choroid)"],
["Inner (Neural)", "Neural tissue", "Retina (neurosensory + RPE)", "Photoreception and initial processing"],
],
col_widths=[doc.width*0.18, doc.width*0.20, doc.width*0.32, doc.width*0.30]
)
section("Key Anatomical Landmarks")
subsection("Cornea")
bullet("Transparent, avascular, accounts for ~70% of total refractive power (~43 D)")
bullet("Nourished by aqueous humor and limbal vessels; oxygenated from tears")
bullet("Highly innervated by ophthalmic branch of CN V — basis for corneal reflex")
bullet("5 layers: Epithelium → Bowman's → Stroma → Descemet's → Endothelium")
subsection("Lens")
bullet("Biconvex, avascular, transparent crystalline structure")
bullet("Refractive power: ~20 D at rest, increases during accommodation")
bullet("Suspended by zonule fibers (zonules of Zinn) from ciliary body")
bullet("Composed of lens fibers (lost nuclei) and lens capsule (basement membrane)")
bullet("Undergoes continuous growth — older fibers form the nucleus; newer fibers the cortex")
subsection("Iris and Pupil")
bullet("Iris contains two muscles: sphincter pupillae (parasympathetic, miosis) and dilator pupillae (sympathetic, mydriasis)")
bullet("Pupil = aperture in the iris; controls amount of light entering")
bullet("Normal pupil diameter: 2–8 mm")
subsection("Ciliary Body")
bullet("Contains ciliary muscle (smooth muscle) — regulates lens shape for accommodation")
bullet("Produces aqueous humor via active transport + ultrafiltration at ciliary epithelium")
bullet("Rate of aqueous production: ~2 mL/day; normal IOP: 10–21 mmHg")
subsection("Choroid")
bullet("Highly vascular layer between sclera and retina")
bullet("Supplies outer 1/3 of retina; remainder supplied by central retinal artery")
bullet("Contains melanin — absorbs stray light, prevents scatter")
section("Retina")
subsection("Layers (from outside in — choroid to vitreous)")
multi_col_table(
["Layer #", "Layer Name", "Key Note"],
[
["1", "Retinal Pigment Epithelium (RPE)", "Absorbs light, recycles retinal, phagocytoses shed outer segments"],
["2", "Photoreceptor layer (rods & cones)", "Outer segments contain photopigments"],
["3", "Outer limiting membrane", "Junction between photoreceptors and Muller cells"],
["4", "Outer nuclear layer (ONL)", "Cell bodies of rods and cones"],
["5", "Outer plexiform layer (OPL)", "Synapses between photoreceptors and bipolar/horizontal cells"],
["6", "Inner nuclear layer (INL)", "Bipolar, horizontal, amacrine, Muller cell bodies"],
["7", "Inner plexiform layer (IPL)", "Synapses between bipolar/amacrine cells and ganglion cells"],
["8", "Ganglion cell layer (GCL)", "Retinal ganglion cell bodies"],
["9", "Nerve fiber layer (NFL)", "Axons of ganglion cells → optic nerve"],
["10", "Inner limiting membrane", "Basal lamina of Muller cells"],
],
col_widths=[doc.width*0.08, doc.width*0.38, doc.width*0.54]
)
subsection("Special Retinal Regions")
two_col_table(
["Region", "Features"],
[
["Macula lutea", "Area of highest visual acuity; ~5.5 mm diameter; contains xanthophyll pigment (lutein/zeaxanthin)"],
["Fovea centralis", "Central pit within macula; contains ONLY cones (highest density ~150,000/mm²); no rods; no blood vessels"],
["Foveola", "Central 0.35 mm of fovea; thinnest part; pure cone vision"],
["Optic disc (blind spot)", "Exit point of optic nerve; NO photoreceptors; ~1.5 mm diameter; located ~15° nasal to fovea"],
["Ora serrata", "Anterior margin of retina; junction with ciliary body"],
]
)
section("Photoreceptors: Rods vs. Cones")
multi_col_table(
["Feature", "Rods", "Cones"],
[
["Number", "~120 million", "~6 million"],
["Distribution", "Peripheral retina; absent from fovea", "Concentrated at fovea; absent at periphery"],
["Photopigment", "Rhodopsin (opsin + 11-cis retinal)", "Photopsin (3 types: S, M, L)"],
["Sensitivity", "High (low-light/scotopic vision)", "Low (bright/photopic vision)"],
["Acuity", "Low (high convergence: 100:1)", "High (1:1 at fovea)"],
["Color vision", "No", "Yes"],
["Dark adaptation", "Slow (25-30 min)", "Fast (~5-7 min)"],
["Adaptation range", "Mesopic + scotopic", "Photopic"],
["Vitamin A dependence", "Yes (retinal derived from Vit A)", "Yes"],
],
col_widths=[doc.width*0.22, doc.width*0.39, doc.width*0.39]
)
mnemonic_box("SCRAMP", "Sclera-Cornea-Retina-Aqueous-Macula-Pupil — key anterior to posterior structures")
section("Aqueous Humor")
bullet("Produced by: ciliary epithelium (posterior chamber)")
bullet("Flow: posterior chamber → pupil → anterior chamber → trabecular meshwork → canal of Schlemm → episcleral veins")
bullet("Functions: maintains IOP, nourishes cornea and lens, removes metabolic waste")
bullet("Normal IOP: 10–21 mmHg (measured by tonometry)")
clinical_box("Glaucoma",
"Definition: Optic neuropathy with IOP > 21 mmHg (most cases) + optic nerve damage + visual field loss",
"Open-angle glaucoma (most common): impaired trabecular outflow; insidious onset; 'silent thief of sight'",
"Angle-closure glaucoma: sudden blockage of drainage angle; acute painful red eye; haloes around lights; EMERGENCY",
"Optic disc finding: increased cup-to-disc ratio (>0.6), notching, ISNT rule violation",
"Visual field: arcuate scotoma, nasal step, then tunnel vision"
)
drug_box("Drugs for Glaucoma (Reduce IOP)",
"Beta-blockers: Timolol, Betaxolol — reduce aqueous production (1st line)",
"Prostaglandin analogues: Latanoprost, Bimatoprost — increase uveoscleral outflow (most potent IOP lowering)",
"Alpha-2 agonists: Brimonidine — reduce production + increase outflow",
"Carbonic anhydrase inhibitors: Dorzolamide (topical), Acetazolamide (oral) — reduce aqueous production",
"Cholinergic (miotics): Pilocarpine — increase trabecular outflow; used in angle-closure",
"Rho kinase inhibitors: Netarsudil — increase trabecular outflow (newer)",
"Surgical: Trabeculectomy, laser trabeculoplasty (SLT/ALT), tube-shunt procedures"
)
section("Vitreous Humor")
bullet("Fills posterior segment (80% of eye volume)")
bullet("Gel-like: 99% water + hyaluronic acid + collagen fibrils")
bullet("Functions: maintains eye shape, transmits light, provides metabolic support to retina")
bullet("Clinical: vitreous detachment causes 'floaters'; vitreous hemorrhage causes sudden vision loss")
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════════
# CHAPTER 143 — IMAGE-FORMING MECHANISM
# ════════════════════════════════════════════════════════════════════════════
story.append(chapter_banner("143", "Image-Forming Mechanism"))
sp(8)
section("Optics of the Eye")
B("The eye forms images on the retina through refraction. The total refractive power of the eye is approximately 59 diopters (D) when focused at distance.")
two_col_table(
["Refracting Surface", "Power (approx.)"],
[
["Anterior corneal surface", "~+48 D (most important)"],
["Posterior corneal surface", "~−5 D"],
["Lens (at rest)", "~+20 D"],
["Lens (fully accommodated)", "~+33 D"],
["Total eye at rest", "~59 D"],
]
)
section("Accommodation")
subsection("Definition")
B("The ability of the eye to increase its refractive power by increasing lens curvature to focus on near objects. Range of accommodation decreases with age (presbyopia).")
subsection("Mechanism (Near Reflex Triad)")
bullet("<b>Accommodation:</b> Ciliary muscle contracts → zonule fibers relax → lens becomes more spherical (increased curvature) → increased refractive power → near objects focused on retina")
bullet("<b>Miosis:</b> Sphincter pupillae contracts → pupil constricts → increases depth of focus, reduces aberrations")
bullet("<b>Convergence:</b> Medial recti contract → eyes turn inward → single binocular vision")
subsection("Neural Control")
bullet("Parasympathetic: CN III (oculomotor) → ciliary ganglion → short ciliary nerves → ciliary muscle + sphincter pupillae")
bullet("Center: Edinger-Westphal nucleus (pretectal area)")
subsection("Amplitude of Accommodation")
bullet("Young adult: ~10–12 D")
bullet("Age 40: ~4–5 D")
bullet("Age 60+: <1 D (presbyopia)")
section("Refractive Errors")
multi_col_table(
["Condition", "Defect", "Mechanism", "Correction"],
[
["Emmetropia", "None", "Parallel rays focused exactly on retina", "None needed"],
["Myopia (shortsighted)", "Far objects blurred", "Eyeball too long OR cornea too curved; image falls ANTERIOR to retina", "Concave (diverging) lens"],
["Hyperopia/Hypermetropia (farsighted)", "Near objects blurred (severe: all objects)", "Eyeball too short OR cornea too flat; image falls BEHIND retina", "Convex (converging) lens"],
["Astigmatism", "Blurred at all distances", "Asymmetric curvature of cornea/lens; different meridians have different focal points", "Cylindrical (toric) lens"],
["Presbyopia", "Near vision loss with age", "Decreased lens elasticity → reduced accommodation amplitude", "Convex reading glasses"],
],
col_widths=[doc.width*0.17, doc.width*0.18, doc.width*0.40, doc.width*0.25]
)
imp_box("High-Yield Exam Points on Refractive Errors",
"Myopia: most common refractive error; associated with lattice degeneration and retinal detachment risk",
"Aphakia (lens removed): hyperopic shift; corrected with convex lens or IOL implant",
"Keratoconus: progressive corneal ectasia → irregular astigmatism; Munson's sign, Fleischer ring",
"LASIK/PRK: reshapes corneal stroma to correct refractive error"
)
section("Pupillary Light Reflex")
subsection("Pathway")
B("Afferent: Retina → optic nerve (CN II) → optic chiasm → optic tract → pretectal nucleus (midbrain) — DOES NOT go to LGN or visual cortex")
B("Efferent: Pretectal nucleus → BILATERAL Edinger-Westphal nuclei → CN III → ciliary ganglion → short ciliary nerves → sphincter pupillae (constriction)")
two_col_table(
["Type", "Response"],
[
["Direct light reflex", "Light in one eye → constriction of same eye pupil"],
["Consensual reflex", "Light in one eye → constriction of OPPOSITE eye pupil (bilateral pretectal projection)"],
["RAPD (Marcus Gunn pupil)", "Swinging flashlight test: afferent defect in one eye → that eye dilates when light shone in it; indicates optic nerve/extensive retinal disease"],
]
)
clinical_box("Pupillary Abnormalities",
"Argyll Robertson pupil: accommodates but does NOT react to light ('prostitute's pupil'); syphilis (pretectal lesion); small irregular pupils",
"Adie's (tonic) pupil: large pupil, slow reaction to light and accommodation; benign; supersensitive to dilute pilocarpine; ciliary ganglion damage",
"Horner syndrome: ptosis + miosis + anhidrosis; sympathetic chain disruption; cocaine/hydroxyamphetamine test localizes lesion",
"CN III palsy: fixed dilated pupil + down-and-out eye; compressive lesions (aneurysm) affect pupil; ischemic lesions often spare pupil"
)
section("Depth Perception and Binocular Vision")
bullet("Stereopsis: binocular disparity of images on two retinas → brain fuses them → 3D perception")
bullet("Panum's fusional area: zone within which binocular fusion occurs")
bullet("Horopter: locus of points in visual space that stimulate corresponding retinal points")
bullet("Diplopia: images fall outside Panum's area; can be physiological (extreme gaze) or pathological (muscle palsy)")
clinical_box("Strabismus",
"Esotropia: eyes deviate inward; most common childhood strabismus",
"Exotropia: eyes deviate outward",
"Amblyopia ('lazy eye'): reduced vision from suppression of one eye's input; treat with patching of good eye + glasses before age 7",
"Cover test: uncovers latent deviation (phoria) vs manifest (tropia)"
)
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════════
# CHAPTER 144 — PHOTORECEPTOR MECHANISM
# ════════════════════════════════════════════════════════════════════════════
story.append(chapter_banner("144", "Photoreceptor Mechanism"))
sp(8)
section("Structure of Photoreceptors")
subsection("Rod Structure")
bullet("Outer segment: stacked membranous discs containing rhodopsin (~10⁸ molecules/rod)")
bullet("Inner segment: contains mitochondria, ribosomes, Golgi — metabolically active")
bullet("Cell body: nucleus")
bullet("Synaptic terminal: connects to bipolar and horizontal cells")
subsection("Cone Structure")
bullet("Similar to rod but outer segment is conical (tapered)")
bullet("Outer segment discs are not completely detached from cell membrane (unlike rods)")
bullet("Three types: S-cones (short-wavelength, ~420 nm, blue), M-cones (medium, ~530 nm, green), L-cones (long, ~560 nm, red)")
section("Photopigments")
two_col_table(
["Pigment", "Details"],
[
["Rhodopsin", "Rod photopigment; G-protein coupled receptor; consists of opsin (protein) + 11-cis retinal (chromophore, derived from Vitamin A)"],
["Photopsins (iodopsins)", "Cone photopigments; same mechanism as rhodopsin; different opsins give different spectral sensitivities"],
["11-cis retinal", "Chromophore in dark state; isomerizes to all-trans retinal on photon absorption"],
["Vitamin A (retinol)", "Precursor to retinal; deficiency causes night blindness (nyctalopia)"],
]
)
section("Phototransduction Cascade")
B("<b>In the DARK (resting state):</b>")
bullet("cGMP levels are HIGH (maintained by guanylyl cyclase)")
bullet("cGMP-gated cation channels OPEN → Na⁺ and Ca²⁺ enter outer segment")
bullet("Simultaneously, K⁺ exits inner segment — creating the 'dark current'")
bullet("Cell is DEPOLARIZED (~−40 mV) → continuous release of glutamate at synapse")
B("<b>In the LIGHT (activated state):</b>")
bullet("Photon absorbed by 11-cis retinal → isomerizes to all-trans retinal → activates rhodopsin (R*)")
bullet("R* activates Transducin (Gt — a G-protein) → Gα subunit released")
bullet("Gα activates PDE (phosphodiesterase) → cGMP hydrolyzed to 5'-GMP → cGMP levels FALL")
bullet("cGMP-gated channels CLOSE → Na⁺ and Ca²⁺ entry stops → HYPERPOLARIZATION (~−70 mV)")
bullet("Hyperpolarization → DECREASED glutamate release from synaptic terminal")
imp_box("Key Points: Phototransduction",
"Photoreceptors are DEPOLARIZED in dark and HYPERPOLARIZE in light (opposite of most neurons)",
"Signal amplification: 1 photon → 1 R* → 500 transducin molecules → 10⁵ cGMP hydrolyzed",
"cGMP is the second messenger — its hydrolysis closes channels",
"Glutamate is released continuously in dark; decreases in light",
"Ca²⁺ feedback: falling Ca²⁺ in light activates guanylyl cyclase (via GCAP) → restores cGMP → adaptation"
)
section("Recovery and Adaptation Mechanisms")
subsection("Rhodopsin Regeneration")
bullet("All-trans retinal released from opsin → reduced to all-trans retinol by NADPH")
bullet("Transported to RPE → isomerized back to 11-cis retinol → oxidized to 11-cis retinal")
bullet("11-cis retinal transported back to outer segment → combines with opsin → rhodopsin regenerated")
bullet("Complete regeneration: ~30–40 minutes (explains dark adaptation time)")
subsection("Termination of Signal")
bullet("Rhodopsin kinase phosphorylates R* → Arrestin binds → R* inactivated")
bullet("GAP proteins accelerate GTP hydrolysis on transducin → inactivation")
bullet("Guanylyl cyclase (activated by low Ca²⁺ via GCAP) restores cGMP")
section("Dark and Light Adaptation")
subsection("Dark Adaptation")
bullet("Transition from bright to dark light")
bullet("Two phases: Cone adaptation (0–7 min, less sensitive) then Rod adaptation (7–30 min, very sensitive)")
bullet("Cone threshold reached at ~5–7 min; rod threshold at ~20–30 min (Kohlrausch kink in dark adaptation curve)")
bullet("Mechanism: rhodopsin regeneration + neural adaptation (reduced background firing)")
bullet("Final threshold: rods ~1000x more sensitive than cones")
subsection("Light Adaptation")
bullet("Transition from dark to bright light: rapid (seconds to minutes)")
bullet("Mechanisms: photopigment bleaching (reduces effective pigment), pupil constriction, neural adaptation")
bullet("Light adaptation adjusts the system over a 10¹⁰ intensity range")
clinical_box("Night Blindness (Nyctalopia)",
"Causes: Vitamin A deficiency (most common worldwide), Retinitis Pigmentosa, Choroideremia",
"Vit A deficiency: first sign = night blindness; then Bitot's spots (xerophthalmia); then corneal ulceration (keratomalacia)",
"Retinitis Pigmentosa: progressive rod degeneration; 'bone-spicule' pigmentation; starts peripherally; autosomal dominant/recessive/X-linked",
"Treatment of Vit A deficiency: oral/IM Vitamin A (retinol palmitate)"
)
drug_box("Vitamin A and Retinoids",
"Vitamin A (Retinol): essential for rhodopsin synthesis; also required for epithelial differentiation",
"Isotretinoin (13-cis retinoic acid): severe acne treatment; teratogenic; causes intracranial hypertension",
"Tretinoin (all-trans retinoic acid): topical anti-aging, acne; systemic in APML (differentiation therapy)",
"Excess Vitamin A: teratogenic (cleft palate, cardiac defects), hepatotoxic, pseudotumor cerebri"
)
section("Retinal Cell Types and Signal Processing")
multi_col_table(
["Cell Type", "Location", "Response", "Function"],
[
["Photoreceptors", "ONL", "Hyperpolarize to light", "Primary photon detection"],
["Bipolar cells", "INL", "ON-center: depolarize to light; OFF-center: hyperpolarize", "Vertical transmission; center-surround organization"],
["Horizontal cells", "INL", "Hyperpolarize to light", "Lateral inhibition; modulate bipolar cell input"],
["Amacrine cells", "INL/GCL", "Transient responses (ON, OFF, ON-OFF)", "Temporal processing, motion detection, contrast"],
["Ganglion cells", "GCL", "Action potentials (fire to light)", "Output neurons; axons form optic nerve"],
["Muller cells", "Span all layers", "Glial support", "Structural support, K⁺ buffering, glutamate recycling"],
["RPE cells", "Behind photoreceptors", "Phagocytosis", "Recycles retinal, maintains photoreceptor health, forms blood-retinal barrier"],
],
col_widths=[doc.width*0.18, doc.width*0.12, doc.width*0.28, doc.width*0.42]
)
mnemonic_box("ON-center bipolar cells: SIGN FLIP",
"In DARK: glutamate from photoreceptors CLOSES mGluR6 channels on ON-bipolars → hyperpolarized. In LIGHT: less glutamate → channels open → depolarized. OFF-bipolars use AMPA/kainate receptors → directly depolarized by glutamate (conventional).")
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════════
# CHAPTER 145 — VISUAL PATHWAY AND VISUAL CORTEX
# ════════════════════════════════════════════════════════════════════════════
story.append(chapter_banner("145", "Visual Pathway and Visual Cortex"))
sp(8)
section("Visual Pathway: Overview")
B("The visual pathway carries information from the retina to the visual cortex in a precise retinotopic arrangement. Each visual field is processed by the contralateral cerebral hemisphere.")
multi_col_table(
["Structure", "Location", "Key Feature"],
[
["Retina", "Posterior eye", "Nasal fibers cross; temporal fibers stay ipsilateral"],
["Optic nerve (CN II)", "Intraorbital → intracranial", "Contains only ipsilateral fibers from one retina"],
["Optic chiasm", "Above sella turcica, below hypothalamus", "Nasal (medial) fibers CROSS; temporal fibers do NOT cross"],
["Optic tract", "Posterior chiasm → LGN", "Contains temporal fibers from ipsilateral eye + nasal fibers from contralateral eye → represents contralateral visual field"],
["Lateral Geniculate Nucleus (LGN)", "Thalamus (metathalamus)", "6 layers: L 1,4,6 = contralateral eye; L 2,3,5 = ipsilateral eye; L 1,2 = M cells (magno); L 3-6 = P cells (parvo)"],
["Optic radiations (geniculocalcarine tract)", "Temporal + parietal lobes", "Upper fibers → parietal lobe; Lower fibers (Meyer's loop) → temporal lobe; represent upper and lower visual fields respectively"],
["Primary visual cortex (V1)", "Occipital lobe, calcarine fissure (Brodmann area 17)", "Retinotopic; processes basic features (orientation, contrast)"],
],
col_widths=[doc.width*0.22, doc.width*0.22, doc.width*0.56]
)
section("Decussation at Optic Chiasm")
bullet("Nasal retinal fibers → cross to contralateral optic tract (represent temporal visual field)")
bullet("Temporal retinal fibers → stay ipsilateral (represent nasal visual field)")
bullet("Result: Left optic tract = left temporal retina + right nasal retina = right visual field")
bullet("Therefore: Each hemisphere processes the CONTRALATERAL visual field")
section("Visual Field Defects (High-Yield)")
two_col_table(
["Lesion Site", "Visual Field Defect"],
[
["Optic nerve (one eye)", "Monocular blindness (complete) or monocular scotoma"],
["Optic chiasm — central (pituitary tumor)", "Bitemporal hemianopia (classic; 'tunnel vision')"],
["Optic chiasm — lateral compression (aneurysm)", "Binasal hemianopia (rare)"],
["Optic tract", "Contralateral homonymous hemianopia (incongruous — unequal defects in each eye)"],
["LGN", "Contralateral homonymous hemianopia"],
["Meyer's loop (temporal lobe)", "Contralateral upper quadrantanopia ('pie in the sky')"],
["Parietal optic radiations", "Contralateral lower quadrantanopia ('pie on the floor')"],
["Occipital cortex (V1)", "Contralateral homonymous hemianopia WITH macular sparing (dual blood supply of macula)"],
["Tip of occipital pole", "Contralateral monocular central scotoma"],
]
)
mnemonic_box("MACULAR SPARING in occipital lobe lesions",
"Macula has dual blood supply (MCA + PCA); occipital infarct usually from PCA but macula may be spared by MCA. Also: larger cortical representation of macula at occipital pole may not be fully affected.")
section("LGN: Laminar Organization")
bullet("Layer 1 (ventral): M-cells (Magnocellular) — motion, depth, low spatial frequency — CONTRALATERAL eye")
bullet("Layer 2: M-cells — IPSILATERAL eye")
bullet("Layers 3–6: P-cells (Parvocellular) — color, fine detail, high spatial frequency")
bullet("Layer 3: P-cells — IPSILATERAL; Layer 4: P-cells — CONTRALATERAL")
bullet("Layer 5: P-cells — IPSILATERAL; Layer 6: P-cells — CONTRALATERAL")
bullet("Koniocellular layers (K): between main layers; blue-yellow color, feedback")
section("Primary Visual Cortex (V1 / Striate Cortex)")
subsection("Functional Organization")
bullet("Brodmann area 17; located in banks of calcarine fissure (occipital lobe)")
bullet("Receives input from LGN layer 4 (layer 4C of cortex)")
bullet("Organization: Ocular dominance columns (alternating L/R eye input) + Orientation columns")
bullet("Blobs: regions rich in cytochrome oxidase → color processing")
bullet("Hubel & Wiesel: Simple cells (respond to oriented lines) → Complex cells → Hypercomplex cells")
bullet("Retinotopic map: macula overrepresented (~50% of V1 dedicated to central 10° of vision)")
section("Extrastriate Visual Areas")
two_col_table(
["Area", "Function / Damage Effect"],
[
["V2 (Brodmann 18)", "Early processing; color and form"],
["V3", "Dynamic form, motion"],
["V4 (area V8)", "Color perception — damage causes achromatopsia (color blindness)"],
["V5/MT (Middle Temporal)", "Motion perception — damage causes akinetopsia (inability to perceive motion)"],
["Dorsal stream ('Where' pathway)", "V1 → V5/MT → Parietal cortex; spatial location, motion, visuomotor control"],
["Ventral stream ('What' pathway)", "V1 → V4 → Inferior temporal cortex; object recognition, color, fine detail"],
]
)
clinical_box("Visual Cortex Lesions",
"Anton syndrome (cortical blindness): bilateral occipital lobe lesion; patient DENIES being blind (anosognosia); pupils react normally",
"Balint syndrome: bilateral parietal-occipital lesion; simultanagnosia + optic ataxia + oculomotor apraxia",
"Prosopagnosia: bilateral fusiform gyrus lesion; cannot recognize faces",
"Akinetopsia: V5/MT lesion; cannot perceive motion; traffic appears 'frozen'",
"Achromatopsia: V4/V8 lesion; sees only in grayscale; NOT color blindness (which is retinal)"
)
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════════
# CHAPTER 146 — VISUAL ACUITY, VISUAL FIELD, LIGHT/DARK ADAPTATION, REFLEXES
# ════════════════════════════════════════════════════════════════════════════
story.append(chapter_banner("146", "Visual Acuity, Visual Field, Light & Dark Adaptation, and Visual Reflexes"))
sp(8)
section("Visual Acuity")
subsection("Definition")
B("Visual acuity (VA) is the ability of the eye to distinguish fine detail — specifically, the minimum angle of resolution (MAR). Normal VA = 6/6 (metric) or 20/20 (imperial): resolves 1 minute of arc.")
subsection("Snellen's Notation")
bullet("6/6: can read at 6 m what a normal person reads at 6 m")
bullet("6/60: can only read at 6 m what a normal person reads at 60 m (severe impairment)")
bullet("6/18 = legally impaired; <6/60 = blind (WHO criteria in worse eye with best correction)")
bullet("Minimum angle of resolution (MAR) = 1 minute of arc; corresponds to 1.5 μm on retina")
subsection("Factors Affecting Visual Acuity")
bullet("Cone density at fovea (highest), pupil size, refractive error, media clarity, cortical processing")
bullet("Best VA at fovea (6/6); falls off sharply with eccentricity")
bullet("Photopic (cone) vision > Scotopic (rod) vision for acuity")
section("Visual Field")
subsection("Normal Extents")
bullet("Temporal: ~90–100° from fixation point")
bullet("Nasal: ~60°")
bullet("Superior: ~60°")
bullet("Inferior: ~70–75°")
bullet("Blind spot: ~15° temporal to fixation, 1.5° below horizontal (optic disc)")
subsection("Tests of Visual Field")
two_col_table(
["Test", "Details"],
[
["Confrontation test", "Bedside screening; examiner's field compared to patient's; detects gross defects"],
["Perimetry (Goldmann)", "Kinetic perimetry; maps isopters (lines of equal sensitivity); good for peripheral field"],
["Automated perimetry (Humphrey)", "Static threshold perimetry; standard for glaucoma monitoring"],
["Amsler grid", "Tests central 10° of field; detects metamorphopsia and central scotoma; used in macular disease"],
]
)
section("Dark Adaptation")
subsection("Curve")
bullet("After exposure to bright light, sensitivity increases over time in the dark")
bullet("Phase 1 (0–7 min): Cones adapt, threshold falls rapidly — cone plateau")
bullet("Kohlrausch kink: ~7–10 min, transition from cone to rod adaptation")
bullet("Phase 2 (7–30+ min): Rods adapt, threshold falls further — much lower final threshold")
bullet("Rods are ~1000x more sensitive at maximum dark adaptation than cones")
subsection("Factors Affecting Dark Adaptation")
bullet("Vitamin A deficiency: impairs rhodopsin regeneration → elevated final threshold → night blindness")
bullet("Age: older rhodopsin regeneration is slower")
bullet("Bleaching wavelength: red light bleaches less rhodopsin (used in cockpits, submarines)")
bullet("Oxygen deprivation: reduces dark adaptation (high altitude flying)")
section("Light Adaptation")
bullet("Occurs within seconds to minutes (much faster than dark adaptation)")
bullet("Mechanisms: pupil constriction (1.5 log units), photopigment bleaching, neural gain reduction")
bullet("Weber-Fechner law: ΔI/I = constant (just noticeable difference is proportional to background intensity)")
bullet("Stevens' power law: more accurate for brightness perception")
section("Visual Reflexes")
subsection("1. Pupillary Light Reflex (PLR)")
bullet("Afferent: CN II; Efferent: CN III (Edinger-Westphal nucleus)")
bullet("Direct + Consensual responses")
bullet("Critical test: swinging flashlight test for RAPD")
subsection("2. Near (Accommodation) Reflex")
bullet("Triad: Accommodation + Convergence + Miosis")
bullet("Pathway: Visual cortex → frontal eye fields → CN III → ciliary ganglion")
subsection("3. Corneal (Blink) Reflex")
bullet("Afferent: CN V1 (ophthalmic) via nasociliary nerve → trigeminal sensory nucleus")
bullet("Efferent: CN VII (facial nerve) → orbicularis oculi → eye closure")
bullet("Direct + consensual blink; tests integrity of pons")
subsection("4. Menace Reflex")
bullet("Object moving rapidly toward eye → blink response; requires intact visual cortex + cerebellum")
bullet("Absent in infants until ~3 months, in coma, cortical blindness")
subsection("5. Dazzle Reflex")
bullet("Bright light → blink; subcortical (superior colliculus); present even in cortical blindness")
subsection("6. Optokinetic Nystagmus (OKN)")
bullet("Moving striped drum produces rhythmic slow (pursuit) and fast (saccadic) eye movements")
bullet("Tests: integrity of visual pathway, pursuit pathways, and extraocular muscles")
bullet("Absent in severe visual impairment; used to test vision in infants and non-cooperative patients")
two_col_table(
["Reflex", "Afferent (CN)", "Efferent (CN)", "Center"],
[
["Pupillary light reflex", "II", "III (EW nucleus)", "Pretectal nucleus (midbrain)"],
["Accommodation reflex", "II / Cortex", "III", "Frontal eye fields + EW nucleus"],
["Corneal reflex", "V1", "VII", "Spinal trigeminal + facial nucleus (pons)"],
["Menace reflex", "II (cortex)", "VII", "Visual cortex + cerebellum"],
]
)
clinical_box("Argyll Robertson vs Adie Pupil (High Yield)",
"Argyll Robertson: Accommodation PRESENT, Light reflex ABSENT; bilateral; neurosyphilis; miotic pupils",
"Adie's tonic pupil: Accommodation SLOW, Light reflex SLOW/ABSENT; unilateral; benign; large pupil; supersensitive to 0.1% pilocarpine",
"Holmes-Adie syndrome: Adie's pupil + areflexia (loss of deep tendon reflexes)"
)
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════════
# CHAPTER 147 — COLOR VISION
# ════════════════════════════════════════════════════════════════════════════
story.append(chapter_banner("147", "Color Vision"))
sp(8)
section("Basics of Color")
bullet("Visible spectrum: 400–750 nm (ROYGBIV: red 750 nm → violet 400 nm)")
bullet("Color has three attributes: <b>Hue</b> (wavelength), <b>Saturation</b> (purity/freedom from white), <b>Brightness/Luminance</b> (intensity)")
bullet("Complementary colors: pairs that produce white when mixed (e.g., blue + yellow)")
bullet("Primary colors (additive): Red (723–647 nm) + Green (575–492 nm) + Blue (492–450 nm)")
section("Trichromatic Theory (Young-Helmholtz)")
B("The retina contains three types of cone photoreceptors with different peak sensitivities. All color perceptions result from the combined stimulation of these three cone types.")
multi_col_table(
["Cone Type", "Common Name", "Peak Wavelength", "Photopigment"],
[
["S (Short)", "Blue cones", "~420 nm (blue-violet)", "Short-wave opsin (OPN1SW)"],
["M (Medium)", "Green cones", "~530 nm (green)", "Medium-wave opsin (OPN1MW)"],
["L (Long)", "Red cones", "~560–570 nm (red-yellow)", "Long-wave opsin (OPN1LW)"],
]
)
B("Example: Orange light (580 nm) stimulates L:M:S in ratio 99:42:0 → perceived as orange.")
B("White light: approximately equal stimulation of all three cones.")
section("Opponent Color Theory (Hering)")
B("Colors are processed in antagonistic pairs at retina (bipolar/horizontal cells) and LGN:")
bullet("Red (+) vs. Green (-): L − M opponent channel")
bullet("Blue (+) vs. Yellow (−): S − (L+M) opponent channel")
bullet("Luminance channel: L + M (brightness)")
B("Explains afterimages and simultaneous color contrast: staring at red produces green afterimage.")
section("Cortical Color Processing")
bullet("V4 (area V8): critical for color constancy — recognizing colors despite changing illumination")
bullet("Blobs in V1: cytochrome oxidase-rich areas; receive direct koniocellular input; process color")
bullet("Color constancy mediated by comparisons across the visual field")
section("Color Blindness (Dyschromatopsia)")
subsection("Genetics")
bullet("OPN1LW (L-opsin) and OPN1MW (M-opsin) genes: located on X chromosome (Xq28) → X-linked inheritance")
bullet("OPN1SW (S-opsin) gene: chromosome 7 → not X-linked")
bullet("Prevalence: 8% of males, 0.4% of females (for red-green defects)")
subsection("Classification")
multi_col_table(
["Prefix", "Defect", "Types", "Key Feature"],
[
["Prot-", "Red (L-cone) defect",
"Protanopia (absent L-cones)\nProtanomaly (shifted L-opsin)", "Cannot distinguish red/green; red appears dark"],
["Deuter-", "Green (M-cone) defect",
"Deuteranopia (absent M-cones)\nDeuteranomaly (most common, ~5% males)", "Cannot distinguish red/green; most prevalent"],
["Trit-", "Blue (S-cone) defect",
"Tritanopia (absent S-cones)\nTritanomaly", "Cannot distinguish blue/yellow; rare; autosomal"],
],
col_widths=[doc.width*0.1, doc.width*0.2, doc.width*0.38, doc.width*0.32]
)
two_col_table(
["Term", "Definition"],
[
["Trichromat", "Normal; uses all 3 cone systems"],
["Anomalous trichromat", "All 3 cones present but one has shifted sensitivity; most common color deficiency"],
["Dichromat", "Only 2 functional cone types; protanopia/deuteranopia/tritanopia"],
["Monochromat", "Only 1 (or no) cone type; total color blindness (achromatopsia if all cones affected)"],
["Achromatopsia", "Sees only in grayscale; either cone monochromacy (retinal) or cerebral (V4 lesion)"],
]
)
subsection("Tests for Color Vision")
bullet("<b>Ishihara plates:</b> pseudo-isochromatic plates; screens for red-green defects; each plate has number visible only to trichromats OR only to dichromats")
bullet("<b>Farnsworth-Munsell 100 hue test:</b> sensitive; quantifies severity; identifies axis of confusion")
bullet("<b>Anomaloscope (Rayleigh match):</b> gold standard; patient matches yellow by mixing red + green light")
bullet("<b>Hardy-Rand-Rittler (HRR) plates:</b> detects all types including blue-yellow defects")
imp_box("Drug-Induced Color Vision Changes",
"Sildenafil (Viagra): inhibits PDE-6 in cones → transient blue-green tinting/color weakness (usually dose-related)",
"Digoxin toxicity: yellow-green vision (xanthopsia); classic sign",
"Ethambutol: optic neuropathy → reduced color vision (red-green most affected)",
"Chloroquine/Hydroxychloroquine: macular toxicity → bull's eye maculopathy → color vision loss",
"Methanol poisoning: optic nerve damage → color vision loss, visual field defects"
)
mnemonic_box("Color Vision Mnemonic: BGRY (Be Grossly Reasonable Yes)",
"B=Blue (trit-), G=Green (deuter-), R=Red (prot-), Y=Yellow opponent to Blue. Deuter- is most common; Prot- causes red to appear dark.")
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════════
# CHAPTER 148 — MOVEMENTS OF THE EYE
# ════════════════════════════════════════════════════════════════════════════
story.append(chapter_banner("148", "Movements of the Eye"))
sp(8)
section("Extraocular Muscles (EOM)")
multi_col_table(
["Muscle", "Primary Action", "Nerve", "Secondary Action"],
[
["Medial rectus (MR)", "Adduction", "CN III", "—"],
["Lateral rectus (LR)", "Abduction", "CN VI (abducens)", "—"],
["Superior rectus (SR)", "Elevation (adducted)", "CN III", "Intorsion, adduction"],
["Inferior rectus (IR)", "Depression (adducted)", "CN III", "Extorsion, adduction"],
["Superior oblique (SO)", "Intorsion (primary), Depression (adducted)", "CN IV (trochlear)", "Abduction"],
["Inferior oblique (IO)", "Extorsion (primary), Elevation (adducted)", "CN III", "Abduction"],
["Levator palpebrae superioris", "Upper eyelid elevation", "CN III (+ superior tarsal: sympathetic)", "—"],
],
col_widths=[doc.width*0.20, doc.width*0.24, doc.width*0.14, doc.width*0.42]
)
mnemonic_box("Cranial Nerve to Muscle: LR6 SO4 3",
"LR (Lateral Rectus) = CN VI; SO (Superior Oblique) = CN IV; All others = CN III")
section("Types of Eye Movements")
subsection("1. Saccades (Fast Movements)")
bullet("Rapid, conjugate, high-velocity ballistic movements to bring target onto fovea")
bullet("Cannot be stopped once initiated; controlled by frontal eye fields (FEF, Brodmann area 8)")
bullet("Pathway: FEF → paramedian pontine reticular formation (PPRF) → CN VI nucleus (horizontal) → MLF → CN III (vertical)")
bullet("Latency: ~200 ms; velocity up to 700°/s")
bullet("Lesion of FEF: eyes deviate TOWARD lesion side (ipsilateral)")
bullet("Lesion of PPRF: cannot look TOWARD ipsilateral side; eyes deviate away")
subsection("2. Smooth Pursuit Movements")
bullet("Slow, smooth tracking of a moving target to keep it on fovea")
bullet("Requires a moving target; cannot pursue a stationary target")
bullet("Controlled by: visual cortex → MT/V5 → pons (dorsolateral pontine nuclei, DLPN) → cerebellum → oculomotor nuclei")
bullet("Lesion: ipsilateral smooth pursuit impaired (eyes lag behind moving target)")
subsection("3. Vergence Movements")
bullet("Disconjugate (eyes move in opposite directions) — the ONLY disconjugate eye movements")
bullet("Convergence: eyes move medially for near objects")
bullet("Divergence: eyes move laterally for far objects")
bullet("Convergence insufficiency: common cause of asthenopia (eye strain) when reading")
subsection("4. Vestibulo-Ocular Reflex (VOR)")
bullet("Compensatory eye movements in response to head rotation (keeps image stable on retina)")
bullet("Pathway: semicircular canals (CN VIII) → vestibular nuclei → MLF → oculomotor nuclei")
bullet("Gain = 1 normally (eye moves same speed as head, opposite direction)")
bullet("VOR cancellation: allows stable gaze during smooth head and target movement together")
bullet("Cold caloric test: COWS mnemonic — Cold-Opposite, Warm-Same (direction of fast phase nystagmus)")
subsection("5. Optokinetic Nystagmus (OKN)")
bullet("Slow phase (pursuit) + fast phase (saccadic) in response to moving visual scene")
bullet("Tests integrity of the entire visual and pursuit pathway")
section("Horizontal Gaze Pathway")
B("For rightward gaze:")
bullet("Right FEF → crosses midline → Left PPRF")
bullet("Left PPRF → Left CN VI nucleus → contracts left lateral rectus (abduction of left eye)")
bullet("Left CN VI nucleus → sends signal via MLF → Right CN III nucleus → right medial rectus (adduction of right eye)")
bullet("Result: Both eyes move right (conjugate rightward gaze)")
imp_box("Internuclear Ophthalmoplegia (INO)",
"Lesion of MLF — most common cause: Multiple Sclerosis (bilateral INO) or brainstem infarct (unilateral)",
"Impaired ADDUCTION of the eye on the side of the lesion (MLF connects CN VI nucleus to contralateral CN III)",
"Contralateral eye shows dissociated nystagmus on attempted abduction",
"Convergence usually PRESERVED (not mediated by MLF)",
"WEBINO: Wall-Eyed Bilateral INO — both eyes laterally deviated + bilateral INO"
)
section("Vertical Gaze")
bullet("Controlled by: Superior colliculus → rostral interstitial nucleus of MLF (riMLF) in midbrain")
bullet("Parinaud syndrome (dorsal midbrain syndrome): loss of upward gaze + convergence-retraction nystagmus + lid retraction (Collier's sign) + light-near dissociation → pineal gland tumor, hydrocephalus")
section("Clinical Testing of Eye Movements")
two_col_table(
["Test", "What It Assesses"],
[
["H-test (9 cardinal positions)", "All 6 EOMs in all positions; reveals weakness and diplopia"],
["Cover-uncover test", "Tropia (manifest deviation)"],
["Alternate cover test", "Phoria (latent deviation)"],
["Maddox rod test", "Quantify phoria"],
["Saccadic testing", "Frontal eye fields, PPRF, CN VI/III function"],
["Smooth pursuit", "MT/V5, cerebellar, pontine function"],
["VOR (head impulse test/caloric)", "Semicircular canals and vestibular pathways"],
]
)
clinical_box("CN VI (Abducens) Palsy",
"Most common isolated ocular motor palsy",
"Clinical: inability to abduct the eye; horizontal diplopia (worse at distance); esotropia",
"Causes: raised ICP (false localizing sign), trauma, microvascular (DM, HTN), brainstem lesion",
"Millard-Gubler syndrome: ipsilateral CN VI + CN VII + contralateral hemiplegia (pontine lesion)"
)
clinical_box("CN III (Oculomotor) Palsy",
"Complete CN III palsy: ptosis + fixed dilated pupil + eye is 'down and out' (unopposed SO and LR)",
"Surgical CN III palsy (posterior communicating artery aneurysm): PUPIL INVOLVED (compressed superficial parasympathetic fibers)",
"Medical/ischemic CN III palsy (DM, HTN): pupil-sparing (ischemia affects central fascicles, spares superficial pupil fibers)",
"Emergency: rule out PComA aneurysm if pupil involved!"
)
clinical_box("CN IV (Trochlear) Palsy",
"Most common cause of vertical diplopia; longest intracranial course → vulnerable to trauma",
"Clinical: hypertropia, head tilt away from affected side (to compensate for extorsion)",
"3-step test (Parks-Bielschowsky): used to identify paretic muscle",
"Superior oblique palsy: diplopia worse when looking down (e.g., descending stairs)"
)
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════════
# BONUS: IMPORTANT DISEASES AND CLINICAL TOPICS
# ════════════════════════════════════════════════════════════════════════════
story.append(chapter_banner("BONUS", "Important Eye Diseases, Clinical Correlations & Drugs"))
sp(8)
section("Retinal Diseases")
subsection("Age-Related Macular Degeneration (AMD)")
bullet("Most common cause of irreversible central visual loss in elderly (>50 years)")
bullet("Dry AMD (85–90%): drusen deposition under RPE + geographic atrophy; slow progression")
bullet("Wet AMD (10–15%): choroidal neovascularization (CNV) → subretinal fluid/hemorrhage; rapid vision loss")
bullet("Risk factors: age, smoking (most modifiable RF), family history, cardiovascular disease")
bullet("Symptoms: central scotoma, metamorphopsia (distortion), reduced reading vision")
bullet("Investigations: Amsler grid, OCT (gold standard), fluorescein angiography")
drug_box("Treatment of AMD",
"Dry AMD: AREDS2 formula (Vitamins C, E + Lutein/Zeaxanthin + Zinc + Copper) — slows progression",
"Wet AMD (CNV): Anti-VEGF intravitreal injections = FIRST LINE",
" Ranibizumab (Lucentis) — anti-VEGF Fab fragment",
" Bevacizumab (Avastin) — full-length anti-VEGF antibody (off-label, cheaper)",
" Aflibercept (Eylea) — VEGF trap (VEGF-A + VEGF-B + PlGF blocker); monthly then every 8 weeks",
" Brolucizumab (Beovu) — anti-VEGF; every 12-week dosing",
" Faricimab (Vabysmo) — bispecific antibody (anti-VEGF-A + anti-Ang-2); newer",
"Photodynamic therapy (PDT): Verteporfin + laser; now rarely used"
)
subsection("Diabetic Retinopathy (DR)")
bullet("Most common cause of preventable blindness in working-age adults (DM complication)")
bullet("Mechanism: hyperglycemia → basement membrane thickening → pericyte loss → microaneurysms → increased permeability + neovascularization")
multi_col_table(
["Stage", "Features", "Management"],
[
["Mild NPDR", "Microaneurysms only", "Optimize glycemic + BP control; annual review"],
["Moderate NPDR", "Dot-blot hemorrhages, hard exudates, cotton-wool spots", "Glycemic + BP control; 6-monthly review"],
["Severe NPDR", "4-2-1 rule: >20 hemorrhages in 4 quadrants OR venous beading in 2+ quadrants OR IRMA in 1+ quadrant", "Early PRP considered; close monitoring"],
["PDR", "Neovascularization of disc (NVD) or elsewhere (NVE); vitreous hemorrhage", "PRP (pan-retinal photocoagulation) + anti-VEGF"],
["CSME (Clinically Significant Macular Edema)", "Retinal thickening/hard exudates at or within 500 μm of fovea", "Anti-VEGF injections (1st line) ± focal laser"],
],
col_widths=[doc.width*0.18, doc.width*0.42, doc.width*0.40]
)
subsection("Retinal Detachment (RD)")
bullet("Separation of neurosensory retina from RPE")
bullet("Types: Rhegmatogenous (tear/break — most common), Tractional (fibrovascular bands — DM, sickle cell), Exudative/Serous (no break — malignant HTN, uveitis)")
bullet("Symptoms: flashes of light (photopsias) + floaters + visual field defect ('curtain' coming across vision)")
bullet("Risk factors: myopia, trauma, previous RD, lattice degeneration, post-cataract surgery")
bullet("Management: Surgical — Pneumatic retinopexy, Scleral buckling, Pars plana vitrectomy (PPV)")
subsection("Retinitis Pigmentosa (RP)")
bullet("Progressive degeneration of rods (then cones); multiple inheritance patterns")
bullet("Symptoms: night blindness (first) → progressive peripheral visual field loss → tunnel vision → central vision loss late")
bullet("Fundus: 'bone-spicule' pigmentation, attenuated vessels, waxy disc pallor")
bullet("ERG: reduced/absent scotopic (rod) responses")
bullet("Treatment: Voretigene neparvovec-rzyl (Luxturna) — gene therapy for RPE65-mutation RP")
section("Anterior Segment Diseases")
subsection("Cataract")
bullet("Opacity of the crystalline lens; most common cause of reversible blindness worldwide")
bullet("Types: Nuclear (age-related, most common), Cortical, Posterior subcapsular (PSC — steroids, DM, radiation)")
bullet("PSC cataracts: prominent in bright light and near vision (pupil constricts, light hits PSC)")
bullet("Management: ONLY effective treatment = surgical removal + intraocular lens (IOL) implant")
drug_box("Drugs Causing Cataract",
"Corticosteroids (topical/systemic): posterior subcapsular cataract — classic drug-induced type",
"Chlorpromazine: anterior stellate cataract",
"Amiodarone: anterior lens deposits (usually subclinical)",
"Miotics (pilocarpine, echothiophate): anterior subcapsular 'glaukomflecken'"
)
subsection("Uveitis")
bullet("Inflammation of the uveal tract (iris, ciliary body, choroid)")
bullet("Anterior uveitis (iridocyclitis): most common; pain, photophobia, ciliary flush, keratic precipitates, hypopyon")
bullet("Causes: HLA-B27 (ankylosing spondylitis, Reiter's, psoriatic arthritis, IBD-related), sarcoidosis, JIA, infection (HSV, TB)")
bullet("Posterior uveitis (choroiditis): painless, vitreous haze, visual loss; causes include toxoplasma, CMV, sarcoid")
drug_box("Treatment of Uveitis",
"Topical corticosteroids (prednisolone acetate 1%): first-line for anterior uveitis",
"Cycloplegic agents (atropine, cyclopentolate): relieve ciliary spasm + prevent posterior synechiae",
"Systemic steroids: for severe/posterior uveitis",
"Immunosuppressants: Methotrexate, Azathioprine, Mycophenolate for chronic/recurrent disease",
"Anti-TNF agents (Adalimumab/Humira): FDA-approved for non-infectious uveitis"
)
section("Pharmacology Summary Table")
multi_col_table(
["Drug Class", "Example(s)", "Mechanism", "Clinical Use", "Key Side Effects"],
[
["Beta-blockers (topical)", "Timolol, Betaxolol", "Reduce aqueous production", "Glaucoma", "Bradycardia, bronchospasm (avoid in asthma)"],
["PG analogues", "Latanoprost, Bimatoprost", "Increase uveoscleral outflow", "Glaucoma (most potent)", "Iris pigmentation, hypertrichosis"],
["Alpha-2 agonists", "Brimonidine", "Reduce production + ↑ outflow", "Glaucoma, adjunct", "Allergy, CNS effects in infants"],
["CAI (topical)", "Dorzolamide, Brinzolamide", "Inhibit carbonic anhydrase II → ↓ aqueous", "Glaucoma", "Stinging, metallic taste"],
["CAI (systemic)", "Acetazolamide", "↓ aqueous; ↓ CSF pressure", "Acute angle-closure, altitude sickness, idiopathic ICH", "Hypokalemia, metabolic acidosis, sulfa allergy"],
["Anti-VEGF", "Ranibizumab, Aflibercept, Bevacizumab", "Block VEGF-A → ↓ neovascularization", "Wet AMD, DR, RVO, CNV", "Endophthalmitis, thromboembolic events"],
["Cycloplegics/Mydriatics", "Atropine, Cyclopentolate, Tropicamide", "Muscarinic antagonist → cycloplegia + mydriasis", "Refraction, uveitis, amblyopia", "Angle-closure precipitation, systemic effects"],
["Miotics", "Pilocarpine", "Muscarinic agonist → miosis + ↑ outflow", "Angle-closure glaucoma, reversal of mydriasis", "Brow ache, myopia, retinal detachment"],
["Antibiotics", "Chloramphenicol, Moxifloxacin, Fusidic acid", "Bacterial protein synthesis inhibition", "Bacterial conjunctivitis, keratitis, endophthalmitis", "Chloramphenicol: aplastic anemia (rare)"],
["Antivirals", "Acyclovir, Ganciclovir", "Inhibit viral DNA polymerase", "HSV keratitis, CMV retinitis", "Nephrotoxicity (ganciclovir IV)"],
["Gene therapy", "Voretigene neparvovec (Luxturna)", "AAV-mediated RPE65 gene delivery", "RPE65-mutation Leber's congenital amaurosis/RP", "Ocular inflammation, retinal tears"],
],
col_widths=[doc.width*0.14, doc.width*0.18, doc.width*0.20, doc.width*0.20, doc.width*0.28]
)
section("Quick Revision: Key Exam Facts")
imp_box("Must-Know Facts for Vision Physiology",
"Cornea provides ~70-75% of refractive power; lens provides ~25-30%",
"Accommodation: ciliary muscle contracts → zonules relax → lens rounds up → increased power",
"Phototransduction: DARK = depolarized, glutamate released; LIGHT = hyperpolarized, less glutamate",
"Dark adaptation: Cones (0-7 min) then Rods (7-30 min); vitamin A deficiency impairs rods",
"Optic chiasm: NASAL fibers cross (temporal visual field); TEMPORAL fibers stay ipsilateral",
"Bitemporal hemianopia: pituitary tumor compressing chiasm at center",
"Meyer's loop (temporal lobe): lower fibers → upper quadrant defect ('pie in the sky')",
"Macular sparing: occipital lobe infarct (PCA territory) spares macula (MCA supply to tip)",
"INO: MLF lesion → impaired adduction ipsilateral to lesion; MS most common cause",
"CN III palsy with pupil involvement = EMERGENCY — rule out PComA aneurysm",
"Most common color blindness: Deuteranomaly (green cone anomaly) in males",
"Anti-VEGF = first-line for wet AMD and diabetic macular edema",
"Argyll Robertson pupil: light reflex absent, accommodation present = SYPHILIS"
)
# ─── Build PDF ───────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF created: {OUTPUT}")
cd /home/daytona/workspace/vision-physiology-notes && python generate_pdf.py 2>&…
ls -lh /home/daytona/workspace/vision-physiology-notes/Vision_Physiology_ExamNot…
Vision Physiology ExamNotes
PDF Document · PDF