iam having hardtime remembering CAmp and cGmp where what comen gp and gi and gp usmle based what i have to know short and concept based exam solving stragety what i must know no extra things.

Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Finding Sources
Finding Sources
Reading File
Finding Sources
I now have all I need from the textbooks. Let me give you the cleanest, most exam-focused answer possible.

cAMP vs cGMP - USMLE Cheat Sheet (No Fluff)


THE ONE MENTAL MODEL

Hormone binds receptor → G protein activated → enzyme makes 2nd messenger → kinase activated → physiologic effect
Everything below is just filling in this skeleton.

cAMP PATHWAY

The Core Mechanism

Hormone → GPCR → G protein → Adenylyl cyclase → ATP → cAMP → PKA → phosphorylates proteins → effect
PDE (phosphodiesterase) degrades cAMP to 5'-AMP → turns the signal off
  • Caffeine, theophylline, sildenafil inhibit PDE → raise cAMP/cGMP → prolong signal

Gs vs Gi - The KEY Distinction

GsGi
Effect on adenylyl cyclaseSTIMULATESINHIBITS
Effect on cAMPIncreasesDecreases
Alpha subunitαsαi
Memory trick: Gs = Go (stimulate), Gi = Goodbye (inhibit)

Gs-coupled Receptors (raise cAMP) - HIGH YIELD LIST

ReceptorHormone/DrugClinical effect
β1, β2 adrenergicEpinephrine, NE↑ HR, bronchodilation
Glucagon receptorGlucagon↑ glycogenolysis
TSH receptorTSHthyroid hormone synthesis
FSH, LH receptorFSH, LH, HCGgonadal function
ACTH receptorACTHcortisol synthesis
V2 (vasopressin)ADHwater retention in collecting duct
D1 receptorDopaminerenal vasodilation
H2 receptorHistamine↑ gastric acid
Calcitonin, CRH, MSH, PTH--
Mnemonics: "FLAT ChAMP" = FSH, LH, ACTH, TSH, CRH/Calcitonin, hCG, ADH(V2), MSH, PTH, β-adrenergic

Gi-coupled Receptors (decrease cAMP) - HIGH YIELD

ReceptorAgonistEffect
α2 adrenergicNE, clonidine↓ NE release (presynaptic), ↓ BP
M2 muscarinicAcetylcholine↓ HR
D2 receptorDopamineinhibitory (antipsychotic target)
Opioid receptors (μ, δ, κ)Morphineanalgesia, ↓ cAMP
Somatostatin receptorSomatostatin↓ GH, ↓ glucagon, ↓ insulin
Memory trick: "MADS" Gi = M2, Alpha-2, D2, Somatostatin, opioids

Toxin Tricks (Classic USMLE)

