Make short ppt on gluconeogenesis
gluconeogenesis pathway diagram metabolic
ls /home/daytona/workspace/ && mkdir -p /home/daytona/workspace/gluconeogenesis-ppt
mkdir -p /home/daytona/gluconeogenesis-ppt && ls /home/daytona/
/home/daytona/gluconeogenesis-ppt/build.js
const pptxgen = require("pptxgenjs");
let pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Gluconeogenesis";
// ─── THEME ───────────────────────────────────────────────────────────────────
const BG_DARK = "0B1D2E"; // deep navy
const BG_MID = "102840"; // slightly lighter navy
const ACCENT = "3EC6B0"; // teal
const ACCENT2 = "F5A623"; // amber
const WHITE = "FFFFFF";
const LIGHT_TXT = "C8DCE8";
const GRAY_BOX = "163350";
// Helper: add slide background rectangle
function darkSlide(pres) {
let s = pres.addSlide();
s.background = { color: BG_DARK };
return s;
}
// ─── SLIDE 1: TITLE ──────────────────────────────────────────────────────────
{
let s = pres.addSlide();
s.background = { color: BG_DARK };
// Accent bar
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.12, fill: { color: ACCENT }, line: { color: ACCENT } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 5.505, w: 10, h: 0.12, fill: { color: ACCENT2 }, line: { color: ACCENT2 } });
// Big title
s.addText("GLUCONEOGENESIS", {
x: 0.5, y: 1.2, w: 9, h: 1.2,
fontSize: 52, bold: true, color: WHITE, align: "center",
fontFace: "Calibri", charSpacing: 4
});
// Subtitle
s.addText("Synthesis of Glucose from Non-Carbohydrate Precursors", {
x: 0.8, y: 2.5, w: 8.4, h: 0.6,
fontSize: 20, color: ACCENT, align: "center", fontFace: "Calibri"
});
// Divider line
s.addShape(pres.ShapeType.line, {
x: 2, y: 3.25, w: 6, h: 0,
line: { color: ACCENT2, width: 1.5 }
});
// Sub-labels
s.addText([
{ text: "Basic Medical Biochemistry", options: { bold: true, color: ACCENT2 } },
{ text: " • Lippincott Illustrated Reviews Biochemistry", options: { color: LIGHT_TXT } }
], {
x: 0.5, y: 3.5, w: 9, h: 0.45, fontSize: 14, align: "center", fontFace: "Calibri"
});
s.addText("Medical Biochemistry Overview", {
x: 0.5, y: 4.85, w: 9, h: 0.35,
fontSize: 13, color: LIGHT_TXT, align: "center", italic: true, fontFace: "Calibri"
});
}
// ─── SLIDE 2: WHAT IS GLUCONEOGENESIS? ───────────────────────────────────────
{
let s = darkSlide(pres);
// Header bar
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.7, fill: { color: GRAY_BOX }, line: { color: GRAY_BOX } });
s.addText("What is Gluconeogenesis?", {
x: 0.3, y: 0.1, w: 9.4, h: 0.5,
fontSize: 24, bold: true, color: ACCENT, fontFace: "Calibri"
});
// Definition card
s.addShape(pres.ShapeType.rect, { x: 0.4, y: 0.85, w: 9.2, h: 1.1, fill: { color: GRAY_BOX }, line: { color: ACCENT, width: 1 } });
s.addText("Gluconeogenesis is the synthesis of glucose from non-carbohydrate precursors — primarily in the liver — to maintain blood glucose during fasting or starvation.", {
x: 0.55, y: 0.92, w: 8.9, h: 0.95,
fontSize: 16, color: WHITE, fontFace: "Calibri", valign: "middle"
});
// Key facts
const facts = [
["Primary site", "Liver (~90% overnight fast); kidney cortex (~10%)"],
["During prolonged starvation (>48 h)", "Kidney contributes up to 40% of glucose output"],
["Small intestine", "Can also produce glucose"],
["Trigger", "Glycogen depletion, fasting, low blood glucose"],
];
facts.forEach(([label, text], i) => {
let yy = 2.15 + i * 0.72;
s.addShape(pres.ShapeType.rect, { x: 0.4, y: yy, w: 3.0, h: 0.58, fill: { color: ACCENT }, line: { color: ACCENT } });
s.addText(label, { x: 0.42, y: yy, w: 2.96, h: 0.58, fontSize: 13, bold: true, color: BG_DARK, valign: "middle", fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 3.42, y: yy, w: 6.15, h: 0.58, fill: { color: BG_MID }, line: { color: ACCENT } });
s.addText(text, { x: 3.5, y: yy, w: 6.0, h: 0.58, fontSize: 13, color: LIGHT_TXT, valign: "middle", fontFace: "Calibri" });
});
}
// ─── SLIDE 3: SUBSTRATES (PRECURSORS) ─────────────────────────────────────────
{
let s = darkSlide(pres);
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.7, fill: { color: GRAY_BOX }, line: { color: GRAY_BOX } });
s.addText("Gluconeogenic Substrates (Precursors)", {
x: 0.3, y: 0.1, w: 9.4, h: 0.5,
fontSize: 24, bold: true, color: ACCENT, fontFace: "Calibri"
});
const substrates = [
{
title: "Lactate",
color: "1A7FB8",
text: "From anaerobic glycolysis in RBCs & exercising muscle. Oxidized to pyruvate in liver → glucose (Cori cycle)."
},
{
title: "Amino Acids",
color: "2BA888",
text: "Major source during fasting. Hydrolysis of tissue proteins → α-keto acids (e.g., pyruvate, OAA). All except Leu & Lys are glucogenic."
},
{
title: "Glycerol",
color: ACCENT2,
text: "Released from lipolysis of TAGs in adipose tissue. Phosphorylated → glycerol-3-P → DHAP (enters gluconeogenesis)."
},
{
title: "Propionate",
color: "8B5CF6",
text: "From odd-chain fatty acid oxidation. Enters via succinyl-CoA → OAA → glucose (minor contributor)."
}
];
substrates.forEach((sub, i) => {
let col = i < 2 ? 0 : 1;
let row = i % 2;
let x = col === 0 ? 0.35 : 5.2;
let y = 0.9 + row * 2.2;
s.addShape(pres.ShapeType.rect, { x, y, w: 4.5, h: 2.0, fill: { color: BG_MID }, line: { color: sub.color, width: 1.5 } });
s.addShape(pres.ShapeType.rect, { x, y, w: 4.5, h: 0.45, fill: { color: sub.color }, line: { color: sub.color } });
s.addText(sub.title, { x: x + 0.1, y: y, w: 4.3, h: 0.45, fontSize: 16, bold: true, color: WHITE, valign: "middle", fontFace: "Calibri" });
s.addText(sub.text, { x: x + 0.15, y: y + 0.5, w: 4.2, h: 1.4, fontSize: 13, color: LIGHT_TXT, valign: "top", fontFace: "Calibri" });
});
}
// ─── SLIDE 4: KEY REACTIONS (BYPASS STEPS) ────────────────────────────────────
{
let s = darkSlide(pres);
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.7, fill: { color: GRAY_BOX }, line: { color: GRAY_BOX } });
s.addText("Key Reactions: The 3 Bypass Steps", {
x: 0.3, y: 0.1, w: 9.4, h: 0.5,
fontSize: 24, bold: true, color: ACCENT, fontFace: "Calibri"
});
s.addText("7 glycolytic reactions are reversible. Three irreversible glycolytic steps must be bypassed by unique gluconeogenic reactions:", {
x: 0.4, y: 0.8, w: 9.2, h: 0.5, fontSize: 14, color: LIGHT_TXT, fontFace: "Calibri"
});
const bypasses = [
{
glycolysis: "Pyruvate Kinase\n(PEP → Pyruvate)",
gng: "Pyruvate Carboxylase + PEPCK\n(Pyruvate → OAA → PEP)",
cofactor: "Biotin; requires ATP + GTP",
color: "1A7FB8"
},
{
glycolysis: "Phosphofructokinase-1\n(F6P → F1,6BP)",
gng: "Fructose-1,6-bisphosphatase\n(F1,6BP → F6P)",
cofactor: "Inhibited by AMP; activated by citrate",
color: "2BA888"
},
{
glycolysis: "Hexokinase / Glucokinase\n(Glucose → G6P)",
gng: "Glucose-6-phosphatase\n(G6P → Glucose)",
cofactor: "Located in ER membrane; absent in muscle",
color: ACCENT2
}
];
bypasses.forEach((b, i) => {
let y = 1.45 + i * 1.32;
// Glycolysis box
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 3.0, h: 1.1, fill: { color: BG_MID }, line: { color: b.color, width: 1 } });
s.addText([
{ text: "Glycolysis:\n", options: { bold: true, color: ACCENT2, breakLine: true } },
{ text: b.glycolysis, options: { color: LIGHT_TXT } }
], { x: 0.38, y: y + 0.05, w: 2.85, h: 1.0, fontSize: 12, fontFace: "Calibri", valign: "top" });
// Arrow
s.addShape(pres.ShapeType.rightArrow, { x: 3.38, y: y + 0.3, w: 0.65, h: 0.5, fill: { color: b.color }, line: { color: b.color } });
// GNG box
s.addShape(pres.ShapeType.rect, { x: 4.1, y, w: 3.2, h: 1.1, fill: { color: BG_MID }, line: { color: b.color, width: 1 } });
s.addText([
{ text: "Gluconeogenesis:\n", options: { bold: true, color: ACCENT, breakLine: true } },
{ text: b.gng, options: { color: LIGHT_TXT } }
], { x: 4.18, y: y + 0.05, w: 3.04, h: 1.0, fontSize: 12, fontFace: "Calibri", valign: "top" });
// Note box
s.addShape(pres.ShapeType.rect, { x: 7.38, y, w: 2.3, h: 1.1, fill: { color: "1C2F42" }, line: { color: b.color, width: 1 } });
s.addText([
{ text: "Note: ", options: { bold: true, color: b.color } },
{ text: b.cofactor, options: { color: LIGHT_TXT } }
], { x: 7.44, y: y + 0.05, w: 2.2, h: 1.0, fontSize: 11, fontFace: "Calibri", valign: "top" });
});
}
// ─── SLIDE 5: THE CORI CYCLE ──────────────────────────────────────────────────
{
let s = darkSlide(pres);
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.7, fill: { color: GRAY_BOX }, line: { color: GRAY_BOX } });
s.addText("The Cori Cycle", {
x: 0.3, y: 0.1, w: 9.4, h: 0.5,
fontSize: 24, bold: true, color: ACCENT, fontFace: "Calibri"
});
// Use textbook image for Cori cycle
s.addText("A key inter-organ cycle linking gluconeogenesis (liver) with glycolysis (muscle/RBCs):", {
x: 0.4, y: 0.8, w: 9.2, h: 0.4, fontSize: 14, color: LIGHT_TXT, fontFace: "Calibri"
});
// Diagram using shapes
// Liver box
s.addShape(pres.ShapeType.rect, { x: 0.5, y: 1.4, w: 3.2, h: 3.5, fill: { color: GRAY_BOX }, line: { color: ACCENT, width: 1.5 } });
s.addText("LIVER", { x: 0.55, y: 1.45, w: 3.1, h: 0.4, fontSize: 16, bold: true, color: ACCENT, align: "center", fontFace: "Calibri" });
s.addText([
{ text: "Lactate\n", options: { color: ACCENT2, bold: true, breakLine: true } },
{ text: "↓ LDH\n", options: { color: LIGHT_TXT, breakLine: true } },
{ text: "Pyruvate\n", options: { color: ACCENT2, bold: true, breakLine: true } },
{ text: "↓ PC / PEPCK\n", options: { color: LIGHT_TXT, breakLine: true } },
{ text: "PEP\n", options: { color: ACCENT2, bold: true, breakLine: true } },
{ text: "↓ (7 reversible steps)\n", options: { color: LIGHT_TXT, breakLine: true } },
{ text: "Glucose", options: { color: ACCENT, bold: true } }
], { x: 0.6, y: 1.95, w: 3.0, h: 2.7, fontSize: 13, fontFace: "Calibri", valign: "top" });
// Blood/arrows
s.addShape(pres.ShapeType.rect, { x: 3.9, y: 1.4, w: 2.2, h: 3.5, fill: { color: BG_MID }, line: { color: GRAY_BOX } });
s.addText("BLOOD", { x: 3.9, y: 1.45, w: 2.2, h: 0.4, fontSize: 14, bold: true, color: WHITE, align: "center", fontFace: "Calibri" });
s.addShape(pres.ShapeType.rightArrow, { x: 4.0, y: 2.1, w: 1.9, h: 0.45, fill: { color: ACCENT }, line: { color: ACCENT } });
s.addText("Glucose →", { x: 4.0, y: 2.12, w: 1.9, h: 0.45, fontSize: 12, color: BG_DARK, bold: true, align: "center", valign: "middle", fontFace: "Calibri" });
s.addShape(pres.ShapeType.leftArrow, { x: 4.0, y: 3.3, w: 1.9, h: 0.45, fill: { color: ACCENT2 }, line: { color: ACCENT2 } });
s.addText("← Lactate", { x: 4.0, y: 3.32, w: 1.9, h: 0.45, fontSize: 12, color: BG_DARK, bold: true, align: "center", valign: "middle", fontFace: "Calibri" });
// Muscle box
s.addShape(pres.ShapeType.rect, { x: 6.28, y: 1.4, w: 3.2, h: 3.5, fill: { color: GRAY_BOX }, line: { color: ACCENT2, width: 1.5 } });
s.addText("MUSCLE / RBCs", { x: 6.33, y: 1.45, w: 3.1, h: 0.4, fontSize: 15, bold: true, color: ACCENT2, align: "center", fontFace: "Calibri" });
s.addText([
{ text: "Glucose\n", options: { color: ACCENT, bold: true, breakLine: true } },
{ text: "↓ Glycolysis (anaerobic)\n", options: { color: LIGHT_TXT, breakLine: true } },
{ text: "Pyruvate\n", options: { color: ACCENT2, bold: true, breakLine: true } },
{ text: "↓ LDH\n", options: { color: LIGHT_TXT, breakLine: true } },
{ text: "Lactate", options: { color: ACCENT2, bold: true } }
], { x: 6.38, y: 1.95, w: 3.0, h: 2.7, fontSize: 13, fontFace: "Calibri", valign: "top" });
}
// ─── SLIDE 6: REGULATION ──────────────────────────────────────────────────────
{
let s = darkSlide(pres);
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.7, fill: { color: GRAY_BOX }, line: { color: GRAY_BOX } });
s.addText("Regulation of Gluconeogenesis", {
x: 0.3, y: 0.1, w: 9.4, h: 0.5,
fontSize: 24, bold: true, color: ACCENT, fontFace: "Calibri"
});
const regs = [
{
agent: "Glucagon ↑",
color: ACCENT,
effects: [
"Lowers fructose-2,6-bisphosphate → activates FBPase-1, inhibits PFK-1",
"Induces PEPCK gene expression via cAMP",
"Promotes phosphorylation of pyruvate kinase (inactivates it)"
]
},
{
agent: "Insulin ↓",
color: "E05C5C",
effects: [
"Opposes glucagon; inhibits PEPCK transcription",
"Activates PFK-2 → raises fructose-2,6-BP → inhibits gluconeogenesis",
"Stimulates glycogen synthesis instead"
]
},
{
agent: "Cortisol ↑",
color: ACCENT2,
effects: [
"Mobilizes protein from tissues → releases amino acids",
"Provides gluconeogenic substrates (via ACTH stimulation)",
"Key in stress-induced hyperglycemia"
]
},
{
agent: "Allosteric Effectors",
color: "8B5CF6",
effects: [
"Acetyl-CoA activates pyruvate carboxylase",
"AMP inhibits fructose-1,6-bisphosphatase (favors glycolysis)",
"Citrate activates FBPase-1 (favors gluconeogenesis)"
]
}
];
regs.forEach((r, i) => {
let col = i % 2;
let row = Math.floor(i / 2);
let x = col === 0 ? 0.35 : 5.2;
let y = 0.85 + row * 2.3;
s.addShape(pres.ShapeType.rect, { x, y, w: 4.5, h: 2.1, fill: { color: BG_MID }, line: { color: r.color, width: 1.5 } });
s.addShape(pres.ShapeType.rect, { x, y, w: 4.5, h: 0.45, fill: { color: r.color }, line: { color: r.color } });
s.addText(r.agent, { x: x + 0.1, y, w: 4.3, h: 0.45, fontSize: 15, bold: true, color: BG_DARK, valign: "middle", fontFace: "Calibri" });
const bullets = r.effects.map((e, idx) => ({
text: e,
options: { bullet: { type: "bullet" }, color: LIGHT_TXT, breakLine: idx < r.effects.length - 1 }
}));
s.addText(bullets, { x: x + 0.15, y: y + 0.5, w: 4.2, h: 1.55, fontSize: 12, fontFace: "Calibri", valign: "top" });
});
}
// ─── SLIDE 7: ENERGY COST + CLINICAL RELEVANCE ────────────────────────────────
{
let s = darkSlide(pres);
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.7, fill: { color: GRAY_BOX }, line: { color: GRAY_BOX } });
s.addText("Energy Cost & Clinical Relevance", {
x: 0.3, y: 0.1, w: 9.4, h: 0.5,
fontSize: 24, bold: true, color: ACCENT, fontFace: "Calibri"
});
// Energy cost box
s.addShape(pres.ShapeType.rect, { x: 0.35, y: 0.82, w: 4.3, h: 2.1, fill: { color: GRAY_BOX }, line: { color: ACCENT, width: 1 } });
s.addText("Energy Cost", { x: 0.45, y: 0.87, w: 4.1, h: 0.4, fontSize: 16, bold: true, color: ACCENT, fontFace: "Calibri" });
s.addText([
{ text: "2 Pyruvate → 1 Glucose requires:\n", options: { bold: true, color: WHITE, breakLine: true } },
{ text: "• 6 ATP equivalents hydrolyzed\n", options: { color: LIGHT_TXT, breakLine: true } },
{ text: "• 2 NADH oxidized\n", options: { color: LIGHT_TXT, breakLine: true } },
{ text: "• 2 GTP consumed (PEPCK step)\n", options: { color: LIGHT_TXT, breakLine: true } },
{ text: "\nMuch more costly than glycolysis!", options: { color: ACCENT2, bold: true } }
], { x: 0.5, y: 1.3, w: 4.05, h: 1.55, fontSize: 13, fontFace: "Calibri", valign: "top" });
// Clinical conditions
s.addShape(pres.ShapeType.rect, { x: 4.85, y: 0.82, w: 4.8, h: 2.1, fill: { color: GRAY_BOX }, line: { color: ACCENT2, width: 1 } });
s.addText("Clinical Disorders", { x: 4.95, y: 0.87, w: 4.6, h: 0.4, fontSize: 16, bold: true, color: ACCENT2, fontFace: "Calibri" });
s.addText([
{ text: "Deficiency of gluconeogenic enzymes\n", options: { bold: true, color: WHITE, breakLine: true } },
{ text: "→ Fasting hypoglycemia\n\n", options: { color: LIGHT_TXT, breakLine: true } },
{ text: "Glucose-6-phosphatase deficiency\n", options: { bold: true, color: WHITE, breakLine: true } },
{ text: "→ von Gierke disease (GSD Ia/Ib)\n\n", options: { color: LIGHT_TXT, breakLine: true } },
{ text: "Metformin → inhibits complex I\n", options: { bold: true, color: WHITE, breakLine: true } },
{ text: "→ Reduces hepatic gluconeogenesis", options: { color: LIGHT_TXT } }
], { x: 5.0, y: 1.3, w: 4.55, h: 1.55, fontSize: 12, fontFace: "Calibri", valign: "top" });
// Hormonal states
s.addShape(pres.ShapeType.rect, { x: 0.35, y: 3.12, w: 9.3, h: 2.1, fill: { color: GRAY_BOX }, line: { color: "8B5CF6", width: 1 } });
s.addText("Physiological States with High Gluconeogenesis", {
x: 0.45, y: 3.17, w: 9.1, h: 0.4, fontSize: 15, bold: true, color: "B48FFF", fontFace: "Calibri"
});
const states = [
["Overnight Fast", "Liver glycogen depleted; GNG supplies ~100% of blood glucose"],
["Prolonged Starvation", "Kidney joins liver; muscle protein breakdown accelerates"],
["Intense Exercise", "Cori cycle active; lactate from muscle → liver glucose"],
["Uncontrolled DM", "Excess glucagon + low insulin → unrestrained GNG → hyperglycemia"],
];
states.forEach(([label, text], i) => {
let x = 0.5 + i * 2.35;
s.addShape(pres.ShapeType.rect, { x, y: 3.65, w: 2.2, h: 0.38, fill: { color: "8B5CF6" }, line: { color: "8B5CF6" } });
s.addText(label, { x, y: 3.65, w: 2.2, h: 0.38, fontSize: 11, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText(text, { x, y: 4.05, w: 2.2, h: 1.0, fontSize: 11, color: LIGHT_TXT, fontFace: "Calibri", valign: "top" });
});
}
// ─── SLIDE 8: SUMMARY ────────────────────────────────────────────────────────
{
let s = darkSlide(pres);
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.7, fill: { color: GRAY_BOX }, line: { color: GRAY_BOX } });
s.addText("Summary", {
x: 0.3, y: 0.1, w: 9.4, h: 0.5,
fontSize: 24, bold: true, color: ACCENT, fontFace: "Calibri"
});
const points = [
{ icon: "01", color: ACCENT, text: "Gluconeogenesis synthesizes glucose from lactate, amino acids, and glycerol — primarily in the liver." },
{ icon: "02", color: ACCENT2, text: "Not a simple reversal of glycolysis — 3 irreversible steps bypassed by PC, PEPCK, FBPase-1, and G6Pase." },
{ icon: "03", color: "1A7FB8", text: "Glucagon (via cAMP) activates; insulin and AMP inhibit gluconeogenesis." },
{ icon: "04", color: "2BA888", text: "Expensive: requires 6 ATP equivalents to produce 1 glucose from 2 pyruvate." },
{ icon: "05", color: "E05C5C", text: "Enzyme deficiencies → fasting hypoglycemia (e.g., G6Pase defect in von Gierke disease)." },
{ icon: "06", color: "8B5CF6", text: "Metformin reduces hepatic gluconeogenesis via AMPK activation — key mechanism in T2DM management." },
];
points.forEach((p, i) => {
let col = i % 2;
let row = Math.floor(i / 2);
let x = col === 0 ? 0.35 : 5.2;
let y = 0.85 + row * 1.55;
s.addShape(pres.ShapeType.rect, { x, y, w: 0.55, h: 1.3, fill: { color: p.color }, line: { color: p.color } });
s.addText(p.icon, { x, y, w: 0.55, h: 1.3, fontSize: 18, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: x + 0.57, y, w: 3.95, h: 1.3, fill: { color: BG_MID }, line: { color: p.color } });
s.addText(p.text, { x: x + 0.67, y: y + 0.1, w: 3.75, h: 1.1, fontSize: 13, color: LIGHT_TXT, fontFace: "Calibri", valign: "middle" });
});
}
// ─── WRITE ────────────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/gluconeogenesis-ppt/Gluconeogenesis.pptx" })
.then(() => console.log("Done: Gluconeogenesis.pptx"))
.catch(e => { console.error(e); process.exit(1); });