High yield NEET pg topics for physiology including image based in 50 flash cards
NEET PG physiology high yield topics 2024 2025 most asked questions
action potential nerve membrane resting potential graph
cardiac cycle pressure volume loop Wiggers diagram
oxyhemoglobin dissociation curve oxygen saturation
mkdir -p /tmp/workspace/neet-physiology-flashcards && ls /tmp/workspace/neet-physiology-flashcards/
~/neet-physiology-flashcards/build_flashcards.py
"""
NEET PG Physiology - 50 High-Yield Flashcards
Each flashcard = 2 slides: QUESTION (front) + ANSWER (back)
Total: 100 slides
"""
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.enum.shapes import MSO_SHAPE_TYPE
from pptx.util import Inches, Pt
import pptx.oxml.ns as nsmap
from lxml import etree
from io import BytesIO
import math
# ─── COLOUR PALETTE ──────────────────────────────────────────────────────────
DARK_BLUE = RGBColor(0x0D, 0x1B, 0x2A) # slide background
TEAL = RGBColor(0x00, 0xB4, 0xD8) # question header
GOLD = RGBColor(0xFF, 0xC3, 0x00) # answer header
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
LIGHT_GRAY = RGBColor(0xE0, 0xE8, 0xF0)
GREEN = RGBColor(0x06, 0xD6, 0xA0)
RED = RGBColor(0xEF, 0x47, 0x6F)
ORANGE = RGBColor(0xFF, 0x92, 0x14)
PURPLE = RGBColor(0xA8, 0x56, 0xFF)
LIGHT_BLUE = RGBColor(0x48, 0xCA, 0xE4)
DARK_TEAL = RGBColor(0x02, 0x3E, 0x8A)
W = Inches(13.333)
H = Inches(7.5)
# ─── FLASHCARD DATA ──────────────────────────────────────────────────────────
# Each entry: (number, topic_tag, question_text, answer_text, image_type)
# image_type: None, 'action_potential', 'wiggers', 'oxy_dissociation',
# 'renal_tubule', 'cardiac_cycle', 'spirometry', 'renin_angiotensin',
# 'neuromuscular', 'starling_curve', 'ecg_intervals', 'reflex_arc',
# 'visual_pathway', 'nephron', 'adrenal_zones', 'gi_pressure'
FLASHCARDS = [
# ── GENERAL PHYSIOLOGY ──────────────────────────────────────────────
(1, "General Physiology",
"What is the resting membrane potential (RMP) of a nerve cell, and what ion primarily determines it?",
"RMP = -70 mV\n"
"Primarily determined by K⁺ (potassium) ions leaking out through K⁺ channels.\n"
"Goldman equation accounts for Na⁺, K⁺, Cl⁻ permeabilities.\n"
"Na⁺/K⁺ ATPase maintains gradient (3 Na⁺ out, 2 K⁺ in).",
"action_potential"),
(2, "General Physiology",
"Describe the phases of an action potential in a myelinated nerve fibre.",
"Phase 0 (Depolarisation): Na⁺ channels open rapidly → rapid rise to +35 mV\n"
"Phase 1 (Initial repolarisation): K⁺ efflux begins\n"
"Phase 2 (Plateau – cardiac only): Ca²⁺ influx\n"
"Phase 3 (Repolarisation): K⁺ efflux continues, Na⁺ channels inactivate\n"
"Phase 4 (Rest): -70 mV restored by Na⁺/K⁺ ATPase\n"
"Refractory periods: Absolute (Na⁺ inactivated) & Relative (K⁺ still open)",
None),
(3, "General Physiology",
"What are the key features of saltatory conduction in myelinated nerves?",
"Impulse jumps between Nodes of Ranvier (unmyelinated gaps)\n"
"Faster than continuous conduction\n"
"Speed ∝ fibre diameter: Aα (fastest, 70-120 m/s) → C fibres (slowest, 0.5-2 m/s)\n"
"Less energy expenditure (fewer ions need pumping back)\n"
"MS = demyelination → slowed or blocked conduction",
None),
(4, "General Physiology",
"What is the Nernst equation used for, and what does it calculate?",
"Nernst Equation: E_ion = (RT/zF) × ln([ion]out/[ion]in)\n"
"Calculates equilibrium potential for a single ion\n"
"E_K⁺ ≈ -94 mV | E_Na⁺ ≈ +61 mV | E_Cl⁻ ≈ -70 mV\n"
"RMP is close to E_K⁺ because membrane is most permeable to K⁺ at rest",
None),
# ── HAEMATOLOGY ──────────────────────────────────────────────────────
(5, "Haematology",
"What is the normal lifespan of RBCs, and where are aged RBCs destroyed?",
"Lifespan: 120 days\n"
"Destroyed by: Spleen (extravascular haemolysis - main site)\n"
"Also: Liver (Kupffer cells), bone marrow\n"
"Haemoglobin → Globin (amino acids) + Haem → Biliverdin → Bilirubin\n"
"Iron recycled via transferrin → stored as ferritin/haemosiderin",
None),
(6, "Haematology",
"What shifts the oxygen-haemoglobin dissociation curve to the RIGHT?",
"RIGHT SHIFT = decreased O₂ affinity = more O₂ released to tissues\n"
"Mnemonic: CADET face RIGHT\n"
"↑ CO₂ (Bohr effect), ↑ Acid (↓pH), ↑ DPG (2,3-BPG),\n"
"↑ Exercise/Temperature, ↑ altitude (chronic)\n"
"P50 INCREASES (normally 26 mmHg)\n"
"LEFT SHIFT: Foetal Hb (HbF), CO poisoning, MetHb, Alkalosis, hypothermia",
"oxy_dissociation"),
(7, "Haematology",
"What are the normal values for haemoglobin in adults?",
"Male: 13.5 - 17.5 g/dL\n"
"Female: 12 - 15.5 g/dL\n"
"Newborn: 16.5 - 19.5 g/dL (mainly HbF)\n"
"MCV: 80-100 fL | MCH: 27-33 pg | MCHC: 32-36 g/dL\n"
"Reticulocyte count: 0.5-1.5%\n"
"Platelet count: 1.5-4 lakhs/mm³",
None),
(8, "Haematology",
"What is the coagulation cascade? Name intrinsic, extrinsic and common pathways.",
"Intrinsic (contact): XII → XI → IX → VIII + Ca²⁺ + PF3\n"
"Extrinsic (tissue factor): VII + TF → activates X\n"
"Common pathway: X → Xa + Va + Ca²⁺ → Prothrombin (II) → Thrombin → Fibrinogen → Fibrin\n"
"PT tests extrinsic (VII) | aPTT tests intrinsic (XII, XI, IX, VIII)\n"
"Vitamin K-dependent: II, VII, IX, X, Protein C & S",
None),
# ── CVS PHYSIOLOGY ───────────────────────────────────────────────────
(9, "CVS Physiology",
"Identify the phases of the cardiac cycle on the Wiggers diagram.",
"Phase 1: Isovolumetric Contraction (MV closes, AV still closed)\n"
"Phase 2: Rapid Ejection (AV opens, pressure rises)\n"
"Phase 3: Slow Ejection\n"
"Phase 4: Isovolumetric Relaxation (AV closes, MV still closed)\n"
"Phase 5: Rapid Filling (MV opens)\n"
"Phase 6: Slow Filling (diastasis)\n"
"Phase 7: Atrial systole ('a' wave)\n"
"EDV = 120 mL, ESV = 50 mL, SV = 70 mL, EF = 58%",
"wiggers"),
(10, "CVS Physiology",
"What is Starling's Law of the Heart? What is the Frank-Starling curve?",
"Starling's Law: Stroke volume ↑ as End-Diastolic Volume (preload) ↑\n"
"Within limits: more stretch → more force of contraction\n"
"Mechanism: Optimal actin-myosin overlap; ↑ Ca²⁺ sensitivity\n"
"Frank-Starling curve: SV vs EDV — plateau at extreme stretch\n"
"Heart failure: Curve shifts DOWN and RIGHT\n"
"Positive inotropes: Shift curve UP (↑ SV for same EDV)",
"starling_curve"),
(11, "CVS Physiology",
"What are the JVP waveforms and what do they represent?",
"a wave: Atrial contraction (lost in AF)\n"
"c wave: Tricuspid valve closure / carotid pulsation\n"
"x descent: Atrial relaxation + TV pulls down\n"
"v wave: Venous filling while TV closed\n"
"y descent: TV opens, blood flows into RV\n"
"Giant a wave: Tricuspid stenosis, pulmonary HTN\n"
"Cannon a wave: Complete heart block (atria contract against closed TV)\n"
"Absent a wave: Atrial fibrillation",
None),
(12, "CVS Physiology",
"What is the normal ECG and its intervals?",
"P wave: Atrial depolarisation (0.08-0.10 s)\n"
"PR interval: 0.12-0.20 s (AV conduction)\n"
"QRS complex: Ventricular depolarisation (<0.12 s)\n"
"ST segment: Ventricular plateau\n"
"T wave: Ventricular repolarisation\n"
"QT interval: 0.35-0.44 s (ventricular systole)\n"
"QTc = QT/√RR (Bazett's formula)\n"
"Prolonged QT: Risk of Torsades de Pointes",
"ecg_intervals"),
(13, "CVS Physiology",
"What is cardiac output? How is it measured by Fick's principle?",
"CO = HR × SV (Normal: 5 L/min)\n"
"Cardiac index = CO / BSA (Normal: 2.5-3.5 L/min/m²)\n"
"Fick's Principle: CO = O₂ consumption / (A-V O₂ difference)\n"
"CO = (O₂ consumed per min) / (O₂ in pulmonary vein - O₂ in pulmonary artery)\n"
"Thermodilution method: cold saline injected; temperature drop ∝ CO\n"
"Dye dilution (Stewart-Hamilton): CO = amount of dye / ∫concentration dt",
None),
(14, "CVS Physiology",
"What determines blood pressure? Write the formula for MAP.",
"BP = CO × Total Peripheral Resistance (TPR)\n"
"MAP = DBP + 1/3(Pulse Pressure) = DBP + 1/3(SBP - DBP)\n"
"Normal MAP: 70-100 mmHg\n"
"Factors ↑ TPR: vasoconstriction, ↑ viscosity, ↑ vessel length\n"
"Poiseuille's law: Resistance ∝ 1/r⁴ (radius most important)\n"
"Regulation: Baroreceptors (carotid sinus CN IX, aortic arch CN X), RAAS, ANP",
None),
# ── RESPIRATORY PHYSIOLOGY ───────────────────────────────────────────
(15, "Respiratory Physiology",
"Label the lung volumes and capacities on a spirometry trace.",
"Tidal Volume (TV): 500 mL (normal breathing)\n"
"IRV: 3000 mL | ERV: 1100 mL | RV: 1200 mL\n"
"IC = TV + IRV = 3500 mL\n"
"FRC = ERV + RV = 2300 mL (cannot be measured by spirometry!)\n"
"VC = TV + IRV + ERV = 4600 mL\n"
"TLC = VC + RV = 5800 mL\n"
"FRC measured by: Helium dilution, N₂ washout, Body plethysmography",
"spirometry"),
(16, "Respiratory Physiology",
"What is the alveolar gas equation and when is A-a gradient elevated?",
"PAO₂ = FiO₂(Patm - PH₂O) - PaCO₂/RQ\n"
"At sea level: PAO₂ = 0.21(760-47) - 40/0.8 = 100 mmHg\n"
"Normal A-a gradient: <10 mmHg (young); <20 mmHg (elderly)\n"
"↑ A-a gradient: V/Q mismatch, diffusion defect, R→L shunt\n"
"Normal A-a gradient with ↓PaO₂: Hypoventilation, ↓FiO₂ (altitude)",
None),
(17, "Respiratory Physiology",
"What are the causes and effects of V/Q mismatch?",
"Normal V/Q ratio: 0.8 (global average)\n"
"Apex: V/Q > 1 (over-ventilated, under-perfused)\n"
"Base: V/Q < 1 (under-ventilated, over-perfused)\n"
"Dead space: V/Q = ∞ (ventilated, not perfused)\n"
"Shunt: V/Q = 0 (perfused, not ventilated) → not corrected by O₂\n"
"PE → ↑ dead space | Pneumonia → shunt | ARDS → V/Q mismatch\n"
"West Zones: Zone 1 (PA>Pa>Pv), Zone 2, Zone 3 (Pa>Pv>PA)",
None),
(18, "Respiratory Physiology",
"What is the Haldane effect? How does CO₂ transport differ from O₂?",
"CO₂ transport forms:\n"
"1. Dissolved: 7%\n"
"2. Carbamino compounds (with Hb): 23%\n"
"3. Bicarbonate (HCO₃⁻): 70% (main form)\n"
"Haldane Effect: Deoxygenated Hb carries MORE CO₂\n"
"Chloride Shift: HCO₃⁻ leaves RBC, Cl⁻ enters (Hamburger phenomenon)\n"
"Carbonic anhydrase: CO₂ + H₂O ⇌ H₂CO₃ ⇌ H⁺ + HCO₃⁻",
None),
(19, "Respiratory Physiology",
"What is the control of respiration? Name the respiratory centres.",
"Medullary centres (main): DRG (dorsal - inspiration), VRG (ventral - expiration)\n"
"Pontine centres: Pneumotaxic (inhibits inspiration, ↑ rate), Apneustic (prolongs inspiration)\n"
"Central chemoreceptors (medulla): Respond to ↑PaCO₂ (via pH of CSF) - MOST SENSITIVE\n"
"Peripheral chemoreceptors (carotid & aortic bodies): Respond to ↓PaO₂ (<60 mmHg), ↑CO₂, ↓pH\n"
"Hering-Breuer reflex: Stretch receptors → limit inspiration\n"
"Hypoxic drive: In COPD (chronic CO₂ retainers)",
None),
# ── RENAL PHYSIOLOGY ─────────────────────────────────────────────────
(20, "Renal Physiology",
"Label the nephron segments and their key functions.",
"PCT (60-70% reabsorption): Na⁺, K⁺, HCO₃⁻, glucose, AA, water (isosmotic)\n"
"Loop of Henle (Descending thin): Permeable to water ONLY\n"
"Loop of Henle (Ascending thick - TALH): Na-K-2Cl cotransport; impermeable to water\n"
"DCT: Thiazide-sensitive Na-Cl cotransport; Ca²⁺ reabsorption (PTH)\n"
"Collecting duct: Aldosterone (Na⁺ reabsorption), ADH (water reabsorption)\n"
"GFR = 125 mL/min; RBF = 1200 mL/min; Filtration fraction = 0.2",
"nephron"),
(21, "Renal Physiology",
"What is the RAAS? Name all components and their actions.",
"Renin (juxtaglomerular cells) → cleaves Angiotensinogen → Angiotensin I\n"
"ACE (lung mainly) → Angiotensin I → Angiotensin II\n"
"Ang II actions:\n"
" - Vasoconstriction (TPR ↑)\n"
" - Aldosterone secretion (↑ Na⁺/K⁺ in collecting duct)\n"
" - ADH secretion\n"
" - Thirst (hypothalamus)\n"
" - ↓ GFR (efferent arteriole constriction)\n"
"Renin released by: ↓ renal perfusion, ↓ Na⁺ delivery to macula densa, SNS (β1)",
"renin_angiotensin"),
(22, "Renal Physiology",
"What is tubular maximum (Tm) and renal threshold? Give example for glucose.",
"Renal threshold: Plasma level at which substance FIRST appears in urine\n"
"Glucose threshold = 180 mg/dL (transport maximum reached)\n"
"Tm (glucose) = 320 mg/dL (all carriers saturated)\n"
"Tm limited substances: Glucose, amino acids, phosphate, PAH (secretion)\n"
"Splay: Range between threshold and Tm (due to glomerulotubular balance differences)\n"
"PAH used to measure RPF (secreted completely at low plasma levels)",
None),
(23, "Renal Physiology",
"What are the renal clearance formulas? How is GFR measured?",
"Clearance (C) = (U × V) / P\n"
"GFR measured by Inulin clearance (gold standard) = 125 mL/min\n"
"Creatinine clearance ≈ GFR (slightly overestimates due to tubular secretion)\n"
"RBF = CPAH / (1 - Hct) = 600 mL/min\n"
"RPF = CPAH = 600 mL/min (PAH completely extracted)\n"
"Filtration fraction = GFR/RPF = 125/600 = 0.20\n"
"Free water clearance: CH₂O = V - Cosm",
None),
# ── NERVE & MUSCLE ───────────────────────────────────────────────────
(24, "Nerve & Muscle",
"What is the neuromuscular junction (NMJ)? Describe transmission.",
"Motor nerve terminal → synaptic cleft → motor end plate\n"
"AP arrives → voltage-gated Ca²⁺ channels open → Ca²⁺ influx\n"
"ACh released from synaptic vesicles (quanta)\n"
"ACh binds nicotinic receptors → Na⁺ influx → EPP → muscle AP\n"
"AChE breaks ACh → choline recycled\n"
"Myasthenia Gravis: Anti-nAChR antibodies\n"
"Lambert-Eaton: Anti-VGCC antibodies (presynaptic)\n"
"Curare: competitive nAChR blocker",
"neuromuscular"),
(25, "Nerve & Muscle",
"Describe the sliding filament theory of muscle contraction.",
"1. AP → T-tubules → SR Ca²⁺ release (RYR1)\n"
"2. Ca²⁺ binds Troponin C → conformational change\n"
"3. Tropomyosin shifts → exposes actin binding sites\n"
"4. Myosin head (cross-bridge) binds actin\n"
"5. Power stroke: ADP+Pi released → myosin pulls actin\n"
"6. ATP binds myosin → detachment\n"
"7. ATP hydrolysis → myosin re-cocks ('cocked' state)\n"
"Sarcomere: A band constant; I band & H zone shorten; Z lines approximate",
None),
(26, "Nerve & Muscle",
"What are the nerve fibre types and their characteristics?",
"Aα: 12-20 μm, 70-120 m/s — Motor (extrafusal), proprioception (muscle spindle Ia)\n"
"Aβ: 5-12 μm — Touch, pressure\n"
"Aγ: 3-6 μm — Motor (intrafusal muscle spindles)\n"
"Aδ: 1-5 μm, 6-30 m/s — Fast pain, temperature (sharp)\n"
"B fibres: Preganglionic autonomic\n"
"C fibres: 0.2-1.5 μm, 0.5-2 m/s — Slow pain, temperature, postganglionic\n"
"LA block order: Small C fibres first (pain), then Aδ, last motor (Aα)\n"
"Myelinated = A & B; Unmyelinated = C",
None),
# ── GI PHYSIOLOGY ───────────────────────────────────────────────────
(27, "GI Physiology",
"Name all GI hormones, their site of secretion, and main actions.",
"Gastrin (G cells, antrum): ↑ HCl, ↑ pepsinogen, ↑ motility\n"
"CCK (I cells, duodenum/jejunum): ↑ pancreatic enzymes, gallbladder contraction, ↓ gastric emptying\n"
"Secretin (S cells, duodenum): ↑ HCO₃⁻ from pancreas/bile, ↓ HCl\n"
"GIP (K cells, duodenum/jejunum): ↑ insulin release (incretin)\n"
"Motilin: ↑ interdigestive motility (MMC - phase III)\n"
"Somatostatin: Inhibits all GI hormones\n"
"VIP: ↑ intestinal secretion, vasodilation\n"
"Ghrelin (stomach fundus): ↑ appetite, ↑ GH secretion",
None),
(28, "GI Physiology",
"What are the pressure values in the GI tract? Describe the lower oesophageal sphincter.",
"LES pressure: 15-25 mmHg (prevents GERD)\n"
"LES relaxed by: Gastrin (paradox - actually ↓ at low dose, ↑ at high dose),\n"
" Progesterone, Secretin, CCK, fatty foods, alcohol, smoking\n"
"LES tightened by: Gastrin (high dose), Acetylcholine, Metoclopramide\n"
"Achalasia: Failed LES relaxation (loss of inhibitory neurons - VIP/NO)\n"
"Lower GI: Ileocaecal valve pressure 20 mmHg\n"
"Rectal-anal pressure: IAS (involuntary smooth) > EAS (voluntary striated)",
"gi_pressure"),
(29, "GI Physiology",
"How is Vitamin B12 absorbed? What is the intrinsic factor?",
"Intrinsic Factor (IF): Secreted by Parietal cells of stomach fundus/body\n"
"B12 + IF → Ileum (terminal) → specific receptors → absorption\n"
"B12 deficiency causes: Pernicious anaemia (anti-IF or anti-parietal cell Ab)\n"
"Also lost in: Gastrectomy, terminal ileal disease (Crohn's), Blind loop syndrome\n"
"Schilling test: Diagnoses B12 malabsorption (corrected by oral IF)\n"
"B12 stores last: 3-5 years (liver stores)\n"
"Deficiency: Megaloblastic anaemia + subacute combined degeneration (dorsal & lateral columns)",
None),
# ── ENDOCRINE PHYSIOLOGY ─────────────────────────────────────────────
(30, "Endocrine Physiology",
"Label the zones of the adrenal cortex and their hormones.",
"From outside in: GFR = 'Salt Sugar Sex'\n"
"Zona Glomerulosa (outermost): Aldosterone (mineralocorticoid)\n"
" - Regulated by: Ang II, K⁺, ACTH (minor)\n"
"Zona Fasciculata (middle, largest): Cortisol (glucocorticoid)\n"
" - Regulated by: ACTH (CRH → ACTH → Cortisol)\n"
"Zona Reticularis (inner): Androgens (DHEA, androstenedione)\n"
"Adrenal Medulla: Epinephrine (80%) + Norepinephrine (20%)\n"
"Cortisol actions: Anti-inflammatory, gluconeogenesis, protein catabolism, ↓ Ca²⁺ absorption",
"adrenal_zones"),
(31, "Endocrine Physiology",
"What are the actions of insulin? When is it released?",
"Released by: ↑ blood glucose (main), ↑ amino acids, GIP, GLP-1, vagal\n"
"Receptor: Tyrosine kinase (RTK), GLUT4 translocation\n"
"Anabolic hormone:\n"
" - ↑ Glucose uptake (muscle, fat - GLUT4), ↑ glycogen synthesis\n"
" - ↑ Protein synthesis, ↓ proteolysis\n"
" - ↑ Lipogenesis, ↓ lipolysis\n"
" - ↓ Gluconeogenesis, ↓ glycogenolysis\n"
" - K⁺ entry into cells (↓ serum K⁺)\n"
"C-peptide: Marker of endogenous insulin production",
None),
(32, "Endocrine Physiology",
"Describe thyroid hormone synthesis, transport and actions.",
"Synthesis: I⁻ uptake (NIS) → Oxidation (TPO) → Organification → MIT + DIT\n"
"T3 (active) + T4 (prohormone) stored in colloid as thyroglobulin\n"
"T4:T3 secretion ratio = 20:1 (but T3 is 3-4x more potent)\n"
"T4 → T3 conversion: Type 1 deiodinase (peripheral tissues)\n"
"Transport: 99.97% bound (TBG > albumin > transthyretin)\n"
"Receptor: Nuclear receptor (acts like steroid)\n"
"Actions: ↑ BMR, ↑ heat production, ↑ HR, ↑ protein synthesis,\n"
" ↑ GI motility, normal growth & development",
None),
(33, "Endocrine Physiology",
"What is the hypothalamic-pituitary-adrenal (HPA) axis?",
"Hypothalamus → CRH (pulsatile, peaks at morning 8 AM)\n"
"Anterior pituitary → ACTH (from POMC)\n"
"Adrenal cortex → Cortisol\n"
"Negative feedback: Cortisol inhibits CRH and ACTH\n"
"Cushing's syndrome: ↑ Cortisol\n"
" - Cushing's DISEASE: ↑ ACTH from pituitary adenoma\n"
" - Ectopic ACTH: Small cell lung cancer (paraneoplastic)\n"
"Addison's disease: Primary adrenal insufficiency → ↑ ACTH, ↑ MSH (hyperpigmentation)\n"
"Dexamethasone suppression test: 1 mg overnight → normal cortisol suppressed",
None),
(34, "Endocrine Physiology",
"What are the effects of PTH, Vitamin D and Calcitonin on calcium?",
"PTH (parathyroid chief cells; released by ↓ Ca²⁺):\n"
" - ↑ Bone resorption (osteoclast activation)\n"
" - ↑ Renal Ca²⁺ reabsorption (DCT), ↓ PO₄ reabsorption\n"
" - ↑ 1α-hydroxylase → ↑ Vit D\n"
"Vitamin D (1,25-dihydroxycholecalciferol - Calcitriol):\n"
" - ↑ Gut Ca²⁺ absorption, ↑ PO₄ absorption\n"
" - ↑ Bone mineralisation\n"
"Calcitonin (thyroid C cells): ↓ Bone resorption, ↓ serum Ca²⁺\n"
"Hypoparathyroidism: ↓Ca²⁺, ↑PO₄, Chvostek's sign, Trousseau's sign",
None),
# ── NEUROPHYSIOLOGY ──────────────────────────────────────────────────
(35, "Neurophysiology",
"Describe the stretch reflex (knee jerk). Draw the reflex arc.",
"Stimulus: Tap on patellar tendon → muscle stretch\n"
"Receptor: Muscle spindle (Ia afferents)\n"
"Afferent: Ia fibre → dorsal root → spinal cord\n"
"Synapse: Monosynaptic (direct to α motor neuron)\n"
"Efferent: α motor neuron → extrafusal muscle fibres\n"
"Response: Muscle contracts (knee extends)\n"
"Inhibition: Reciprocal inhibition of antagonist (via Ia inhibitory interneuron)\n"
"Root value: L2, L3, L4 (femoral nerve)\n"
"Upper vs Lower: UMN - ↑ reflexes; LMN - ↓ reflexes",
"reflex_arc"),
(36, "Neurophysiology",
"What is the visual pathway? Where do lesions cause specific field defects?",
"Retina → Optic nerve → Optic chiasm → Optic tract → LGN (thalamus)\n"
"→ Optic radiation → Primary visual cortex (calcarine sulcus, Brodmann 17)\n"
"Lesion sites:\n"
"1. Optic nerve: Monocular blindness (ipsilateral)\n"
"2. Optic chiasm centre: Bitemporal hemianopia (pituitary tumour - superior quadrant first)\n"
"3. Optic tract: Contralateral homonymous hemianopia\n"
"4. Upper optic radiation (parietal): Lower contralateral quadrantanopia\n"
"5. Lower optic radiation (temporal - Meyer's loop): Upper contralateral quadrantanopia\n"
"6. Visual cortex: Homonymous hemianopia with MACULAR SPARING",
"visual_pathway"),
(37, "Neurophysiology",
"What are the basal ganglia circuits? What happens in Parkinson's disease?",
"Direct pathway: ↑ movement (D1 receptors, excitatory)\n"
"Striatum → ↓ GPi/SNr → ↓ inhibition of thalamus → ↑ movement\n"
"Indirect pathway: ↓ movement (D2 receptors, inhibitory)\n"
"Striatum → ↑ GPe → ↓ STN → ↓ GPi → ↑ thalamus\n"
"Dopamine: Excites direct, inhibits indirect → NET: ↑ movement\n"
"Parkinson's: ↓ Dopamine (SNc) → direct ↓, indirect ↑ → ↓ movement\n"
"Clinical: Tremor (resting, pill-rolling), Rigidity (cogwheel), Bradykinesia, Postural instability\n"
"Huntington's: Loss of indirect pathway neurons → chorea",
None),
(38, "Neurophysiology",
"What is the cerebellum's role? What are the signs of cerebellar lesions?",
"Function: Coordination, timing, motor learning, balance\n"
"Inputs: Sensory (spinocerebellar), Cortex (corticobulbar → pontine nuclei)\n"
"Output: Via deep nuclei (dentate, emboliform, globose, fastigial)\n"
"→ Thalamus → Motor cortex\n"
"IPSILATERAL lesions (unlike cerebral cortex)\n"
"Signs: DANISH\n"
"D - Dysdiadochokinesia, A - Ataxia, N - Nystagmus (horizontal)\n"
"I - Intention tremor, S - Slurred speech (dysarthria), H - Hypotonia\n"
"Past-pointing: Finger-nose test fails\n"
"Romberg's test NEGATIVE (unlike posterior column disease)",
None),
# ── REPRODUCTIVE PHYSIOLOGY ──────────────────────────────────────────
(39, "Reproductive Physiology",
"Describe the menstrual cycle and the hormonal changes throughout.",
"Day 1-14 (Follicular/Proliferative): FSH → follicle growth → ↑ Oestrogen\n"
"LH surge (Day 13): Triggered by ↑ Oestrogen (positive feedback)\n"
"Day 14: Ovulation (LH surge 36-44 hr before)\n"
"Day 15-28 (Luteal/Secretory): LH → Corpus luteum → Progesterone + Oestrogen\n"
"If no fertilisation: CL regresses at day 25 → ↓ P4 → menstruation\n"
"If fertilisation: hCG (from trophoblast) maintains CL until placenta takes over\n"
"FSH: Follicle development, Aromatase (E2 synthesis in granulosa)\n"
"LH: Theca cell androgen synthesis, ovulation trigger, CL maintenance",
None),
(40, "Reproductive Physiology",
"What are the actions of oestrogen and progesterone on the endometrium?",
"Oestrogen (Proliferative phase):\n"
" - ↑ Endometrial proliferation (↑ uterine mass)\n"
" - ↑ Cervical mucus (thin, watery - Spinnbarkeit, ferning)\n"
" - ↑ LH/FSH receptors, ↑ progesterone receptors\n"
" - Positive feedback at high doses → LH surge\n"
"Progesterone (Secretory phase):\n"
" - Secretory transformation (glycogen, thick mucus)\n"
" - ↓ Uterine motility (anti-oxytocin)\n"
" - BBT rises 0.5°C after ovulation\n"
" - Maintains pregnancy (anti-miscarriage)\n"
" - Negative feedback on LH/FSH",
None),
# ── SPECIAL SENSES ───────────────────────────────────────────────────
(41, "Special Senses",
"How does the eye accommodate? What is the near triad?",
"Near Triad (accommodation reflex):\n"
"1. Convergence: Medial recti contract (CN III)\n"
"2. Accommodation: Ciliary muscle contracts → lens becomes more convex → ↑ refraction\n"
"3. Pupillary constriction (miosis): Sphincter pupillae (parasympathetic CN III)\n"
"Pathway: Visual cortex → EW nucleus (CN III) → ciliary ganglion\n"
"Presbyopia: ↓ lens elasticity with age\n"
"Argyll Robertson pupil: Accommodates but doesn't react to light (syphilis)\n"
"Holmes-Adie pupil: Slow accommodation + light reaction (benign)",
None),
(42, "Special Senses",
"How is sound transduced in the cochlea? What is tonotopy?",
"Sound → Tympanic membrane → Ossicles (malleus → incus → stapes)\n"
"→ Oval window → Perilymph → Basilar membrane vibration\n"
"Tonotopy: High frequency → base of cochlea; Low frequency → apex\n"
"Hair cells on organ of Corti: Shearing of stereocilia → K⁺ influx (endolymph)\n"
"→ Depolarisation → Glutamate release → CN VIII (cochlear)\n"
"Endolymph: High K⁺, low Na⁺ (like ICF) — maintained by stria vascularis\n"
"Perilymph: High Na⁺ (like ECF)\n"
"Ossicle ratio amplifies force 22x; stapes footplate:eardrum = 1:17",
None),
# ── BODY FLUIDS ──────────────────────────────────────────────────────
(43, "Body Fluids",
"What are the body fluid compartments and their volumes?",
"Total Body Water (TBW): 60% of body weight (42 L in 70 kg man)\n"
"ICF: 40% body weight = 28 L (2/3 of TBW)\n"
"ECF: 20% body weight = 14 L (1/3 of TBW)\n"
" Plasma: 5% = 3.5 L | Interstitial: 15% = 10.5 L\n"
"Starling forces: Filtration = Kf[(Pc - Pi) - σ(πc - πi)]\n"
"Oedema: ↑ Pc (heart failure), ↓ πc (↓albumin), ↑ permeability, blocked lymph\n"
"Measurement: Indicator dilution (inulin = ECF; D2O/urea = TBW; Evans blue = plasma)",
None),
(44, "Body Fluids",
"What is the Henderson-Hasselbalch equation? Classify acid-base disorders.",
"pH = 6.1 + log([HCO₃⁻] / 0.03 × PCO₂)\n"
"Normal: pH 7.35-7.45 | HCO₃⁻ 22-26 mEq/L | PaCO₂ 35-45 mmHg\n"
"Metabolic acidosis: ↓ HCO₃⁻ → ↓ pH (compensation: hyperventilation ↓ PCO₂)\n"
"Metabolic alkalosis: ↑ HCO₃⁻ → ↑ pH (compensation: hypoventilation ↑ PCO₂)\n"
"Respiratory acidosis: ↑ PCO₂ → ↓ pH (compensation: ↑ HCO₃⁻ renal)\n"
"Respiratory alkalosis: ↓ PCO₂ → ↑ pH (compensation: ↓ HCO₃⁻ renal)\n"
"AG = Na⁺ - (Cl⁻ + HCO₃⁻); Normal = 8-12 mEq/L",
None),
# ── HIGH ALTITUDE & SPECIAL ENVIRONMENTS ─────────────────────────────
(45, "Applied Physiology",
"What are the physiological changes at high altitude (acute and chronic)?",
"Trigger: ↓ PaO₂ (hypobaric hypoxia)\n"
"ACUTE CHANGES:\n"
" - Hyperventilation (↑ rate, ↓ PaCO₂, respiratory alkalosis)\n"
" - ↑ HR, ↑ CO\n"
" - ↑ 2,3-BPG (right shift ODC → better O₂ delivery)\n"
"CHRONIC CHANGES (acclimatisation):\n"
" - ↑ EPO → ↑ RBC, ↑ Hb, ↑ haematocrit\n"
" - ↑ Capillary density in tissues\n"
" - ↑ Mitochondria, ↑ myoglobin\n"
" - Restored pH (renal HCO₃⁻ excretion)\n"
"AMS: Headache, nausea. HACE, HAPE at >3500 m",
None),
(46, "Applied Physiology",
"What is diving physiology? Describe nitrogen narcosis and decompression sickness.",
"Henry's Law: Gas dissolved ∝ partial pressure\n"
"Nitrogen narcosis: At >30 m — N₂ dissolves in lipid membranes → CNS depression (rapture of deep)\n"
"Decompression sickness: Rapid ascent → N₂ bubbles in tissues\n"
" - Type I: Joint pain (bends), skin, lymph\n"
" - Type II: CNS, heart (chokes), lungs\n"
" - Treatment: Recompression in hyperbaric O₂ chamber\n"
"O₂ toxicity: >100% O₂ > 1 ATA → seizures (cerebral), pulmonary fibrosis\n"
"Boyle's law: P₁V₁ = P₂V₂ — gases expand on ascent",
None),
# ── SLEEP PHYSIOLOGY ─────────────────────────────────────────────────
(47, "Neurophysiology",
"What are the EEG waves and sleep stages?",
"EEG Waves:\n"
"Beta (13-30 Hz): Alert, awake, active thinking\n"
"Alpha (8-13 Hz): Relaxed, eyes closed\n"
"Theta (4-8 Hz): Light sleep (Stage 1 NREM)\n"
"Delta (<4 Hz): Deep sleep (Stage 3-4 NREM = slow wave sleep)\n"
"SLEEP STAGES:\n"
"NREM Stage 1: Theta waves, hypnic jerks\n"
"NREM Stage 2: Sleep spindles + K-complexes\n"
"NREM Stage 3-4: Delta waves (slow wave sleep) — growth hormone released\n"
"REM: Beta-like waves, dreaming, muscle atonia, ↑ HR/BP variability\n"
"REM sleep deprivation: Irritability, ↓ memory\n"
"Night terrors: NREM; Nightmares: REM",
None),
# ── TEMPERATURE REGULATION ───────────────────────────────────────────
(48, "Applied Physiology",
"What is thermoregulation? How does the body respond to heat and cold?",
"Thermostat: Anterior hypothalamus (heat loss) & Posterior hypothalamus (heat conservation)\n"
"Set point: 37°C (98.6°F)\n"
"HEAT DISSIPATION (hot environment):\n"
" - Sweating (evaporation - most effective)\n"
" - Cutaneous vasodilation\n"
" - ↓ Muscle tone, behavioural changes\n"
"HEAT CONSERVATION (cold environment):\n"
" - Shivering (↑ muscle tone → heat)\n"
" - Non-shivering thermogenesis: Brown fat (infants) — UCP1 (thermogenin)\n"
" - Vasoconstriction, piloerection, ↑ thyroid hormones\n"
"Fever: Pyrogens ↑ PGE2 (IL-1, IL-6, TNF) → ↑ set point",
None),
# ── AUTONOMIC NERVOUS SYSTEM ─────────────────────────────────────────
(49, "Autonomic NS",
"Compare sympathetic and parasympathetic effects on key organs.",
"Heart: SNS ↑ HR (β1), ↑ contractility | PNS ↓ HR (M2), no effect on contractility\n"
"Blood vessels: SNS vasoconstriction (α1) | PNS minimal (vasodilation in erectile tissue)\n"
"Bronchi: SNS dilation (β2) | PNS constriction (M3)\n"
"Gut: SNS ↓ motility (α2, β) | PNS ↑ motility, secretion (M3)\n"
"Bladder: SNS ↓ detrusor (β3), ↑ sphincter (α1) = STORAGE | PNS ↑ detrusor (M3) = VOIDING\n"
"Eye: SNS mydriasis (α1), retraction of lid | PNS miosis (M3), accommodation\n"
"Skin: SNS sweat glands (M - cholinergic!), piloerection (α1)\n"
"Adrenals: SNS → Ach → adrenaline/NA release (nicotinic receptor)",
None),
(50, "Applied Physiology",
"What are the normal values every NEET PG student must know?",
"RESPIRATORY: TV=500mL | FRC=2300mL | TLC=5800mL | VC=4600mL\n"
" PaO₂=95mmHg | PaCO₂=40mmHg | SpO₂=97-100%\n"
"CARDIAC: CO=5L/min | SV=70mL | EF=55-65% | HR=60-100/min\n"
" BP: 120/80 mmHg | MAP=93 mmHg\n"
"RENAL: GFR=125mL/min | RBF=1200mL/min | FF=0.2\n"
"HAEMATOLOGY: Hb(M)=15g/dL | Hb(F)=13.5g/dL | WBC=4000-11000/mm³\n"
" Platelets=150000-400000/mm³ | PT=11-13s | aPTT=25-35s\n"
"ENDOCRINE: Fasting glucose=70-100mg/dL | Serum Ca=8.5-10.5mg/dL\n"
" Serum Na=135-145 | K=3.5-5.0 | HCO₃=22-26 mEq/L",
None),
]
# ─── HELPER: Add background colour ──────────────────────────────────────────
def add_bg(slide, color):
bg = slide.background
fill = bg.fill
fill.solid()
fill.fore_color.rgb = color
# ─── HELPER: Add text box ───────────────────────────────────────────────────
def add_tb(slide, text, x, y, w, h, size=18, bold=False, color=WHITE,
align=PP_ALIGN.LEFT, wrap=True, italic=False):
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = wrap
tf.auto_size = None
p = tf.paragraphs[0]
p.alignment = align
r = p.add_run()
r.text = text
r.font.size = Pt(size)
r.font.bold = bold
r.font.italic = italic
r.font.color.rgb = color
return tb
# ─── HELPER: Add rounded rectangle ─────────────────────────────────────────
from pptx.enum.shapes import MSO_SHAPE
def add_rect(slide, x, y, w, h, fill_color, line_color=None, radius=0.1):
from pptx.util import Emu
shape = slide.shapes.add_shape(
MSO_SHAPE.ROUNDED_RECTANGLE,
Inches(x), Inches(y), Inches(w), Inches(h))
shape.fill.solid()
shape.fill.fore_color.rgb = fill_color
if line_color:
shape.line.color.rgb = line_color
shape.line.width = Pt(1.5)
else:
shape.line.fill.background()
return shape
# ─── HELPER: Multi-line text box ─────────────────────────────────────────────
def add_multiline_tb(slide, text, x, y, w, h, size=14, color=WHITE, bold_first=False):
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = True
lines = text.split('\n')
for i, line in enumerate(lines):
if i == 0:
p = tf.paragraphs[0]
else:
p = tf.add_paragraph()
p.space_before = Pt(2)
r = p.add_run()
r.text = line
r.font.size = Pt(size)
r.font.color.rgb = color
if bold_first and i == 0:
r.font.bold = True
# Indent sub-lines (starting with spaces)
if line.startswith(' '):
p.level = 1
# ─── DRAW DIAGRAMS (pure python-pptx shapes) ────────────────────────────────
def draw_action_potential(slide):
"""Draw a simplified action potential graph using lines."""
# Axes labels
add_tb(slide, "Action Potential", 9.2, 0.6, 3.8, 0.4, size=12, bold=True, color=TEAL, align=PP_ALIGN.CENTER)
add_tb(slide, "mV", 9.3, 0.9, 0.5, 0.3, size=9, color=LIGHT_GRAY)
add_tb(slide, "+35", 9.3, 1.1, 0.6, 0.3, size=9, color=GOLD)
add_tb(slide, "0", 9.3, 1.9, 0.4, 0.3, size=9, color=LIGHT_GRAY)
add_tb(slide, "-70", 9.3, 2.9, 0.6, 0.3, size=9, color=RED)
add_tb(slide, "Time →", 11.5, 3.5, 1.5, 0.3, size=9, color=LIGHT_GRAY)
# Draw AP curve using connector lines (approximation with rectangles)
# Baseline
s = slide.shapes.add_connector(1, Inches(9.9), Inches(3.15), Inches(10.5), Inches(3.15))
s.line.color.rgb = GREEN; s.line.width = Pt(2)
# Rising phase
s2 = slide.shapes.add_connector(1, Inches(10.5), Inches(3.15), Inches(10.8), Inches(1.3))
s2.line.color.rgb = GREEN; s2.line.width = Pt(2)
# Peak
s3 = slide.shapes.add_connector(1, Inches(10.8), Inches(1.3), Inches(11.1), Inches(1.3))
s3.line.color.rgb = GOLD; s3.line.width = Pt(2)
# Falling
s4 = slide.shapes.add_connector(1, Inches(11.1), Inches(1.3), Inches(11.5), Inches(3.3))
s4.line.color.rgb = RED; s4.line.width = Pt(2)
# Undershoot (hyperpolarisation)
s5 = slide.shapes.add_connector(1, Inches(11.5), Inches(3.3), Inches(11.9), Inches(3.5))
s5.line.color.rgb = RED; s5.line.width = Pt(2)
# Return to rest
s6 = slide.shapes.add_connector(1, Inches(11.9), Inches(3.5), Inches(12.6), Inches(3.15))
s6.line.color.rgb = GREEN; s6.line.width = Pt(2)
# Labels
add_tb(slide, "Depol.", 10.45, 0.9, 0.7, 0.3, size=8, color=GREEN)
add_tb(slide, "Repol.", 11.1, 1.0, 0.7, 0.3, size=8, color=RED)
add_tb(slide, "ARP", 10.6, 3.6, 0.5, 0.3, size=8, color=ORANGE)
add_tb(slide, "RRP", 11.2, 3.6, 0.5, 0.3, size=8, color=PURPLE)
def draw_oxy_dissociation(slide):
"""Draw ODC curve (sigmoid)."""
add_tb(slide, "O₂-Hb Dissociation Curve", 9.2, 0.6, 3.8, 0.4, size=11, bold=True, color=TEAL, align=PP_ALIGN.CENTER)
add_tb(slide, "SaO₂%", 9.3, 0.95, 0.7, 0.3, size=9, color=LIGHT_GRAY)
add_tb(slide, "100", 9.3, 1.0, 0.6, 0.3, size=8, color=GREEN)
add_tb(slide, "75", 9.3, 1.7, 0.5, 0.3, size=8, color=GOLD)
add_tb(slide, "50", 9.3, 2.35, 0.5, 0.3, size=8, color=ORANGE)
add_tb(slide, "PO₂ (mmHg) →", 11.2, 3.6, 1.8, 0.3, size=9, color=LIGHT_GRAY)
add_tb(slide, "26", 10.5, 3.5, 0.5, 0.3, size=8, color=RED)
add_tb(slide, "P50", 10.45, 3.2, 0.5, 0.3, size=8, color=RED)
# Draw sigmoid curve (approximate with connected lines)
pts = [(9.9, 3.3), (10.1, 3.15), (10.3, 2.9), (10.5, 2.55), (10.75, 2.0),
(11.0, 1.55), (11.3, 1.25), (11.7, 1.1), (12.2, 1.05), (12.6, 1.0)]
for i in range(len(pts)-1):
s = slide.shapes.add_connector(1, Inches(pts[i][0]), Inches(pts[i][1]),
Inches(pts[i+1][0]), Inches(pts[i+1][1]))
s.line.color.rgb = TEAL; s.line.width = Pt(2.5)
# Right shift arrow
add_tb(slide, "← LEFT shift\n(↑ affinity)", 11.5, 1.5, 1.1, 0.6, size=8, color=LIGHT_BLUE)
add_tb(slide, "RIGHT shift →\n(↓ affinity)", 11.5, 2.5, 1.1, 0.6, size=8, color=ORANGE)
def draw_spirometry(slide):
"""Draw spirometry volumes diagram."""
add_tb(slide, "Lung Volumes (Spirometry)", 9.2, 0.6, 3.8, 0.4, size=11, bold=True, color=TEAL, align=PP_ALIGN.CENTER)
# Volume levels (y positions from top)
# TLC at top, RV at bottom
labels = [("TLC 5800mL", 0.9), ("VC 4600mL", 1.1), ("IC 3500mL", 1.5),
("IRV 3000mL", 1.1), ("TV 500mL", 2.0), ("ERV 1100mL", 2.55),
("FRC 2300mL", 2.55), ("RV 1200mL", 3.15)]
# Draw stacked bar segments
bar_x = 10.0; bar_w = 1.5
segs = [
("IRV\n3000mL", 1.0, 1.65, DARK_TEAL),
("TV\n500mL", 2.65, 0.37, TEAL),
("ERV\n1100mL", 3.02, 0.75, PURPLE),
("RV\n1200mL", 3.77, 0.85, RED),
]
for label, y, h, col in segs:
add_rect(slide, bar_x, y, bar_w, h, col, WHITE)
add_tb(slide, label, bar_x+0.05, y+0.02, bar_w-0.1, h-0.05, size=8, color=WHITE, align=PP_ALIGN.CENTER)
# Bracket labels
bracket_labels = [
("TLC=5800", 9.2, 1.0, GOLD),
("VC=4600", 9.2, 1.2, GREEN),
("FRC=2300*", 11.7, 3.0, ORANGE),
]
for lbl, bx, by, col in bracket_labels:
add_tb(slide, lbl, bx, by, 1.0, 0.35, size=8, bold=True, color=col)
add_tb(slide, "* Cannot be\nmeasured by\nspirometry", 11.6, 3.3, 1.3, 0.7, size=8, color=ORANGE)
def draw_wiggers(slide):
"""Draw simplified Wiggers diagram labels."""
add_tb(slide, "Wiggers Diagram", 9.2, 0.6, 3.8, 0.4, size=12, bold=True, color=TEAL, align=PP_ALIGN.CENTER)
phases = [
("1. Isovolumetric\nContraction", GOLD),
("2. Rapid\nEjection", GREEN),
("3. Slow\nEjection", GREEN),
("4. Isovolumetric\nRelaxation", ORANGE),
("5. Rapid\nFilling", TEAL),
]
for i, (ph, col) in enumerate(phases):
x = 9.3 + i * 0.83
add_rect(slide, x, 1.0, 0.78, 0.8, col)
add_tb(slide, ph, x+0.03, 1.02, 0.72, 0.76, size=7, color=DARK_BLUE, align=PP_ALIGN.CENTER)
add_tb(slide, "EDV=120mL → ESV=50mL → SV=70mL | EF=58%",
9.3, 1.9, 3.8, 0.4, size=9, bold=True, color=GOLD, align=PP_ALIGN.CENTER)
# Heart sounds
add_tb(slide, "S1 (MV closes)", 9.3, 2.4, 1.8, 0.3, size=9, color=LIGHT_BLUE)
add_tb(slide, "S2 (AV closes)", 11.0, 2.4, 1.8, 0.3, size=9, color=LIGHT_BLUE)
add_tb(slide, "S1 ← SYSTOLE → S2 ← DIASTOLE → S1", 9.3, 2.8, 3.8, 0.4,
size=9, color=WHITE, align=PP_ALIGN.CENTER)
add_tb(slide, "Aortic pressure: 120/80 mmHg\nLA pressure: 5-12 mmHg\nLV: 0→120→80 mmHg",
9.3, 3.2, 3.8, 0.7, size=9, color=LIGHT_GRAY)
def draw_nephron(slide):
"""Draw nephron segments schematically."""
add_tb(slide, "Nephron Segments", 9.2, 0.6, 3.8, 0.4, size=12, bold=True, color=TEAL, align=PP_ALIGN.CENTER)
segs_n = [
("Glomerulus\n(GFR=125mL/min)", 1.0, TEAL),
("PCT\n60-70% reabsorb", 1.7, GREEN),
("Descending LoH\n(H₂O permeable)", 2.35, LIGHT_BLUE),
("Ascending LoH\nNa-K-2Cl (TALH)", 3.0, PURPLE),
("DCT\nThiazide-sensitive", 3.65, ORANGE),
("Collecting Duct\nADH, Aldosterone", 4.3, GOLD),
]
for lbl, y, col in segs_n:
add_rect(slide, 9.4, y, 3.5, 0.55, col)
add_tb(slide, lbl, 9.45, y+0.03, 3.4, 0.5, size=8, color=DARK_BLUE, align=PP_ALIGN.CENTER)
# Arrow
for i, (_, y, _) in enumerate(segs_n[:-1]):
s = slide.shapes.add_connector(1, Inches(11.15), Inches(y+0.55),
Inches(11.15), Inches(y+0.68))
s.line.color.rgb = WHITE; s.line.width = Pt(1.5)
def draw_adrenal_zones(slide):
"""Draw adrenal gland zones."""
add_tb(slide, "Adrenal Cortex Zones", 9.2, 0.6, 3.8, 0.4, size=12, bold=True, color=TEAL, align=PP_ALIGN.CENTER)
zones = [
("Zona Glomerulosa\n(outermost)\nALDOSTERONE\n'Salt' | Mineralocorticoid", TEAL, 1.0),
("Zona Fasciculata\n(middle, largest)\nCORTISOL\n'Sugar' | Glucocorticoid", GOLD, 1.85),
("Zona Reticularis\n(inner)\nANDROGENS (DHEA)\n'Sex'", ORANGE, 2.7),
("Adrenal Medulla\nEPINEPHRINE 80%\nNorepinephrine 20%\nChromaffin cells", RED, 3.55),
]
for lbl, col, y in zones:
add_rect(slide, 9.4, y, 3.6, 0.72, col)
add_tb(slide, lbl, 9.45, y+0.04, 3.5, 0.65, size=8, color=DARK_BLUE, align=PP_ALIGN.CENTER)
add_tb(slide, "Mnemonic: GFR = Salt, Sugar, Sex", 9.3, 4.35, 3.8, 0.4,
size=9, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
def draw_reflex_arc(slide):
"""Draw reflex arc diagram."""
add_tb(slide, "Stretch Reflex Arc", 9.2, 0.6, 3.8, 0.4, size=12, bold=True, color=TEAL, align=PP_ALIGN.CENTER)
nodes = [
("Stimulus\n(Patellar tap)", 9.4, 1.1, 1.0, 0.7, ORANGE),
("Muscle\nSpindle (Ia)", 10.6, 1.1, 1.0, 0.7, GREEN),
("Dorsal Horn\nSpinal Cord", 11.8, 1.1, 1.0, 0.7, TEAL),
("α-Motor\nNeuron", 11.8, 2.2, 1.0, 0.7, PURPLE),
("Quadriceps\n(contracts)", 10.6, 2.2, 1.0, 0.7, RED),
]
for lbl, x, y, w, h, col in nodes:
add_rect(slide, x, y, w, h, col)
add_tb(slide, lbl, x+0.05, y+0.08, w-0.1, h-0.1, size=8, color=WHITE, align=PP_ALIGN.CENTER)
# Arrows
arrows = [(10.4, 1.45, 10.6, 1.45), (11.6, 1.45, 11.8, 1.45),
(12.3, 1.8, 12.3, 2.2), (11.6, 2.55, 10.6+1.0, 2.55)]
for x1, y1, x2, y2 in arrows:
s = slide.shapes.add_connector(1, Inches(x1), Inches(y1), Inches(x2), Inches(y2))
s.line.color.rgb = WHITE; s.line.width = Pt(1.5)
add_tb(slide, "MONOSYNAPTIC reflex\nL2, L3, L4 (femoral n.)", 9.4, 3.1, 3.8, 0.5, size=9, color=GOLD, align=PP_ALIGN.CENTER)
def draw_visual_pathway(slide):
"""Draw visual pathway."""
add_tb(slide, "Visual Pathway & Field Defects", 9.2, 0.6, 3.8, 0.4, size=11, bold=True, color=TEAL, align=PP_ALIGN.CENTER)
stations = [
("Retina", TEAL), ("Optic Nerve", GREEN), ("Optic Chiasm", GOLD),
("Optic Tract", ORANGE), ("LGN (Thalamus)", PURPLE), ("Visual Cortex", RED),
]
for i, (name, col) in enumerate(stations):
y = 1.0 + i * 0.55
add_rect(slide, 9.4, y, 1.8, 0.42, col)
add_tb(slide, name, 9.45, y+0.05, 1.7, 0.35, size=9, color=DARK_BLUE, align=PP_ALIGN.CENTER)
if i < len(stations) - 1:
s = slide.shapes.add_connector(1, Inches(10.3), Inches(y+0.42), Inches(10.3), Inches(y+0.55))
s.line.color.rgb = WHITE; s.line.width = Pt(1.5)
# Defect labels
defects = [
("Monocular\nblindness", 11.3, 1.0),
("Bitemporal\nhemianopia", 11.3, 1.55),
("Contralat.\nhomonymous", 11.3, 2.1),
("", 11.3, 2.65),
("Macular\nsparing", 11.3, 3.2),
]
for lbl, x, y in defects:
if lbl:
add_tb(slide, lbl, x, y, 1.7, 0.5, size=8, color=ORANGE)
def draw_renin_angiotensin(slide):
"""Draw RAAS cascade."""
add_tb(slide, "RAAS Cascade", 9.2, 0.6, 3.8, 0.4, size=12, bold=True, color=TEAL, align=PP_ALIGN.CENTER)
steps = [
("Angiotensinogen\n(liver)", LIGHT_GRAY, DARK_BLUE),
("↓ RENIN (JG cells)", TEAL, WHITE),
("Angiotensin I", LIGHT_GRAY, DARK_BLUE),
("↓ ACE (lung)", TEAL, WHITE),
("Angiotensin II", GOLD, DARK_BLUE),
("↓ Aldosterone ↓ ADH\n↓ Vasoconstriction\n↓ Thirst", RED, WHITE),
]
for i, (lbl, bg, fg) in enumerate(steps):
y = 1.0 + i * 0.53
add_rect(slide, 9.4, y, 3.7, 0.45, bg)
add_tb(slide, lbl, 9.45, y+0.04, 3.6, 0.4, size=8, color=fg, align=PP_ALIGN.CENTER)
def draw_starling_curve(slide):
"""Draw Frank-Starling curve."""
add_tb(slide, "Frank-Starling Curve", 9.2, 0.6, 3.8, 0.4, size=11, bold=True, color=TEAL, align=PP_ALIGN.CENTER)
add_tb(slide, "SV\n(mL)", 9.3, 0.9, 0.6, 1.2, size=9, color=LIGHT_GRAY, align=PP_ALIGN.CENTER)
add_tb(slide, "EDV (preload) →", 10.8, 3.7, 2.0, 0.35, size=9, color=LIGHT_GRAY)
# Normal curve
pts_n = [(9.9, 3.4), (10.3, 2.5), (10.7, 1.8), (11.2, 1.45), (11.7, 1.35), (12.3, 1.3)]
for i in range(len(pts_n)-1):
s = slide.shapes.add_connector(1, Inches(pts_n[i][0]), Inches(pts_n[i][1]),
Inches(pts_n[i+1][0]), Inches(pts_n[i+1][1]))
s.line.color.rgb = GREEN; s.line.width = Pt(2.5)
add_tb(slide, "Normal", 12.0, 1.2, 0.9, 0.3, size=8, color=GREEN)
# Inotrope curve (shifted up)
pts_i = [(9.9, 2.9), (10.3, 2.0), (10.7, 1.4), (11.2, 1.1), (11.7, 1.0), (12.3, 0.95)]
for i in range(len(pts_i)-1):
s = slide.shapes.add_connector(1, Inches(pts_i[i][0]), Inches(pts_i[i][1]),
Inches(pts_i[i+1][0]), Inches(pts_i[i+1][1]))
s.line.color.rgb = TEAL; s.line.width = Pt(2)
add_tb(slide, "+ Inotrope", 12.0, 0.8, 1.1, 0.3, size=8, color=TEAL)
# HF curve (shifted down)
pts_h = [(9.9, 3.6), (10.3, 3.2), (10.7, 3.0), (11.2, 2.85), (11.7, 2.8), (12.3, 2.75)]
for i in range(len(pts_h)-1):
s = slide.shapes.add_connector(1, Inches(pts_h[i][0]), Inches(pts_h[i][1]),
Inches(pts_h[i+1][0]), Inches(pts_h[i+1][1]))
s.line.color.rgb = RED; s.line.width = Pt(2)
add_tb(slide, "Heart Failure", 12.0, 2.7, 1.2, 0.3, size=8, color=RED)
def draw_ecg_intervals(slide):
"""Draw ECG wave labels."""
add_tb(slide, "ECG Waveform & Intervals", 9.2, 0.6, 3.8, 0.4, size=11, bold=True, color=TEAL, align=PP_ALIGN.CENTER)
# Draw ECG baseline
pts_ecg = [
(9.7, 2.6), (10.0, 2.6), # baseline
(10.0, 2.3), (10.2, 2.3), (10.2, 2.6), # P wave
(10.2, 2.6), (10.45, 2.6), # PR segment
(10.45, 2.6), (10.5, 2.9), # Q dip
(10.5, 2.9), (10.65, 1.1), # R rise
(10.65, 1.1), (10.8, 2.9), # S
(10.8, 2.9), (10.85, 2.6), # return
(10.85, 2.6), (11.2, 2.6), # ST segment
(11.2, 2.6), (11.35, 2.2), (11.55, 2.2), (11.7, 2.6), # T wave
(11.7, 2.6), (12.3, 2.6), # end baseline
]
for i in range(len(pts_ecg)-1):
s = slide.shapes.add_connector(1, Inches(pts_ecg[i][0]), Inches(pts_ecg[i][1]),
Inches(pts_ecg[i+1][0]), Inches(pts_ecg[i+1][1]))
s.line.color.rgb = GREEN; s.line.width = Pt(2)
# Labels
labels_ecg = [
("P", 10.05, 2.1), ("Q", 10.42, 3.0), ("R", 10.6, 0.9),
("S", 10.78, 3.0), ("T", 11.4, 2.1)
]
for lbl, x, y in labels_ecg:
add_tb(slide, lbl, x, y, 0.3, 0.3, size=11, bold=True, color=GOLD)
# Interval brackets
add_tb(slide, "PR:0.12-0.20s", 9.85, 3.1, 1.1, 0.3, size=8, color=TEAL)
add_tb(slide, "QRS:<0.12s", 10.4, 3.4, 0.9, 0.3, size=8, color=ORANGE)
add_tb(slide, "QT:0.35-0.44s", 10.4, 3.7, 1.2, 0.3, size=8, color=RED)
def draw_neuromuscular(slide):
"""Draw NMJ schematic."""
add_tb(slide, "Neuromuscular Junction", 9.2, 0.6, 3.8, 0.4, size=12, bold=True, color=TEAL, align=PP_ALIGN.CENTER)
# Nerve terminal
add_rect(slide, 9.5, 1.05, 3.5, 0.65, DARK_TEAL)
add_tb(slide, "Motor Nerve Terminal\n(ACh in vesicles, VGCC)", 9.55, 1.08, 3.4, 0.58, size=9, color=WHITE, align=PP_ALIGN.CENTER)
# Synaptic cleft
add_rect(slide, 9.5, 1.75, 3.5, 0.45, DARK_BLUE)
add_tb(slide, "← Synaptic Cleft (AChE) →", 9.55, 1.78, 3.4, 0.38, size=9, color=LIGHT_GRAY, align=PP_ALIGN.CENTER)
# Motor end plate
add_rect(slide, 9.5, 2.25, 3.5, 0.65, TEAL)
add_tb(slide, "Motor End Plate\n(nAChR → Na⁺ influx → EPP → AP)", 9.55, 2.28, 3.4, 0.58, size=9, color=DARK_BLUE, align=PP_ALIGN.CENTER)
# Muscle fibre
add_rect(slide, 9.5, 2.95, 3.5, 0.55, GREEN)
add_tb(slide, "Muscle Fibre", 9.55, 2.98, 3.4, 0.48, size=9, color=DARK_BLUE, align=PP_ALIGN.CENTER)
# Diseases
add_tb(slide, "MG: Anti-nAChR (postsynaptic)\nLambert-Eaton: Anti-VGCC (presynaptic)\nCurare: Competitive nAChR block",
9.4, 3.6, 3.8, 0.8, size=8, color=ORANGE)
def draw_gi_pressure(slide):
"""Draw GI sphincter pressures."""
add_tb(slide, "GI Sphincter Pressures", 9.2, 0.6, 3.8, 0.4, size=11, bold=True, color=TEAL, align=PP_ALIGN.CENTER)
gi_items = [
("UES: 60 mmHg", PURPLE, 1.05),
("LES: 15-25 mmHg", TEAL, 1.65),
("Pyloric: 10-15 mmHg", GREEN, 2.25),
("Ileocaecal valve: 20 mmHg", ORANGE, 2.85),
("Internal Anal Sphincter\n(involuntary smooth): HIGH", GOLD, 3.45),
("External Anal Sphincter\n(voluntary striated)", RED, 4.1),
]
for lbl, col, y in gi_items:
add_rect(slide, 9.4, y, 3.7, 0.52, col)
add_tb(slide, lbl, 9.45, y+0.05, 3.6, 0.45, size=9, color=DARK_BLUE, align=PP_ALIGN.CENTER)
# Map image_type to draw function
DRAW_MAP = {
"action_potential": draw_action_potential,
"oxy_dissociation": draw_oxy_dissociation,
"spirometry": draw_spirometry,
"wiggers": draw_wiggers,
"nephron": draw_nephron,
"adrenal_zones": draw_adrenal_zones,
"reflex_arc": draw_reflex_arc,
"visual_pathway": draw_visual_pathway,
"renin_angiotensin": draw_renin_angiotensin,
"starling_curve": draw_starling_curve,
"ecg_intervals": draw_ecg_intervals,
"neuromuscular": draw_neuromuscular,
"gi_pressure": draw_gi_pressure,
}
# ─── TOPIC COLOUR MAP ────────────────────────────────────────────────────────
TOPIC_COLORS = {
"General Physiology": TEAL,
"Haematology": RED,
"CVS Physiology": RGBColor(0xFF, 0x45, 0x00),
"Respiratory Physiology": LIGHT_BLUE,
"Renal Physiology": PURPLE,
"Nerve & Muscle": GREEN,
"GI Physiology": GOLD,
"Endocrine Physiology": ORANGE,
"Neurophysiology": RGBColor(0x9B, 0x59, 0xB6),
"Reproductive Physiology": RGBColor(0xFF, 0x69, 0xB4),
"Special Senses": RGBColor(0x00, 0xCE, 0xD1),
"Body Fluids": RGBColor(0x20, 0xB2, 0xAA),
"Applied Physiology": RGBColor(0xFF, 0xA5, 0x00),
"Autonomic NS": RGBColor(0x32, 0xCD, 0x32),
}
# ─── BUILD PRESENTATION ──────────────────────────────────────────────────────
def build_pptx():
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
blank = prs.slide_layouts[6]
# ── TITLE SLIDE ──────────────────────────────────────────────────────
slide = prs.slides.add_slide(blank)
add_bg(slide, DARK_BLUE)
add_rect(slide, 0, 0, 13.333, 7.5, DARK_BLUE)
# Decorative top bar
add_rect(slide, 0, 0, 13.333, 1.2, TEAL)
add_tb(slide, "NEET PG PHYSIOLOGY", 0.3, 0.1, 12.7, 0.8,
size=40, bold=True, color=DARK_BLUE, align=PP_ALIGN.CENTER)
add_rect(slide, 0, 6.3, 13.333, 1.2, TEAL)
add_tb(slide, "50 HIGH-YIELD FLASHCARDS", 0.3, 1.35, 12.7, 0.9,
size=32, bold=True, color=GOLD, align=PP_ALIGN.CENTER)
add_tb(slide, "Topics: General Physiology • Haematology • CVS • Respiratory • Renal\n"
"Nerve & Muscle • GI • Endocrine • Neurophysiology • Reproductive • Applied",
0.5, 2.5, 12.3, 1.0, size=15, color=LIGHT_GRAY, align=PP_ALIGN.CENTER)
add_tb(slide, "Includes Image-Based Diagrams for Visual Learning",
0.5, 3.7, 12.3, 0.55, size=16, color=WHITE, align=PP_ALIGN.CENTER)
add_tb(slide, "Source: Guyton & Hall • Ganong • Costanzo",
0.5, 4.5, 12.3, 0.5, size=13, italic=True, color=LIGHT_GRAY, align=PP_ALIGN.CENTER)
add_tb(slide, "NEET PG 2026 Preparation", 0.5, 6.35, 12.3, 0.6,
size=14, bold=True, color=DARK_BLUE, align=PP_ALIGN.CENTER)
# ── SECTION DIVIDER HELPER ────────────────────────────────────────────
def add_section_divider(topic):
col = TOPIC_COLORS.get(topic, TEAL)
sl = prs.slides.add_slide(blank)
add_bg(sl, DARK_BLUE)
add_rect(sl, 0, 2.5, 13.333, 2.5, col)
add_tb(sl, topic, 0.5, 2.7, 12.3, 2.0,
size=48, bold=True, color=DARK_BLUE, align=PP_ALIGN.CENTER)
# ── FLASHCARD SLIDES ─────────────────────────────────────────────────
current_topic = None
for num, topic, question, answer, img_type in FLASHCARDS:
topic_col = TOPIC_COLORS.get(topic, TEAL)
# Section divider on topic change
if topic != current_topic:
add_section_divider(topic)
current_topic = topic
has_image = img_type is not None
# ── QUESTION SLIDE (FRONT) ────────────────────────────────────────
slide_q = prs.slides.add_slide(blank)
add_bg(slide_q, DARK_BLUE)
# Top header bar
add_rect(slide_q, 0, 0, 13.333, 1.0, topic_col)
add_tb(slide_q, f"Q{num:02d} | {topic}", 0.3, 0.08, 8.0, 0.55,
size=16, bold=True, color=DARK_BLUE, align=PP_ALIGN.LEFT)
add_tb(slide_q, "QUESTION", 10.5, 0.08, 2.5, 0.55,
size=14, bold=True, color=DARK_BLUE, align=PP_ALIGN.CENTER)
add_rect(slide_q, 10.3, 0.08, 2.7, 0.55, DARK_BLUE)
add_tb(slide_q, "❓ QUESTION", 10.3, 0.1, 2.7, 0.5,
size=14, bold=True, color=topic_col, align=PP_ALIGN.CENTER)
# Number badge
add_rect(slide_q, 12.6, 0.08, 0.6, 0.55, WHITE)
add_tb(slide_q, f"{num}", 12.6, 0.1, 0.6, 0.5,
size=16, bold=True, color=topic_col, align=PP_ALIGN.CENTER)
# Question text area
q_width = 8.8 if has_image else 12.5
add_rect(slide_q, 0.3, 1.1, q_width, 5.9, RGBColor(0x08, 0x20, 0x38))
add_multiline_tb(slide_q, question, 0.5, 1.3, q_width - 0.3, 5.5,
size=20, color=WHITE, bold_first=False)
# Hint strip at bottom
add_rect(slide_q, 0, 6.85, 13.333, 0.65, topic_col)
add_tb(slide_q, "Think carefully before flipping →", 0.5, 6.88, 12.0, 0.5,
size=13, italic=True, color=DARK_BLUE, align=PP_ALIGN.CENTER)
# Draw diagram on question slide if applicable
if has_image and img_type in DRAW_MAP:
DRAW_MAP[img_type](slide_q)
# ── ANSWER SLIDE (BACK) ───────────────────────────────────────────
slide_a = prs.slides.add_slide(blank)
add_bg(slide_a, DARK_BLUE)
# Top header bar (gold for answer)
add_rect(slide_a, 0, 0, 13.333, 1.0, GOLD)
add_tb(slide_a, f"A{num:02d} | {topic}", 0.3, 0.08, 8.0, 0.55,
size=16, bold=True, color=DARK_BLUE, align=PP_ALIGN.LEFT)
add_rect(slide_a, 10.3, 0.08, 2.7, 0.55, DARK_BLUE)
add_tb(slide_a, "✓ ANSWER", 10.3, 0.1, 2.7, 0.5,
size=14, bold=True, color=GOLD, align=PP_ALIGN.CENTER)
add_rect(slide_a, 12.6, 0.08, 0.6, 0.55, WHITE)
add_tb(slide_a, f"{num}", 12.6, 0.1, 0.6, 0.5,
size=16, bold=True, color=DARK_BLUE, align=PP_ALIGN.CENTER)
# Question recall strip
add_rect(slide_a, 0.3, 1.05, 12.7, 0.55, RGBColor(0x04, 0x30, 0x5A))
add_multiline_tb(slide_a, f"Q: {question[:100]}{'...' if len(question)>100 else ''}",
0.45, 1.08, 12.4, 0.5, size=11, color=LIGHT_GRAY)
# Answer text area
a_width = 8.8 if has_image else 12.5
add_rect(slide_a, 0.3, 1.7, a_width, 5.3, RGBColor(0x05, 0x2C, 0x18))
add_multiline_tb(slide_a, answer, 0.5, 1.85, a_width - 0.3, 5.0,
size=15, color=WHITE, bold_first=True)
# Draw diagram on answer slide too if applicable
if has_image and img_type in DRAW_MAP:
DRAW_MAP[img_type](slide_a)
# Bottom strip
add_rect(slide_a, 0, 6.85, 13.333, 0.65, GOLD)
add_tb(slide_a, "Review • Revise • Remember", 0.5, 6.88, 12.0, 0.5,
size=13, bold=True, color=DARK_BLUE, align=PP_ALIGN.CENTER)
# ── BACK COVER ────────────────────────────────────────────────────────
slide_end = prs.slides.add_slide(blank)
add_bg(slide_end, DARK_BLUE)
add_rect(slide_end, 0, 0, 13.333, 7.5, DARK_BLUE)
add_rect(slide_end, 0, 2.8, 13.333, 2.0, TEAL)
add_tb(slide_end, "ALL 50 FLASHCARDS COMPLETE!", 0.5, 2.9, 12.3, 1.0,
size=36, bold=True, color=DARK_BLUE, align=PP_ALIGN.CENTER)
add_tb(slide_end, "Keep revising — NEET PG 2026, you've got this! 🎯",
0.5, 4.2, 12.3, 0.7, size=20, color=GOLD, align=PP_ALIGN.CENTER)
add_tb(slide_end, "Sources: Guyton & Hall | Ganong's Review | Costanzo Physiology",
0.5, 5.2, 12.3, 0.55, size=14, italic=True, color=LIGHT_GRAY, align=PP_ALIGN.CENTER)
# Save
out_path = "/tmp/workspace/neet-physiology-flashcards/NEET_PG_Physiology_50_Flashcards.pptx"
prs.save(out_path)
print(f"Saved: {out_path}")
print(f"Total slides: {len(prs.slides)}")
if __name__ == "__main__":
build_pptx()
cd /tmp/workspace/neet-physiology-flashcards && python build_flashcards.py 2>&1
ls -lh /tmp/workspace/neet-physiology-flashcards/NEET_PG_Physiology_50_Flashcards.pptx
NEET PG Physiology 50 Flashcards
Presentation · PPTX
| Diagram | Flashcard |
|---|---|
| Action Potential graph (phases 0-4) | Q1 |
| O₂-Hb Dissociation Curve (shifts) | Q6 |
| Wiggers Diagram (cardiac cycle phases) | Q9 |
| Frank-Starling Curve (normal/HF/inotrope) | Q10 |
| ECG waveform with intervals (PR, QRS, QT) | Q12 |
| Spirometry volumes and capacities | Q15 |
| Nephron segments with transport | Q20 |
| RAAS Cascade flowchart | Q21 |
| NMJ schematic (MG, Lambert-Eaton) | Q24 |
| Reflex arc (monosynaptic stretch reflex) | Q35 |
| Visual Pathway & field defects | Q36 |
| Adrenal Cortex Zones (GFR) | Q30 |
| GI Sphincter Pressures | Q28 |
| System | Cards |
|---|---|
| General Physiology (RMP, AP, Nernst, saltatory) | Q1-4 |
| Haematology (RBC lifespan, ODC, Hb values, coagulation) | Q5-8 |
| CVS Physiology (Wiggers, Starling, JVP, ECG, CO, BP) | Q9-14 |
| Respiratory (Spirometry, alveolar gas, V/Q, CO₂ transport, control) | Q15-19 |
| Renal (Nephron, RAAS, Tm, clearance) | Q20-23 |
| Nerve & Muscle (NMJ, sliding filament, nerve fibres) | Q24-26 |
| GI Physiology (hormones, sphincters, Vit B12) | Q27-29 |
| Endocrine (adrenal zones, insulin, thyroid, HPA axis, Ca²⁺ regulation) | Q30-34 |
| Neurophysiology (stretch reflex, visual pathway, basal ganglia, cerebellum) | Q35-38 |
| Reproductive (menstrual cycle, oestrogen/progesterone) | Q39-40 |
| Special Senses (accommodation, cochlea/tonotopy) | Q41-42 |
| Body Fluids (compartments, acid-base) | Q43-44 |
| Applied Physiology (altitude, diving, EEG/sleep, thermoregulation, ANS) | Q45-50 |