ToxinMechanismEffect
Cholera toxinADP-ribosylates Gs → locks it ON (permanently active)↑↑ cAMP in gut → massive secretory diarrhea
Pertussis toxinADP-ribosylates Gi → locks it OFF (permanently inactive)↑ cAMP (Gi can't inhibit) → whooping cough
Both toxins result in excess cAMP - one by permanently activating Gs, the other by permanently blocking Gi.

cGMP PATHWAY

The Core Mechanism

Signal → Guanylyl cyclase → GTP → cGMP → PKG → effect
There are two types of guanylyl cyclase:
TypeActivated byExample
Soluble (cytosolic)Nitric oxide (NO)smooth muscle relaxation
Membrane-bound (receptor)ANP, BNPnatriuresis, vasodilation

cGMP High-Yield Topics

1. NO → cGMP → smooth muscle relaxation
Endothelium releases NO → diffuses into smooth muscle → activates soluble guanylyl cyclase → ↑cGMP → PKG → myosin light chain dephosphorylation → VASODILATION
  • Nitrates (nitroglycerin) work by donating NO → ↑cGMP → venodilation
  • Sildenafil (Viagra) inhibits PDE-5 (the cGMP-specific PDE) → prolongs cGMP → sustained erection / treats pulmonary hypertension
2. ANP → cGMP → natriuresis
High BP/volume → atria release ANP → membrane guanylyl cyclase receptor → ↑cGMP → ↓Na+ reabsorption in kidney → ↓BP, ↓volume

QUICK COMPARISON TABLE

FeaturecAMPcGMP
Made fromATPGTP
EnzymeAdenylyl cyclaseGuanylyl cyclase
Activated byGs (via GPCR) or directlyNO (soluble) or ANP/BNP (membrane)
Kinase activatedPKAPKG
Degraded byPDEPDE (PDE-5 for cGMP)
Key drug targetβ-blockers, β-agonistsSildenafil, nitrates

EXAM SOLVING STRATEGY

When you see a USMLE question with receptors/messengers, ask yourself these 3 questions in order:
1. What receptor is involved?
  • β1, β2, V2, TSH, ACTH → Gs → cAMP UP
  • α2, M2, D2, opioid, somatostatin → Gi → cAMP DOWN
2. What happens downstream?
  • cAMP UP → PKA activates → phosphorylation → effect
  • cGMP UP → PKG activates → smooth muscle relaxation (mostly)
3. Is there a toxin or drug affecting the G protein?
  • Cholera/Pertussis → both cause excess cAMP (know the mechanism difference)
  • Sildenafil/nitrates → raise cGMP

ONE-LINER MEMORY ANCHORS

  • Gs = S for Stimulate cAMP (β-agonists, glucagon, TSH, ACTH, ADH-V2)
  • Gi = I for Inhibit cAMP (α2, M2, D2, opioids, somatostatin)
  • Gq = Q for sQueeze → IP3/Ca²+ pathway (α1, M1/M3, vasopressin V1) - not cAMP
  • NO → cGMP → relax (vessels, erectile tissue)
  • ANP → cGMP → natriuresis
  • Cholera = Gs stuck ON; Pertussis = Gi stuck OFF → both = too much cAMP
Sources: Costanzo Physiology 7th Ed, Table 9.3 & Fig 9.4 | Lippincott Biochemistry 8th Ed, Ch. 8

do a pdf

Reading File
Running Command

ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "created"

Running Command

mkdir -p /tmp/workspace/camp-cgmp && cat > /tmp/workspace/camp-cgmp/make_pdf.py << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.units import cm, mm from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, KeepTogether) from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY from reportlab.platypus import PageBreak OUTPUT = "/tmp/workspace/camp-cgmp/cAMP_cGMP_USMLE.pdf" doc = SimpleDocTemplate( OUTPUT, pagesize=A4, leftMargin=1.8*cm, rightMargin=1.8*cm, topMargin=1.8*cm, bottomMargin=1.8*cm, title="cAMP & cGMP – USMLE Cheat Sheet", author="Orris Medical" ) # ── Colour palette ────────────────────────────────────────────────────────── DARK_BLUE = colors.HexColor("#1A3A5C") MED_BLUE = colors.HexColor("#2563A8") LIGHT_BLUE = colors.HexColor("#D6E8F7") GREEN = colors.HexColor("#1E6B3C") LIGHT_GREEN = colors.HexColor("#D4EDDA") RED = colors.HexColor("#A82525") LIGHT_RED = colors.HexColor("#FADADD") YELLOW_BG = colors.HexColor("#FFF8DC") ORANGE = colors.HexColor("#C8520A") LIGHT_ORANGE= colors.HexColor("#FFE8D0") GREY_BG = colors.HexColor("#F2F4F6") DARK_GREY = colors.HexColor("#3A3A3A") WHITE = colors.white BLACK = colors.black TEAL = colors.HexColor("#0D7377") LIGHT_TEAL = colors.HexColor("#D0F0F0") # ── Styles ─────────────────────────────────────────────────────────────────── styles = getSampleStyleSheet() def S(name, parent="Normal", **kw): return ParagraphStyle(name, parent=styles[parent], **kw) title_style = S("Title2", fontSize=22, textColor=WHITE, alignment=TA_CENTER, fontName="Helvetica-Bold", spaceAfter=2) subtitle_style = S("Sub", fontSize=11, textColor=LIGHT_BLUE, alignment=TA_CENTER, fontName="Helvetica", spaceAfter=4) section_style = S("Sec", fontSize=13, textColor=WHITE, fontName="Helvetica-Bold", spaceAfter=3, spaceBefore=3, leftIndent=4) body_style = S("Body2", fontSize=9.5, textColor=DARK_GREY, fontName="Helvetica", leading=14, spaceAfter=3) bold_body = S("BoldBody", fontSize=9.5, textColor=DARK_GREY, fontName="Helvetica-Bold", leading=14) mono_style = S("Mono", fontSize=8.5, textColor=DARK_BLUE, fontName="Courier", backColor=GREY_BG, leftIndent=8, leading=13) bullet_style = S("Bullet2", fontSize=9.5, textColor=DARK_GREY, fontName="Helvetica", leftIndent=14, firstLineIndent=-10, leading=14, spaceAfter=2) small_note = S("Note", fontSize=8, textColor=colors.HexColor("#666666"), fontName="Helvetica-Oblique", alignment=TA_CENTER) trick_style = S("Trick", fontSize=9.5, textColor=ORANGE, fontName="Helvetica-Bold", leftIndent=8, leading=14) warning_style = S("Warn", fontSize=9.5, textColor=RED, fontName="Helvetica-Bold", leftIndent=8, leading=14) def section_header(text, bg=DARK_BLUE): data = [[Paragraph(text, section_style)]] t = Table(data, colWidths=[17*cm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), bg), ("ROUNDEDCORNERS", [4,4,4,4]), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 8), ])) return t def info_box(text, bg=LIGHT_BLUE, text_color=DARK_BLUE): st = S("IB", fontSize=9.5, textColor=text_color, fontName="Helvetica", leading=14) data = [[Paragraph(text, st)]] t = Table(data, colWidths=[17*cm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), bg), ("BOX", (0,0), (-1,-1), 0.5, text_color), ("TOPPADDING", (0,0), (-1,-1), 7), ("BOTTOMPADDING", (0,0), (-1,-1), 7), ("LEFTPADDING", (0,0), (-1,-1), 10), ("RIGHTPADDING", (0,0), (-1,-1), 10), ])) return t def sp(h=4): return Spacer(1, h) story = [] # ═══════════════════════════════════════════════════════════════════════════ # TITLE BANNER # ═══════════════════════════════════════════════════════════════════════════ title_data = [[Paragraph("cAMP &amp; cGMP", title_style)], [Paragraph("USMLE Concept + Exam Strategy Cheat Sheet", subtitle_style)]] title_tbl = Table(title_data, colWidths=[17*cm]) title_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), DARK_BLUE), ("TOPPADDING", (0,0), (-1,-1), 12), ("BOTTOMPADDING", (0,0), (-1,-1), 12), ])) story.append(title_tbl) story.append(sp(10)) # ═══════════════════════════════════════════════════════════════════════════ # MENTAL MODEL # ═══════════════════════════════════════════════════════════════════════════ story.append(section_header("🧠 THE ONE MENTAL MODEL")) story.append(sp(4)) story.append(info_box( "<b>Hormone binds receptor → G protein activated → Enzyme makes 2nd messenger → Kinase activated → Effect</b><br/>" "Everything is just filling in this skeleton.", bg=LIGHT_BLUE, text_color=DARK_BLUE )) story.append(sp(6)) # ═══════════════════════════════════════════════════════════════════════════ # cAMP PATHWAY # ═══════════════════════════════════════════════════════════════════════════ story.append(section_header(" cAMP PATHWAY", bg=MED_BLUE)) story.append(sp(4)) story.append(Paragraph( "<b>Mechanism:</b> Hormone → GPCR → G protein → <b>Adenylyl cyclase</b> → ATP → <b>cAMP</b> → <b>PKA</b> → phosphorylates proteins → Effect", mono_style )) story.append(sp(3)) story.append(Paragraph( "⚠ <b>PDE (phosphodiesterase)</b> degrades cAMP to 5'-AMP → turns signal OFF. " "Caffeine, theophylline, sildenafil <b>inhibit PDE</b> → prolong the signal.", bullet_style )) story.append(sp(8)) # Gs vs Gi table story.append(Paragraph("<b>Gs vs Gi — The Key Distinction</b>", bold_body)) story.append(sp(3)) gs_gi_data = [ [Paragraph("<b>Property</b>", bold_body), Paragraph("<b>Gs (Stimulatory)</b>", bold_body), Paragraph("<b>Gi (Inhibitory)</b>", bold_body)], [Paragraph("Effect on adenylyl cyclase", body_style), Paragraph("STIMULATES ↑", S("G", fontSize=9.5, textColor=GREEN, fontName="Helvetica-Bold", leading=14)), Paragraph("INHIBITS ↓", S("R", fontSize=9.5, textColor=RED, fontName="Helvetica-Bold", leading=14))], [Paragraph("Effect on cAMP", body_style), Paragraph("cAMP INCREASES", S("G2", fontSize=9.5, textColor=GREEN, fontName="Helvetica-Bold", leading=14)), Paragraph("cAMP DECREASES", S("R2", fontSize=9.5, textColor=RED, fontName="Helvetica-Bold", leading=14))], [Paragraph("Alpha subunit", body_style), Paragraph("αs", body_style), Paragraph("αi", body_style)], [Paragraph("Memory hook", body_style), Paragraph("Gs = Go (stimulate)", trick_style), Paragraph("Gi = Goodbye (inhibit)", trick_style)], ] gs_gi_tbl = Table(gs_gi_data, colWidths=[5*cm, 6*cm, 6*cm]) gs_gi_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), DARK_GREY), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("BACKGROUND", (1,1), (1,-1), LIGHT_GREEN), ("BACKGROUND", (2,1), (2,-1), LIGHT_RED), ("BACKGROUND", (0,1), (0,-1), GREY_BG), ("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#BBBBBB")), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 8), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(gs_gi_tbl) story.append(sp(10)) # ── Gs receptor list ───────────────────────────────────────────────────── story.append(Paragraph("<b>Gs-Coupled Receptors</b> → raise cAMP (HIGH YIELD)", bold_body)) story.append(sp(3)) gs_data = [ [Paragraph("<b>Receptor</b>", bold_body), Paragraph("<b>Hormone / Drug</b>", bold_body), Paragraph("<b>Key Effect</b>", bold_body)], ["β1, β2 adrenergic", "Epinephrine, NE", "↑ HR, bronchodilation"], ["Glucagon receptor", "Glucagon", "↑ Glycogenolysis"], ["TSH receptor", "TSH", "Thyroid hormone synthesis"], ["FSH, LH, HCG receptor", "FSH, LH, HCG", "Gonadal function"], ["ACTH receptor", "ACTH", "Cortisol synthesis"], ["V2 (vasopressin)", "ADH", "Water retention in collecting duct"], ["D1 receptor", "Dopamine", "Renal vasodilation"], ["H2 receptor", "Histamine", "↑ Gastric acid"], ["PTH, CRH, MSH, Calcitonin", "—", "Various endocrine effects"], ] for i in range(1, len(gs_data)): gs_data[i] = [Paragraph(str(x), body_style) for x in gs_data[i]] gs_tbl = Table(gs_data, colWidths=[5.5*cm, 5*cm, 6.5*cm]) gs_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), GREEN), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_GREEN]), ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 7), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(gs_tbl) story.append(sp(4)) story.append(info_box( "📌 Mnemonic: <b>FLAT ChAMP</b> = FSH, LH, ACTH, TSH, CRH/Calcitonin, hCG, ADH(V2), MSH, PTH, β-adrenergic", bg=LIGHT_GREEN, text_color=GREEN )) story.append(sp(10)) # ── Gi receptor list ───────────────────────────────────────────────────── story.append(Paragraph("<b>Gi-Coupled Receptors</b> → decrease cAMP (HIGH YIELD)", bold_body)) story.append(sp(3)) gi_data = [ [Paragraph("<b>Receptor</b>", bold_body), Paragraph("<b>Agonist</b>", bold_body), Paragraph("<b>Key Effect</b>", bold_body)], ["α2 adrenergic", "NE, clonidine", "↓ NE release (presynaptic), ↓ BP"], ["M2 muscarinic", "Acetylcholine", "↓ HR"], ["D2 receptor", "Dopamine", "Inhibitory (antipsychotic target)"], ["Opioid (μ, δ, κ)", "Morphine, opioids", "Analgesia, ↓ cAMP"], ["Somatostatin receptor", "Somatostatin", "↓ GH, ↓ glucagon, ↓ insulin"], ] for i in range(1, len(gi_data)): gi_data[i] = [Paragraph(str(x), body_style) for x in gi_data[i]] gi_tbl = Table(gi_data, colWidths=[5.5*cm, 5*cm, 6.5*cm]) gi_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), RED), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_RED]), ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 7), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(gi_tbl) story.append(sp(4)) story.append(info_box( "📌 Mnemonic: <b>MADS</b> = M2, Alpha-2, D2, Somatostatin, opioids → all Gi → all ↓ cAMP", bg=LIGHT_RED, text_color=RED )) story.append(sp(10)) # ── Toxin tricks ───────────────────────────────────────────────────────── story.append(section_header("☣ TOXIN TRICKS (Classic USMLE)", bg=colors.HexColor("#7B1010"))) story.append(sp(4)) toxin_data = [ [Paragraph("<b>Toxin</b>", bold_body), Paragraph("<b>Mechanism</b>", bold_body), Paragraph("<b>Result</b>", bold_body)], [Paragraph("Cholera toxin\n(V. cholerae)", body_style), Paragraph("ADP-ribosylates <b>Gs</b> → locks ON permanently\n(can't hydrolyse GTP)", body_style), Paragraph("↑↑ cAMP in gut → massive secretory diarrhoea", body_style)], [Paragraph("Pertussis toxin\n(B. pertussis)", body_style), Paragraph("ADP-ribosylates <b>Gi</b> → locks OFF permanently\n(Gi can't inhibit adenylyl cyclase)", body_style), Paragraph("↑ cAMP in resp. cells → whooping cough", body_style)], ] toxin_tbl = Table(toxin_data, colWidths=[4*cm, 7.5*cm, 5.5*cm]) toxin_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), DARK_GREY), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("BACKGROUND", (0,1), (-1,1), LIGHT_RED), ("BACKGROUND", (0,2), (-1,2), LIGHT_ORANGE), ("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#BBBBBB")), ("TOPPADDING", (0,0), (-1,-1), 7), ("BOTTOMPADDING", (0,0), (-1,-1), 7), ("LEFTPADDING", (0,0), (-1,-1), 7), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(toxin_tbl) story.append(sp(4)) story.append(info_box( "⚡ Both toxins → <b>excess cAMP</b>. Cholera: Gs stuck ON. Pertussis: Gi stuck OFF (so Gs wins). Same result, opposite mechanism.", bg=LIGHT_ORANGE, text_color=ORANGE )) # ═══════════════════════════════════════════════════════════════════════════ # PAGE 2 — cGMP + Comparison + Strategy # ═══════════════════════════════════════════════════════════════════════════ story.append(PageBreak()) # cGMP story.append(section_header(" cGMP PATHWAY", bg=TEAL)) story.append(sp(4)) story.append(Paragraph( "<b>Mechanism:</b> Signal → <b>Guanylyl cyclase</b> → GTP → <b>cGMP</b> → <b>PKG</b> → Effect", mono_style )) story.append(sp(6)) story.append(Paragraph("<b>Two Types of Guanylyl Cyclase:</b>", bold_body)) story.append(sp(3)) gc_data = [ [Paragraph("<b>Type</b>", bold_body), Paragraph("<b>Activated by</b>", bold_body), Paragraph("<b>Key Example</b>", bold_body)], [Paragraph("Soluble (cytosolic)", body_style), Paragraph("Nitric oxide (NO)", body_style), Paragraph("Smooth muscle relaxation, vasodilation, erection", body_style)], [Paragraph("Membrane-bound (receptor)", body_style), Paragraph("ANP, BNP", body_style), Paragraph("Natriuresis, vasodilation, ↓ BP/volume", body_style)], ] gc_tbl = Table(gc_data, colWidths=[5*cm, 5*cm, 7*cm]) gc_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), TEAL), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("ROWBACKGROUNDS",(0,1), (-1,-1), [LIGHT_TEAL, WHITE]), ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")), ("TOPPADDING", (0,0), (-1,-1), 7), ("BOTTOMPADDING", (0,0), (-1,-1), 7), ("LEFTPADDING", (0,0), (-1,-1), 7), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(gc_tbl) story.append(sp(8)) # High-yield cGMP points story.append(Paragraph("<b>cGMP High-Yield Points:</b>", bold_body)) story.append(sp(4)) story.append(info_box( "<b>1. NO → cGMP → Smooth muscle relaxation</b><br/>" "Endothelium releases NO → diffuses into smooth muscle → activates <b>soluble guanylyl cyclase</b> " "→ ↑cGMP → PKG → myosin light chain dephosphorylation → <b>VASODILATION</b><br/><br/>" "• <b>Nitrates (nitroglycerin)</b>: donate NO → ↑cGMP → venodilation → ↓preload → angina relief<br/>" "• <b>Sildenafil (Viagra)</b>: inhibits <b>PDE-5</b> (cGMP-specific) → prolongs cGMP → erection / pulmonary HTN", bg=LIGHT_TEAL, text_color=TEAL )) story.append(sp(5)) story.append(info_box( "<b>2. ANP → cGMP → Natriuresis</b><br/>" "High BP/volume → atria release ANP → binds <b>membrane guanylyl cyclase receptor</b> " "→ ↑cGMP → ↓Na⁺ reabsorption in kidney → ↓BP, ↓volume", bg=LIGHT_TEAL, text_color=TEAL )) story.append(sp(10)) # ═══════════════════════════════════════════════════════════════════════════ # COMPARISON TABLE # ═══════════════════════════════════════════════════════════════════════════ story.append(section_header("⚖ cAMP vs cGMP — Quick Comparison", bg=DARK_GREY)) story.append(sp(4)) cmp_data = [ [Paragraph("<b>Feature</b>", bold_body), Paragraph("<b>cAMP</b>", S("H", fontSize=9.5, textColor=WHITE, fontName="Helvetica-Bold", leading=14)), Paragraph("<b>cGMP</b>", S("H2", fontSize=9.5, textColor=WHITE, fontName="Helvetica-Bold", leading=14))], ["Made from", "ATP", "GTP"], ["Enzyme", "Adenylyl cyclase", "Guanylyl cyclase"], ["Activated by", "Gs protein (via GPCR)", "NO (soluble) or ANP/BNP (membrane)"], ["Kinase", "PKA (Protein Kinase A)", "PKG (Protein Kinase G)"], ["Degraded by", "PDE (non-specific)", "PDE-5 (cGMP-specific)"], ["Key drug target", "β-blockers, β-agonists", "Sildenafil (PDE-5 inh.), Nitrates"], ["Key toxin", "Cholera, Pertussis", "None classic"], ] for i in range(1, len(cmp_data)): cmp_data[i] = [Paragraph(str(x), body_style) for x in cmp_data[i]] cmp_tbl = Table(cmp_data, colWidths=[4.5*cm, 6*cm, 6.5*cm]) cmp_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), DARK_GREY), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("BACKGROUND", (1,1), (1,-1), LIGHT_BLUE), ("BACKGROUND", (2,1), (2,-1), LIGHT_TEAL), ("BACKGROUND", (0,1), (0,-1), GREY_BG), ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 7), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(cmp_tbl) story.append(sp(10)) # ═══════════════════════════════════════════════════════════════════════════ # EXAM STRATEGY # ═══════════════════════════════════════════════════════════════════════════ story.append(section_header("🎯 EXAM-SOLVING STRATEGY (3 Questions)", bg=colors.HexColor("#4A1B6D"))) story.append(sp(4)) strat_data = [ [Paragraph("<b>Step</b>", bold_body), Paragraph("<b>Ask yourself</b>", bold_body), Paragraph("<b>Answer</b>", bold_body)], [Paragraph("1", bold_body), Paragraph("What receptor is involved?", body_style), Paragraph("β1/β2, V2, TSH, ACTH, FSH, LH → <b>Gs → cAMP UP</b><br/>" "α2, M2, D2, opioid, somatostatin → <b>Gi → cAMP DOWN</b>", body_style)], [Paragraph("2", bold_body), Paragraph("What happens downstream?", body_style), Paragraph("cAMP UP → <b>PKA</b> → phosphorylation → effect<br/>" "cGMP UP → <b>PKG</b> → smooth muscle relaxation (mostly)", body_style)], [Paragraph("3", bold_body), Paragraph("Is there a toxin or drug?", body_style), Paragraph("Cholera/Pertussis → both excess cAMP (different mechanism)<br/>" "Sildenafil/Nitrates → raise cGMP", body_style)], ] strat_tbl = Table(strat_data, colWidths=[1.5*cm, 5*cm, 10.5*cm]) strat_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#4A1B6D")), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("ROWBACKGROUNDS",(0,1), (-1,-1), [GREY_BG, WHITE, GREY_BG]), ("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#BBBBBB")), ("TOPPADDING", (0,0), (-1,-1), 8), ("BOTTOMPADDING", (0,0), (-1,-1), 8), ("LEFTPADDING", (0,0), (-1,-1), 8), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ("ALIGN", (0,0), (0,-1), "CENTER"), ("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"), ("FONTSIZE", (0,1), (0,-1), 14), ("TEXTCOLOR", (0,1), (0,-1), colors.HexColor("#4A1B6D")), ])) story.append(strat_tbl) story.append(sp(10)) # ═══════════════════════════════════════════════════════════════════════════ # MEMORY ANCHORS # ═══════════════════════════════════════════════════════════════════════════ story.append(section_header("🔑 ONE-LINER MEMORY ANCHORS", bg=ORANGE)) story.append(sp(4)) anchors = [ ("<b>Gs</b> = <b>S</b> for <b>Stimulate</b> cAMP", "β-agonists, glucagon, TSH, ACTH, ADH-V2, PTH"), ("<b>Gi</b> = <b>I</b> for <b>Inhibit</b> cAMP", "α2, M2, D2, opioids, somatostatin"), ("<b>Gq</b> = <b>Q</b> for s<b>Q</b>ueeze", "IP3/Ca²⁺ pathway — α1, M1/M3, V1 — NOT cAMP"), ("<b>NO → cGMP → Relax</b>", "Vessels relax, erectile tissue fills"), ("<b>ANP → cGMP → Natriuresis</b>", "Kidney dumps Na⁺, ↓BP"), ("<b>Cholera = Gs stuck ON</b> | <b>Pertussis = Gi stuck OFF</b>", "Both → too much cAMP"), ("<b>FLAT ChAMP</b>", "FSH, LH, ACTH, TSH, CRH, hCG, ADH(V2), MSH, PTH — all Gs"), ("<b>MADS</b>", "M2, Alpha-2, D2, Somatostatin (+ opioids) — all Gi"), ] anchor_data = [[Paragraph(a, trick_style), Paragraph(b, body_style)] for a,b in anchors] anchor_tbl = Table(anchor_data, colWidths=[7.5*cm, 9.5*cm]) anchor_tbl.setStyle(TableStyle([ ("ROWBACKGROUNDS", (0,0), (-1,-1), [LIGHT_ORANGE, WHITE]), ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#DDDDDD")), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 8), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(anchor_tbl) story.append(sp(10)) # Footer story.append(HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#AAAAAA"))) story.append(sp(4)) story.append(Paragraph( "Sources: Costanzo Physiology 7th Ed (Table 9.3, Fig 9.4) | Lippincott Biochemistry 8th Ed (Ch. 8) | Orris Medical", small_note )) doc.build(story) print(f"PDF saved to {OUTPUT}") PYEOF python /tmp/workspace/camp-cgmp/make_pdf.py

Your PDF is ready:

cAMP cGMP USMLE

PDF Document · PDF

What's inside (2 pages):
  • Page 1 - The mental model + full cAMP pathway, color-coded Gs vs Gi tables (green/red), Toxin tricks (Cholera/Pertussis) with boxes
  • Page 2 - cGMP pathway (NO + ANP), side-by-side cAMP vs cGMP comparison table, the 3-step exam strategy, and all memory anchors (FLAT ChAMP, MADS, etc.)
Clean, no fluff - exactly what you need for the exam.
This is a shared conversation. Sign in to Orris to start your own chat.