Which paper of biochemistry is easy according to knurhs
knurhs biochemistry paper easy
KNURHS university biochemistry exam papers
Tip: Look at the KNRUHS previous year papers on FirstRanker to analyze repeating questions - that is the most reliable way to judge which paper suits you better.
How to get 50% in paper 1 in 2 days
KNRUHS biochemistry paper 1 most repeated questions high yield topics
https://www.scribd.com/document/880125864/KNRUHS-Biochemistrβ¦
| Vitamin | Coenzyme/Function | Deficiency |
|---|---|---|
| B1 (Thiamine) | TPP - pyruvate dehydrogenase | Beriberi, Wernicke |
| B2 (Riboflavin) | FAD/FMN - ETC | Cheilosis, angular stomatitis |
| B3 (Niacin) | NAD+/NADP+ | Pellagra (3 D's) |
| B5 (Pantothenic acid) | CoA | Burning feet |
| B6 (Pyridoxine) | PLP - transamination | Sideroblastic anemia |
| B12 | Methylcobalamin | Megaloblastic anemia |
| Folate | THF | Neural tube defects |
| C | Collagen synthesis | Scurvy |
| D | Calcium metabolism | Rickets/Osteomalacia |
| K | Coagulation factors | Bleeding |
Create a quick reference PDF of high-yield Biochemistry Paper I topics
mkdir -p /tmp/workspace/biochem-pdf && ls /tmp/workspace/
~/biochem-pdf/generate_pdf.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, PageBreak, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import BaseDocTemplate, Frame, PageTemplate
# ββ Colour palette ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
DARK_BLUE = colors.HexColor("#1A3A5C")
MED_BLUE = colors.HexColor("#2E6DA4")
LIGHT_BLUE = colors.HexColor("#D6E8F8")
ACCENT = colors.HexColor("#E74C3C")
GREEN = colors.HexColor("#1E8449")
LIGHT_GREEN = colors.HexColor("#D5F5E3")
ORANGE = colors.HexColor("#E67E22")
YELLOW_BG = colors.HexColor("#FEF9E7")
PURPLE = colors.HexColor("#6C3483")
LIGHT_PURPLE= colors.HexColor("#E8DAEF")
GREY_BG = colors.HexColor("#F2F3F4")
WHITE = colors.white
BLACK = colors.black
OUTPUT = "/tmp/workspace/biochem-pdf/KNRUHS_Biochemistry_Paper1_QuickRef.pdf"
# ββ Styles βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
styles = getSampleStyleSheet()
def S(name, **kw):
return ParagraphStyle(name, **kw)
cover_title = S("CoverTitle", fontSize=28, fontName="Helvetica-Bold",
textColor=WHITE, alignment=TA_CENTER, leading=34)
cover_sub = S("CoverSub", fontSize=14, fontName="Helvetica",
textColor=LIGHT_BLUE, alignment=TA_CENTER, leading=20)
cover_note = S("CoverNote", fontSize=11, fontName="Helvetica-Oblique",
textColor=YELLOW_BG, alignment=TA_CENTER, leading=16)
ch_head = S("ChHead", fontSize=15, fontName="Helvetica-Bold",
textColor=WHITE, alignment=TA_LEFT, leading=20,
leftIndent=6, spaceAfter=2)
sec_head = S("SecHead", fontSize=12, fontName="Helvetica-Bold",
textColor=DARK_BLUE, alignment=TA_LEFT, leading=16,
spaceBefore=8, spaceAfter=3)
body = S("Body", fontSize=9.5, fontName="Helvetica",
textColor=BLACK, leading=14, spaceAfter=2)
bullet = S("Bullet", fontSize=9.5, fontName="Helvetica",
textColor=BLACK, leading=13, leftIndent=12,
bulletIndent=3, spaceAfter=1)
small = S("Small", fontSize=8.5, fontName="Helvetica",
textColor=colors.HexColor("#555555"), leading=12)
red_bold = S("RedBold", fontSize=9.5, fontName="Helvetica-Bold",
textColor=ACCENT, leading=13)
green_bold=S("GreenBold",fontSize=9.5,fontName="Helvetica-Bold",
textColor=GREEN, leading=13)
table_hdr= S("TblHdr", fontSize=9, fontName="Helvetica-Bold",
textColor=WHITE, alignment=TA_CENTER, leading=12)
table_cel= S("TblCel", fontSize=8.5, fontName="Helvetica",
textColor=BLACK, alignment=TA_LEFT, leading=12)
footer_s = S("Footer", fontSize=7.5, fontName="Helvetica",
textColor=colors.grey, alignment=TA_CENTER)
# ββ Helper builders ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def chapter_banner(title, color=DARK_BLUE):
data = [[Paragraph(title, ch_head)]]
t = Table(data, colWidths=[17.5*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), color),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LEFTPADDING", (0,0), (-1,-1), 10),
("ROUNDEDCORNERS", [4,4,4,4]),
]))
return t
def info_box(text, bg=LIGHT_BLUE, border=MED_BLUE):
data = [[Paragraph(text, body)]]
t = Table(data, colWidths=[17.5*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("BOX", (0,0), (-1,-1), 1, border),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
]))
return t
def make_table(headers, rows, col_widths=None, hdr_color=DARK_BLUE):
if col_widths is None:
col_widths = [17.5*cm / len(headers)] * len(headers)
hdr_row = [Paragraph(h, table_hdr) for h in headers]
data = [hdr_row]
for row in rows:
data.append([Paragraph(str(c), table_cel) for c in row])
t = Table(data, colWidths=col_widths)
style = [
("BACKGROUND", (0,0), (-1,0), hdr_color),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, GREY_BG]),
("BOX", (0,0), (-1,-1), 0.5, MED_BLUE),
("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#AAAAAA")),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 5),
("RIGHTPADDING", (0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "TOP"),
]
t.setStyle(TableStyle(style))
return t
def B(text): return f"<b>{text}</b>"
def I(text): return f"<i>{text}</i>"
def C(text, col="#E74C3C"): return f'<font color="{col}"><b>{text}</b></font>'
def bp(text): return Paragraph("β’ " + text, bullet)
def sp(): return Spacer(1, 5)
def spp(): return Spacer(1, 10)
def hr(): return HRFlowable(width="100%", thickness=0.5,
color=colors.HexColor("#CCCCCC"))
# ββ Page callbacks ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def on_page(canvas, doc):
if doc.page == 1:
return # Cover page - no header/footer
w, h = A4
canvas.saveState()
canvas.setFillColor(DARK_BLUE)
canvas.rect(0, h - 22*mm, w, 22*mm, fill=1, stroke=0)
canvas.setFillColor(WHITE)
canvas.setFont("Helvetica-Bold", 9)
canvas.drawString(15*mm, h - 13*mm, "KNRUHS Biochemistry Paper I - Quick Reference")
canvas.setFont("Helvetica", 8)
canvas.drawRightString(w - 15*mm, h - 13*mm, f"Page {doc.page}")
canvas.setFillColor(ACCENT)
canvas.rect(0, 0, w, 6*mm, fill=1, stroke=0)
canvas.setFillColor(WHITE)
canvas.setFont("Helvetica", 7)
canvas.drawCentredString(w/2, 2*mm, "KNRUHS First MBBS | August 2026 Exam | High-Yield Reference")
canvas.restoreState()
def on_cover(canvas, doc):
w, h = A4
canvas.saveState()
canvas.setFillColor(DARK_BLUE)
canvas.rect(0, 0, w, h, fill=1, stroke=0)
# Top accent strip
canvas.setFillColor(ACCENT)
canvas.rect(0, h - 8*mm, w, 8*mm, fill=1, stroke=0)
# Bottom strip
canvas.setFillColor(MED_BLUE)
canvas.rect(0, 0, w, 20*mm, fill=1, stroke=0)
canvas.restoreState()
# ββ Build document ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=1.8*cm, leftMargin=1.8*cm,
topMargin=2.8*cm, bottomMargin=1.8*cm,
title="KNRUHS Biochemistry Paper I - Quick Reference",
author="Orris AI Study Guide",
)
story = []
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# COVER PAGE
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(Spacer(1, 3*cm))
story.append(Paragraph("KNRUHS", cover_title))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Biochemistry Paper I", cover_title))
story.append(Spacer(1, 0.5*cm))
story.append(Paragraph("HIGH-YIELD QUICK REFERENCE", S("CT2", fontSize=18,
fontName="Helvetica-Bold", textColor=ACCENT, alignment=TA_CENTER)))
story.append(Spacer(1, 1.2*cm))
story.append(Paragraph("First MBBS | August 2026 Exam", cover_sub))
story.append(Spacer(1, 0.4*cm))
story.append(Paragraph("Kaloji Narayana Rao University of Health Sciences", cover_sub))
story.append(Spacer(1, 2*cm))
# Topics covered box
topics_data = [[
Paragraph("Topics Covered", S("TCH", fontSize=11, fontName="Helvetica-Bold",
textColor=DARK_BLUE, alignment=TA_CENTER)),
]]
topics_body = [
["1. Enzymes", "2. Carbohydrate Metabolism"],
["3. Biological Oxidation / ETC", "4. Lipid Metabolism"],
["5. Vitamins", "6. Lab Tests & Clinical Values"],
]
cover_table_data = [[Paragraph(a, S("ct", fontSize=10, fontName="Helvetica",
textColor=WHITE, leading=14)),
Paragraph(b, S("ct2", fontSize=10, fontName="Helvetica",
textColor=WHITE, leading=14))]
for a, b in topics_body]
ct = Table(cover_table_data, colWidths=[8.5*cm, 8.5*cm])
ct.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), MED_BLUE),
("BOX", (0,0), (-1,-1), 1, LIGHT_BLUE),
("INNERGRID", (0,0), (-1,-1), 0.5, LIGHT_BLUE),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING",(0,0),(-1,-1), 7),
("LEFTPADDING",(0,0), (-1,-1), 10),
]))
story.append(ct)
story.append(Spacer(1, 1.5*cm))
story.append(Paragraph(
"Pass criteria: 40% in theory β’ Focus on LAQ + SAQ high-repeats β’ Exam: 13 August 2026",
cover_note))
story.append(PageBreak())
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# CHAPTER 1: ENZYMES
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(chapter_banner("CHAPTER 1: ENZYMES (Most Repeated - High LAQ Potential)"))
story.append(sp())
story.append(Paragraph(B("Definition & Properties"), sec_head))
story.append(bp("Enzymes are biological catalysts (mostly proteins) that speed up reactions without being consumed"))
story.append(bp("Properties: specific, efficient, regulated, work at mild temp/pH, saturable (Km concept)"))
story.append(spp())
story.append(Paragraph(B("IUB Classification (6 Classes) - Must Know"), sec_head))
story.append(make_table(
["Class", "Reaction Type", "Key Example"],
[
["1. Oxidoreductases", "Oxidation-reduction (redox)", "LDH, succinate dehydrogenase"],
["2. Transferases", "Transfer functional groups", "Transaminases (ALT, AST), kinases"],
["3. Hydrolases", "Hydrolysis reactions", "Lipase, amylase, peptidases"],
["4. Lyases", "Add/remove groups (non-hydrolysis)", "Pyruvate decarboxylase, aldolase"],
["5. Isomerases", "Interconvert isomers", "Phosphoglucose isomerase, triose phosphate isomerase"],
["6. Ligases", "Join molecules using ATP", "Acetyl-CoA carboxylase, DNA ligase"],
],
col_widths=[3.5*cm, 6.5*cm, 7.5*cm],
hdr_color=MED_BLUE,
))
story.append(spp())
story.append(Paragraph(B("Enzyme Kinetics - Michaelis-Menten"), sec_head))
story.append(info_box(
B("Key formula: ") + "v = Vmax Γ [S] / (Km + [S])<br/>"
+ B("Km") + " = substrate concentration at half Vmax. "
+ B("Low Km") + " = high affinity. "
+ B("Vmax") + " = maximum velocity (all enzyme sites occupied).<br/>"
+ "Lineweaver-Burk plot: double reciprocal (1/v vs 1/[S]) β x-intercept = -1/Km, y-intercept = 1/Vmax",
bg=LIGHT_BLUE
))
story.append(spp())
story.append(Paragraph(B("Enzyme Inhibition - Most Asked SAQ/LAQ"), sec_head))
story.append(make_table(
["Type", "Effect on Km", "Effect on Vmax", "Example", "Reversal"],
[
["Competitive", "Increased (β)", "Unchanged", "Statins inhibit HMG-CoA reductase; Methotrexate inhibits DHFR", "Yes (excess substrate)"],
["Non-competitive", "Unchanged", "Decreased (β)", "Heavy metals (Hg, Pb) on -SH groups; Cyanide on cytochrome oxidase", "No"],
["Uncompetitive", "Decreased (β)", "Decreased (β)", "Binds only enzyme-substrate complex", "No"],
["Irreversible", "β", "β", "Organophosphates inhibit acetylcholinesterase", "No"],
],
col_widths=[3*cm, 2.5*cm, 2.5*cm, 6*cm, 3.5*cm],
hdr_color=ACCENT,
))
story.append(spp())
story.append(Paragraph(B("Isoenzymes"), sec_head))
story.append(info_box(
B("Definition:") + " Multiple forms of same enzyme, same reaction, different structure/properties.<br/>"
+ B("LDH isoenzymes:") + " LDH-1 (heart) predominates after MI β most important clinically.<br/>"
+ B("CK isoenzymes:") + " CK-MM (muscle), CK-MB (heart - best early MI marker), CK-BB (brain).<br/>"
+ B("Alkaline Phosphatase (ALP):") + " Bone ALPβ in Paget's; Liver ALPβ in cholestasis.",
bg=LIGHT_GREEN
))
story.append(spp())
story.append(Paragraph(B("Allosteric Enzymes"), sec_head))
story.append(bp("Have regulatory (allosteric) sites separate from active site"))
story.append(bp("Sigmoidal kinetics (NOT Michaelis-Menten hyperbola)"))
story.append(bp("Positive effectors: activate enzyme (e.g., AMP activates PFK-1)"))
story.append(bp("Negative effectors: inhibit enzyme (e.g., ATP inhibits PFK-1, citrate inhibits PFK-1)"))
story.append(bp(B("Key allosteric enzyme: Phosphofructokinase-1 (PFK-1)") + " β rate-limiting step of glycolysis"))
story.append(spp())
story.append(Paragraph(B("Coenzymes - Quick Reference"), sec_head))
story.append(make_table(
["Coenzyme", "Derived from", "Function"],
[
["NAD+/NADH", "Niacin (B3)", "Accepts H in oxidation reactions (ETC, glycolysis, TCA)"],
["FAD/FADH2", "Riboflavin (B2)", "Accepts H in oxidation (succinate DH, beta-oxidation)"],
["CoA (Coenzyme A)", "Pantothenic acid (B5)", "Acyl group carrier (acetyl-CoA, succinyl-CoA)"],
["TPP (Thiamine pyrophosphate)", "Thiamine (B1)", "Decarboxylation (pyruvate DH, alpha-KG DH)"],
["PLP (Pyridoxal phosphate)", "Pyridoxine (B6)", "Transamination, decarboxylation of amino acids"],
["Biotin", "Biotin (B7)", "CO2 fixation/carboxylation (pyruvate carboxylase, ACC)"],
["THF (Tetrahydrofolate)", "Folate (B9)", "One-carbon transfer (nucleotide synthesis)"],
],
col_widths=[5*cm, 4.5*cm, 8*cm],
))
story.append(PageBreak())
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# CHAPTER 2: CARBOHYDRATE METABOLISM
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(chapter_banner("CHAPTER 2: CARBOHYDRATE METABOLISM", color=GREEN))
story.append(sp())
story.append(Paragraph(B("Glycolysis - 10 Steps (Embden-Meyerhof Pathway)"), sec_head))
story.append(info_box(
B("Location:") + " Cytoplasm (cytosol) | "
+ B("Net yield:") + " 2 ATP + 2 NADH + 2 Pyruvate (per glucose)<br/>"
+ B("Total aerobic yield:") + " 2 ATP (substrate level) + 2 NADH Γ 2.5 = 5 ATP β Total ~7 ATP from glycolysis alone",
bg=LIGHT_GREEN
))
story.append(make_table(
["Step", "Substrate β Product", "Enzyme", "Notes"],
[
["1", "Glucose β Glucose-6-P", "Hexokinase (Glucokinase in liver)", C("Irreversible, uses 1 ATP")],
["3", "Fructose-6-P β Fructose-1,6-bisP", "Phosphofructokinase-1 (PFK-1)", C("RATE-LIMITING STEP β irreversible")],
["4", "Fructose-1,6-bisP β DHAP + GAP", "Aldolase", "Splits 6C into two 3C"],
["6", "GAP β 1,3-bisPG", "GAP dehydrogenase", "Generates NADH"],
["7", "1,3-bisPG β 3-PG", "Phosphoglycerate kinase", "Generates 1 ATP (substrate level)"],
["10", "PEP β Pyruvate", "Pyruvate kinase", C("Irreversible, generates ATP")],
],
col_widths=[1.2*cm, 5.3*cm, 5*cm, 6*cm],
))
story.append(spp())
story.append(Paragraph(B("TCA Cycle (Krebs Cycle)"), sec_head))
story.append(info_box(
B("Location:") + " Mitochondrial matrix | "
+ B("Input:") + " 1 Acetyl-CoA (2C) + Oxaloacetate (4C) β Citrate (6C)<br/>"
+ B("Per turn yield:") + " 3 NADH + 1 FADH2 + 1 GTP + 2 CO2<br/>"
+ B("ATP yield per Acetyl-CoA:") + " 3Γ2.5 (NADH) + 1Γ1.5 (FADH2) + 1 = 10 ATP",
bg=LIGHT_BLUE
))
story.append(make_table(
["Step", "Enzyme", "Coenzyme", "Clinical Note"],
[
["Pyruvate β Acetyl-CoA", "Pyruvate dehydrogenase complex", "TPP, CoA, FAD, NAD+, Lipoate", "Deficient in B1 deficiency β Lactic acidosis"],
["Isocitrate β Ξ±-KG", "Isocitrate dehydrogenase", "NAD+", "Rate-limiting step of TCA"],
["Ξ±-KG β Succinyl-CoA", "Ξ±-KG dehydrogenase", "TPP, CoA, NAD+", "Similar to pyruvate DH; requires B1"],
["Succinate β Fumarate", "Succinate dehydrogenase", "FAD", "Only TCA enzyme in inner mitochondrial membrane"],
["Malate β OAA", "Malate dehydrogenase", "NAD+", "Regenerates OAA for next turn"],
],
col_widths=[4*cm, 4.5*cm, 3.5*cm, 5.5*cm],
))
story.append(spp())
story.append(Paragraph(B("Gluconeogenesis"), sec_head))
story.append(bp(B("Location:") + " Liver (main) + kidney cortex"))
story.append(bp(B("Substrates:") + " Lactate, Alanine, Glycerol, Glutamine (remember: LAGG)"))
story.append(bp(B("3 irreversible bypass enzymes") + " (reverse glycolysis at 3 irreversible steps):"))
story.append(bp(" 1. Pyruvate β OAA β PEP: Pyruvate carboxylase + PEPCK"))
story.append(bp(" 2. Fructose-1,6-bisP β Fructose-6-P: Fructose-1,6-bisphosphatase"))
story.append(bp(" 3. Glucose-6-P β Glucose: Glucose-6-phosphatase (absent in muscle)"))
story.append(bp(B("Stimulated by:") + " Glucagon, Cortisol | " + B("Inhibited by:") + " Insulin"))
story.append(spp())
story.append(Paragraph(B("Glycogen Metabolism"), sec_head))
story.append(make_table(
["Pathway", "Key Enzyme", "Regulator", "Location"],
[
["Glycogen Synthesis", "Glycogen synthase (rate-limiting)", "Activated by insulin", "Liver + muscle"],
["Glycogenolysis", "Glycogen phosphorylase (rate-limiting)", "Activated by glucagon/epinephrine", "Liver β releases glucose to blood"],
["Branching", "Branching enzyme", "β", "Creates Ξ±-1,6 branches"],
["Debranching", "Debranching enzyme", "β", "Required for complete breakdown"],
],
col_widths=[4.5*cm, 4.5*cm, 4*cm, 4.5*cm],
))
story.append(spp())
story.append(Paragraph(B("Glycogen Storage Diseases - High Yield"), sec_head))
story.append(make_table(
["Disease", "Deficient Enzyme", "Organ", "Feature"],
[
["Von Gierke (Type I)", "Glucose-6-phosphatase", "Liver, kidney", "Hepatomegaly, severe hypoglycemia, lactic acidosis"],
["Pompe (Type II)", "Lysosomal acid maltase (Ξ±-1,4 glucosidase)", "Heart, muscle", "Cardiomegaly, myopathy β only lysosomal GSD"],
["Cori (Type III)", "Debranching enzyme", "Liver, muscle", "Milder than Von Gierke"],
["McArdle (Type V)", "Muscle phosphorylase", "Muscle only", "Exercise-induced cramps, myoglobinuria"],
["Her's (Type VI)", "Liver phosphorylase", "Liver", "Mild hepatomegaly"],
],
col_widths=[3.8*cm, 4.5*cm, 3*cm, 6.2*cm],
hdr_color=PURPLE,
))
story.append(spp())
story.append(Paragraph(B("Pentose Phosphate Pathway (HMP Shunt)"), sec_head))
story.append(bp(B("Location:") + " Cytosol | " + B("Main products:") + " NADPH + Ribose-5-phosphate"))
story.append(bp(B("NADPH uses:") + " Fatty acid synthesis, cholesterol synthesis, glutathione reduction (antioxidant)"))
story.append(bp(B("Rate-limiting enzyme:") + " Glucose-6-phosphate dehydrogenase (G6PD)"))
story.append(bp(B("G6PD deficiency:") + " X-linked, Hemolytic anemia on oxidant stress (primaquine, fava beans), Heinz bodies"))
story.append(spp())
story.append(Paragraph(B("Diabetes Mellitus - Biochemical Basis"), sec_head))
story.append(make_table(
["Feature", "Type 1 DM", "Type 2 DM"],
[
["Mechanism", "Autoimmune destruction of Ξ²-cells β absolute insulin deficiency", "Insulin resistance + relative insulin deficiency"],
["Ketoacidosis", "Common (DKA)", "Rare"],
["HbA1c", "Reflects 3-month avg blood glucose (glycated Hb)", "Same β used to monitor control"],
["Diagnosis", "FBG β₯126 mg/dL; OGTT β₯200 mg/dL; HbA1c β₯6.5%", "Same criteria"],
["Hyperglycemia cause", "No glucose entry into cells (no insulin)", "Glucose entry impaired (receptor resistance)"],
],
col_widths=[3.5*cm, 7*cm, 7*cm],
hdr_color=ACCENT,
))
story.append(PageBreak())
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# CHAPTER 3: BIOLOGICAL OXIDATION / ETC
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(chapter_banner("CHAPTER 3: BIOLOGICAL OXIDATION & ETC", color=PURPLE))
story.append(sp())
story.append(Paragraph(B("Electron Transport Chain (ETC)"), sec_head))
story.append(info_box(
B("Location:") + " Inner mitochondrial membrane<br/>"
+ B("Flow of electrons:") + " NADH β Complex I β CoQ β Complex III β Cyt c β Complex IV β O2<br/>"
+ "FADH2 β Complex II β CoQ (bypasses Complex I β 1.5 ATP instead of 2.5 ATP)",
bg=LIGHT_PURPLE
))
story.append(make_table(
["Complex", "Name", "Accepts/Donates", "Protons pumped"],
[
["Complex I", "NADH-CoQ oxidoreductase", "NADH β CoQ", "4 H+ pumped"],
["Complex II", "Succinate-CoQ oxidoreductase", "FADH2 β CoQ", "0 (no pumping)"],
["Complex III", "CoQ-Cyt c oxidoreductase", "CoQ β Cyt c", "4 H+ pumped"],
["Complex IV", "Cyt c oxidase", "Cyt c β O2", "2 H+ pumped"],
["Complex V", "ATP synthase (F0F1 ATPase)", "Proton gradient β ATP", "3 H+ per ATP"],
],
col_widths=[2.5*cm, 5.5*cm, 4.5*cm, 5*cm],
hdr_color=PURPLE,
))
story.append(spp())
story.append(Paragraph(B("ATP Yield Summary"), sec_head))
story.append(make_table(
["Source", "Units", "ATP per unit", "Total ATP"],
[
["NADH (from glycolysis, cytosolic)", "2", "1.5 (malate-aspartate) or 1.5", "3.0"],
["Pyruvate dehydrogenase NADH", "2", "2.5", "5.0"],
["TCA cycle NADH", "6", "2.5", "15.0"],
["TCA cycle FADH2", "2", "1.5", "3.0"],
["Substrate level phosphorylation", "4 (2 from glycolysis + 2 GTP from TCA)", "1", "4.0"],
[B("TOTAL"), "", "", B("~30-32 ATP per glucose")],
],
col_widths=[7*cm, 2.5*cm, 3*cm, 5*cm],
hdr_color=MED_BLUE,
))
story.append(spp())
story.append(Paragraph(B("Inhibitors & Uncouplers - Important for Exams"), sec_head))
story.append(make_table(
["Agent", "Site of Action", "Effect"],
[
["Rotenone, Amytal", "Complex I", "Block electron flow from NADH β CoQ"],
["Antimycin A", "Complex III", "Block CoQ β Cyt c"],
["Cyanide (CN-), CO, Azide", "Complex IV", "Block Cyt c β O2 (most toxic β inhibit O2 use)"],
["Oligomycin", "Complex V (F0)", "Block proton channel β no ATP synthesis"],
["DNP (Dinitrophenol)", "Inner membrane uncoupler", "Dissipates proton gradient β heat, no ATP (used in weight loss β dangerous)"],
["Thermogenin (UCP1)", "Brown adipose tissue", "Natural uncoupler β heat generation (non-shivering thermogenesis)"],
],
col_widths=[4*cm, 4.5*cm, 9*cm],
hdr_color=ACCENT,
))
story.append(PageBreak())
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# CHAPTER 4: LIPID METABOLISM
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(chapter_banner("CHAPTER 4: LIPID METABOLISM", color=ORANGE))
story.append(sp())
story.append(Paragraph(B("Beta-Oxidation of Fatty Acids"), sec_head))
story.append(info_box(
B("Location:") + " Mitochondrial matrix | "
+ B("Activation:") + " Fatty acid β Acyl-CoA (in cytosol, uses 2 ATP equivalents)<br/>"
+ B("Entry into mitochondria:") + " Carnitine shuttle (rate-limiting: carnitine acyltransferase I) β inhibited by Malonyl-CoA<br/>"
+ B("Per cycle yields:") + " 1 NADH + 1 FADH2 + 1 Acetyl-CoA",
bg=YELLOW_BG
))
story.append(Paragraph(B("ATP from Palmitate (C16:0) - Exam Favourite"), sec_head))
story.append(make_table(
["Step", "Calculation", "ATP"],
[
["Activation", "Palmitate β Palmitoyl-CoA", "-2 ATP"],
["Beta-oxidation cycles", "7 cycles β 7 NADH + 7 FADH2 + 8 Acetyl-CoA", "7Γ2.5 + 7Γ1.5 = 17.5 + 10.5 = 28 ATP"],
["Acetyl-CoA via TCA", "8 Acetyl-CoA Γ 10 ATP each", "80 ATP"],
[B("NET TOTAL"), "", B("106 ATP (or ~129 using older P/O ratios)")],
],
col_widths=[5*cm, 7.5*cm, 5*cm],
hdr_color=ORANGE,
))
story.append(spp())
story.append(Paragraph(B("Ketone Body Metabolism"), sec_head))
story.append(make_table(
["Aspect", "Detail"],
[
["Synthesis site", "Liver (mitochondria) β ONLY liver synthesizes ketones"],
["Utilization", "All tissues EXCEPT liver (brain uses during starvation)"],
["Conditions causing ketosis", "Starvation, DM Type 1, prolonged fasting, high-fat diet"],
["Three ketone bodies", "Acetoacetate, Ξ²-hydroxybutyrate (most abundant), Acetone (exhaled)"],
["Rate-limiting enzyme", "HMG-CoA synthase (mitochondrial)"],
["Key enzyme step", "HMG-CoA β Acetoacetate by HMG-CoA lyase"],
["Clinical: DKA", "Acetone breath (fruity), Kussmaul breathing, anion gap acidosis"],
],
col_widths=[5*cm, 12.5*cm],
hdr_color=ORANGE,
))
story.append(spp())
story.append(Paragraph(B("Fatty Acid Synthesis"), sec_head))
story.append(bp(B("Location:") + " Cytosol (opposite of beta-oxidation which is mitochondrial)"))
story.append(bp(B("Starting material:") + " Acetyl-CoA (must be transported out of mitochondria via citrate shuttle)"))
story.append(bp(B("Rate-limiting enzyme:") + " Acetyl-CoA Carboxylase (ACC) β converts Acetyl-CoA β Malonyl-CoA"))
story.append(bp(B("Requires:") + " NADPH (from HMP shunt), Biotin (for ACC), ACP (acyl carrier protein)"))
story.append(bp(B("Inhibits beta-oxidation:") + " Malonyl-CoA inhibits carnitine acyltransferase I (prevents FA entry into mitochondria)"))
story.append(spp())
story.append(Paragraph(B("Cholesterol Metabolism"), sec_head))
story.append(info_box(
B("Synthesis:") + " All nucleated cells; liver is main site<br/>"
+ B("Rate-limiting enzyme:") + " HMG-CoA reductase (3-hydroxy-3-methylglutaryl CoA reductase)<br/>"
+ B("Statins") + " (atorvastatin, rosuvastatin) competitively inhibit HMG-CoA reductase β βcholesterol<br/>"
+ B("Regulation:") + " Inhibited by cholesterol, bile salts; Activated when cholesterol is low",
bg=YELLOW_BG
))
story.append(spp())
story.append(Paragraph(B("Lipoproteins - Very High Yield SAQ"), sec_head))
story.append(make_table(
["Lipoprotein", "Origin", "Main Lipid", "Function", "Apolipoprotein"],
[
["Chylomicrons", "Intestine", "Dietary TG (88%)", "Transport dietary fat to tissues", "Apo B-48, C-II, E"],
["VLDL", "Liver", "Endogenous TG (55%)", "Transport liver TG to tissues", "Apo B-100, C-II, E"],
["IDL", "From VLDL", "TG + Cholesterol", "Intermediate (to LDL)", "Apo B-100, E"],
["LDL", "From IDL/VLDL", "Cholesterol (45%) β 'bad'", "Deliver cholesterol to cells", "Apo B-100"],
["HDL", "Liver + intestine", "Protein + Phospholipid β 'good'", "Reverse cholesterol transport", "Apo A-I, A-II"],
],
col_widths=[2.5*cm, 2.5*cm, 3*cm, 5.5*cm, 4*cm],
hdr_color=MED_BLUE,
))
story.append(spp())
story.append(info_box(
B("Remember:") + " Lipoprotein lipase (LPL) is activated by Apo C-II β hydrolyzes TG in chylomicrons/VLDL. "
+ "LCAT (lecithin-cholesterol acyltransferase) esterifies cholesterol in HDL. "
+ B("Abetalipoproteinemia:") + " Absence of Apo B β no chylomicrons/VLDL β fat malabsorption, acanthocytosis.",
bg=LIGHT_BLUE
))
story.append(PageBreak())
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# CHAPTER 5: VITAMINS
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(chapter_banner("CHAPTER 5: VITAMINS", color=colors.HexColor("#117A65")))
story.append(sp())
story.append(Paragraph(B("Water-Soluble Vitamins (B-complex + Vitamin C)"), sec_head))
story.append(make_table(
["Vitamin", "Coenzyme", "Key Function", "Deficiency", "Clinical Features"],
[
["B1 Thiamine", "TPP (thiamine pyrophosphate)", "Pyruvate DH, Ξ±-KG DH, Transketolase", "Beriberi, Wernicke-Korsakoff", "Wet beriberi (heart failure), Dry beriberi (neuropathy), Wernicke's (confusion, ataxia, ophthalmoplegia)"],
["B2 Riboflavin", "FMN, FAD", "ETC (Complex I, II), beta-oxidation", "Ariboflavinosis", "Cheilosis, angular stomatitis, glossitis, corneal vascularization"],
["B3 Niacin", "NAD+, NADP+", ">400 enzymes; glycolysis, TCA, ETC", "Pellagra", "3 Ds: Dermatitis, Diarrhea, Dementia (4th D = Death)"],
["B5 Pantothenic acid", "CoA, ACP", "Acyl group transfer, fatty acid synthesis", "Burning feet syndrome", "Very rare; burning sensation in feet"],
["B6 Pyridoxine", "PLP (pyridoxal phosphate)", "Transamination, decarboxylation, glycogen phosphorylase", "Sideroblastic anemia", "Peripheral neuropathy; deficiency in INH therapy (give B6 supplement)"],
["B7 Biotin", "Biocytin", "Carboxylation (ACC, pyruvate carboxylase)", "Raw egg white ingestion (avidin binds biotin)", "Dermatitis, alopecia, neurological symptoms"],
["B9 Folate", "THF (tetrahydrofolate)", "One-carbon transfer, nucleotide synthesis, amino acid metabolism", "Megaloblastic anemia, Neural tube defects", "Macrocytic anemia; NTD (spina bifida) in pregnancy; give folate supplements periconceptionally"],
["B12 Cobalamin", "Methylcobalamin, Adenosylcobalamin", "Methionine synthesis, odd-chain FA oxidation (propionyl-CoA)", "Pernicious anemia, Subacute combined degeneration", "Megaloblastic anemia + neurological symptoms (posterior/lateral column); requires IF for absorption"],
["C Ascorbic acid", "β", "Collagen synthesis (hydroxylation of Pro & Lys), antioxidant, Fe absorption", "Scurvy", "Perifollicular hemorrhages, corkscrew hairs, gum bleeding, poor wound healing"],
],
col_widths=[2.2*cm, 2.8*cm, 4*cm, 3.5*cm, 5*cm],
hdr_color=colors.HexColor("#117A65"),
))
story.append(spp())
story.append(Paragraph(B("Fat-Soluble Vitamins (A, D, E, K)"), sec_head))
story.append(make_table(
["Vitamin", "Active Form", "Key Function", "Deficiency", "Toxicity (if excess)"],
[
["A (Retinol)", "Retinal (vision), Retinoic acid (gene expression)", "Night vision (rhodopsin), epithelial maintenance, immune function", "Night blindness, Bitot's spots, Xerophthalmia, Keratomalacia", "Teratogenic, Raised ICP, Liver damage"],
["D (Calciferol)", "1,25-(OH)2 D3 (Calcitriol) β activated in kidney", "Ca2+ and PO4 absorption; bone mineralization", "Rickets (children), Osteomalacia (adults)", "Hypercalcemia, Metastatic calcification"],
["E (Tocopherol)", "Ξ±-Tocopherol", "Antioxidant (protects PUFA in membranes)", "Hemolytic anemia in premature infants, Ataxia", "Generally non-toxic"],
["K (Phylloquinone)", "Menaquinone (K2 β gut bacteria)", "Carboxylation of clotting factors II, VII, IX, X (GFPC)", "Bleeding tendency, Prolonged PT", "Hemolytic anemia (K3/menadione in infants)"],
],
col_widths=[2.2*cm, 3.8*cm, 4*cm, 4*cm, 3.5*cm],
hdr_color=colors.HexColor("#148F77"),
))
story.append(spp())
story.append(info_box(
B("Memory tip for fat-soluble vitamins toxicity:") + " A and D are toxic in excess. "
+ B("Vitamin D synthesis:") + " Skin (UV β D3) β Liver (25-OH-D3) β Kidney (1,25-(OH)2-D3 = calcitriol, active form). "
+ B("Vitamin K and warfarin:") + " Warfarin inhibits Vitamin K epoxide reductase β inhibits clotting factor synthesis.",
bg=LIGHT_GREEN
))
story.append(PageBreak())
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# CHAPTER 6: LAB TESTS & CLINICAL BIOCHEMISTRY
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(chapter_banner("CHAPTER 6: LAB TESTS & CLINICAL BIOCHEMISTRY", color=colors.HexColor("#2C3E50")))
story.append(sp())
story.append(Paragraph(B("Liver Function Tests (LFTs)"), sec_head))
story.append(make_table(
["Test", "Normal Value", "Elevated in", "Significance"],
[
["ALT (SGPT)", "0-40 U/L", "Hepatocellular damage", "Most specific for liver cell necrosis (viral hepatitis, NAFLD)"],
["AST (SGOT)", "0-40 U/L", "Liver, heart, muscle damage", "Less specific; AST:ALT >2:1 suggests alcoholic hepatitis"],
["ALP (Alkaline Phosphatase)", "30-120 U/L", "Cholestasis, bone disease, pregnancy", "ββ in obstructive jaundice; bone ALP in Paget's disease"],
["GGT (Ξ³-GT)", "0-30 U/L", "Alcohol abuse, cholestasis", "Sensitive marker for alcohol consumption"],
["Total Bilirubin", "<1.2 mg/dL", "Jaundice (>2.5 mg/dL visible)", "Total = Direct (conjugated) + Indirect (unconjugated)"],
["Direct Bilirubin", "<0.4 mg/dL", "Obstructive/hepatic jaundice", "Conjugated with glucuronic acid in liver"],
["Albumin", "3.5-5.0 g/dL", "Decreased in chronic liver disease", "Reflects synthetic function; TΒ½ = 20 days"],
["PT/INR", "12-16 sec (INR <1.2)", "Liver disease, Vit K deficiency", "Tests extrinsic pathway (factors II,V,VII,X)"],
],
col_widths=[3.5*cm, 3*cm, 4*cm, 7*cm],
hdr_color=colors.HexColor("#2C3E50"),
))
story.append(spp())
story.append(Paragraph(B("Cardiac Biomarkers"), sec_head))
story.append(make_table(
["Marker", "Rise", "Peak", "Return to Normal", "Significance"],
[
["Troponin I/T", "3-6 hrs", "12-24 hrs", "5-14 days", "GOLD STANDARD for MI; most sensitive and specific"],
["CK-MB", "4-8 hrs", "12-24 hrs", "2-3 days", "Good for reinfarction (normalizes faster than Trop)"],
["LDH-1", "12-24 hrs", "2-3 days", "10-14 days", "Useful when patient presents late (>24 hrs)"],
["Myoglobin", "1-2 hrs", "4-8 hrs", "24 hrs", "Earliest marker but not specific (also in muscle injury)"],
],
col_widths=[3*cm, 2.5*cm, 2.5*cm, 3.5*cm, 6*cm],
hdr_color=ACCENT,
))
story.append(spp())
story.append(Paragraph(B("Blood Glucose & Diabetes Tests"), sec_head))
story.append(make_table(
["Test", "Normal", "Pre-diabetes", "Diabetes"],
[
["Fasting Blood Glucose", "<100 mg/dL", "100-125 mg/dL", "β₯126 mg/dL (on 2 occasions)"],
["2-hr OGTT (75g glucose)", "<140 mg/dL", "140-199 mg/dL", "β₯200 mg/dL"],
["Random Blood Glucose", "β", "β", "β₯200 mg/dL + symptoms"],
["HbA1c", "<5.7%", "5.7-6.4%", "β₯6.5%"],
],
col_widths=[5*cm, 3.5*cm, 3.5*cm, 5.5*cm],
hdr_color=GREEN,
))
story.append(spp())
story.append(Paragraph(B("Renal Function Tests"), sec_head))
story.append(make_table(
["Test", "Normal Value", "Elevated in"],
[
["Serum Creatinine", "0.6-1.2 mg/dL (male)", "Renal failure, muscle disease"],
["Blood Urea Nitrogen (BUN)", "10-20 mg/dL", "Renal failure, high protein diet, dehydration"],
["BUN:Creatinine ratio", "10:1 to 20:1", ">20: Pre-renal azotemia | <10: Liver disease"],
["Serum Uric Acid", "3.5-7.0 mg/dL (male)", "Gout, renal failure, tumor lysis syndrome"],
["GFR (eGFR)", ">90 mL/min/1.73m2", "Decreased in CKD (staging: G1-G5)"],
],
col_widths=[4.5*cm, 4.5*cm, 8.5*cm],
hdr_color=MED_BLUE,
))
story.append(spp())
story.append(Paragraph(B("Lipid Profile Normal Values"), sec_head))
story.append(make_table(
["Parameter", "Desirable", "Borderline High", "High Risk"],
[
["Total Cholesterol", "<200 mg/dL", "200-239 mg/dL", "β₯240 mg/dL"],
["LDL Cholesterol", "<100 mg/dL (optimal)", "130-159 mg/dL", "β₯160 mg/dL"],
["HDL Cholesterol", ">60 mg/dL (protective)", "40-60 mg/dL", "<40 mg/dL (risk factor)"],
["Triglycerides", "<150 mg/dL", "150-199 mg/dL", "β₯200 mg/dL"],
],
col_widths=[4.5*cm, 4*cm, 4*cm, 5*cm],
hdr_color=MED_BLUE,
))
story.append(spp())
# Last page: Quick Revision Summary
story.append(PageBreak())
story.append(chapter_banner("QUICK REVISION: KEY MNEMONICS & EXAM TIPS", color=colors.HexColor("#784212")))
story.append(sp())
story.append(Paragraph(B("Rate-Limiting Enzymes - Must Memorize"), sec_head))
story.append(make_table(
["Pathway", "Rate-Limiting Enzyme", "Regulated by"],
[
["Glycolysis", "Phosphofructokinase-1 (PFK-1)", "AMP, ADP (activate); ATP, Citrate (inhibit)"],
["Gluconeogenesis", "Fructose-1,6-bisphosphatase", "Citrate (activates); AMP, Fructose-2,6-bisP (inhibit)"],
["TCA cycle", "Isocitrate dehydrogenase", "ADP, Ca2+ (activate); ATP, NADH (inhibit)"],
["Fatty acid synthesis", "Acetyl-CoA carboxylase (ACC)", "Citrate (activates); Palmitoyl-CoA (inhibit)"],
["Beta-oxidation", "Carnitine acyltransferase I", "Malonyl-CoA (inhibits)"],
["Ketone synthesis", "HMG-CoA synthase (mitochondrial)", "β"],
["Cholesterol synthesis", "HMG-CoA reductase", "Cholesterol, bile salts (inhibit); Insulin (activates)"],
["Glycogen synthesis", "Glycogen synthase", "Insulin (activates); Glucagon/Epinephrine (inhibit)"],
["Glycogenolysis", "Glycogen phosphorylase", "AMP, Ca2+, Epinephrine (activate); ATP, G-6-P (inhibit)"],
["HMP shunt", "G6PD (Glucose-6-phosphate DH)", "NADP+ (activates); NADPH (inhibits)"],
],
col_widths=[4.5*cm, 6*cm, 7*cm],
hdr_color=colors.HexColor("#784212"),
))
story.append(spp())
story.append(Paragraph(B("Mnemonics"), sec_head))
data = [
[Paragraph(B("Fat-soluble vitamins"), table_hdr),
Paragraph(B("Gluconeogenic substrates"), table_hdr),
Paragraph(B("Pellagra 4 D's"), table_hdr)],
[Paragraph("'Fat-soluble = ADEK'\nAbsorbed with fat, stored in liver/fat tissue, toxic in excess (A, D)", table_cel),
Paragraph("'LAGG': Lactate, Alanine, Glycerol, Glutamine", table_cel),
Paragraph("Dermatitis, Diarrhea, Dementia, Death\n(Niacin B3 deficiency)", table_cel)],
]
mnem_table = Table(data, colWidths=[5.8*cm, 5.8*cm, 5.9*cm])
mnem_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#784212")),
("ROWBACKGROUNDS",(0,1), (-1,-1), [YELLOW_BG]),
("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#784212")),
("INNERGRID", (0,0), (-1,-1), 0.3, colors.grey),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(mnem_table)
story.append(spp())
story.append(Paragraph(B("Exam Strategy - Last Minute Tips"), sec_head))
story.append(info_box(
B("LAQ (10 marks) format:") + " Introduction (2 lines) β Classification/Steps (diagram) β Regulation β Clinical significance = Full marks<br/>"
+ B("SAQ (5 marks):") + " Define β List key points in bullets β 1 diagram if applicable β Mention ONE clinical correlate<br/>"
+ B("VSAQ (2 marks):") + " 2 precise sentences; no waffle<br/>"
+ B("Attempt ALL questions") + " β partial marks are awarded; no negative marking<br/>"
+ B("Draw diagrams:") + " Glycolysis, TCA cycle, ETC, Beta-oxidation, Lipoprotein structure β even rough diagrams get marks",
bg=LIGHT_GREEN
))
story.append(spp())
story.append(info_box(
"π
" + B("Exam: 13 August 2026 | 10:00 AM - 01:00 PM | Report by 09:00 AM") + "<br/>"
+ "Pass: 40% in theory (both papers aggregate) | Good luck!",
bg=LIGHT_BLUE, border=DARK_BLUE
))
# ββ Build ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def make_frames(doc):
from reportlab.platypus import Frame, PageTemplate
cover_frame = Frame(0, 0, A4[0], A4[1], leftPadding=1.8*cm,
rightPadding=1.8*cm, topPadding=1.5*cm,
bottomPadding=1.5*cm, id="cover")
inner_frame = Frame(1.8*cm, 1.8*cm, A4[0]-3.6*cm, A4[1]-4.6*cm,
id="inner")
return [
PageTemplate(id="Cover", frames=[cover_frame], onPage=on_cover),
PageTemplate(id="Inner", frames=[inner_frame], onPage=on_page),
]
doc.addPageTemplates(make_frames(doc))
# Insert template switches
story.insert(0, doc.pageTemplates[0])
# After cover page break, switch to Inner
cover_end = None
for i, item in enumerate(story):
if isinstance(item, PageBreak):
cover_end = i
break
from reportlab.platypus import NextPageTemplate
if cover_end is not None:
story.insert(cover_end, NextPageTemplate("Inner"))
doc.build(story)
print("PDF created successfully:", OUTPUT)
cd /tmp/workspace/biochem-pdf && python generate_pdf.py 2>&1
~/biochem-pdf/generate_pdf.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/biochem-pdf/generate_pdf.py'
cd /tmp/workspace/biochem-pdf && python generate_pdf.py 2>&1
ls -lh /tmp/workspace/biochem-pdf/KNRUHS_Biochemistry_Paper1_QuickRef.pdf
KNRUHS Biochemistry Paper1 QuickRef
PDF Document Β· PDF
| Page | Content |
|---|---|
| Cover | Topic overview + exam date + pass criteria |
| Ch 1 - Enzymes | IUB classification table, Michaelis-Menten kinetics, Inhibition comparison table (Km/Vmax), Isoenzymes, Allosteric enzymes, Coenzymes table |
| Ch 2 - Carbohydrate Metabolism | Glycolysis (key steps + enzymes), TCA cycle table, Gluconeogenesis, Glycogen diseases table (Von Gierke, Pompe, McArdle etc.), HMP shunt, DM biochemistry |
| Ch 3 - Biological Oxidation | ETC complexes I-V table, ATP yield table, Inhibitors & Uncouplers table |
| Ch 4 - Lipid Metabolism | Beta-oxidation, ATP from palmitate, Ketone bodies, Fatty acid synthesis, Cholesterol (statins), Lipoproteins table |
| Ch 5 - Vitamins | Full water-soluble (B1-B12, C) table with coenzyme, function, deficiency, clinical features; Fat-soluble (ADEK) table |
| Ch 6 + Revision | LFTs, Cardiac markers, Blood glucose/HbA1c, Renal function tests, Lipid profile values, Rate-limiting enzymes master table, Mnemonics, Exam strategy tips |