Hey orris
Can you give me most repeated topics form knruhs biochem from last 5 paper
KNRUHS MBBS biochemistry previous year question papers repeated topics 2020 2021 2022 2023 2024
https://firstranker.com/kaloji-narayana-rao-university-of-heβ¦
| Topic | Frequency |
|---|---|
| HbA1c | Very High |
| Ketone bodies | Very High |
| LDH isoenzymes | High |
| Urea cycle | Very High |
| PKU | High |
| HMP shunt | High |
| Restriction enzymes | High |
| PCR | High |
| Vitamin D metabolism | High |
| Iron metabolism | High |
| Bilirubin metabolism | High |
| Glycogen storage diseases | Moderate-High |
Create a cheat sheet PDF of top 20 repeated biochem topics
mkdir -p /tmp/workspace/knruhs-biochem && ls /tmp/workspace/knruhs-biochem/
~/knruhs-biochem/create_cheatsheet.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import PageBreak
OUTPUT = "/tmp/workspace/knruhs-biochem/KNRUHS_Biochem_CheatSheet.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=1.5*cm,
leftMargin=1.5*cm,
topMargin=1.8*cm,
bottomMargin=1.8*cm,
)
# ββ colour palette ββββββββββββββββββββββββββββββββββββββββββββββββββ
DARK_BLUE = colors.HexColor("#1a3a5c")
MED_BLUE = colors.HexColor("#2e6da4")
LIGHT_BLUE = colors.HexColor("#d6e8f7")
ACCENT = colors.HexColor("#e8a020")
ACCENT_LIGHT= colors.HexColor("#fff4dc")
GREEN = colors.HexColor("#1e7a44")
GREEN_LIGHT = colors.HexColor("#d4f0e0")
RED_LIGHT = colors.HexColor("#fde8e8")
RED = colors.HexColor("#c0392b")
GREY_BG = colors.HexColor("#f4f6f9")
WHITE = colors.white
styles = getSampleStyleSheet()
def S(name, **kw):
"""Helper: clone a base style with overrides."""
base = styles.get(name, styles["Normal"])
return ParagraphStyle(
name + "_custom_" + str(id(kw)),
parent=base,
**kw
)
# ββ custom styles ββββββββββββββββββββββββββββββββββββββββββββββββββββ
cover_title = S("Title", fontSize=26, textColor=WHITE,
alignment=TA_CENTER, leading=32, spaceAfter=6)
cover_sub = S("Normal", fontSize=13, textColor=ACCENT,
alignment=TA_CENTER, leading=18, spaceAfter=4)
cover_note = S("Normal", fontSize=9, textColor=colors.HexColor("#ccddee"),
alignment=TA_CENTER, leading=13)
sec_heading = S("Heading1", fontSize=11, textColor=WHITE,
alignment=TA_LEFT, leading=14, spaceBefore=2, spaceAfter=2)
topic_num = S("Normal", fontSize=10, textColor=DARK_BLUE,
alignment=TA_LEFT, leading=13, fontName="Helvetica-Bold")
body_text = S("Normal", fontSize=8.5, textColor=colors.HexColor("#222222"),
alignment=TA_LEFT, leading=12)
bullet_style = S("Normal", fontSize=8.2, textColor=colors.HexColor("#333333"),
alignment=TA_LEFT, leading=11.5, leftIndent=10)
key_point = S("Normal", fontSize=8, textColor=GREEN,
fontName="Helvetica-Bold", alignment=TA_LEFT, leading=11)
clinical_style= S("Normal", fontSize=8, textColor=RED,
fontName="Helvetica-BoldOblique", alignment=TA_LEFT, leading=11)
footer_style = S("Normal", fontSize=7.5, textColor=colors.HexColor("#777777"),
alignment=TA_CENTER)
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# DATA β top 20 topics
# Each entry: (number, title, bullets, key_points, clinical_note)
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
TOPICS = [
(
1, "Glycolysis",
[
"10 steps: Glucose β 2 Pyruvate",
"Net yield: 2 ATP + 2 NADH (anaerobic); up to 8 ATP (aerobic)",
"Key enzymes: Hexokinase, PFK-1 (rate-limiting), Pyruvate kinase",
"Regulated by: AMPβ, ATPβ, citrateβ on PFK-1",
"Substrate-level phosphorylation at steps 7 & 10",
],
"PFK-1 = rate-limiting enzyme of glycolysis",
"Clinical: PFK-1 deficiency β Tarui disease (type VII GSD)"
),
(
2, "TCA Cycle (Krebs Cycle)",
[
"8 reactions; occurs in mitochondrial matrix",
"Inputs: 2 Acetyl-CoA per glucose β 2Γ(3 NADH + 1 FADH2 + 1 GTP)",
"Rate-limiting enzyme: Isocitrate dehydrogenase",
"Key intermediates: Citrate, Isocitrate, Ξ±-KG, Succinyl-CoA, Succinate, Fumarate, Malate, OAA",
"Amphibolic pathway (anabolic + catabolic)",
],
"Isocitrate DH = rate-limiting; inhibited by ATP, NADH",
"Clinical: Thiamine (B1) deficiency β inhibits Ξ±-KG DH β Wernicke's"
),
(
3, "HMP Shunt (Pentose Phosphate Pathway)",
[
"Occurs in cytoplasm; no ATP generated",
"Produces: NADPH (antioxidant) + Ribose-5-phosphate (nucleotide synthesis)",
"Rate-limiting enzyme: G6PD",
"Oxidative phase: G6P β Ribulose-5-P (irreversible)",
"Non-oxidative phase: interconverts sugar phosphates",
],
"G6PD deficiency β NADPHβ β RBC hemolysis (Heinz bodies)",
"Clinical: G6PD deficiency = most common enzymopathy; triggered by primaquine, fava beans"
),
(
4, "Glycogen Metabolism",
[
"Synthesis (Glycogenesis): Glucose β UDP-Glucose β Glycogen; key enzyme = Glycogen synthase",
"Breakdown (Glycogenolysis): Glycogen β G1P β G6P; key enzyme = Glycogen phosphorylase",
"Branching enzyme adds Ξ±-1,6 branches; Debranching enzyme removes them",
"Liver glycogen: blood glucose homeostasis; Muscle glycogen: local energy",
"Regulated by: insulin (synthesisβ), glucagon/epinephrine (breakdownβ)",
],
"Von Gierke (Type I) = G6Pase deficiency β severe hypoglycemia",
"Clinical: McArdle (Type V) = muscle phosphorylase deficiency β exercise intolerance"
),
(
5, "Gluconeogenesis",
[
"Synthesis of glucose from non-carb precursors (lactate, alanine, glycerol, OAA)",
"Occurs in: liver (90%), kidney cortex (10%)",
"Key enzymes: PEPCK, Fructose-1,6-bisphosphatase, G6Pase, Pyruvate carboxylase",
"Cori cycle: Lactate (muscle) β Glucose (liver)",
"Alanine cycle: Alanine (muscle) β Glucose (liver)",
],
"Pyruvate carboxylase requires biotin; activated by acetyl-CoA",
"Clinical: PEPCK deficiency β hypoglycemia, lactic acidosis in neonates"
),
(
6, "Beta-Oxidation of Fatty Acids",
[
"Occurs in mitochondrial matrix; requires carnitine shuttle",
"Each cycle removes 2C as Acetyl-CoA; yields 1 FADH2 + 1 NADH",
"Palmitoyl-CoA (16C): 7 cycles β 8 Acetyl-CoA; net 129 ATP",
"Rate-limiting: Carnitine acyltransferase I (inhibited by malonyl-CoA)",
"Odd-chain FA β Propionyl-CoA β Succinyl-CoA (requires B12, biotin)",
],
"Malonyl-CoA inhibits CAT-I: fed state blocks FA oxidation",
"Clinical: MCAD deficiency β hypoketotic hypoglycemia; fatal without treatment"
),
(
7, "Ketone Body Metabolism",
[
"Formed in liver mitochondria from Acetyl-CoA during starvation/DM",
"3 ketone bodies: Acetoacetate, Ξ²-hydroxybutyrate, Acetone",
"Key enzyme for synthesis: HMG-CoA synthase (mitochondrial)",
"Utilization: liver cannot use ketones (lacks succinyl-CoA transferase)",
"Brain uses ketones during prolonged starvation (50% of energy)",
],
"HMG-CoA synthase = rate-limiting for ketogenesis",
"Clinical: DKA β fruity breath (acetone), high anion gap metabolic acidosis"
),
(
8, "Cholesterol Synthesis & Regulation",
[
"Occurs in cytoplasm/ER; 30 steps from Acetyl-CoA",
"Rate-limiting enzyme: HMG-CoA reductase",
"Key intermediate: Mevalonate β Squalene β Lanosterol β Cholesterol",
"Regulation: insulinβ (activates reductase); glucagonβ; statins inhibit HMG-CoA reductase",
"Bile acids: primary (cholate, chenodeoxycholate), secondary (deoxycholate, lithocholate)",
],
"HMG-CoA reductase = rate-limiting; STATINS block this enzyme",
"Clinical: Familial hypercholesterolemia = LDL receptor defect β MI risk"
),
(
9, "Lipoprotein Metabolism",
[
"Chylomicrons: dietary lipids (intestine) β tissues; apoB-48",
"VLDL: endogenous lipids (liver) β tissues; apoB-100",
"IDL β LDL: delivers cholesterol to peripheral tissues",
"HDL: reverse cholesterol transport (anti-atherogenic); apoA-I",
"Key enzymes: LPL (hydrolyzes TG in chylomicrons/VLDL), LCAT, CETP",
],
"HDL = 'good'; LDL = 'bad'; LPL activated by apoC-II",
"Clinical: LPL deficiency β hyperchylomicronemia, pancreatitis, eruptive xanthomas"
),
(
10, "Urea Cycle",
[
"5 steps; partly mitochondrial, partly cytoplasmic",
"Enzymes: CPS-I (mito), OTC (mito), AS, AL, Arginase (cyto)",
"Net: 2 NH3 + CO2 β Urea + H2O (consumes 4 ATP)",
"CPS-I is rate-limiting; activated by N-acetylglutamate (NAG)",
"Fumarate links urea cycle to TCA cycle",
],
"CPS-I deficiency = most severe urea cycle disorder",
"Clinical: Hyperammonemia β cerebral edema, encephalopathy; OTC deficiency = X-linked"
),
(
11, "Amino Acid Metabolism - Key Disorders",
[
"PKU: Phe hydroxylase deficiency β Pheβ β musty odour, intellectual disability",
"Alkaptonuria: Homogentisate oxidase deficiency β HGA in urine (turns black)",
"Albinism: Tyrosinase deficiency β no melanin β photosensitivity",
"Maple Syrup Urine Disease: BCAA aminotransferase deficiency β leucineβ",
"Homocystinuria: Cystathionine Ξ²-synthase deficiency β lens dislocation, DVT",
],
"PKU: restrict Phe diet; supplement tyrosine",
"Clinical: Screening at birth (Guthrie test) detects PKU, MSUD, homocystinuria"
),
(
12, "Heme Synthesis & Porphyrias",
[
"Starts in mitochondria: Succinyl-CoA + Glycine β ALA (ALA synthase = rate-limiting)",
"ALA β Porphobilinogen β Uroporphyrinogen β Protoporphyrin IX β Heme",
"Heme regulates its own synthesis (feedback inhibits ALA synthase)",
"ALA synthase requires Pyridoxal Phosphate (B6)",
"Lead inhibits ALA dehydratase & Ferrochelatase",
],
"ALA synthase = rate-limiting; induced by drugs (barbiturates), AIP",
"Clinical: Lead poisoning β basophilic stippling; AIP β abdominal pain, neuropsychiatric"
),
(
13, "Bilirubin Metabolism & Jaundice",
[
"Heme β Biliverdin β Unconjugated bilirubin (UCB, water-insoluble)",
"UCB bound to albumin β liver β conjugated with glucuronic acid (CB)",
"Conjugated bilirubin β bile β gut β Urobilinogen β Urobilin (stool/urine)",
"Pre-hepatic jaundice: UCBβ (hemolysis); Hepatic: bothβ; Post-hepatic: CBβ",
"Crigler-Najjar: UGT deficiency; Gilbert: mild UGT deficiency (benign)",
],
"Kernicterus: UCB deposits in brain of neonates β neurological damage",
"Clinical: Dubin-Johnson = CBβ (conjugation intact, excretion impaired); black liver"
),
(
14, "DNA Replication",
[
"Semi-conservative; 5'β3' synthesis only",
"Key enzymes: Helicase (unwinds), Primase (RNA primer), DNA Pol III (synthesis), Pol I (removes primer), Ligase (seals nicks)",
"Leading strand: continuous; Lagging strand: Okazaki fragments",
"Topoisomerases prevent supercoiling (target of fluoroquinolones)",
"Eukaryotes: multiple origins of replication; uses DNA Pol Ξ±, Ξ΄, Ξ΅",
],
"DNA Pol III = main replicating enzyme (prokaryotes); has proofreading (3'β5' exonuclease)",
"Clinical: Defects in Nucleotide Excision Repair β Xeroderma pigmentosum"
),
(
15, "Transcription & Translation",
[
"Transcription: DNA β mRNA; enzyme = RNA Pol II (mRNA in eukaryotes)",
"mRNA processing: 5' capping, 3' poly-A tail, splicing (remove introns)",
"Translation: mRNA β Protein; ribosomes (70S prokaryote, 80S eukaryote)",
"Codons: AUG = start (Met); UAA, UAG, UGA = stop codons",
"Aminoacyl-tRNA synthetase charges tRNA; uses 2 ATP equivalent",
],
"mRNA: 5'cap-UTR-AUG-ORF-STOP-UTR-poly(A)-3'",
"Clinical: Aminoglycosides target 30S (misreading); Chloramphenicol targets 50S (peptidyl transferase)"
),
(
16, "Vitamins - Fat Soluble (A, D, E, K)",
[
"Vit A (Retinol): vision (rhodopsin), epithelial integrity; deficiency = night blindness, xerophthalmia",
"Vit D (Calcitriol): CaΒ²βΊ/PO4 absorption; deficiency = rickets (children), osteomalacia (adults)",
"Vit E (Tocopherol): antioxidant (protects PUFA); deficiency = hemolytic anemia, spinocerebellar atax",
"Vit K (Phylloquinone): clotting factors II, VII, IX, X; deficiency = bleeding (prolonged PT)",
"All stored in liver/adipose; toxicity possible (A & D especially)",
],
"Vit D: Skinβ25-OH (liver)β1,25-(OH)2D3 (kidney, active form)",
"Clinical: Vit K deficiency in newborns β hemorrhagic disease; treated with IM Vit K at birth"
),
(
17, "Vitamins - Water Soluble (B-complex & C)",
[
"B1 (Thiamine/TPP): pyruvate DH, Ξ±-KG DH, transketolase; deficiency = Beriberi, Wernicke's",
"B2 (Riboflavin/FAD,FMN): electron carrier; deficiency = cheilosis, corneal vascularization",
"B3 (Niacin/NAD+): energy metabolism; deficiency = Pellagra (4Ds: Dermatitis, Diarrhea, Dementia, Death)",
"B6 (PLP): transamination, decarboxylation, heme synthesis; deficiency = sideroblastic anemia",
"B12 (Cobalamin): myelin synthesis, odd-chain FA, one-carbon metabolism; deficiency = megaloblastic anemia + subacute combined degeneration",
"Folate: DNA synthesis (thymidylate); deficiency = megaloblastic anemia (NO neuro symptoms)",
"Vit C (Ascorbic acid): collagen synthesis (hydroxylation of Pro/Lys); deficiency = Scurvy",
],
"B12 vs Folate deficiency: both cause megaloblastic anemia; only B12 causes neuro symptoms",
"Clinical: Isoniazid (TB drug) β B6 deficiency; give pyridoxine supplement"
),
(
18, "Iron Metabolism",
[
"Absorbed as FeΒ²βΊ in duodenum via DMT-1; Vit C enhances absorption",
"Transported in plasma bound to Transferrin (FeΒ³βΊ form)",
"Stored as Ferritin (labile) and Hemosiderin (insoluble)",
"Hepcidin: master regulator - blocks ferroportin β βiron release",
"Serum ironβ, TIBCβ, Ferritinβ = Iron overload; Iron def = reverse pattern",
],
"Ferritin = acute phase reactant; high in inflammation even with low iron",
"Clinical: Iron deficiency anemia: microcytic hypochromic RBCs, pica, spoon nails (koilonychia)"
),
(
19, "Enzyme Kinetics",
[
"Michaelis-Menten: V = Vmax[S] / (Km + [S])",
"Km = [S] at Β½ Vmax; low Km = high affinity",
"Lineweaver-Burk plot: 1/V vs 1/[S]; x-intercept = -1/Km, y-intercept = 1/Vmax",
"Competitive inhibition: Kmβ, Vmax unchanged (reversible by β[S])",
"Non-competitive: Vmaxβ, Km unchanged (cannot overcome by β[S])",
"Uncompetitive: both Kmβ and Vmaxβ",
],
"Isoenzymes: same reaction, different molecular forms; tissue-specific",
"Clinical: LDH-1 (heart) > LDH-2 in MI; CK-MB elevated in MI; Troponin = gold standard"
),
(
20, "Recombinant DNA Technology",
[
"Restriction endonucleases: cut DNA at palindromic sequences β sticky/blunt ends",
"PCR: denaturation β annealing β extension (Taq polymerase); amplifies specific DNA",
"Southern blot: DNA probe; Northern blot: RNA probe; Western blot: protein (antibody)",
"DNA library: genomic (all DNA) vs cDNA (from mRNA via reverse transcriptase)",
"CRISPR-Cas9: gene editing using guide RNA + Cas9 endonuclease",
],
"Mnemonic: SNoW DRoP β S=DNA, N=RNA, W=protein; D=DNA probe, R=RNA probe, P=protein(antibody)",
"Clinical: PCR used for HIV viral load, COVID-19 diagnosis, genetic disease detection"
),
]
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# PAGE TEMPLATE (background banner)
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def draw_bg(canvas, doc):
w, h = A4
# top banner
canvas.setFillColor(DARK_BLUE)
canvas.rect(0, h - 1.1*cm, w, 1.1*cm, fill=1, stroke=0)
# bottom bar
canvas.setFillColor(DARK_BLUE)
canvas.rect(0, 0, w, 0.7*cm, fill=1, stroke=0)
# footer text
canvas.setFillColor(WHITE)
canvas.setFont("Helvetica", 7)
canvas.drawCentredString(w/2, 0.22*cm, "KNRUHS 1st MBBS Biochemistry Cheat Sheet | For Exam Preparation Only")
# page number
canvas.drawRightString(w - 1.5*cm, 0.22*cm, f"Page {doc.page}")
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# BUILD CONTENT
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story = []
# ββ COVER SECTION ββββββββββββββββββββββββββββββββββββββββββββββββββ
cover_table_data = [[
Paragraph("KNRUHS 1st MBBS", cover_title),
],[
Paragraph("BIOCHEMISTRY CHEAT SHEET", cover_title),
],[
Paragraph("Top 20 Most Repeated Topics | Exam Quick Reference", cover_sub),
],[
Paragraph("Paper I & Paper II β’ Last 5 Exams Pattern β’ 2021β2025", cover_note),
]]
cover_bg = Table(cover_table_data, colWidths=[doc.width])
cover_bg.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
("ROUNDEDCORNERS", (0,0), (-1,-1), [8, 8, 8, 8]),
]))
story.append(cover_bg)
story.append(Spacer(1, 0.35*cm))
# ββ LEGEND BAR βββββββββββββββββββββββββββββββββββββββββββββββββββββ
legend_data = [[
Paragraph("<b>π Key Point</b>", S("Normal", fontSize=8, textColor=GREEN)),
Paragraph("<b>π₯ Clinical Note</b>", S("Normal", fontSize=8, textColor=RED)),
Paragraph("<b>β
High Priority Topic</b>", S("Normal", fontSize=8, textColor=DARK_BLUE)),
]]
legend_table = Table(legend_data, colWidths=[doc.width/3]*3)
legend_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), GREY_BG),
("BOX", (0,0), (-1,-1), 0.5, MED_BLUE),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("ALIGN", (0,0), (-1,-1), "CENTER"),
]))
story.append(legend_table)
story.append(Spacer(1, 0.3*cm))
# ββ TOPIC CARDS (2 columns) βββββββββββββββββββββββββββββββββββββββββ
COL_W = (doc.width - 0.4*cm) / 2
def make_topic_card(num, title, bullets, keypoint, clinical):
"""Build a single topic card as a Table (for background colour)."""
inner = []
# Header row
hdr = Table(
[[Paragraph(f"#{num} {title}", sec_heading)]],
colWidths=[COL_W - 0.2*cm]
)
hdr.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), MED_BLUE),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 4),
]))
inner.append(hdr)
# Bullets
for b in bullets:
inner.append(Paragraph(f"β’ {b}", bullet_style))
# Key point
inner.append(Spacer(1, 2))
inner.append(Paragraph(f"π {keypoint}", key_point))
# Clinical note
inner.append(Paragraph(f"π₯ {clinical}", clinical_style))
inner.append(Spacer(1, 4))
# Wrap all in a card-style Table
card = Table([[inner_item] for inner_item in inner], colWidths=[COL_W - 0.2*cm])
card.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), GREY_BG),
("TOPPADDING", (0,0), (-1,-1), 2),
("BOTTOMPADDING", (0,0), (-1,-1), 2),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 4),
]))
outer = Table([[card]], colWidths=[COL_W])
outer.setStyle(TableStyle([
("BOX", (0,0), (-1,-1), 0.8, MED_BLUE),
("TOPPADDING", (0,0), (-1,-1), 0),
("BOTTOMPADDING", (0,0), (-1,-1), 0),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING", (0,0), (-1,-1), 0),
]))
return outer
# Pair up topics into 2-column rows
def build_row(t1, t2=None):
card1 = make_topic_card(*t1)
if t2:
card2 = make_topic_card(*t2)
row = Table([[card1, Spacer(0.4*cm, 1), card2]],
colWidths=[COL_W, 0.4*cm, COL_W])
else:
row = Table([[card1, Spacer(0.4*cm, 1), Spacer(COL_W, 1)]],
colWidths=[COL_W, 0.4*cm, COL_W])
row.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 0),
("BOTTOMPADDING", (0,0), (-1,-1), 0),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING", (0,0), (-1,-1), 0),
]))
return row
for i in range(0, len(TOPICS), 2):
t1 = TOPICS[i]
t2 = TOPICS[i+1] if i+1 < len(TOPICS) else None
story.append(build_row(t1, t2))
story.append(Spacer(1, 0.25*cm))
# ββ QUICK REFERENCE TABLE βββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(Spacer(1, 0.3*cm))
qr_hdr = Table(
[[Paragraph("QUICK REFERENCE: High-Yield Points at a Glance", sec_heading)]],
colWidths=[doc.width]
)
qr_hdr.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 10),
]))
story.append(qr_hdr)
story.append(Spacer(1, 0.2*cm))
qr_style_h = S("Normal", fontSize=8.5, textColor=WHITE, fontName="Helvetica-Bold")
qr_style_b = S("Normal", fontSize=8, textColor=DARK_BLUE)
qr_data = [
[Paragraph("Topic", qr_style_h), Paragraph("Rate-Limiting Enzyme", qr_style_h),
Paragraph("Key Deficiency / Disease", qr_style_h), Paragraph("Clinical Marker", qr_style_h)],
["Glycolysis", "PFK-1", "Tarui disease (PFK-1)", "Lactateβ"],
["TCA cycle", "Isocitrate DH", "Wernicke's (B1 def)", "Ξ±-KG DH requires TPP"],
["HMP shunt", "G6PD", "G6PD deficiency", "Heinz bodies, Bite cells"],
["Glycogenesis", "Glycogen synthase", "Type 0 GSD", "Hypoglycemia postprandially"],
["Glycogenolysis", "Glycogen phosphorylase", "McArdle (Type V)", "Myoglobinuria"],
["Gluconeogenesis", "PEPCK / F1,6-BPase", "Von Gierke (Type I)", "Lactic acidosis"],
["Fatty acid oxidation", "CAT-I (carnitine shuttle)", "MCAD deficiency", "Hypoketotic hypoglycemia"],
["Ketogenesis", "HMG-CoA synthase", "DKA", "Ξ²-OHB in blood/urine"],
["Cholesterol synthesis", "HMG-CoA reductase", "Familial hypercholesterolemia", "LDL-receptor absent"],
["Urea cycle", "CPS-I", "OTC deficiency (X-linked)", "NH3β, Orotic acidβ in urine"],
["Heme synthesis", "ALA synthase (Ξ΄-ALA-S)", "Lead poisoning / AIP", "ALAβ in urine"],
["DNA replication", "DNA Pol III (prok)", "XP (NER defect)", "Dipyrimidine dimers"],
["Protein synthesis", "Ribosome (80S euk)", "Aminoglycoside toxicity", "Misreading 30S"],
]
# Convert to Paragraph
qr_formatted = []
for i, row in enumerate(qr_data):
if i == 0:
qr_formatted.append(row)
else:
qr_formatted.append([Paragraph(str(c), qr_style_b) for c in row])
qr_table = Table(qr_formatted, colWidths=[doc.width*0.22, doc.width*0.22, doc.width*0.32, doc.width*0.24])
qr_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MED_BLUE),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_BLUE]),
("GRID", (0,0), (-1,-1), 0.3, colors.HexColor("#aaaaaa")),
("FONTSIZE", (0,0), (-1,-1), 8),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(qr_table)
story.append(Spacer(1, 0.4*cm))
# ββ MNEMONICS BOX ββββββββββββββββββββββββββββββββββββββββββββββββββ
mn_data = [
[Paragraph("ESSENTIAL MNEMONICS", S("Normal", fontSize=10, textColor=WHITE,
fontName="Helvetica-Bold", alignment=TA_CENTER))],
[Paragraph(
"<b>Pellagra (B3 def):</b> 4 D's β Dermatitis, Diarrhea, Dementia, Death<br/>"
"<b>Urea cycle enzymes:</b> Cindy Often Appears Arrogant & Lazy (CPS-I, OTC, AS, AL, Arginase)<br/>"
"<b>Fat-soluble vitamins:</b> ADEK β All Dogs Eat Kibble<br/>"
"<b>Blot methods (SNoW DRoP):</b> Southern=DNA, Northern=RNA, Western=Protein<br/>"
"<b>Glycogen storage:</b> Very Poor Carb Metabolism (Von Gierke, Pompe, Cori, McArdle)<br/>"
"<b>Jaundice types:</b> Pre-hepatic (UCBβ) | Hepatic (bothβ) | Post-hepatic (CBβ, pale stool, dark urine)",
S("Normal", fontSize=8.5, textColor=DARK_BLUE, leading=14)
)],
]
mn_table = Table(mn_data, colWidths=[doc.width])
mn_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,0), ACCENT),
("BACKGROUND", (0,1), (0,1), ACCENT_LIGHT),
("BOX", (0,0), (-1,-1), 1, ACCENT),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
]))
story.append(mn_table)
story.append(Spacer(1, 0.3*cm))
# disclaimer
story.append(Paragraph(
"β
This cheat sheet covers the most frequently tested topics in KNRUHS 1st MBBS Biochemistry. "
"Always cross-reference with your textbook (Harper's / Lippincott / Devlin). "
"Prepared for exam revision purposes only.",
S("Normal", fontSize=7.5, textColor=colors.HexColor("#555555"),
alignment=TA_CENTER, leading=11)
))
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
doc.build(story, onFirstPage=draw_bg, onLaterPages=draw_bg)
print("PDF created successfully:", OUTPUT)
cd /tmp/workspace/knruhs-biochem && python create_cheatsheet.py
ls -lh /tmp/workspace/knruhs-biochem/KNRUHS_Biochem_CheatSheet.pdf
KNRUHS Biochem CheatSheet
PDF Document Β· PDF
Thanks oreis
Yaa please
~/knruhs-anatomy/create_anatomy_cheatsheet.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, PageBreak
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT
import os
os.makedirs("/tmp/workspace/knruhs-anatomy", exist_ok=True)
OUTPUT = "/tmp/workspace/knruhs-anatomy/KNRUHS_Anatomy_CheatSheet.pdf"
doc = SimpleDocTemplate(
OUTPUT, pagesize=A4,
rightMargin=1.5*cm, leftMargin=1.5*cm,
topMargin=1.8*cm, bottomMargin=1.8*cm,
)
# Colour palette
DARK = colors.HexColor("#1a3a2c")
MED = colors.HexColor("#2e7d52")
LIGHT_BG = colors.HexColor("#d6f0e4")
ACCENT = colors.HexColor("#e88020")
ACC_LIGHT = colors.HexColor("#fff4dc")
RED = colors.HexColor("#b03030")
GREEN = colors.HexColor("#1a6e38")
GREY_BG = colors.HexColor("#f4f8f5")
WHITE = colors.white
styles = getSampleStyleSheet()
def S(name, **kw):
base = styles.get(name, styles["Normal"])
return ParagraphStyle(name+"_c"+str(id(kw)), parent=base, **kw)
cover_title = S("Title", fontSize=26, textColor=WHITE, alignment=TA_CENTER, leading=32)
cover_sub = S("Normal", fontSize=13, textColor=ACCENT, alignment=TA_CENTER, leading=18)
cover_note = S("Normal", fontSize=9, textColor=colors.HexColor("#cceedc"), alignment=TA_CENTER)
sec_heading = S("Heading1",fontSize=11, textColor=WHITE, alignment=TA_LEFT, leading=14)
bullet_style = S("Normal", fontSize=8.2,textColor=colors.HexColor("#222222"), alignment=TA_LEFT, leading=11.5, leftIndent=10)
key_point = S("Normal", fontSize=8, textColor=GREEN, fontName="Helvetica-Bold", alignment=TA_LEFT, leading=11)
clin_style = S("Normal", fontSize=8, textColor=RED, fontName="Helvetica-BoldOblique", alignment=TA_LEFT, leading=11)
qr_hdr_s = S("Normal", fontSize=8.5,textColor=WHITE, fontName="Helvetica-Bold")
qr_body_s = S("Normal", fontSize=8, textColor=DARK)
TOPICS = [
(1,"Brachial Plexus",
["Roots: C5-T1; formed in posterior triangle of neck",
"5 terminals: Musculocutaneous, Median, Ulnar, Radial, Axillary",
"Trunks: Upper (C5,C6), Middle (C7), Lower (C8,T1)",
"Divisions β Cords (Lateral, Posterior, Medial) β Branches",
"Erb's palsy: C5,C6 injury β waiter's tip; Klumpke: C8,T1 β claw hand"],
"Lateral cord + Medial cord β Median nerve (M-shape on front)",
"Clinical: Erb's palsy = birth injury (forceps); Klumpke = apical lung tumour (Pancoast)"),
(2,"Femoral Triangle",
["Boundaries: Inguinal lig (sup), Sartorius (lat), Adductor longus (med)",
"Floor: Iliopsoas (lat), Pectineus (med)",
"Contents (lateralβmedial): NAVEL β Nerve, Artery, Vein, Empty space, Lymphatics",
"Femoral sheath contains: FA, FV, femoral canal (lymphatics + Cloquet node)",
"Femoral nerve is OUTSIDE the femoral sheath"],
"Mnemonic NAVEL: N=nerve, A=artery, V=vein, E=empty, L=lymphatics",
"Clinical: Femoral hernia passes through femoral canal; more common in women"),
(3,"Cubital Fossa",
["Boundaries: Pronator teres (med), Brachioradialis (lat), line joining epicondyles (sup)",
"Roof: deep fascia + bicipital aponeurosis",
"Floor: Brachialis + Supinator",
"Contents (medβlat): Median nerve, Brachial artery, Biceps tendon, Radial nerve",
"Mnemonic: My Beer Brings Relaxation (Median, Brachial, Biceps, Radial)"],
"Biceps tendon is the central landmark",
"Clinical: Supracondylar fracture β anterior interosseous nerve injury (loss of pinch)"),
(4,"Nerve Injuries of Upper Limb",
["Radial nerve: Saturday night palsy β wrist drop; no sensory loss over back of hand usually",
"Ulnar nerve: medial epicondyle injury β claw hand (4th,5th fingers)",
"Median nerve: carpal tunnel β ape hand, loss of opposition, thenar wasting",
"Axillary nerve: surgical neck humerus fx β deltoid paralysis, loss over 'regimental badge' area",
"Long thoracic nerve (C5-7): serratus anterior β winged scapula"],
"Median nerve = 'labourer's nerve'; Ulnar = 'musician's nerve'",
"Clinical: Carpal tunnel syndrome = most common nerve entrapathy; Tinel & Phalen test positive"),
(5,"Heart - Conducting System",
["SA node β AV node β Bundle of His β L+R bundle branches β Purkinje fibres",
"SA node: right atrium, near SVC; pacemaker (60-100 bpm)",
"AV node: interatrial septum; delays impulse 0.1 sec",
"Right coronary artery supplies SA node (60%) and AV node (80%)",
"Bachmann's bundle: interatrial conduction"],
"SA node = dominant pacemaker; automaticity due to If (funny current)",
"Clinical: RCA occlusion β SA/AV node ischaemia β bradycardia, heart block"),
(6,"Coronary Arteries",
["LCA: Left main β LAD (anterior IVS, anterior LV) + LCx (lateral/posterior LV)",
"RCA: SA node, AV node, posterior IVS (80% dominant), RV",
"Dominant coronary: gives posterior descending artery (PDA)",
"Right dominant in 80%, left dominant in 10%, co-dominant 10%",
"Coronary arteries are END arteries (anastomoses are functional, not effective)"],
"LAD = 'widow maker'; most common site of MI",
"Clinical: STEMI territories: LAD=anterior, RCA=inferior, LCx=lateral"),
(7,"Lungs & Pleura",
["Right lung: 3 lobes (upper, middle, lower); 10 bronchopulmonary segments",
"Left lung: 2 lobes (upper+lingula, lower); 8-9 bronchopulmonary segments",
"Hilum: bronchus (posterior/superior), pulmonary artery (anterior/superior), veins (inferior)",
"Pleura: visceral (lung surface) + parietal (chest wall); pleural cavity = potential space",
"Oblique fissure: both lungs (T2-6); Horizontal fissure: right lung only (4th costal cartilage)"],
"Right bronchus: wider, shorter, more vertical β foreign bodies more common",
"Clinical: Pleural effusion: blunting of costophrenic angle on X-ray (300 mL needed)"),
(8,"Liver - Segments & Porta Hepatis",
["8 Couinaud segments; functionally divided by hepatic veins",
"Porta hepatis: portal vein (posterior), hepatic artery (left), bile duct (right) β 'Rule of 2 arteries'",
"Portal triad: portal vein, hepatic artery, bile ductule",
"Blood supply: Portal vein 75% (nutrition), Hepatic artery 25% (oxygen)",
"Bare area: not covered by peritoneum; in contact with diaphragm"],
"Porta hepatis structures: mnemonic 'Hate Borders People' (Hepatic artery, Bile duct, Portal vein) L to R",
"Clinical: Portal hypertension β portosystemic anastomoses β varices (oesophageal, haemorrhoidal, caput medusae)"),
(9,"Kidney - Relations & Hilum",
["Right kidney lower than left (liver pushes it down)",
"Relations anteriorly: Right β liver, duodenum, hepatic flexure; Left β spleen, pancreas, jejunum",
"Hilum: vein (anterior), artery (middle), pelvis (posterior) β VAP",
"Nephron: Glomerulus β PCT β LoH β DCT β collecting duct",
"Renal fascia (Gerota's fascia) encloses kidney + suprarenal gland"],
"Renal hilum at L1 level; right renal vein shorter β more DVT risk",
"Clinical: Horseshoe kidney β fused at lower poles β lies in front of aorta; prone to pelviureteric junction obstruction"),
(10,"Vertebral Column - Curvatures & Joints",
["Primary curvatures (fetal): thoracic kyphosis + sacral kyphosis (concave anteriorly)",
"Secondary curvatures (postnatal): cervical lordosis (3 months) + lumbar lordosis (walking)",
"Intervertebral disc: nucleus pulposus (central, gelatinous) + annulus fibrosus (outer rings)",
"L4-L5, L5-S1: most common sites of disc herniation",
"Ligaments: anterior/posterior longitudinal, ligamentum flavum, supraspinous, interspinous"],
"Nucleus pulposus: remnant of notochord; herniates posterolaterally",
"Clinical: L4-5 disc β L5 root β foot drop; L5-S1 β S1 root β loss of ankle jerk"),
(11,"Diaphragm - Openings",
["T8: IVC + right phrenic nerve (caval opening - most anterior)",
"T10: Oesophagus + vagus nerve (left anterior, right posterior) + oesophageal branches",
"T12: Aorta + thoracic duct + azygos vein (most posterior)",
"Mnemonic: I 8 (ate) 10 eggs AT 12 (I=IVC T8, E=oesophagus T10, A=aorta T12)",
"Motor supply: phrenic nerve (C3,4,5); Sensory: phrenic (central) + intercostal (peripheral)"],
"C3,4,5 keeps the diaphragm alive",
"Clinical: Diaphragmatic hernia: congenital (Bochdalek-posterior left) β bowel in thorax β respiratory distress"),
(12,"Portal Venous System",
["Portal vein formed by: Superior mesenteric vein + Splenic vein (behind neck of pancreas)",
"Tributaries: SMV, splenic vein, IMV, left gastric, right gastric, cystic veins",
"Normal portal pressure: 5-10 mmHg; hypertension > 12 mmHg",
"Portosystemic anastomoses: oesophageal (oesophageal varices), rectal (haemorrhoids), paraumbilical (caput medusae), retroperitoneal",
"Portal vein drains all GI tract (stomach to upper rectum), spleen, pancreas"],
"Portal vein = no valves; flow is pressure-dependent",
"Clinical: Liver cirrhosis β portal HTN β oesophageal varices β upper GI bleed (haematemesis)"),
(13,"Bony Pelvis & Pelvic Floor",
["Pelvic inlet (brim): sacral promontory β arcuate line β pubic symphysis",
"Pelvic outlet: pubic arch + ischial tuberosities + coccyx",
"Pelvic floor (levator ani): puborectalis, pubococcygeus, iliococcygeus",
"True vs False pelvis: divided by pelvic brim; false pelvis = lower abdomen",
"Female pelvis: wider, shallower, gynecoid (oval inlet); Male: narrower, android (heart-shaped)"],
"Levator ani nerve: S3,S4 (nerve to levator ani) + inferior rectal nerve",
"Clinical: Pelvic floor damage in childbirth β stress incontinence, uterine prolapse"),
(14,"Cranial Nerves - Summary",
["CN I (Olfactory): smell; CN II (Optic): vision; CN III (Oculomotor): most EOM + pupil constriction",
"CN V (Trigeminal): facial sensation + mastication; CN VII (Facial): facial expression + taste anterior 2/3 tongue",
"CN VIII (Vestibulocochlear): hearing + balance; CN IX (Glossopharyngeal): taste posterior 1/3 + gag reflex",
"CN X (Vagus): parasympathetic to thorax/abdomen; CN XI (Accessory): SCM + trapezius",
"CN XII (Hypoglossal): tongue movements"],
"Mnemonic: Oh Oh Oh To Touch And Feel Very Good Velvet AH (CN I-XII)",
"Clinical: CN III palsy = ptosis + 'down and out' eye + dilated pupil (surgical 3rd nerve palsy)"),
(15,"Spinal Cord Tracts",
["Sensory (ascending): Dorsal columns (fine touch, proprioception, vibration) β ipsilateral",
"Spinothalamic tract: pain, temperature, crude touch β crosses at spinal level (contralateral)",
"Motor (descending): Corticospinal tract β crosses at medulla (pyramidal decussation)",
"UMN lesion: spasticity, hyperreflexia, Babinski positive, no wasting",
"LMN lesion: flaccidity, hyporeflexia, fasciculations, wasting"],
"Dorsal columns: vibration & proprioception; Spinothalamic: pain & temperature",
"Clinical: Brown-Sequard syndrome: ipsilateral motor + proprioception loss; contralateral pain/temp loss"),
(16,"Axilla - Contents & Walls",
["Apex: 1st rib + clavicle + scapula; Base: skin of axilla",
"Walls: Anterior (pectoralis major/minor), Posterior (subscapularis, teres major, latissimus dorsi)",
"Contents: Axillary artery (3 parts relative to pectoralis minor), axillary vein, brachial plexus cords, lymph nodes, fat",
"Axillary lymph nodes: 5 groups (anterior/pectoral, posterior/subscapular, lateral, central, apical)",
"Apical group drains to subclavian lymph trunk"],
"Axillary artery: 3 parts - 1 branch, 2 branches, 3 branches (1-2-3 rule)",
"Clinical: Axillary node clearance in breast cancer β lymphoedema of arm"),
(17,"Stomach - Blood Supply & Relations",
["Lesser curvature: left gastric artery (celiac trunk) + right gastric artery (hepatic artery)",
"Greater curvature: left gastroepiploic (splenic) + right gastroepiploic (gastroduodenal)",
"Fundus: short gastric arteries (from splenic artery)",
"Relations anteriorly: left lobe liver, anterior abdominal wall; Posteriorly: lesser sac, pancreas",
"Pyloric sphincter: at L1; marks junction of stomach and duodenum"],
"Lesser omentum connects stomach/duodenum to liver; greater omentum hangs from greater curvature",
"Clinical: Peptic ulcer: posterior duodenal ulcer erodes gastroduodenal artery β massive haemorrhage"),
(18,"Eye - Anatomy",
["Layers: fibrous (sclera/cornea), vascular (choroid/ciliary body/iris), nervous (retina)",
"Aqueous humour: produced by ciliary body, drains via Canal of Schlemm (trabecular meshwork)",
"Extraocular muscles (6): 4 recti + 2 obliques; CN III supplies all except lateral rectus (VI) and superior oblique (IV)",
"Visual pathway: retina β optic nerve β optic chiasm β optic tract β LGN β optic radiation β occipital cortex",
"Nasal fibres cross at chiasm; temporal fibres are ipsilateral"],
"Mnemonic SO4 LR6 rest 3 (Superior Oblique CN4, Lateral Rectus CN6, rest CN3)",
"Clinical: Glaucoma = raised IOP due to impaired aqueous drainage; optic disc cupping on fundoscopy"),
(19,"Lymphatic Drainage - Clinical Anatomy",
["Head/neck: deep cervical nodes (jugulodigastric node = 'tonsillar node')",
"Breast: axillary (75%), internal mammary nodes; upper outer quadrant most common cancer site",
"Upper limb: axillary nodes; Lower limb: inguinal nodes (superficial + deep)",
"GI tract above umbilicus: celiac nodes; below: mesenteric, iliac nodes",
"Right lymphatic duct: right head/neck/arm/right thorax; Thoracic duct: rest of body"],
"Thoracic duct: longest lymph vessel; enters at junction of left subclavian + internal jugular veins",
"Clinical: Virchow's node (left supraclavicular) = metastasis from stomach/abdominal cancer (Troisier's sign)"),
(20,"Histology - Epithelium & Connective Tissue",
["Simple squamous: lining of vessels (endothelium), alveoli, Bowman's capsule",
"Simple cuboidal: kidney tubules, thyroid follicles, small ducts",
"Simple columnar: GI tract (non-ciliated), uterine tube (ciliated)",
"Stratified squamous: skin (keratinized), oral cavity/oesophagus/vagina (non-keratinized)",
"Transitional (urothelium): ureter, bladder, renal pelvis"],
"Pseudostratified columnar ciliated: respiratory tract (PSCC)",
"Clinical: Barrett's oesophagus = metaplasia: squamous β columnar (acid reflux) β premalignant"),
]
def draw_bg(canvas, doc):
w, h = A4
canvas.setFillColor(DARK)
canvas.rect(0, h-1.1*cm, w, 1.1*cm, fill=1, stroke=0)
canvas.setFillColor(DARK)
canvas.rect(0, 0, w, 0.7*cm, fill=1, stroke=0)
canvas.setFillColor(WHITE)
canvas.setFont("Helvetica", 7)
canvas.drawCentredString(w/2, 0.22*cm, "KNRUHS 1st MBBS Anatomy Cheat Sheet | For Exam Preparation Only")
canvas.drawRightString(w-1.5*cm, 0.22*cm, f"Page {doc.page}")
story = []
# Cover
cover_data = [
[Paragraph("KNRUHS 1st MBBS", cover_title)],
[Paragraph("ANATOMY CHEAT SHEET", cover_title)],
[Paragraph("Top 20 Most Repeated Topics | Exam Quick Reference", cover_sub)],
[Paragraph("Paper I & Paper II β’ Last 5 Exams Pattern β’ 2021β2025", cover_note)],
]
cover_t = Table(cover_data, colWidths=[doc.width])
cover_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("LEFTPADDING", (0,0), (-1,-1), 12),
]))
story.append(cover_t)
story.append(Spacer(1, 0.3*cm))
legend_data = [[
Paragraph("<b>π Key Point</b>", S("Normal", fontSize=8, textColor=GREEN)),
Paragraph("<b>π₯ Clinical Note</b>", S("Normal", fontSize=8, textColor=RED)),
Paragraph("<b>β
High Priority Topic</b>", S("Normal", fontSize=8, textColor=DARK)),
]]
legend_t = Table(legend_data, colWidths=[doc.width/3]*3)
legend_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), GREY_BG),
("BOX", (0,0), (-1,-1), 0.5, MED),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("ALIGN", (0,0), (-1,-1), "CENTER"),
]))
story.append(legend_t)
story.append(Spacer(1, 0.3*cm))
COL_W = (doc.width - 0.4*cm) / 2
def make_card(num, title, bullets, keypoint, clinical):
inner = []
hdr = Table([[Paragraph(f"#{num} {title}", sec_heading)]], colWidths=[COL_W-0.2*cm])
hdr.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), MED),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
inner.append(hdr)
for b in bullets:
inner.append(Paragraph(f"β’ {b}", bullet_style))
inner.append(Spacer(1, 2))
inner.append(Paragraph(f"π {keypoint}", key_point))
inner.append(Paragraph(f"π₯ {clinical}", clin_style))
inner.append(Spacer(1, 4))
card = Table([[i] for i in inner], colWidths=[COL_W-0.2*cm])
card.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), GREY_BG),
("TOPPADDING", (0,0), (-1,-1), 2),
("BOTTOMPADDING", (0,0), (-1,-1), 2),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 4),
]))
outer = Table([[card]], colWidths=[COL_W])
outer.setStyle(TableStyle([
("BOX", (0,0), (-1,-1), 0.8, MED),
("TOPPADDING", (0,0), (-1,-1), 0),
("BOTTOMPADDING", (0,0), (-1,-1), 0),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING", (0,0), (-1,-1), 0),
]))
return outer
def build_row(t1, t2=None):
c1 = make_card(*t1)
if t2:
c2 = make_card(*t2)
row = Table([[c1, Spacer(0.4*cm,1), c2]], colWidths=[COL_W, 0.4*cm, COL_W])
else:
row = Table([[c1, Spacer(0.4*cm,1), Spacer(COL_W,1)]], colWidths=[COL_W, 0.4*cm, COL_W])
row.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 0),
("BOTTOMPADDING", (0,0), (-1,-1), 0),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING", (0,0), (-1,-1), 0),
]))
return row
for i in range(0, len(TOPICS), 2):
story.append(build_row(TOPICS[i], TOPICS[i+1] if i+1 < len(TOPICS) else None))
story.append(Spacer(1, 0.25*cm))
# Quick Reference Table
story.append(PageBreak())
story.append(Spacer(1, 0.3*cm))
qr_hdr_t = Table([[Paragraph("QUICK REFERENCE: Anatomy High-Yield Points", sec_heading)]], colWidths=[doc.width])
qr_hdr_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 10),
]))
story.append(qr_hdr_t)
story.append(Spacer(1, 0.2*cm))
qr_rows = [
[Paragraph(h, qr_hdr_s) for h in ["Structure", "Key Landmark / Level", "Important Nerve/Vessel", "Clinical Condition"]],
["Femoral triangle", "Inguinal ligament (sup)", "Femoral nerve (outside sheath)", "Femoral hernia (women)"],
["Cubital fossa", "Biceps tendon (central)", "Median nerve (medial)", "Supracondylar fracture"],
["Diaphragm openings", "T8/T10/T12", "Phrenic nerve (C3,4,5)", "Hiatus hernia"],
["Brachial plexus", "C5βT1 roots", "Median, Ulnar, Radial, Axillary", "Erb's / Klumpke palsy"],
["Vertebral disc", "L4-5 / L5-S1 common", "L5 / S1 nerve roots", "Foot drop / loss ankle jerk"],
["Coronary arteries", "RCA 80% dominant", "LAD = anterior IVS", "Anterior MI (LAD)"],
["Portal vein", "Behind neck of pancreas", "SMV + Splenic vein join", "Oesophageal varices"],
["Kidney hilum", "L1 vertebral level", "VAP β Vein, Artery, Pelvis", "Renal calculi"],
["Visual pathway", "Optic chiasm (nasal cross)", "Optic radiation (temporal)", "Bitemporal hemianopia (pituitary)"],
["Thoracic duct", "T12βL2 cisterna chyli", "Drains into left SCV-IJV junction", "Chylothorax"],
]
qr_formatted = []
for i, row in enumerate(qr_rows):
if i == 0:
qr_formatted.append(row)
else:
qr_formatted.append([Paragraph(str(c), qr_body_s) for c in row])
qr_t = Table(qr_formatted, colWidths=[doc.width*0.22, doc.width*0.22, doc.width*0.3, doc.width*0.26])
qr_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MED),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, colors.HexColor("#d6f0e4")]),
("GRID", (0,0), (-1,-1), 0.3, colors.HexColor("#aaaaaa")),
("FONTSIZE", (0,0), (-1,-1), 8),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(qr_t)
story.append(Spacer(1, 0.4*cm))
mn_data = [
[Paragraph("ESSENTIAL ANATOMY MNEMONICS", S("Normal", fontSize=10, textColor=WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER))],
[Paragraph(
"<b>Brachial plexus terminals:</b> My Muscles Are Really Useful (Musculocutaneous, Median, Axillary, Radial, Ulnar)<br/>"
"<b>Femoral triangle contents:</b> NAVEL β Nerve, Artery, Vein, Empty space, Lymphatics (lateral β medial)<br/>"
"<b>Cubital fossa:</b> My Beer Brings Relaxation (Median nerve, Brachial artery, Biceps tendon, Radial nerve)<br/>"
"<b>Diaphragm openings:</b> I 8 (ate) 10 Eggs AT 12 (IVC=T8, Oesophagus=T10, Aorta=T12)<br/>"
"<b>Cranial nerves:</b> Oh Oh Oh To Touch And Feel Very Good Velvet AH (CN I to XII)<br/>"
"<b>EOM nerve supply:</b> SO4 LR6 rest 3 (Superior ObliqueβCN4, Lateral RectusβCN6, restβCN3)",
S("Normal", fontSize=8.5, textColor=DARK, leading=14)
)],
]
mn_t = Table(mn_data, colWidths=[doc.width])
mn_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,0), ACCENT),
("BACKGROUND", (0,1), (0,1), ACC_LIGHT),
("BOX", (0,0), (-1,-1), 1, ACCENT),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
]))
story.append(mn_t)
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph(
"β
Covers most frequently tested KNRUHS 1st MBBS Anatomy topics. Always reference Gray's Anatomy / BD Chaurasia. For exam revision only.",
S("Normal", fontSize=7.5, textColor=colors.HexColor("#555555"), alignment=TA_CENTER, leading=11)
))
doc.build(story, onFirstPage=draw_bg, onLaterPages=draw_bg)
print("Anatomy PDF created:", OUTPUT)
~/knruhs-physiology/create_physiology_cheatsheet.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, PageBreak
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT
import os
os.makedirs("/tmp/workspace/knruhs-physiology", exist_ok=True)
OUTPUT = "/tmp/workspace/knruhs-physiology/KNRUHS_Physiology_CheatSheet.pdf"
doc = SimpleDocTemplate(
OUTPUT, pagesize=A4,
rightMargin=1.5*cm, leftMargin=1.5*cm,
topMargin=1.8*cm, bottomMargin=1.8*cm,
)
DARK = colors.HexColor("#3a1a5c")
MED = colors.HexColor("#6a2ea4")
LIGHT_BG = colors.HexColor("#e8d6f7")
ACCENT = colors.HexColor("#e06020")
ACC_LIGHT = colors.HexColor("#fff0e0")
RED = colors.HexColor("#b03030")
GREEN = colors.HexColor("#1a6e38")
GREY_BG = colors.HexColor("#f6f4f9")
WHITE = colors.white
styles = getSampleStyleSheet()
def S(name, **kw):
base = styles.get(name, styles["Normal"])
return ParagraphStyle(name+"_c"+str(id(kw)), parent=base, **kw)
cover_title = S("Title", fontSize=26, textColor=WHITE, alignment=TA_CENTER, leading=32)
cover_sub = S("Normal", fontSize=13, textColor=ACCENT, alignment=TA_CENTER, leading=18)
cover_note = S("Normal", fontSize=9, textColor=colors.HexColor("#ddc8f0"), alignment=TA_CENTER)
sec_heading = S("Heading1",fontSize=11, textColor=WHITE, alignment=TA_LEFT, leading=14)
bullet_style = S("Normal", fontSize=8.2,textColor=colors.HexColor("#222222"), alignment=TA_LEFT, leading=11.5, leftIndent=10)
key_point = S("Normal", fontSize=8, textColor=GREEN, fontName="Helvetica-Bold", alignment=TA_LEFT, leading=11)
clin_style = S("Normal", fontSize=8, textColor=RED, fontName="Helvetica-BoldOblique", alignment=TA_LEFT, leading=11)
qr_hdr_s = S("Normal", fontSize=8.5,textColor=WHITE, fontName="Helvetica-Bold")
qr_body_s = S("Normal", fontSize=8, textColor=DARK)
TOPICS = [
(1,"Cardiac Cycle & Heart Sounds",
["Systole: isovolumetric contraction β rapid ejection β reduced ejection",
"Diastole: isovolumetric relaxation β rapid filling β slow filling β atrial systole",
"S1 (lub): closure of mitral + tricuspid valves (start of systole)",
"S2 (dub): closure of aortic + pulmonary valves (end of systole); A2 before P2",
"S3: rapid ventricular filling (normal in children; pathological in adults = HF); S4: atrial kick (stiff ventricle)"],
"Wiggers diagram: pressure-volume loops are essential for exam",
"Clinical: Mitral stenosis β loud S1, opening snap, mid-diastolic murmur; afib common complication"),
(2,"Blood Pressure Regulation",
["Arterial BP = Cardiac Output Γ Total Peripheral Resistance",
"Short-term: baroreceptors (carotid sinus, aortic arch), chemoreceptors",
"Medium-term: RAAS, capillary fluid shift",
"Long-term: kidneys (pressure natriuresis) β most important",
"Baroreceptors: high pressure β βfiring β βsympathetic β βBP (reflex arc)"],
"Kidney is the ultimate long-term regulator of BP (Guyton's pressure-natriuresis)",
"Clinical: Cushing's reflex: raised ICP β hypertension + bradycardia + irregular breathing"),
(3,"ECG - Normal Waves & Intervals",
["P wave: atrial depolarization (0.12 sec); PR interval: 0.12-0.20 sec",
"QRS complex: ventricular depolarization (< 0.12 sec)",
"ST segment: early repolarization; T wave: ventricular repolarization",
"QT interval: total ventricular activity (0.35-0.45 sec); QTc = QT/βRR",
"Rate: 300/large squares; Axis: normal -30Β° to +90Β°"],
"PR interval prolonged = 1st degree heart block; absent P waves + irregular = AF",
"Clinical: STEMI β ST elevation; NSTEMI β ST depression; hyperkalaemia β tall peaked T waves"),
(4,"Respiratory Mechanics & Lung Volumes",
["TV (tidal volume): 500 mL; IRV: 3000 mL; ERV: 1100 mL; RV: 1200 mL",
"VC = IRV + TV + ERV = 4600 mL; TLC = VC + RV = 5800 mL",
"FRC = ERV + RV = 2300 mL (volume at end of normal expiration)",
"FEV1/FVC > 80% = normal; < 70% = obstructive (asthma, COPD); VCβ = restrictive",
"Compliance = ΞV/ΞP; surfactant βcompliance; prevents alveolar collapse"],
"RV cannot be measured by spirometry; use body plethysmography or helium dilution",
"Clinical: COPD = FEV1/FVC < 0.7; βTLC, βRV; barrel chest; pursed lip breathing"),
(5,"Haemoglobin & Oxygen Transport",
["O2 transport: 97% bound to Hb; 3% dissolved in plasma",
"Haemoglobin: 4 globin chains + 4 haem groups; 1 Hb binds 4 O2",
"P50: PO2 at which Hb is 50% saturated (~26 mmHg)",
"Right shift (βP50, βaffinity): βCO2, βH+, βtemp, β2,3-DPG (Bohr effect)",
"Left shift (βP50, βaffinity): fetal Hb, CO poisoning, βCO2, βH+, βtemp"],
"Fetal HbF: 2Ξ±2Ξ³ chains; greater O2 affinity than adult HbA (left shift)",
"Clinical: CO poisoning β cherry red cyanosis; carboxyHb shifts curve left; treat with 100% O2"),
(6,"Renal Physiology - GFR & Tubular Function",
["GFR: 125 mL/min (180 L/day filtered; 1.5 L urine/day)",
"Autoregulation: myogenic + tubuloglomerular feedback (macula densa)",
"PCT: 65% Na, water reabsorption; obligatory reabsorption; glucose, amino acids (all)",
"Loop of Henle: countercurrent multiplier; thick ascending limb impermeable to water",
"DCT/collecting duct: aldosterone (Naβ, Kβ); ADH (water reabsorption)"],
"Inulin: gold standard for GFR; creatinine overestimates slightly",
"Clinical: ATN (acute tubular necrosis) β oliguria, casts in urine, βcreatinine after ischaemia"),
(7,"Acid-Base Balance",
["pH = 7.35-7.45; PaCO2 = 35-45 mmHg; HCO3- = 22-26 mEq/L",
"Respiratory acidosis: βPaCO2 (hypoventilation); compensation = βHCO3- (renal)",
"Respiratory alkalosis: βPaCO2 (hyperventilation); compensation = βHCO3-",
"Metabolic acidosis: βHCO3- (AG gap = normal anion gap vs high anion gap causes)",
"Anion gap = Na - (Cl + HCO3) = 12 Β± 2; High AG = MUDPILES"],
"MUDPILES (high anion gap metabolic acidosis): Methanol, Uraemia, DKA, Propylene glycol, INH, Lactic acidosis, Ethylene glycol, Salicylates",
"Clinical: DKA β high anion gap metabolic acidosis + respiratory compensation (Kussmaul breathing)"),
(8,"Neuromuscular Junction",
["Motor nerve AP β Ca2+ influx β ACh released from vesicles into synaptic cleft",
"ACh binds nicotinic receptors on motor end plate β depolarization (EPP)",
"EPP triggers muscle AP β T-tubules β Ca2+ release from SR (Ryanodine receptor)",
"Ca2+ binds troponin C β tropomyosin shifts β actin-myosin cross-bridge cycling",
"ACh degraded by AChE in cleft; choline recycled"],
"Botulinum toxin: blocks ACh release (SNARE proteins); Tetanus toxin: blocks inhibitory interneurons",
"Clinical: Myasthenia gravis = autoantibodies against nicotinic ACh receptors β fatigable weakness"),
(9,"Muscle Contraction - Sliding Filament Theory",
["Sarcomere: A band (myosin + actin overlap), I band (actin only), H zone (myosin only), Z disc",
"During contraction: I band β, H zone β, A band UNCHANGED",
"Myosin head binds actin β power stroke (ADP released) β shortening",
"ATP needed for cross-bridge detachment (rigor mortis = no ATP)",
"Ca2+ releases troponin-tropomyosin inhibition; actomyosin ATPase cleaves ATP"],
"A band = constant length (contains full myosin filament)",
"Clinical: Rigor mortis: ATP depletion post-death β permanent cross-bridges; begins 2-6 hrs, resolves 24-48 hrs"),
(10,"Endocrinology - Pituitary Hormones",
["Anterior pituitary (adenohypophysis): GH, TSH, ACTH, FSH, LH, Prolactin",
"Posterior pituitary (neurohypophysis): ADH (vasopressin) + Oxytocin (made in hypothalamus, stored here)",
"GH: insulin-like effect on fat, anti-insulin on carbs; IGF-1 mediates growth effects",
"Prolactin: inhibited by dopamine; lactation, inhibits GnRH",
"ADH: acts on V2 receptors in collecting duct β aquaporin 2 insertion β water reabsorption"],
"Hypothalamus controls anterior pituitary via portal blood; posterior via axons",
"Clinical: SIADH β ADHβ β dilutional hyponatraemia; Diabetes insipidus β ADHβ/resistance β polyuria, dilute urine"),
(11,"Thyroid Hormones",
["T3 (active) + T4 (prohormone, deiodinated to T3 in periphery)",
"Synthesis: Tyrosine + iodide β MIT, DIT β T3, T4 (thyroid peroxidase)",
"T3/T4 effects: βBMR, βthermogenesis, βHR, βGI motility, βbone turnover",
"T3 acts via nuclear receptors β gene transcription",
"TSH β βcAMP β βthyroid hormone synthesis; TRH stimulates TSH"],
"T3 is 3-5x more potent than T4; 80% T3 derived from peripheral T4 conversion",
"Clinical: Hypothyroidism β βTSH, βFT4; Hyperthyroidism β βTSH, βFT4; Graves = TSH-receptor antibodies"),
(12,"Insulin & Glucagon",
["Insulin: Ξ² cells; released by glucoseβ, amino acids, GLP-1; inhibited by epinephrine, somatostatin",
"Effects: βglucose uptake (GLUT4), βglycogenesis, βlipogenesis, βgluconeogenesis, βprotein synthesis",
"Glucagon: Ξ± cells; released by fasting, amino acids, epinephrine",
"Glucagon effects: βgluconeogenesis, βglycogenolysis, βketogenesis",
"C-peptide: equimolar to insulin; marker of endogenous insulin production"],
"GLUT4 in muscle + adipose = insulin-dependent; GLUT2 in liver/pancreas = constitutive",
"Clinical: Type 1 DM = autoimmune Ξ² cell destruction; Type 2 = insulin resistance; C-peptide helps distinguish"),
(13,"Blood Coagulation",
["Extrinsic pathway: Tissue factor + VII β X activation (PT/INR tests this)",
"Intrinsic pathway: XII β XI β IX β X (aPTT tests this)",
"Common pathway: X + V β thrombin β fibrin clot",
"Fibrinolysis: plasminogen β plasmin (tPA) β fibrin degradation products (D-dimer)",
"Platelet plug: primary haemostasis; fibrin clot: secondary haemostasis"],
"PT (INR) = extrinsic + common; aPTT = intrinsic + common",
"Clinical: Haemophilia A = Factor VIII deficiency (βaPTT, normal PT); Haemophilia B = Factor IX deficiency"),
(14,"Sensory Physiology - Pain & Special Senses",
["Nociceptors: free nerve endings; A-delta (fast, sharp pain) + C fibres (slow, dull/burning)",
"Gate control theory: large myelinated fibres inhibit pain transmission in dorsal horn",
"Referred pain: visceral pain felt in dermatome sharing spinal segment",
"Hearing: sound β tympanic membrane β ossicles β oval window β cochlea β VIII nerve",
"Vision: rods (scotopic, low light, no colour); cones (photopic, colour, central vision)"],
"Endorphins, enkephalins = endogenous opioids; act on ΞΌ, Ξ΄, ΞΊ receptors",
"Clinical: Cardiac pain referred to left arm + jaw (T1-4 dermatomes); renal colic referred to groin (T10-L1)"),
(15,"Nerve Conduction & Action Potential",
["Resting potential: -70 mV (K+ diffusion out + Na+/K+ ATPase)",
"AP: depolarization (Na+ in, voltage-gated) β repolarization (K+ out) β hyperpolarization",
"All-or-none law; refractory period (absolute = Na channels inactivated)",
"Saltatory conduction: myelinated nerves; AP jumps between nodes of Ranvier",
"Conduction velocity: βwith myelin, βwith axon diameter"],
"Na+/K+ ATPase: 3 Na out, 2 K in; electrogenic pump maintains -70 mV",
"Clinical: Multiple sclerosis = demyelination β slowed/blocked conduction; VEPs delayed"),
(16,"Gastrointestinal Physiology",
["Gastric acid: parietal cells secrete HCl + intrinsic factor; chief cells secrete pepsinogen",
"Gastrin (G cells, antrum): βacid; Secretin (S cells, duodenum): βHCO3-, βacid",
"Pancreatic enzymes: lipase, amylase, proteases (all activated in duodenum by trypsin)",
"Bile: bile acids (emulsification) + bilirubin; stored in gallbladder; released by CCK",
"Defecation reflex: rectal distension β parasympathetic β internal sphincter relaxation"],
"Intrinsic factor + Vit B12 absorbed in terminal ileum; resection β B12 deficiency",
"Clinical: Zollinger-Ellison syndrome: gastrinoma β high gastrin β peptic ulcers + diarrhoea"),
(17,"Reproductive Physiology - Menstrual Cycle",
["Follicular phase (day 1-14): FSH β follicle growth β oestrogenβ",
"Ovulation (day 14): LH surge (triggered by oestrogen peak) β ovulation",
"Luteal phase (day 15-28): LH β corpus luteum β progesteroneβ",
"If fertilization: hCG maintains corpus luteum; hCG = basis of pregnancy test",
"Progesterone: βBBT, thickens cervical mucus, prepares endometrium for implantation"],
"LH surge = trigger for ovulation; peak oestrogen causes positive feedback on LH",
"Clinical: PCOS = βLH:FSH ratio, βandrogens, insulin resistance; anovulation β infertility"),
(18,"Body Fluid Compartments",
["TBW = 60% body weight (male); 50% (female)",
"ICF: 40% BW (2/3 TBW); ECF: 20% BW (1/3 TBW)",
"ECF = plasma (5% BW) + interstitial (15% BW) + transcellular",
"ICF: high K+, Mg2+, phosphate; ECF: high Na+, Cl-, HCO3-",
"Starling forces: hydrostatic pressure pushes out; oncotic (osmotic) pressure pulls in"],
"Osmolarity = 2ΓNa + glucose/18 + BUN/2.8; normal = 285-295 mOsm/L",
"Clinical: Oedema = βcapillary hydrostatic pressure OR βoncotic pressure (hypoalbuminaemia in liver disease)"),
(19,"Blood - Components & Functions",
["RBCs: 4.5-5.5 million/mmΒ³; lifespan 120 days; destroyed in spleen",
"WBCs: neutrophils (60-70%), lymphocytes (20-30%), monocytes, eosinophils, basophils",
"Platelets: 1.5-4 lakh/mmΒ³; lifespan 10 days; no nucleus",
"Plasma proteins: albumin (60%), globulins (36%), fibrinogen (4%)",
"ESR: βin inflammation, pregnancy, anaemia; RBC rouleaux formation"],
"Erythropoiesis: stem cell β proerythroblast β reticulocyte β RBC; EPO from kidney",
"Clinical: Anaemia of chronic disease: βserum iron, βTIBC, βferritin (trapped iron); normocytic"),
(20,"Higher Functions - Sleep, EEG, Reflexes",
["EEG waves: Ξ΄ (deep sleep/coma), ΞΈ (drowsy), Ξ± (relaxed/closed eyes), Ξ² (alert/thinking)",
"Sleep stages: NREM (stages 1-4, Ξ΄ waves in deep sleep) + REM (dreaming, rapid eye movements)",
"REM sleep: atonia, vivid dreams, βHR & BP variability, penile erection",
"Deep tendon reflexes (DTRs): monosynaptic; spinal levels - biceps C5, triceps C7, knee L4, ankle S1",
"Babinski reflex: normal in infants (plantar flexion); abnormal in adults = UMN lesion (dorsiflexion)"],
"REM sleep: first cycle ~90 min after sleep onset; REM duration increases towards morning",
"Clinical: Narcolepsy = sudden REM sleep; cataplexy (sudden muscle weakness); treat with modafinil"),
]
def draw_bg(canvas, doc):
w, h = A4
canvas.setFillColor(DARK)
canvas.rect(0, h-1.1*cm, w, 1.1*cm, fill=1, stroke=0)
canvas.setFillColor(DARK)
canvas.rect(0, 0, w, 0.7*cm, fill=1, stroke=0)
canvas.setFillColor(WHITE)
canvas.setFont("Helvetica", 7)
canvas.drawCentredString(w/2, 0.22*cm, "KNRUHS 1st MBBS Physiology Cheat Sheet | For Exam Preparation Only")
canvas.drawRightString(w-1.5*cm, 0.22*cm, f"Page {doc.page}")
story = []
cover_data = [
[Paragraph("KNRUHS 1st MBBS", cover_title)],
[Paragraph("PHYSIOLOGY CHEAT SHEET", cover_title)],
[Paragraph("Top 20 Most Repeated Topics | Exam Quick Reference", cover_sub)],
[Paragraph("Paper I & Paper II β’ Last 5 Exams Pattern β’ 2021β2025", cover_note)],
]
cover_t = Table(cover_data, colWidths=[doc.width])
cover_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("LEFTPADDING", (0,0), (-1,-1), 12),
]))
story.append(cover_t)
story.append(Spacer(1, 0.3*cm))
legend_data = [[
Paragraph("<b>π Key Point</b>", S("Normal", fontSize=8, textColor=GREEN)),
Paragraph("<b>π₯ Clinical Note</b>", S("Normal", fontSize=8, textColor=RED)),
Paragraph("<b>β
High Priority Topic</b>", S("Normal", fontSize=8, textColor=DARK)),
]]
legend_t = Table(legend_data, colWidths=[doc.width/3]*3)
legend_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), GREY_BG),
("BOX", (0,0), (-1,-1), 0.5, MED),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("ALIGN", (0,0), (-1,-1), "CENTER"),
]))
story.append(legend_t)
story.append(Spacer(1, 0.3*cm))
COL_W = (doc.width - 0.4*cm) / 2
def make_card(num, title, bullets, keypoint, clinical):
inner = []
hdr = Table([[Paragraph(f"#{num} {title}", sec_heading)]], colWidths=[COL_W-0.2*cm])
hdr.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), MED),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
inner.append(hdr)
for b in bullets:
inner.append(Paragraph(f"β’ {b}", bullet_style))
inner.append(Spacer(1, 2))
inner.append(Paragraph(f"π {keypoint}", key_point))
inner.append(Paragraph(f"π₯ {clinical}", clin_style))
inner.append(Spacer(1, 4))
card = Table([[i] for i in inner], colWidths=[COL_W-0.2*cm])
card.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), GREY_BG),
("TOPPADDING", (0,0), (-1,-1), 2),
("BOTTOMPADDING", (0,0), (-1,-1), 2),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 4),
]))
outer = Table([[card]], colWidths=[COL_W])
outer.setStyle(TableStyle([
("BOX", (0,0), (-1,-1), 0.8, MED),
("TOPPADDING", (0,0), (-1,-1), 0),
("BOTTOMPADDING", (0,0), (-1,-1), 0),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING", (0,0), (-1,-1), 0),
]))
return outer
def build_row(t1, t2=None):
c1 = make_card(*t1)
if t2:
c2 = make_card(*t2)
row = Table([[c1, Spacer(0.4*cm,1), c2]], colWidths=[COL_W, 0.4*cm, COL_W])
else:
row = Table([[c1, Spacer(0.4*cm,1), Spacer(COL_W,1)]], colWidths=[COL_W, 0.4*cm, COL_W])
row.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 0),
("BOTTOMPADDING", (0,0), (-1,-1), 0),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING", (0,0), (-1,-1), 0),
]))
return row
for i in range(0, len(TOPICS), 2):
story.append(build_row(TOPICS[i], TOPICS[i+1] if i+1 < len(TOPICS) else None))
story.append(Spacer(1, 0.25*cm))
story.append(PageBreak())
story.append(Spacer(1, 0.3*cm))
qr_hdr_t = Table([[Paragraph("QUICK REFERENCE: Physiology High-Yield Points", sec_heading)]], colWidths=[doc.width])
qr_hdr_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 10),
]))
story.append(qr_hdr_t)
story.append(Spacer(1, 0.2*cm))
qr_rows = [
[Paragraph(h, qr_hdr_s) for h in ["Topic", "Normal Value / Key Fact", "Regulatory Mechanism", "Clinical Condition"]],
["GFR", "125 mL/min", "Autoregulation (myogenic + TGF)", "ATN: GFRβ, oliguria"],
["Resting membrane potential", "-70 mV", "Na+/K+ ATPase + K+ diffusion", "Hyperkalaemia β arrhythmia"],
["Cardiac output", "5 L/min (70 mL Γ 70 bpm)", "Starling's law (preload)", "Heart failure: COβ"],
["PaO2/SpO2", "95-100 mmHg / 97-99%", "Hypoxic pulmonary vasoconstriction", "CO poisoning: SpO2 normal but hypoxic"],
["Plasma osmolarity", "285-295 mOsm/L", "ADH (thirst + renal water)", "SIADH: βosmolarity, βNa+"],
["PR interval (ECG)", "0.12-0.20 sec", "AV node delay", "1st degree block: PR > 0.20"],
["FEV1/FVC ratio", ">80% normal", "Airway resistance (bronchodilators)", "COPD: < 0.70; Asthma: reversible"],
["Cortisol (diurnal)", "Peak 8 AM, nadir midnight", "ACTH from anterior pituitary", "Cushing's: βcortisol, βglucose, buffalo hump"],
["P50 (Hb)", "26 mmHg", "2,3-DPG, pH, temp (Bohr effect)", "CO poisoning: left shift; poor O2 delivery"],
["Platelet count", "1.5-4 lakh/mmΒ³", "TPO from liver", "ITP: autoimmune destruction; DIC: consumption"],
]
qr_formatted = []
for i, row in enumerate(qr_rows):
if i == 0:
qr_formatted.append(row)
else:
qr_formatted.append([Paragraph(str(c), qr_body_s) for c in row])
qr_t = Table(qr_formatted, colWidths=[doc.width*0.18, doc.width*0.22, doc.width*0.3, doc.width*0.3])
qr_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MED),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, colors.HexColor("#e8d6f7")]),
("GRID", (0,0), (-1,-1), 0.3, colors.HexColor("#aaaaaa")),
("FONTSIZE", (0,0), (-1,-1), 8),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(qr_t)
story.append(Spacer(1, 0.4*cm))
mn_data = [
[Paragraph("ESSENTIAL PHYSIOLOGY MNEMONICS", S("Normal", fontSize=10, textColor=WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER))],
[Paragraph(
"<b>Lung volumes (can't measure by spirometry):</b> RV, FRC, TLC β need body plethysmography or helium dilution<br/>"
"<b>O2-Hb curve right shift:</b> CADET (CO2β, Acidβ, 2,3-DPGβ, Exercise, Tempβ)<br/>"
"<b>Anterior pituitary hormones:</b> FLAT PiG (FSH, LH, ACTH, TSH, Prolactin, (i)GH)<br/>"
"<b>Coagulation factors tested:</b> PT/INR = extrinsic (VII) + common; aPTT = intrinsic (VIII,IX,XI,XII) + common<br/>"
"<b>Blood groups:</b> A=anti-B; B=anti-A; AB=no antibodies (universal recipient); O=both antibodies (universal donor)<br/>"
"<b>EEG waves memory:</b> Deeper the sleep β slower the wave (Ξ²βΞ±βΞΈβΞ΄)",
S("Normal", fontSize=8.5, textColor=DARK, leading=14)
)],
]
mn_t = Table(mn_data, colWidths=[doc.width])
mn_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,0), ACCENT),
("BACKGROUND", (0,1), (0,1), ACC_LIGHT),
("BOX", (0,0), (-1,-1), 1, ACCENT),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
]))
story.append(mn_t)
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph(
"β
Covers most frequently tested KNRUHS 1st MBBS Physiology topics. Always reference Guyton & Hall / Ganong. For exam revision only.",
S("Normal", fontSize=7.5, textColor=colors.HexColor("#555555"), alignment=TA_CENTER, leading=11)
))
doc.build(story, onFirstPage=draw_bg, onLaterPages=draw_bg)
print("Physiology PDF created:", OUTPUT)
python /tmp/workspace/knruhs-anatomy/create_anatomy_cheatsheet.py && python /tmp/workspace/knruhs-physiology/create_physiology_cheatsheet.py
ls -lh /tmp/workspace/knruhs-anatomy/KNRUHS_Anatomy_CheatSheet.pdf /tmp/workspace/knruhs-physiology/KNRUHS_Physiology_CheatSheet.pdf
KNRUHS Anatomy CheatSheet
PDF Document Β· PDF
KNRUHS Physiology CheatSheet
PDF Document Β· PDF