Live and dead spermatozoa in cattle with principle and some abnormalities of spermatozoa
live dead spermatozoa staining cattle bull eosin nigrosin principle sperm viability
https://www.ethosbiosciences.com/blog-and-news/the-science-b…
bull spermatozoa morphological abnormalities primary secondary classification cattle fertility
| Cell Status | Membrane Integrity | Eosin Penetration | Appearance |
|---|---|---|---|
| Live | Intact | Excluded | White / unstained head |
| Dead | Damaged / porous | Enters cell | Pink to dark red head |
| System | Categories |
|---|---|
| Primary / Secondary (Blom, 1950) | Origin in testis vs. post-testicular |
| Major / Minor (Blom, 1971) | Significance on fertility |
| Compensable / Uncompensable (Saacke, 1990) | Whether increasing sperm numbers can overcome the defect |
| Head / Midpiece / Tail | Anatomical location |
| Abnormality | Description |
|---|---|
| Underdeveloped / small heads | Immature nucleus, poor chromatin condensation |
| Double forms | Two heads, two tails, or duplicated midpieces |
| Acrosome defects | Knobbed acrosome, missing acrosome - impairs zona penetration |
| Narrow heads | Tapered or pyriform (pear-shaped) heads |
| Crater / Diadem defect | Nuclear vacuoles appearing as craters in the head |
| Abnormal head contour | Irregular shape, macro- or microcephaly |
| Abnormal midpiece | Coiled, bent, or thickened midpiece |
| Proximal cytoplasmic droplet | Cytoplasmic remnant retained near the neck; indicates immaturity |
| Strongly folded or coiled tail | Tightly coiled tail (different from distal coil) |
| Accessory tails | Extra axonemal structures; may be genetic in origin |
| Abnormality | Description |
|---|---|
| Small normal heads | Slightly reduced but normally shaped |
| Giant / short broad heads | Abnormal nuclear size |
| Detached / loose acrosomal membranes | Acrosome partially lifted (not fully disrupted) |
| Abaxial implantation | Tail inserts off-center of the head base; not always detrimental |
| Distal cytoplasmic droplet | Droplet migrated down to the principal piece; minor significance |
| Detached heads | Head separated from tail during processing |
| Simple bent tail | Single bend in the tail, often from cold shock |
| Distal coiled tail | Coiling at the terminal piece; often from hypoosmotic stress |
| Classification | Morphologically Normal Sperm | Interpretation |
|---|---|---|
| Satisfactory potential breeder | ≥ 70% | Passes BSE |
| Unsatisfactory potential breeder | < 70% | Fails BSE |
Create a ppt of this topic
ls -la /home/daytona/workspace/ 2>/dev/null || echo "workspace does not exist yet"
mkdir -p /home/daytona/workspace/sperm-cattle-ppt
~/sperm-cattle-ppt/build.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Live and Dead Spermatozoa in Cattle";
pres.author = "Veterinary Reproductive Biology";
// ── COLOUR PALETTE ──────────────────────────────────────────────────────────
// Deep teal dominant (#0D4F5C), warm cream accent (#F5EDD6),
// coral red highlight (#C94040), light teal mid (#2A8C9E), off-white (#F7F9F9)
const C = {
dark: "0D4F5C", // deep teal – title / section slides
mid: "2A8C9E", // medium teal – headers / bars
light: "E8F5F8", // very light teal – content bg tint
cream: "F5EDD6", // warm cream – accents
red: "C94040", // coral red – dead cells / danger
green: "2E7D52", // forest green – live cells
white: "FFFFFF",
offwhite:"F7F9F9",
text: "1A2E35", // near-black text
subtext: "3D6B77", // secondary text
gray: "B0C4CC",
};
// ── HELPER: section-coloured accent bar on left edge ────────────────────────
function leftBar(slide, color = C.mid) {
slide.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 0.18, h: 5.625,
fill: { color },
line: { color, width: 0 },
});
}
// ── HELPER: slide header band ────────────────────────────────────────────────
function headerBand(slide, title, barColor = C.dark, textColor = C.white) {
slide.addShape(pres.shapes.RECTANGLE, {
x: 0.18, y: 0, w: 9.82, h: 0.72,
fill: { color: barColor },
line: { color: barColor, width: 0 },
});
slide.addText(title, {
x: 0.4, y: 0.06, w: 9.4, h: 0.6,
fontSize: 20, bold: true,
color: textColor, fontFace: "Calibri",
margin: 0, valign: "middle",
});
}
// ── HELPER: small icon circle ────────────────────────────────────────────────
function iconCircle(slide, x, y, r, color, label, labelColor = C.white) {
slide.addShape(pres.shapes.ELLIPSE, {
x, y, w: r, h: r,
fill: { color },
line: { color, width: 0 },
});
slide.addText(label, {
x, y: y + r * 0.2, w: r, h: r * 0.6,
fontSize: 11, bold: true, color: labelColor,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0,
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
// Full dark background
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 10, h: 5.625,
fill: { color: C.dark },
line: { color: C.dark, width: 0 },
});
// Decorative teal diagonal band (right side)
s.addShape(pres.shapes.RECTANGLE, {
x: 6.5, y: 0, w: 3.5, h: 5.625,
fill: { color: C.mid },
line: { color: C.mid, width: 0 },
});
// Cream accent strip
s.addShape(pres.shapes.RECTANGLE, {
x: 6.3, y: 0, w: 0.12, h: 5.625,
fill: { color: C.cream },
line: { color: C.cream, width: 0 },
});
// "LIVE" circle (green)
s.addShape(pres.shapes.ELLIPSE, {
x: 6.8, y: 0.5, w: 1.4, h: 1.4,
fill: { color: C.green },
line: { color: "FFFFFF", width: 2 },
});
s.addText("LIVE", {
x: 6.8, y: 0.85, w: 1.4, h: 0.7,
fontSize: 16, bold: true, color: C.white,
align: "center", fontFace: "Calibri", margin: 0,
});
// "DEAD" circle (red)
s.addShape(pres.shapes.ELLIPSE, {
x: 8.4, y: 0.5, w: 1.4, h: 1.4,
fill: { color: C.red },
line: { color: "FFFFFF", width: 2 },
});
s.addText("DEAD", {
x: 8.4, y: 0.85, w: 1.4, h: 0.7,
fontSize: 16, bold: true, color: C.white,
align: "center", fontFace: "Calibri", margin: 0,
});
// Sperm silhouette circles (decorative)
for (let i = 0; i < 5; i++) {
s.addShape(pres.shapes.ELLIPSE, {
x: 6.7 + i * 0.5, y: 3.8, w: 0.3, h: 0.2,
fill: { color: "FFFFFF", transparency: 70 },
line: { color: "FFFFFF", width: 0, transparency: 70 },
});
}
// Title text
s.addText("Live and Dead Spermatozoa", {
x: 0.35, y: 1.1, w: 5.8, h: 0.9,
fontSize: 30, bold: true, color: C.white,
fontFace: "Calibri", margin: 0,
});
s.addText("in Cattle", {
x: 0.35, y: 1.95, w: 5.8, h: 0.75,
fontSize: 30, bold: true, color: C.cream,
fontFace: "Calibri", margin: 0,
});
s.addText("Eosin-Nigrosin Staining Principle & Sperm Morphological Abnormalities", {
x: 0.35, y: 2.8, w: 5.8, h: 0.55,
fontSize: 13, italic: true, color: C.gray,
fontFace: "Calibri", margin: 0,
});
s.addText("Veterinary Reproductive Biology", {
x: 0.35, y: 4.9, w: 5.8, h: 0.4,
fontSize: 11, color: C.gray,
fontFace: "Calibri", margin: 0,
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 2 — OVERVIEW / AGENDA
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 10, h: 5.625,
fill: { color: C.offwhite },
line: { color: C.offwhite, width: 0 },
});
leftBar(s, C.mid);
headerBand(s, "Agenda", C.dark);
const topics = [
{ num: "01", title: "Why Assess Sperm Viability?", sub: "Breeding Soundness Examination & fertility threshold" },
{ num: "02", title: "Eosin-Nigrosin Staining", sub: "History, principle, reagents & procedure" },
{ num: "03", title: "Interpretation of Results", sub: "Live / dead identification & pitfalls" },
{ num: "04", title: "Hypoosmotic Swelling Test", sub: "Alternative viability method" },
{ num: "05", title: "Sperm Abnormalities in Cattle", sub: "Classification systems & individual defects" },
{ num: "06", title: "Compensable vs. Uncompensable", sub: "Fertility implications" },
];
topics.forEach((t, i) => {
const col = i < 3 ? 0 : 1;
const row = i % 3;
const x = 0.4 + col * 4.9;
const y = 0.9 + row * 1.5;
s.addShape(pres.shapes.RECTANGLE, {
x, y, w: 4.5, h: 1.25,
fill: { color: C.white },
line: { color: C.gray, width: 1 },
shadow: { type: "outer", color: "000000", blur: 4, offset: 2, angle: 135, opacity: 0.1 },
});
s.addShape(pres.shapes.RECTANGLE, {
x, y, w: 0.55, h: 1.25,
fill: { color: C.mid },
line: { color: C.mid, width: 0 },
});
s.addText(t.num, {
x, y: y + 0.35, w: 0.55, h: 0.55,
fontSize: 14, bold: true, color: C.white,
align: "center", fontFace: "Calibri", margin: 0,
});
s.addText(t.title, {
x: x + 0.65, y: y + 0.08, w: 3.75, h: 0.55,
fontSize: 12, bold: true, color: C.text,
fontFace: "Calibri", margin: 0,
});
s.addText(t.sub, {
x: x + 0.65, y: y + 0.62, w: 3.75, h: 0.5,
fontSize: 9.5, color: C.subtext, italic: true,
fontFace: "Calibri", margin: 0,
});
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 3 — WHY ASSESS SPERM VIABILITY?
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 10, h: 5.625,
fill: { color: C.offwhite },
line: { color: C.offwhite, width: 0 },
});
leftBar(s, C.green);
headerBand(s, "Why Assess Sperm Viability?", C.dark);
// Central stat box
s.addShape(pres.shapes.RECTANGLE, {
x: 3.5, y: 0.85, w: 3, h: 1.2,
fill: { color: C.dark },
line: { color: C.dark, width: 0 },
shadow: { type: "outer", color: "000000", blur: 6, offset: 3, angle: 135, opacity: 0.2 },
});
s.addText("≥ 70%", {
x: 3.5, y: 0.88, w: 3, h: 0.68,
fontSize: 32, bold: true, color: C.cream,
align: "center", fontFace: "Calibri", margin: 0,
});
s.addText("Normal viable sperm required for\nSatisfactory Potential Breeder", {
x: 3.5, y: 1.5, w: 3, h: 0.52,
fontSize: 9, color: C.gray,
align: "center", fontFace: "Calibri", margin: 0,
});
// Three reason boxes
const boxes = [
{ x: 0.35, color: C.green, icon: "BSE", title: "Breeding Soundness Exam", body: "Core component of bull evaluation before the breeding season" },
{ x: 3.65, color: C.mid, icon: "AI", title: "Artificial Insemination", body: "Viability must be confirmed in chilled/frozen-thawed semen before AI use" },
{ x: 6.95, color: C.red, icon: "DX", title: "Differential Diagnosis", body: "Distinguishes asthenozoospermia (alive, immotile) from necrozoospermia (dead sperm)" },
];
boxes.forEach(b => {
s.addShape(pres.shapes.RECTANGLE, {
x: b.x, y: 2.25, w: 3.1, h: 3.0,
fill: { color: C.white },
line: { color: C.gray, width: 1 },
shadow: { type: "outer", color: "000000", blur: 4, offset: 2, angle: 135, opacity: 0.1 },
});
s.addShape(pres.shapes.RECTANGLE, {
x: b.x, y: 2.25, w: 3.1, h: 0.5,
fill: { color: b.color },
line: { color: b.color, width: 0 },
});
s.addText(b.icon, {
x: b.x, y: 2.25, w: 3.1, h: 0.5,
fontSize: 13, bold: true, color: C.white,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0,
});
s.addText(b.title, {
x: b.x + 0.12, y: 2.85, w: 2.86, h: 0.5,
fontSize: 11, bold: true, color: C.text,
fontFace: "Calibri", margin: 0,
});
s.addText(b.body, {
x: b.x + 0.12, y: 3.4, w: 2.86, h: 1.7,
fontSize: 9.5, color: C.subtext,
fontFace: "Calibri", margin: 0, wrap: true,
});
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 4 — EOSIN-NIGROSIN: HISTORY & PRINCIPLE
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 10, h: 5.625,
fill: { color: C.offwhite },
line: { color: C.offwhite, width: 0 },
});
leftBar(s, C.mid);
headerBand(s, "Eosin-Nigrosin Staining — History & Principle");
// History card
s.addShape(pres.shapes.RECTANGLE, {
x: 0.35, y: 0.85, w: 4.3, h: 2.0,
fill: { color: C.white },
line: { color: C.gray, width: 1 },
});
s.addShape(pres.shapes.RECTANGLE, {
x: 0.35, y: 0.85, w: 4.3, h: 0.42,
fill: { color: C.mid },
line: { color: C.mid, width: 0 },
});
s.addText("HISTORY", {
x: 0.35, y: 0.85, w: 4.3, h: 0.42,
fontSize: 11, bold: true, color: C.white,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0,
});
s.addText([
{ text: "• Developed by ", options: { fontSize: 10, color: C.text } },
{ text: "Blom (1950)", options: { fontSize: 10, bold: true, color: C.dark } },
{ text: " for evaluating bull semen\n", options: { fontSize: 10, color: C.text } },
{ text: "• Originally a two-step process; now streamlined to a one-step method\n", options: { fontSize: 10, color: C.text } },
{ text: "• Gold standard ", options: { fontSize: 10, bold: true, color: C.dark } },
{ text: "in veterinary & human reproductive labs worldwide\n", options: { fontSize: 10, color: C.text } },
{ text: "• Validated against WHO standards (Bjorndahl et al., 2003)", options: { fontSize: 10, color: C.text } },
], {
x: 0.5, y: 1.35, w: 4.05, h: 1.4,
fontFace: "Calibri", margin: 0,
});
// Principle card
s.addShape(pres.shapes.RECTANGLE, {
x: 5.1, y: 0.85, w: 4.5, h: 2.0,
fill: { color: C.white },
line: { color: C.gray, width: 1 },
});
s.addShape(pres.shapes.RECTANGLE, {
x: 5.1, y: 0.85, w: 4.5, h: 0.42,
fill: { color: C.dark },
line: { color: C.dark, width: 0 },
});
s.addText("PRINCIPLE — DYE EXCLUSION METHOD", {
x: 5.1, y: 0.85, w: 4.5, h: 0.42,
fontSize: 11, bold: true, color: C.white,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0,
});
s.addText([
{ text: "Intact plasma membrane (live cell)\n", options: { fontSize: 10, bold: true, color: C.green } },
{ text: " → Semi-permeable → Excludes eosin → Head stays WHITE\n\n", options: { fontSize: 10, color: C.text } },
{ text: "Damaged plasma membrane (dead cell)\n", options: { fontSize: 10, bold: true, color: C.red } },
{ text: " → Porous → Eosin enters → Head stains PINK/RED\n\n", options: { fontSize: 10, color: C.text } },
{ text: "Nigrosin ", options: { fontSize: 10, bold: true, color: C.dark } },
{ text: "= black background dye → improves contrast, NOT a vital stain", options: { fontSize: 10, color: C.text } },
], {
x: 5.25, y: 1.35, w: 4.25, h: 1.4,
fontFace: "Calibri", margin: 0,
});
// Visual: live vs dead sperm diagram
// Live sperm (green, white head)
s.addShape(pres.shapes.RECTANGLE, {
x: 0.35, y: 3.1, w: 4.3, h: 2.25,
fill: { color: C.white },
line: { color: C.gray, width: 1 },
});
s.addText("VISUAL REPRESENTATION", {
x: 0.35, y: 3.1, w: 4.3, h: 0.38,
fontSize: 10, bold: true, color: C.subtext,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0,
});
// Live sperm diagram
s.addShape(pres.shapes.ELLIPSE, {
x: 0.7, y: 3.62, w: 0.55, h: 0.35,
fill: { color: C.white },
line: { color: C.green, width: 2 },
});
s.addShape(pres.shapes.RECTANGLE, {
x: 1.23, y: 3.74, w: 0.8, h: 0.06,
fill: { color: C.green },
line: { color: C.green, width: 0 },
});
s.addText("LIVE — White/unstained head", {
x: 0.55, y: 4.08, w: 2.3, h: 0.4,
fontSize: 9.5, bold: true, color: C.green,
align: "center", fontFace: "Calibri", margin: 0,
});
// Dead sperm diagram
s.addShape(pres.shapes.ELLIPSE, {
x: 2.9, y: 3.62, w: 0.55, h: 0.35,
fill: { color: C.red },
line: { color: C.red, width: 2 },
});
s.addShape(pres.shapes.RECTANGLE, {
x: 3.43, y: 3.74, w: 0.8, h: 0.06,
fill: { color: C.red },
line: { color: C.red, width: 0 },
});
s.addText("DEAD — Pink/red stained head", {
x: 2.6, y: 4.08, w: 2.2, h: 0.4,
fontSize: 9.5, bold: true, color: C.red,
align: "center", fontFace: "Calibri", margin: 0,
});
// Membrane diagram on right side
s.addShape(pres.shapes.RECTANGLE, {
x: 4.85, y: 3.1, w: 4.75, h: 2.25,
fill: { color: C.light },
line: { color: C.mid, width: 1 },
});
s.addText("MEMBRANE PERMEABILITY", {
x: 4.85, y: 3.1, w: 4.75, h: 0.38,
fontSize: 10, bold: true, color: C.dark,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0,
});
// Intact membrane
s.addShape(pres.shapes.ELLIPSE, {
x: 5.05, y: 3.6, w: 1.5, h: 1.5,
fill: { color: C.white, transparency: 20 },
line: { color: C.green, width: 3 },
});
s.addText("INTACT\nMembrane\n✓ Eosin\nexcluded", {
x: 5.05, y: 3.6, w: 1.5, h: 1.5,
fontSize: 8, color: C.green, bold: true,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0,
});
// Damaged membrane
s.addShape(pres.shapes.ELLIPSE, {
x: 7.2, y: 3.6, w: 1.5, h: 1.5,
fill: { color: "FFE0E0", transparency: 10 },
line: { color: C.red, width: 3 },
});
s.addText("DAMAGED\nMembrane\n✗ Eosin\nenters", {
x: 7.2, y: 3.6, w: 1.5, h: 1.5,
fontSize: 8, color: C.red, bold: true,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0,
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 5 — REAGENTS & PROCEDURE
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 10, h: 5.625,
fill: { color: C.offwhite },
line: { color: C.offwhite, width: 0 },
});
leftBar(s, C.mid);
headerBand(s, "Reagents & Procedure (One-Step Method)");
// Reagents column
s.addShape(pres.shapes.RECTANGLE, {
x: 0.35, y: 0.85, w: 3.6, h: 4.55,
fill: { color: C.white },
line: { color: C.gray, width: 1 },
});
s.addShape(pres.shapes.RECTANGLE, {
x: 0.35, y: 0.85, w: 3.6, h: 0.45,
fill: { color: C.mid },
line: { color: C.mid, width: 0 },
});
s.addText("REAGENTS", {
x: 0.35, y: 0.85, w: 3.6, h: 0.45,
fontSize: 12, bold: true, color: C.white,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0,
});
const reagents = [
{ name: "Eosin Y (5%)", role: "Vital dye — marks dead cells pink/red", color: C.red },
{ name: "Nigrosin (10%)", role: "Background stain — creates dark contrast", color: C.dark },
{ name: "Distilled Water", role: "Solvent for stain preparation", color: C.subtext },
{ name: "Warm Slide (37°C)", role: "Prevents cold shock artefact", color: C.subtext },
];
reagents.forEach((r, i) => {
const y = 1.42 + i * 1.0;
s.addShape(pres.shapes.RECTANGLE, {
x: 0.5, y, w: 0.12, h: 0.7,
fill: { color: r.color },
line: { color: r.color, width: 0 },
});
s.addText(r.name, {
x: 0.72, y: y + 0.02, w: 3.1, h: 0.32,
fontSize: 11, bold: true, color: C.text,
fontFace: "Calibri", margin: 0,
});
s.addText(r.role, {
x: 0.72, y: y + 0.35, w: 3.1, h: 0.3,
fontSize: 9, color: C.subtext, italic: true,
fontFace: "Calibri", margin: 0,
});
});
// Steps column
s.addShape(pres.shapes.RECTANGLE, {
x: 4.15, y: 0.85, w: 5.5, h: 4.55,
fill: { color: C.white },
line: { color: C.gray, width: 1 },
});
s.addShape(pres.shapes.RECTANGLE, {
x: 4.15, y: 0.85, w: 5.5, h: 0.45,
fill: { color: C.dark },
line: { color: C.dark, width: 0 },
});
s.addText("PROCEDURE — Step by Step", {
x: 4.15, y: 0.85, w: 5.5, h: 0.45,
fontSize: 12, bold: true, color: C.white,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0,
});
const steps = [
{ n: "1", text: "Place a drop of fresh semen on a warm slide (37 °C)" },
{ n: "2", text: "Add equal volume of eosin-nigrosin stain solution" },
{ n: "3", text: "Mix gently and incubate ~30 seconds at 37 °C" },
{ n: "4", text: "Make a thin smear and allow to air-dry completely" },
{ n: "5", text: "Examine under bright-field microscope at ×400–1000" },
{ n: "6", text: "Count minimum 200 spermatozoa per slide" },
{ n: "7", text: "Record % unstained (live) and % pink-stained (dead)" },
];
steps.forEach((step, i) => {
const y = 1.42 + i * 0.56;
s.addShape(pres.shapes.ELLIPSE, {
x: 4.3, y: y + 0.02, w: 0.38, h: 0.38,
fill: { color: C.mid },
line: { color: C.mid, width: 0 },
});
s.addText(step.n, {
x: 4.3, y: y + 0.02, w: 0.38, h: 0.38,
fontSize: 11, bold: true, color: C.white,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0,
});
s.addText(step.text, {
x: 4.78, y: y + 0.04, w: 4.7, h: 0.4,
fontSize: 10, color: C.text,
fontFace: "Calibri", margin: 0, valign: "middle",
});
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 6 — INTERPRETATION & PITFALLS
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 10, h: 5.625,
fill: { color: C.offwhite },
line: { color: C.offwhite, width: 0 },
});
leftBar(s, C.green);
headerBand(s, "Interpretation of Results & Pitfalls", C.dark);
// Summary table header
s.addShape(pres.shapes.RECTANGLE, {
x: 0.35, y: 0.85, w: 9.3, h: 0.42,
fill: { color: C.mid },
line: { color: C.mid, width: 0 },
});
["Cell Status", "Membrane", "Eosin Penetration", "Microscopic Appearance"].forEach((h, i) => {
const xArr = [0.4, 2.4, 4.55, 7.0];
s.addText(h, {
x: xArr[i], y: 0.88, w: 2.1, h: 0.35,
fontSize: 10, bold: true, color: C.white,
fontFace: "Calibri", margin: 0, valign: "middle",
});
});
// Row: Live
s.addShape(pres.shapes.RECTANGLE, {
x: 0.35, y: 1.27, w: 9.3, h: 0.62,
fill: { color: "E8F8F0" },
line: { color: C.gray, width: 0.5 },
});
const liveRow = ["LIVE", "Intact (semi-permeable)", "EXCLUDED", "White / unstained head"];
const liveColors = [C.green, C.text, C.green, C.green];
liveRow.forEach((cell, i) => {
const xArr = [0.4, 2.4, 4.55, 7.0];
s.addText(cell, {
x: xArr[i], y: 1.3, w: 2.1, h: 0.55,
fontSize: 10, bold: i === 0 || i === 2, color: liveColors[i],
fontFace: "Calibri", margin: 0, valign: "middle",
});
});
// Row: Dead
s.addShape(pres.shapes.RECTANGLE, {
x: 0.35, y: 1.89, w: 9.3, h: 0.62,
fill: { color: "FFF0F0" },
line: { color: C.gray, width: 0.5 },
});
const deadRow = ["DEAD", "Damaged / porous", "ENTERS CELL", "Pink to dark red head"];
const deadColors = [C.red, C.text, C.red, C.red];
deadRow.forEach((cell, i) => {
const xArr = [0.4, 2.4, 4.55, 7.0];
s.addText(cell, {
x: xArr[i], y: 1.92, w: 2.1, h: 0.55,
fontSize: 10, bold: i === 0 || i === 2, color: deadColors[i],
fontFace: "Calibri", margin: 0, valign: "middle",
});
});
// Pitfalls & Special Notes
s.addShape(pres.shapes.RECTANGLE, {
x: 0.35, y: 2.65, w: 9.3, h: 2.75,
fill: { color: C.white },
line: { color: C.gray, width: 1 },
});
s.addShape(pres.shapes.RECTANGLE, {
x: 0.35, y: 2.65, w: 9.3, h: 0.42,
fill: { color: C.dark },
line: { color: C.dark, width: 0 },
});
s.addText("SPECIAL NOTES & PITFALLS", {
x: 0.35, y: 2.65, w: 9.3, h: 0.42,
fontSize: 11, bold: true, color: C.white,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0,
});
const notes = [
{ icon: "⚠", color: C.cream, text: "Leaky neck membrane (stain confined to neck only, head unstained) → Count as LIVE — not true membrane disintegration" },
{ icon: "✓", color: "E8F8F0", text: "Validation check: % Dead (EN) + % Motile (wet mount) must total < 100%. If >100%, a methodological error has occurred" },
{ icon: "❄", color: C.light, text: "Use warm slides (37 °C) — cold shock can cause false membrane damage, artificially inflating dead cell counts" },
{ icon: "⏱", color: C.cream, text: "~30 sec incubation is optimal — over-incubation increases false positives; under-incubation reduces contrast" },
];
notes.forEach((n, i) => {
const y = 3.15 + i * 0.54;
s.addShape(pres.shapes.RECTANGLE, {
x: 0.45, y, w: 0.4, h: 0.42,
fill: { color: n.color },
line: { color: C.gray, width: 0 },
});
s.addText(n.icon, {
x: 0.45, y, w: 0.4, h: 0.42,
fontSize: 14, align: "center", valign: "middle",
fontFace: "Calibri", margin: 0,
});
s.addText(n.text, {
x: 0.95, y: y + 0.04, w: 8.5, h: 0.38,
fontSize: 9.5, color: C.text,
fontFace: "Calibri", margin: 0, valign: "middle",
});
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 7 — HYPOOSMOTIC SWELLING TEST
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 10, h: 5.625,
fill: { color: C.offwhite },
line: { color: C.offwhite, width: 0 },
});
leftBar(s, C.mid);
headerBand(s, "Alternative: Hypoosmotic Swelling (HOS) Test");
// Principle box
s.addShape(pres.shapes.RECTANGLE, {
x: 0.35, y: 0.85, w: 9.3, h: 1.6,
fill: { color: C.white },
line: { color: C.gray, width: 1 },
});
s.addShape(pres.shapes.RECTANGLE, {
x: 0.35, y: 0.85, w: 9.3, h: 0.42,
fill: { color: C.mid },
line: { color: C.mid, width: 0 },
});
s.addText("PRINCIPLE", {
x: 0.35, y: 0.85, w: 9.3, h: 0.42,
fontSize: 12, bold: true, color: C.white,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0,
});
s.addText(
"A live sperm with an intact functional membrane placed in a hypoosmotic solution (~150 mOsm) will " +
"absorb water by osmosis → the tail coils or curls (positive HOS).\n" +
"A dead sperm with a non-functional membrane does NOT swell → tail remains straight (negative HOS).",
{
x: 0.5, y: 1.35, w: 9.0, h: 1.0,
fontSize: 10, color: C.text,
fontFace: "Calibri", margin: 0, wrap: true,
}
);
// Two outcomes
const outcomes = [
{ label: "POSITIVE HOS", sub: "(Live cell)", desc: "Intact membrane → Water influx → Tail coils/curls", color: C.green },
{ label: "NEGATIVE HOS", sub: "(Dead cell)", desc: "Damaged membrane → No swelling → Tail remains straight", color: C.red },
];
outcomes.forEach((o, i) => {
const x = 0.35 + i * 4.85;
s.addShape(pres.shapes.RECTANGLE, {
x, y: 2.6, w: 4.55, h: 2.8,
fill: { color: C.white },
line: { color: o.color, width: 2 },
shadow: { type: "outer", color: "000000", blur: 4, offset: 2, angle: 135, opacity: 0.1 },
});
s.addShape(pres.shapes.RECTANGLE, {
x, y: 2.6, w: 4.55, h: 0.52,
fill: { color: o.color },
line: { color: o.color, width: 0 },
});
s.addText(`${o.label} ${o.sub}`, {
x, y: 2.62, w: 4.55, h: 0.48,
fontSize: 11, bold: true, color: C.white,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0,
});
s.addText(o.desc, {
x: x + 0.15, y: 3.2, w: 4.25, h: 0.6,
fontSize: 10, color: C.text,
fontFace: "Calibri", margin: 0,
});
// Tail drawing (simplified)
const baseX = x + 1.5;
s.addShape(pres.shapes.ELLIPSE, {
x: baseX, y: 3.9, w: 0.5, h: 0.3,
fill: { color: o.color },
line: { color: o.color, width: 0 },
});
if (i === 0) {
// Coiled tail
s.addShape(pres.shapes.RECTANGLE, {
x: baseX + 0.5, y: 4.0, w: 0.9, h: 0.06,
fill: { color: o.color },
line: { color: o.color, width: 0 },
});
s.addShape(pres.shapes.ELLIPSE, {
x: baseX + 1.2, y: 3.75, w: 0.5, h: 0.5,
fill: { color: "FFFFFF", transparency: 100 },
line: { color: o.color, width: 2 },
});
s.addText("(coiled)", {
x: baseX, y: 4.45, w: 1.5, h: 0.3,
fontSize: 9, color: C.green, italic: true,
align: "center", fontFace: "Calibri", margin: 0,
});
} else {
// Straight tail
s.addShape(pres.shapes.RECTANGLE, {
x: baseX + 0.5, y: 4.0, w: 1.4, h: 0.06,
fill: { color: o.color },
line: { color: o.color, width: 0 },
});
s.addText("(straight)", {
x: baseX, y: 4.45, w: 1.5, h: 0.3,
fontSize: 9, color: C.red, italic: true,
align: "center", fontFace: "Calibri", margin: 0,
});
}
});
// Note box
s.addShape(pres.shapes.RECTANGLE, {
x: 0.35, y: 5.25, w: 9.3, h: 0.25,
fill: { color: C.cream },
line: { color: C.gray, width: 0.5 },
});
s.addText("Note: HOS test is less precise for cattle compared to eosin-nigrosin staining — EN remains the gold standard.", {
x: 0.5, y: 5.26, w: 9.0, h: 0.22,
fontSize: 8.5, color: C.subtext, italic: true,
fontFace: "Calibri", margin: 0, valign: "middle",
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 8 — CLASSIFICATION OF SPERM ABNORMALITIES
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 10, h: 5.625,
fill: { color: C.offwhite },
line: { color: C.offwhite, width: 0 },
});
leftBar(s, C.red);
headerBand(s, "Classification of Bovine Sperm Abnormalities");
const systems = [
{ title: "Primary / Secondary", author: "Blom, 1950", desc: "Based on SITE OF ORIGIN\nPrimary = Spermatogenesis (testis)\nSecondary = Post-testicular (epididymis, ejaculation)", color: C.dark },
{ title: "Major / Minor", author: "Blom, 1971", desc: "Based on SIGNIFICANCE to fertility\nMajor defects = seriously impair fertility\nMinor defects = minor or no effect", color: C.mid },
{ title: "Compensable / Uncompensable", author: "Saacke, 1990", desc: "Based on MODE OF ACTION\nCompensable = more sperm overcomes defect\nUncompensable = increasing sperm numbers CANNOT compensate", color: C.red },
{ title: "Anatomical Location", author: "Descriptive", desc: "Based on STRUCTURAL SITE\nHead defects | Midpiece defects\nTail defects | Cytoplasmic droplets", color: C.green },
];
systems.forEach((sys, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = 0.3 + col * 4.85;
const y = 0.85 + row * 2.4;
s.addShape(pres.shapes.RECTANGLE, {
x, y, w: 4.6, h: 2.2,
fill: { color: C.white },
line: { color: C.gray, width: 1 },
shadow: { type: "outer", color: "000000", blur: 4, offset: 2, angle: 135, opacity: 0.1 },
});
s.addShape(pres.shapes.RECTANGLE, {
x, y, w: 4.6, h: 0.5,
fill: { color: sys.color },
line: { color: sys.color, width: 0 },
});
s.addText(`${sys.title}`, {
x: x + 0.1, y: y + 0.02, w: 3.8, h: 0.46,
fontSize: 11, bold: true, color: C.white,
fontFace: "Calibri", margin: 0, valign: "middle",
});
s.addText(sys.author, {
x: x + 3.7, y: y + 0.08, w: 0.8, h: 0.32,
fontSize: 8, color: "FFFFFFBB", italic: true,
align: "right", fontFace: "Calibri", margin: 0, valign: "middle",
});
s.addText(sys.desc, {
x: x + 0.15, y: y + 0.58, w: 4.3, h: 1.55,
fontSize: 9.5, color: C.text,
fontFace: "Calibri", margin: 0, wrap: true,
});
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 9 — PRIMARY ABNORMALITIES
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 10, h: 5.625,
fill: { color: C.offwhite },
line: { color: C.offwhite, width: 0 },
});
leftBar(s, C.dark);
headerBand(s, "Primary Abnormalities — Origin: Spermatogenesis (Testis)");
s.addText("These are considered MAJOR defects with significant effect on fertility", {
x: 0.35, y: 0.82, w: 9.3, h: 0.35,
fontSize: 10, italic: true, color: C.subtext,
fontFace: "Calibri", margin: 0,
});
const primaries = [
{ name: "Underdeveloped / Small Heads", detail: "Immature nucleus; poor chromatin condensation; indicates spermatogenic failure" },
{ name: "Double Forms", detail: "Bicephalic (2 heads) or biflagellate (2 tails) — result of failed cytokinesis" },
{ name: "Knobbed / Missing Acrosome", detail: "Cannot penetrate zona pellucida — one of the most fertility-damaging defects (uncompensable)" },
{ name: "Narrow / Pyriform Heads", detail: "Tapered or pear-shaped heads — associated with poor DNA integrity" },
{ name: "Crater / Diadem Defect", detail: "Nuclear vacuoles appearing as craters — linked to chromatin instability and early embryonic death" },
{ name: "Proximal Cytoplasmic Droplet", detail: "Retained cytoplasmic remnant near neck — indicates testicular immaturity or thermoregulatory failure" },
{ name: "Abnormal Midpiece", detail: "Coiled, bent, or thickened midpiece — impairs motility and energy production" },
{ name: "Accessory Tails", detail: "Extra axonemal structures; likely genetic; may impair fertility" },
{ name: "Strongly Coiled Tails", detail: "Tight coiling from deep testicular/epididymal origin — distinguished from distal coil" },
];
primaries.forEach((p, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
const x = 0.3 + col * 3.2;
const y = 1.22 + row * 1.45;
s.addShape(pres.shapes.RECTANGLE, {
x, y, w: 3.05, h: 1.32,
fill: { color: C.white },
line: { color: C.gray, width: 0.5 },
});
s.addShape(pres.shapes.RECTANGLE, {
x, y, w: 0.18, h: 1.32,
fill: { color: C.dark },
line: { color: C.dark, width: 0 },
});
s.addText(p.name, {
x: x + 0.26, y: y + 0.06, w: 2.72, h: 0.4,
fontSize: 9.5, bold: true, color: C.dark,
fontFace: "Calibri", margin: 0,
});
s.addText(p.detail, {
x: x + 0.26, y: y + 0.46, w: 2.72, h: 0.82,
fontSize: 8.5, color: C.subtext,
fontFace: "Calibri", margin: 0, wrap: true,
});
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 10 — SECONDARY ABNORMALITIES
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 10, h: 5.625,
fill: { color: C.offwhite },
line: { color: C.offwhite, width: 0 },
});
leftBar(s, C.mid);
headerBand(s, "Secondary Abnormalities — Origin: Epididymis / Post-Ejaculation");
s.addText("Generally considered MINOR defects — arise during epididymal transit, handling, or processing", {
x: 0.35, y: 0.82, w: 9.3, h: 0.35,
fontSize: 10, italic: true, color: C.subtext,
fontFace: "Calibri", margin: 0,
});
const secondaries = [
{ name: "Small Normal Heads", detail: "Slightly reduced but normally shaped — minor significance" },
{ name: "Giant / Short Broad Heads", detail: "Abnormal nuclear size from epididymal malfunction" },
{ name: "Detached / Loose Acrosomal Membranes", detail: "Acrosome partially lifted — not fully disrupted; less severe than primary acrosome defects" },
{ name: "Abaxial Implantation", detail: "Tail inserts off-center at head base; mostly normal variation; extreme cases swim in circles" },
{ name: "Distal Cytoplasmic Droplet", detail: "Droplet migrated to principal piece — minor significance; most bulls have some proportion" },
{ name: "Detached Heads", detail: "Head separates from tail during processing/cold shock — artefactual in many cases" },
{ name: "Simple Bent Tail", detail: "Single bend; often from cold shock during semen handling — artefactual" },
{ name: "Distal Coiled Tail", detail: "Coiling at terminal piece — hypoosmotic stress; less serious than proximal coil" },
];
secondaries.forEach((p, i) => {
const col = i % 4;
const row = Math.floor(i / 4);
const x = 0.25 + col * 2.4;
const y = 1.22 + row * 2.1;
s.addShape(pres.shapes.RECTANGLE, {
x, y, w: 2.25, h: 1.9,
fill: { color: C.white },
line: { color: C.gray, width: 0.5 },
});
s.addShape(pres.shapes.RECTANGLE, {
x, y, w: 2.25, h: 0.38,
fill: { color: C.mid },
line: { color: C.mid, width: 0 },
});
s.addText(p.name, {
x: x + 0.08, y: y + 0.04, w: 2.1, h: 0.32,
fontSize: 8.5, bold: true, color: C.white,
fontFace: "Calibri", margin: 0, valign: "middle",
});
s.addText(p.detail, {
x: x + 0.08, y: y + 0.44, w: 2.1, h: 1.38,
fontSize: 8, color: C.subtext,
fontFace: "Calibri", margin: 0, wrap: true,
});
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 11 — COMPENSABLE vs UNCOMPENSABLE
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 10, h: 5.625,
fill: { color: C.offwhite },
line: { color: C.offwhite, width: 0 },
});
leftBar(s, C.red);
headerBand(s, "Compensable vs. Uncompensable Sperm Defects");
// Compensable column
s.addShape(pres.shapes.RECTANGLE, {
x: 0.3, y: 0.85, w: 4.4, h: 4.55,
fill: { color: C.white },
line: { color: C.green, width: 2 },
shadow: { type: "outer", color: "000000", blur: 5, offset: 3, angle: 135, opacity: 0.1 },
});
s.addShape(pres.shapes.RECTANGLE, {
x: 0.3, y: 0.85, w: 4.4, h: 0.5,
fill: { color: C.green },
line: { color: C.green, width: 0 },
});
s.addText("COMPENSABLE DEFECTS", {
x: 0.3, y: 0.87, w: 4.4, h: 0.46,
fontSize: 12, bold: true, color: C.white,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0,
});
s.addText(
"Definition:\nDefective sperm FAIL to fertilize but do NOT block competing normal sperm. " +
"Increasing the number of inseminated sperm can overcome reduced fertility.\n\n" +
"Examples:\n• Detached heads\n• Distal cytoplasmic droplets\n• Distal coiled tails\n• Abaxial implantation\n• Simple bent tails\n\n" +
"Clinical relevance:\nMore significant in AI (fixed sperm dose) than in natural service where bull can inseminate repeatedly.",
{
x: 0.45, y: 1.45, w: 4.1, h: 3.85,
fontSize: 10, color: C.text,
fontFace: "Calibri", margin: 0, wrap: true,
}
);
// Uncompensable column
s.addShape(pres.shapes.RECTANGLE, {
x: 5.3, y: 0.85, w: 4.4, h: 4.55,
fill: { color: C.white },
line: { color: C.red, width: 2 },
shadow: { type: "outer", color: "000000", blur: 5, offset: 3, angle: 135, opacity: 0.1 },
});
s.addShape(pres.shapes.RECTANGLE, {
x: 5.3, y: 0.85, w: 4.4, h: 0.5,
fill: { color: C.red },
line: { color: C.red, width: 0 },
});
s.addText("UNCOMPENSABLE DEFECTS", {
x: 5.3, y: 0.87, w: 4.4, h: 0.46,
fontSize: 12, bold: true, color: C.white,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0,
});
s.addText(
"Definition:\nDefective sperm ACTIVELY INTERFERE with normal sperm function — occupying binding sites without fertilizing. " +
"Increasing sperm numbers CANNOT improve fertility.\n\n" +
"Examples:\n• Knobbed / missing acrosome\n• Nuclear vacuoles (diadem defect)\n• Certain abnormal head shapes\n• Decapitated sperm defect\n• Dag defect (coiled midpiece)\n\n" +
"Clinical relevance:\nParticularly dangerous in natural mating. These bulls should be classified UNSATISFACTORY regardless of sperm numbers.",
{
x: 5.45, y: 1.45, w: 4.1, h: 3.85,
fontSize: 10, color: C.text,
fontFace: "Calibri", margin: 0, wrap: true,
}
);
// Arrow in between
s.addText("vs.", {
x: 4.7, y: 2.8, w: 0.6, h: 0.6,
fontSize: 18, bold: true, color: C.gray,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0,
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 12 — SPECIFIC NOTABLE DEFECTS IN CATTLE
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 10, h: 5.625,
fill: { color: C.offwhite },
line: { color: C.offwhite, width: 0 },
});
leftBar(s, C.dark);
headerBand(s, "Clinically Notable Sperm Defects in Cattle");
const defects = [
{
name: "Dag Defect",
sub: "Coiled midpiece",
body: "Genetic defect seen in certain breeds (e.g., Guernsey). Severely impairs motility. Bull should be culled.",
color: C.dark,
},
{
name: "Decapitated Sperm",
sub: "Head detaches in epididymis",
body: "Breed-associated (Guernsey bulls). Heads and tails separate spontaneously. Causes severe subfertility.",
color: C.red,
},
{
name: "Knobbed Acrosome",
sub: "Acrosome abnormality",
body: "Most fertility-impairing primary defect. Sperm cannot penetrate zona pellucida. Uncompensable — no cure.",
color: C.red,
},
{
name: "Nuclear Vacuoles",
sub: "Diadem / Crater defect",
body: "Linked to chromatin instability and sperm DNA fragmentation. Associated with early embryonic death post-fertilization.",
color: C.dark,
},
{
name: "Proximal Droplet",
sub: "Cytoplasmic retention",
body: "Indicates testicular immaturity or recent fever/scrotal insulation. Resolves if underlying cause is treated — monitor for 60 days.",
color: C.mid,
},
{
name: "Abaxial Tail",
sub: "Off-center implantation",
body: "Generally normal variation. In extreme angles, affected sperm swim in tight circles — then classified as abnormal.",
color: C.green,
},
];
defects.forEach((d, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
const x = 0.3 + col * 3.2;
const y = 0.85 + row * 2.4;
s.addShape(pres.shapes.RECTANGLE, {
x, y, w: 3.0, h: 2.22,
fill: { color: C.white },
line: { color: d.color, width: 1.5 },
shadow: { type: "outer", color: "000000", blur: 4, offset: 2, angle: 135, opacity: 0.1 },
});
s.addShape(pres.shapes.RECTANGLE, {
x, y, w: 3.0, h: 0.55,
fill: { color: d.color },
line: { color: d.color, width: 0 },
});
s.addText(d.name, {
x: x + 0.1, y: y + 0.04, w: 2.8, h: 0.3,
fontSize: 11, bold: true, color: C.white,
fontFace: "Calibri", margin: 0,
});
s.addText(d.sub, {
x: x + 0.1, y: y + 0.32, w: 2.8, h: 0.2,
fontSize: 8.5, color: "FFFFFFBB", italic: true,
fontFace: "Calibri", margin: 0,
});
s.addText(d.body, {
x: x + 0.12, y: y + 0.64, w: 2.76, h: 1.5,
fontSize: 9.5, color: C.text,
fontFace: "Calibri", margin: 0, wrap: true,
});
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 13 — BSE CLASSIFICATION TABLE
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 10, h: 5.625,
fill: { color: C.offwhite },
line: { color: C.offwhite, width: 0 },
});
leftBar(s, C.mid);
headerBand(s, "Breeding Soundness Examination (BSE) — Classification Summary");
// Table
const headers = ["Parameter", "Minimum Requirement", "Classification Impact"];
const rows = [
["Gross Motility", "≥ Fair OR ≥ 30% progressive motility", "Must pass for Satisfactory classification"],
["Morphologically Normal Sperm", "≥ 70% normal morphology", "Core criterion — failure = Unsatisfactory"],
["Live Spermatozoa (EN stain)", "≥ 70% viable (live, unstained)", "Confirms viability alongside morphology"],
["Scrotal Circumference", "Age-dependent minimum (e.g., ≥ 30 cm at 15 mo)", "Correlates with daily sperm output"],
];
// Header row
s.addShape(pres.shapes.RECTANGLE, {
x: 0.3, y: 0.85, w: 9.4, h: 0.5,
fill: { color: C.dark },
line: { color: C.dark, width: 0 },
});
headers.forEach((h, i) => {
const xArr = [0.35, 3.2, 6.4];
const wArr = [2.8, 3.1, 3.25];
s.addText(h, {
x: xArr[i], y: 0.88, w: wArr[i], h: 0.42,
fontSize: 10, bold: true, color: C.white,
fontFace: "Calibri", margin: 0, valign: "middle",
});
});
rows.forEach((row, ri) => {
const y = 1.35 + ri * 0.75;
const bg = ri % 2 === 0 ? C.white : C.light;
s.addShape(pres.shapes.RECTANGLE, {
x: 0.3, y, w: 9.4, h: 0.72,
fill: { color: bg },
line: { color: C.gray, width: 0.5 },
});
const xArr = [0.35, 3.2, 6.4];
const wArr = [2.8, 3.1, 3.25];
row.forEach((cell, ci) => {
s.addText(cell, {
x: xArr[ci], y: y + 0.05, w: wArr[ci], h: 0.62,
fontSize: 9.5, bold: ci === 0, color: ci === 0 ? C.dark : C.text,
fontFace: "Calibri", margin: 0, valign: "middle", wrap: true,
});
});
});
// Three outcome boxes
const outcomes = [
{ label: "SATISFACTORY\nPOTENTIAL BREEDER", color: C.green, crit: "All minimum criteria met" },
{ label: "DEFERRED\n(Re-examine)", color: C.mid, crit: "Marginal results — re-examine in 60 days" },
{ label: "UNSATISFACTORY\nPOTENTIAL BREEDER", color: C.red, crit: "One or more criteria failed" },
];
outcomes.forEach((o, i) => {
const x = 0.3 + i * 3.15;
s.addShape(pres.shapes.RECTANGLE, {
x, y: 4.45, w: 3.0, h: 1.0,
fill: { color: o.color },
line: { color: o.color, width: 0 },
shadow: { type: "outer", color: "000000", blur: 4, offset: 2, angle: 135, opacity: 0.15 },
});
s.addText(o.label, {
x: x + 0.05, y: 4.48, w: 2.9, h: 0.52,
fontSize: 10, bold: true, color: C.white,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0,
});
s.addText(o.crit, {
x: x + 0.05, y: 5.0, w: 2.9, h: 0.38,
fontSize: 8, color: C.white, italic: true,
align: "center", fontFace: "Calibri", margin: 0,
});
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 14 — SUMMARY / CONCLUSION
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 10, h: 5.625,
fill: { color: C.dark },
line: { color: C.dark, width: 0 },
});
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 4.8, w: 10, h: 0.825,
fill: { color: C.mid },
line: { color: C.mid, width: 0 },
});
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 4.78, w: 10, h: 0.06,
fill: { color: C.cream },
line: { color: C.cream, width: 0 },
});
s.addText("Key Takeaways", {
x: 0.5, y: 0.15, w: 9, h: 0.65,
fontSize: 26, bold: true, color: C.white,
fontFace: "Calibri", margin: 0,
});
s.addText("Live & Dead Spermatozoa in Cattle", {
x: 0.5, y: 0.72, w: 9, h: 0.45,
fontSize: 14, color: C.cream, italic: true,
fontFace: "Calibri", margin: 0,
});
const points = [
{ icon: "01", text: "Eosin-nigrosin (Blom, 1950) is the gold-standard viability stain — principle = dye exclusion based on membrane integrity" },
{ icon: "02", text: "Live sperm exclude eosin (white head); dead sperm absorb eosin (pink/red head); nigrosin provides dark contrast background" },
{ icon: "03", text: "≥ 70% live, morphologically normal sperm is required for a Satisfactory Potential Breeder classification in BSE" },
{ icon: "04", text: "Primary abnormalities arise in the testis (spermatogenesis) and are generally major; secondary arise post-testiculary and are generally minor" },
{ icon: "05", text: "Uncompensable defects (e.g., knobbed acrosome, diadem defect) cannot be overcome by increasing sperm numbers — most clinically dangerous" },
{ icon: "06", text: "Specific cattle defects — Dag, decapitated sperm, knobbed acrosome, proximal droplet — have distinct etiologies and varying prognoses" },
];
points.forEach((p, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = 0.35 + col * 4.9;
const y = 1.28 + row * 1.12;
s.addShape(pres.shapes.RECTANGLE, {
x, y, w: 4.65, h: 1.0,
fill: { color: "FFFFFF", transparency: 88 },
line: { color: C.mid, width: 1 },
});
s.addShape(pres.shapes.ELLIPSE, {
x: x + 0.08, y: y + 0.28, w: 0.44, h: 0.44,
fill: { color: C.mid },
line: { color: C.mid, width: 0 },
});
s.addText(p.icon, {
x: x + 0.08, y: y + 0.28, w: 0.44, h: 0.44,
fontSize: 9, bold: true, color: C.white,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0,
});
s.addText(p.text, {
x: x + 0.62, y: y + 0.08, w: 3.95, h: 0.84,
fontSize: 9, color: C.white,
fontFace: "Calibri", margin: 0, wrap: true, valign: "middle",
});
});
s.addText("Reference: Barth & Oko (1989). Abnormal Morphology of Bovine Spermatozoa. Iowa State University Press.", {
x: 0.3, y: 4.85, w: 9.4, h: 0.35,
fontSize: 8, color: "FFFFFFAA", italic: true,
align: "center", fontFace: "Calibri", margin: 0, valign: "middle",
});
}
// ── WRITE FILE ───────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/sperm-cattle-ppt/Live_Dead_Spermatozoa_Cattle.pptx" })
.then(() => console.log("SUCCESS: file written"))
.catch(err => { console.error("ERROR:", err); process.exit(1); });
cd /home/daytona/workspace/sperm-cattle-ppt && node build.js 2>&1
pres.shapes.ELLIPSE - let me check the correct shape name.node -e "const p = require('pptxgenjs'); const pr = new p(); console.log(Object.keys(pr.shapes).filter(k => k.includes('ELLI') || k.includes('OVAL') || k.includes('CIRC')))"
sed -i 's/pres\.shapes\.ELLIPSE/pres.shapes.OVAL/g' /home/daytona/workspace/sperm-cattle-ppt/build.js && echo "done"
python3 -c " content = open('/home/daytona/workspace/sperm-cattle-ppt/build.js').read() content = content.replace('pres.shapes.ELLIPSE', 'pres.shapes.OVAL') open('/home/daytona/workspace/sperm-cattle-ppt/build.js', 'w').write(content) print('done') "
cd /home/daytona/workspace/sperm-cattle-ppt && node build.js 2>&1
ls -lh /home/daytona/workspace/sperm-cattle-ppt/Live_Dead_Spermatozoa_Cattle.pptx
Live Dead Spermatozoa Cattle
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide — with live (green) / dead (red) visual |
| 2 | Agenda — 6 numbered topic cards |
| 3 | Why assess sperm viability? — BSE, AI, and differential diagnosis |
| 4 | Eosin-nigrosin: history & principle — membrane permeability diagrams |
| 5 | Reagents & step-by-step procedure (one-step method) |
| 6 | Interpretation: live vs dead table + pitfalls (leaky neck, warm slides, incubation time) |
| 7 | Hypoosmotic swelling (HOS) test — positive vs negative outcome diagrams |
| 8 | Classification systems — all 4 systems (Primary/Secondary, Major/Minor, Compensable/Uncompensable, Anatomical) |
| 9 | Primary abnormalities — 9 defect cards with detail |
| 10 | Secondary abnormalities — 8 defect cards with detail |
| 11 | Compensable vs. Uncompensable — side-by-side comparison with examples |
| 12 | Clinically notable defects — Dag, decapitated, knobbed acrosome, diadem, proximal droplet, abaxial |
| 13 | BSE classification table — Satisfactory / Deferred / Unsatisfactory criteria |
| 14 | Summary / Key Takeaways — 6 points on dark background |
Retry
ls /home/daytona/workspace/sperm-cattle-ppt/ && echo "---" && node -e "const p = require('pptxgenjs'); const pr = new p(); console.log(Object.keys(pr.shapes).slice(0,30))"
~/sperm-cattle-ppt/build2.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Live and Dead Spermatozoa in Cattle";
// ── PALETTE (all 6-digit hex, no alpha) ─────────────────────────────────────
const C = {
dark: "0D4F5C", // deep teal
mid: "2A8C9E", // medium teal
light: "E8F5F8", // pale teal
cream: "F5EDD6", // warm cream
red: "C94040", // coral red = dead
green: "2E7D52", // forest green = live
white: "FFFFFF",
offwhite:"F7F9F9",
text: "1A2E35",
sub: "3D6B77",
gray: "B0C4CC",
lgray: "E2EAEC",
};
// ── HELPERS ──────────────────────────────────────────────────────────────────
function bg(s, color) {
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:5.625,
fill:{color}, line:{color, width:0} });
}
function leftBar(s, color) {
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:0.18, h:5.625,
fill:{color}, line:{color, width:0} });
}
function hdr(s, title, bg_col, fg_col) {
bg_col = bg_col || C.dark; fg_col = fg_col || C.white;
s.addShape(pres.shapes.RECTANGLE, { x:0.18, y:0, w:9.82, h:0.72,
fill:{color:bg_col}, line:{color:bg_col, width:0} });
s.addText(title, { x:0.38, y:0.06, w:9.42, h:0.60,
fontSize:19, bold:true, color:fg_col, fontFace:"Calibri",
margin:0, valign:"middle" });
}
function rect(s, x, y, w, h, fill, lineColor, lineW) {
lineColor = lineColor || fill; lineW = lineW || 0;
s.addShape(pres.shapes.RECTANGLE, { x,y,w,h,
fill:{color:fill}, line:{color:lineColor, width:lineW} });
}
function oval(s, x, y, w, h, fill, lineColor, lineW) {
lineColor = lineColor || fill; lineW = lineW || 0;
s.addShape(pres.shapes.OVAL, { x,y,w,h,
fill:{color:fill}, line:{color:lineColor, width:lineW} });
}
function txt(s, text, x, y, w, h, opts) {
opts = opts || {};
s.addText(text, Object.assign({
x,y,w,h, fontFace:"Calibri", margin:0
}, opts));
}
function card(s, x, y, w, h, headerColor, headerText, headerFontSize) {
s.addShape(pres.shapes.RECTANGLE, { x,y,w,h,
fill:{color:C.white}, line:{color:C.lgray, width:1},
shadow:{type:"outer",color:"000000",blur:4,offset:2,angle:135,opacity:0.1} });
s.addShape(pres.shapes.RECTANGLE, { x, y, w, h:0.46,
fill:{color:headerColor}, line:{color:headerColor, width:0} });
txt(s, headerText, x, y, w, 0.46,
{ fontSize:headerFontSize||11, bold:true, color:C.white,
align:"center", valign:"middle" });
}
function numberedBullet(s, n, text, x, y, w, bulletColor) {
oval(s, x, y+0.03, 0.36, 0.36, bulletColor || C.mid);
txt(s, String(n), x, y+0.03, 0.36, 0.36,
{ fontSize:10, bold:true, color:C.white, align:"center", valign:"middle" });
txt(s, text, x+0.44, y, w-0.44, 0.42,
{ fontSize:9.5, color:C.text, valign:"middle", wrap:true });
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s, C.dark);
// right panel
rect(s, 6.4, 0, 3.6, 5.625, C.mid);
rect(s, 6.25, 0, 0.1, 5.625, C.cream);
// decorative circles on right panel
oval(s, 6.75, 0.3, 1.35, 1.35, C.green, C.white, 2);
txt(s,"LIVE", 6.75, 0.72, 1.35, 0.5,
{ fontSize:15, bold:true, color:C.white, align:"center" });
oval(s, 8.3, 0.3, 1.35, 1.35, C.red, C.white, 2);
txt(s,"DEAD", 8.3, 0.72, 1.35, 0.5,
{ fontSize:15, bold:true, color:C.white, align:"center" });
// sperm decorative ovals
for (let i=0; i<5; i++) {
oval(s, 6.65+i*0.52, 4.4, 0.28, 0.18, "3BA8BB");
}
// main text
txt(s,"Live and Dead", 0.4, 0.9, 5.7, 0.85,
{ fontSize:30, bold:true, color:C.white });
txt(s,"Spermatozoa in Cattle", 0.4, 1.72, 5.7, 0.85,
{ fontSize:30, bold:true, color:C.cream });
txt(s,"Eosin-Nigrosin Staining · Viability Principles · Morphological Abnormalities",
0.4, 2.7, 5.7, 0.55,
{ fontSize:11.5, italic:true, color:C.gray });
txt(s,"Veterinary Reproductive Biology", 0.4, 5.1, 5.7, 0.35,
{ fontSize:10, color:C.gray });
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 2 — AGENDA
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s, C.offwhite);
leftBar(s, C.mid);
hdr(s, "Agenda");
const items = [
["01","Why Assess Sperm Viability?","BSE & the 70% fertility threshold"],
["02","Eosin-Nigrosin Staining","History, principle & dye-exclusion mechanism"],
["03","Reagents & Procedure","One-step method, step-by-step"],
["04","Interpretation & Pitfalls","Live vs. dead; special cases"],
["05","Sperm Abnormality Classification","4 classification systems"],
["06","Primary Abnormalities","Testicular origin; major defects"],
["07","Secondary Abnormalities","Post-testicular; minor defects"],
["08","Compensable vs. Uncompensable","Fertility implications & BSE outcomes"],
];
items.forEach((item, i) => {
const col = i < 4 ? 0 : 1;
const row = i % 4;
const x = 0.32 + col * 4.88;
const y = 0.88 + row * 1.17;
rect(s, x, y, 4.6, 1.08, C.white, C.lgray, 1);
rect(s, x, y, 0.52, 1.08, C.mid);
txt(s, item[0], x, y+0.3, 0.52, 0.46,
{ fontSize:13, bold:true, color:C.white, align:"center" });
txt(s, item[1], x+0.62, y+0.06, 3.9, 0.45,
{ fontSize:11, bold:true, color:C.text });
txt(s, item[2], x+0.62, y+0.55, 3.9, 0.44,
{ fontSize:9, italic:true, color:C.sub });
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 3 — WHY ASSESS SPERM VIABILITY
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s, C.offwhite);
leftBar(s, C.green);
hdr(s, "Why Assess Sperm Viability?");
// big stat
rect(s, 3.6, 0.9, 2.8, 1.3, C.dark);
txt(s,"≥ 70%", 3.6, 0.93, 2.8, 0.7,
{ fontSize:34, bold:true, color:C.cream, align:"center" });
txt(s,"Normal viable sperm\nfor Satisfactory Potential Breeder",
3.6, 1.6, 2.8, 0.54,
{ fontSize:8.5, color:C.gray, align:"center" });
// three reason cards
const cards = [
{ x:0.32, color:C.green, icon:"BSE",
title:"Breeding Soundness Exam",
body:"Core evaluation of bull fertility before the breeding season. Includes motility, morphology, and viability assessment." },
{ x:3.66, color:C.mid, icon:"AI",
title:"Artificial Insemination",
body:"Viability must be confirmed in chilled and frozen-thawed semen. Dead sperm in AI doses reduce conception rates." },
{ x:6.99, color:C.red, icon:"DX",
title:"Differential Diagnosis",
body:"Differentiates asthenozoospermia (alive but immotile) from necrozoospermia (high proportion of dead sperm)." },
];
cards.forEach(c => {
rect(s, c.x, 2.35, 3.1, 3.05, C.white, C.lgray, 1);
rect(s, c.x, 2.35, 3.1, 0.5, c.color);
txt(s, c.icon, c.x, 2.37, 3.1, 0.46,
{ fontSize:13, bold:true, color:C.white, align:"center", valign:"middle" });
txt(s, c.title, c.x+0.12, 2.94, 2.86, 0.46,
{ fontSize:11, bold:true, color:C.text });
txt(s, c.body, c.x+0.12, 3.44, 2.86, 1.86,
{ fontSize:9.5, color:C.sub, wrap:true });
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 4 — EOSIN-NIGROSIN PRINCIPLE
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s, C.offwhite);
leftBar(s, C.mid);
hdr(s, "Eosin-Nigrosin Staining — History & Principle");
// History box
card(s, 0.3, 0.86, 4.4, 1.95, C.mid, "HISTORY");
txt(s, [
{text:"Developed by ", options:{fontSize:9.5, color:C.text}},
{text:"Blom (1950)", options:{fontSize:9.5, bold:true, color:C.dark}},
{text:" for bull semen evaluation\n", options:{fontSize:9.5, color:C.text}},
{text:"• Originally two-step; now one-step method\n", options:{fontSize:9.5, color:C.text}},
{text:"• Gold standard ", options:{fontSize:9.5, bold:true, color:C.dark}},
{text:"in veterinary & human reproductive labs\n", options:{fontSize:9.5, color:C.text}},
{text:"• Validated against WHO semen standards (Bjorndahl et al., 2003)", options:{fontSize:9.5, color:C.text}},
], { x:0.45, y:1.4, w:4.1, h:1.3, fontFace:"Calibri", margin:0 });
// Principle box
card(s, 5.0, 0.86, 4.65, 1.95, C.dark, "PRINCIPLE — DYE EXCLUSION METHOD", 10);
txt(s, [
{text:"INTACT membrane (live):\n", options:{fontSize:9.5, bold:true, color:C.green}},
{text:" Semi-permeable → Eosin excluded → Head stays WHITE\n\n", options:{fontSize:9.5, color:C.text}},
{text:"DAMAGED membrane (dead):\n", options:{fontSize:9.5, bold:true, color:C.red}},
{text:" Porous → Eosin penetrates → Head stains PINK/RED\n\n", options:{fontSize:9.5, color:C.text}},
{text:"Nigrosin: ", options:{fontSize:9.5, bold:true, color:C.dark}},
{text:"black background dye → improves contrast only", options:{fontSize:9.5, color:C.text}},
], { x:5.15, y:1.4, w:4.4, h:1.3, fontFace:"Calibri", margin:0 });
// Live / Dead visual
rect(s, 0.3, 3.0, 9.35, 2.45, C.white, C.lgray, 1);
txt(s,"VISUAL DIAGRAM", 0.3, 3.0, 9.35, 0.38,
{ fontSize:10, bold:true, color:C.sub, align:"center", valign:"middle" });
// --- LIVE SPERM ---
txt(s,"LIVE SPERMATOZOON", 0.55, 3.46, 3.5, 0.32,
{ fontSize:10, bold:true, color:C.green, align:"center" });
// head (white, green border)
oval(s, 0.75, 3.84, 0.7, 0.42, C.white, C.green, 2.5);
// midpiece
rect(s, 1.44, 4.02, 0.55, 0.07, C.green);
// tail
rect(s, 1.98, 3.98, 1.1, 0.06, C.green);
// label
txt(s,"Unstained head (white)", 0.55, 4.35, 3.0, 0.32,
{ fontSize:8.5, italic:true, color:C.green, align:"center" });
// --- MEMBRANE COMPARISON ---
txt(s,"MEMBRANE INTEGRITY", 3.75, 3.42, 2.5, 0.32,
{ fontSize:9, bold:true, color:C.sub, align:"center" });
oval(s, 3.85, 3.8, 1.1, 1.1, C.light, C.green, 2.5);
txt(s,"Intact\n✓", 3.85, 4.05, 1.1, 0.6,
{ fontSize:9, bold:true, color:C.green, align:"center" });
oval(s, 5.1, 3.8, 1.1, 1.1, "FDEAEA", C.red, 2.5);
txt(s,"Porous\n✗", 5.1, 4.05, 1.1, 0.6,
{ fontSize:9, bold:true, color:C.red, align:"center" });
// --- DEAD SPERM ---
txt(s,"DEAD SPERMATOZOON", 6.2, 3.46, 3.2, 0.32,
{ fontSize:10, bold:true, color:C.red, align:"center" });
oval(s, 6.3, 3.84, 0.7, 0.42, "FBBCBC", C.red, 2.5);
rect(s, 6.99, 4.02, 0.55, 0.07, C.red);
rect(s, 7.53, 3.98, 1.1, 0.06, C.red);
txt(s,"Pink/red stained head", 6.2, 4.35, 3.0, 0.32,
{ fontSize:8.5, italic:true, color:C.red, align:"center" });
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 5 — REAGENTS & PROCEDURE
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s, C.offwhite);
leftBar(s, C.mid);
hdr(s, "Reagents & Step-by-Step Procedure (One-Step Method)");
// Reagents
card(s, 0.3, 0.85, 3.55, 4.55, C.mid, "REAGENTS", 12);
const reagents = [
{name:"Eosin Y (5%)", role:"Vital dye — stains dead cells pink/red", dot:C.red},
{name:"Nigrosin (10%)", role:"Background dye — dark contrast only", dot:C.dark},
{name:"Distilled Water", role:"Solvent for stain preparation", dot:C.sub},
{name:"Warm Slide (37 °C)", role:"Prevents cold-shock artefact", dot:C.mid},
];
reagents.forEach((r,i) => {
const y = 1.44 + i*1.0;
rect(s, 0.46, y+0.14, 0.12, 0.62, r.dot);
txt(s, r.name, 0.66, y+0.04, 3.05, 0.38,
{ fontSize:11, bold:true, color:C.text });
txt(s, r.role, 0.66, y+0.44, 3.05, 0.34,
{ fontSize:9, italic:true, color:C.sub });
});
// Steps
card(s, 4.1, 0.85, 5.55, 4.55, C.dark, "PROCEDURE", 12);
const steps = [
"Place a small drop of fresh semen on a warm slide (37 °C)",
"Add an equal volume of eosin-nigrosin stain solution",
"Mix gently and incubate approximately 30 seconds at 37 °C",
"Make a thin smear and allow to air-dry completely",
"Examine under bright-field microscope at ×400–1000",
"Count a minimum of 200 spermatozoa per slide",
"Record % unstained heads (live) and % pink heads (dead)",
];
steps.forEach((step, i) => {
const y = 1.42 + i * 0.56;
oval(s, 4.26, y+0.04, 0.36, 0.36, C.mid);
txt(s, String(i+1), 4.26, y+0.04, 0.36, 0.36,
{ fontSize:10, bold:true, color:C.white, align:"center", valign:"middle" });
txt(s, step, 4.72, y+0.04, 4.75, 0.38,
{ fontSize:9.5, color:C.text, valign:"middle", wrap:true });
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 6 — INTERPRETATION & PITFALLS
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s, C.offwhite);
leftBar(s, C.green);
hdr(s, "Interpretation of Results & Pitfalls");
// Result table header
rect(s, 0.3, 0.84, 9.35, 0.44, C.mid);
[["Cell Status",0.35,1.8],["Membrane Integrity",2.2,2.4],["Eosin Entry",4.65,1.6],["Microscopic Appearance",6.3,3.3]]
.forEach(([h,x,w]) => txt(s, h, x, 0.87, w, 0.38,
{ fontSize:10, bold:true, color:C.white, valign:"middle" }));
// Live row
rect(s, 0.3, 1.28, 9.35, 0.6, "E8F8F0", C.lgray, 0.5);
[["LIVE",C.green],["Intact (semi-permeable)",C.text],["EXCLUDED",C.green],["White / unstained head",C.green]]
.forEach(([cell,color],i) => {
const xs=[0.38,2.22,4.67,6.32]; const ws=[1.78,2.36,1.56,3.28];
txt(s, cell, xs[i], 1.31, ws[i], 0.54,
{ fontSize:10, bold:i===0||i===2, color, valign:"middle" });
});
// Dead row
rect(s, 0.3, 1.88, 9.35, 0.6, "FFF0F0", C.lgray, 0.5);
[["DEAD",C.red],["Damaged / porous",C.text],["ENTERS CELL",C.red],["Pink to dark-red head",C.red]]
.forEach(([cell,color],i) => {
const xs=[0.38,2.22,4.67,6.32]; const ws=[1.78,2.36,1.56,3.28];
txt(s, cell, xs[i], 1.91, ws[i], 0.54,
{ fontSize:10, bold:i===0||i===2, color, valign:"middle" });
});
// Pitfalls
card(s, 0.3, 2.62, 9.35, 2.78, C.dark, "SPECIAL NOTES & PITFALLS", 11);
const notes = [
{icon:"⚠", col:C.cream, t:"Leaky neck membrane: stain confined only to neck, head unstained → Count as LIVE (not true cell death)"},
{icon:"✓", col:C.light, t:"Validation: % Dead (EN) + % Motile (wet mount) must total < 100%. If it exceeds 100%, a method error has occurred"},
{icon:"❄", col:C.light, t:"Use warm slides (37 °C) — cold shock damages membranes artificially, inflating the dead-cell percentage"},
{icon:"⏱", col:C.cream, t:"Optimal incubation ~30 seconds. Over-incubation → false positives; under-incubation → poor contrast"},
];
notes.forEach((n,i) => {
const y = 3.18 + i*0.54;
rect(s, 0.42, y, 0.38, 0.42, n.col, C.lgray, 0);
txt(s, n.icon, 0.42, y, 0.38, 0.42,
{ fontSize:13, align:"center", valign:"middle" });
txt(s, n.t, 0.9, y+0.04, 8.6, 0.38,
{ fontSize:9.5, color:C.text, valign:"middle", wrap:true });
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 7 — HYPOOSMOTIC SWELLING TEST
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s, C.offwhite);
leftBar(s, C.mid);
hdr(s, "Alternative Viability Method: Hypoosmotic Swelling (HOS) Test");
card(s, 0.3, 0.84, 9.35, 1.62, C.mid, "PRINCIPLE", 12);
txt(s,
"A live sperm with an intact functional membrane placed in hypoosmotic solution (~150 mOsm) absorbs water by osmosis → " +
"tail coils or curls (positive HOS).\nA dead sperm with a non-functional membrane does NOT swell → tail remains straight (negative HOS).",
{ x:0.45, y:1.38, w:9.1, h:1.0, fontSize:10, color:C.text, fontFace:"Calibri", margin:0, wrap:true });
// Positive
rect(s, 0.3, 2.62, 4.55, 2.78, C.white, C.green, 2);
rect(s, 0.3, 2.62, 4.55, 0.5, C.green);
txt(s,"POSITIVE HOS — Live Cell", 0.3, 2.64, 4.55, 0.46,
{ fontSize:11, bold:true, color:C.white, align:"center", valign:"middle" });
txt(s,"Intact membrane → Water influx → Tail coils / curls\n\nResult: SPERM IS ALIVE",
0.45, 3.2, 4.25, 1.0,
{ fontSize:10, color:C.text, wrap:true });
// coiled tail drawing
oval(s, 0.55, 4.35, 0.52, 0.32, C.green, C.green, 0);
rect(s, 1.06, 4.47, 0.6, 0.06, C.green);
oval(s, 1.6, 4.2, 0.48, 0.48, C.white, C.green, 2);
txt(s,"(tail coiled = LIVE)", 0.5, 4.78, 3.5, 0.28,
{ fontSize:8.5, italic:true, color:C.green, align:"center" });
// Negative
rect(s, 5.1, 2.62, 4.55, 2.78, C.white, C.red, 2);
rect(s, 5.1, 2.62, 4.55, 0.5, C.red);
txt(s,"NEGATIVE HOS — Dead Cell", 5.1, 2.64, 4.55, 0.46,
{ fontSize:11, bold:true, color:C.white, align:"center", valign:"middle" });
txt(s,"Damaged membrane → No swelling → Tail stays straight\n\nResult: SPERM IS DEAD",
5.25, 3.2, 4.25, 1.0,
{ fontSize:10, color:C.text, wrap:true });
// straight tail
oval(s, 5.3, 4.35, 0.52, 0.32, C.red);
rect(s, 5.81, 4.47, 1.35, 0.06, C.red);
txt(s,"(tail straight = DEAD)", 5.25, 4.78, 3.5, 0.28,
{ fontSize:8.5, italic:true, color:C.red, align:"center" });
// Note
rect(s, 0.3, 5.38, 9.35, 0.22, C.cream, C.lgray, 1);
txt(s,"Note: EN staining remains the gold standard for cattle — HOS is an alternative when staining is unavailable.",
0.45, 5.39, 9.1, 0.2,
{ fontSize:8, italic:true, color:C.sub, valign:"middle" });
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 8 — CLASSIFICATION SYSTEMS
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s, C.offwhite);
leftBar(s, C.red);
hdr(s, "Classification Systems for Bovine Sperm Abnormalities");
const sys = [
{ title:"Primary / Secondary", auth:"Blom, 1950", col:C.dark,
body:"Based on SITE OF ORIGIN\n• Primary = Spermatogenesis in testis\n• Secondary = Post-testicular (epididymis, ejaculation, handling)" },
{ title:"Major / Minor", auth:"Blom, 1971", col:C.mid,
body:"Based on SIGNIFICANCE to fertility\n• Major defects — seriously impair or eliminate fertility\n• Minor defects — little or no effect on fertility" },
{ title:"Compensable vs Uncompensable", auth:"Saacke, 1990", col:C.red,
body:"Based on MODE OF ACTION\n• Compensable — more sperm overcomes effect\n• Uncompensable — increasing numbers CANNOT compensate" },
{ title:"Anatomical Location", auth:"Descriptive", col:C.green,
body:"Based on STRUCTURAL SITE\n• Head defects (shape, acrosome, nucleus)\n• Midpiece defects | Tail defects\n• Cytoplasmic droplets (proximal / distal)" },
];
sys.forEach((sy,i) => {
const col = i%2; const row = Math.floor(i/2);
const x = 0.28 + col*4.88;
const y = 0.86 + row*2.38;
rect(s, x, y, 4.62, 2.2, C.white, C.lgray, 1);
rect(s, x, y, 4.62, 0.5, sy.col);
txt(s, sy.title, x+0.1, y+0.03, 3.7, 0.44,
{ fontSize:11, bold:true, color:C.white, valign:"middle" });
txt(s, sy.auth, x+3.8, y+0.1, 0.75, 0.3,
{ fontSize:8, italic:true, color:C.lgray, align:"right" });
txt(s, sy.body, x+0.15, y+0.58, 4.32, 1.55,
{ fontSize:9.5, color:C.text, wrap:true });
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 9 — PRIMARY ABNORMALITIES
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s, C.offwhite);
leftBar(s, C.dark);
hdr(s, "Primary Abnormalities — Origin: Spermatogenesis (Testis) — MAJOR Defects");
const prims = [
["Underdeveloped / Small Heads","Immature nucleus; poor chromatin condensation; spermatogenic failure"],
["Double Forms","Bicephalic or biflagellate — failed cytokinesis during spermiogenesis"],
["Knobbed / Missing Acrosome","Cannot penetrate zona pellucida — most fertility-damaging; uncompensable"],
["Narrow / Pyriform Heads","Tapered or pear-shaped heads; poor DNA integrity; associated with infertility"],
["Crater / Diadem Defect","Nuclear vacuoles — chromatin instability → early embryonic death post-fertilization"],
["Proximal Cytoplasmic Droplet","Retained cytoplasm near neck — indicates testicular immaturity or heat stress"],
["Abnormal Midpiece","Coiled, bent, or thickened midpiece — impairs motility and ATP production"],
["Accessory Tails","Extra axonemal structures; usually genetic in origin; may impair fertility"],
["Strongly Coiled Tail","Tight proximal coiling — testicular origin; different from distal cold-shock coil"],
];
prims.forEach((p,i) => {
const col=i%3; const row=Math.floor(i/3);
const x=0.28+col*3.22; const y=0.85+row*1.6;
rect(s, x, y, 3.08, 1.52, C.white, C.lgray, 0.5);
rect(s, x, y, 0.16, 1.52, C.dark);
txt(s, p[0], x+0.24, y+0.06, 2.78, 0.42,
{ fontSize:9.5, bold:true, color:C.dark });
txt(s, p[1], x+0.24, y+0.5, 2.78, 0.96,
{ fontSize:8.5, color:C.sub, wrap:true });
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 10 — SECONDARY ABNORMALITIES
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s, C.offwhite);
leftBar(s, C.mid);
hdr(s, "Secondary Abnormalities — Origin: Epididymis / Post-Ejaculation — MINOR Defects");
const secs = [
["Small Normal Heads","Slightly reduced size, normal shape — minor significance"],
["Giant / Short Broad Heads","Abnormal nuclear size from epididymal malfunction"],
["Detached / Loose Acrosome","Partially lifted acrosomal membrane — less severe than primary acrosome defects"],
["Abaxial Implantation","Off-center tail attachment — mostly normal variation; extreme cases swim in circles"],
["Distal Cytoplasmic Droplet","Droplet migrated to principal piece — minor; common in young bulls"],
["Detached Heads","Separation of head from tail — often processing or cold-shock artefact"],
["Simple Bent Tail","Single tail bend — cold shock during handling; largely artefactual"],
["Distal Coiled Tail","Terminal piece coiling — hypoosmotic stress; less serious than proximal coil"],
];
secs.forEach((p,i) => {
const col=i%4; const row=Math.floor(i/4);
const x=0.24+col*2.42; const y=0.85+row*2.38;
rect(s, x, y, 2.28, 2.2, C.white, C.lgray, 0.5);
rect(s, x, y, 2.28, 0.4, C.mid);
txt(s, p[0], x+0.08, y+0.04, 2.12, 0.34,
{ fontSize:8.5, bold:true, color:C.white, valign:"middle", wrap:true });
txt(s, p[1], x+0.1, y+0.48, 2.08, 1.65,
{ fontSize:8.5, color:C.sub, wrap:true });
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 11 — COMPENSABLE vs UNCOMPENSABLE
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s, C.offwhite);
leftBar(s, C.red);
hdr(s, "Compensable vs. Uncompensable Sperm Defects");
// Compensable
rect(s, 0.28, 0.84, 4.42, 4.6, C.white, C.green, 2);
rect(s, 0.28, 0.84, 4.42, 0.5, C.green);
txt(s,"COMPENSABLE", 0.28, 0.86, 4.42, 0.46,
{ fontSize:13, bold:true, color:C.white, align:"center", valign:"middle" });
txt(s,[
{text:"Definition:\n", options:{bold:true, fontSize:10, color:C.dark}},
{text:"Defective sperm fail to fertilize but do NOT block competing normal sperm. ",options:{fontSize:10,color:C.text}},
{text:"Increasing inseminated sperm numbers can overcome the fertility loss.\n\n",options:{fontSize:10,color:C.text}},
{text:"Examples:\n", options:{bold:true, fontSize:10, color:C.green}},
{text:"• Detached heads\n• Distal cytoplasmic droplets\n• Distal coiled tails\n• Abaxial implantation\n• Simple bent tails\n\n",options:{fontSize:10,color:C.text}},
{text:"Clinical note:\n", options:{bold:true, fontSize:10, color:C.dark}},
{text:"More critical in AI (fixed sperm dose) than in natural service.",options:{fontSize:10,color:C.sub}},
], { x:0.42, y:1.44, w:4.1, h:3.9, fontFace:"Calibri", margin:0, wrap:true });
// Uncompensable
rect(s, 5.3, 0.84, 4.42, 4.6, C.white, C.red, 2);
rect(s, 5.3, 0.84, 4.42, 0.5, C.red);
txt(s,"UNCOMPENSABLE", 5.3, 0.86, 4.42, 0.46,
{ fontSize:13, bold:true, color:C.white, align:"center", valign:"middle" });
txt(s,[
{text:"Definition:\n", options:{bold:true, fontSize:10, color:C.dark}},
{text:"Defective sperm actively interfere with normal sperm function — occupying binding sites without fertilizing. ",options:{fontSize:10,color:C.text}},
{text:"More sperm CANNOT compensate.\n\n",options:{fontSize:10,color:C.text}},
{text:"Examples:\n", options:{bold:true, fontSize:10, color:C.red}},
{text:"• Knobbed / missing acrosome\n• Nuclear vacuoles (diadem defect)\n• Certain abnormal head shapes\n• Decapitated sperm defect\n• Dag defect (coiled midpiece)\n\n",options:{fontSize:10,color:C.text}},
{text:"Clinical note:\n", options:{bold:true, fontSize:10, color:C.dark}},
{text:"Dangerous in natural mating — bull should be classified UNSATISFACTORY.",options:{fontSize:10,color:C.sub}},
], { x:5.44, y:1.44, w:4.1, h:3.9, fontFace:"Calibri", margin:0, wrap:true });
txt(s,"vs.", 4.7, 2.85, 0.6, 0.55,
{ fontSize:20, bold:true, color:C.gray, align:"center", valign:"middle" });
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 12 — NOTABLE SPECIFIC DEFECTS
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s, C.offwhite);
leftBar(s, C.dark);
hdr(s, "Clinically Notable Sperm Defects in Cattle");
const defects = [
{name:"Dag Defect",sub:"Coiled midpiece",body:"Genetic; seen in Guernsey & other breeds. Severely impairs motility. Affected bull should be culled.",col:C.dark},
{name:"Decapitated Sperm",sub:"Head detaches in epididymis",body:"Breed-associated (Guernsey bulls). Heads and tails separate spontaneously during epididymal transit → severe subfertility.",col:C.red},
{name:"Knobbed Acrosome",sub:"Primary acrosome defect",body:"Most fertility-impairing defect. Sperm cannot penetrate zona pellucida. Uncompensable — bull should fail BSE.",col:C.red},
{name:"Nuclear Vacuoles",sub:"Diadem / Crater defect",body:"Chromatin instability and DNA fragmentation. Associated with fertilization failure and early embryonic death.",col:C.dark},
{name:"Proximal Droplet",sub:"Cytoplasmic retention at neck",body:"Indicates immaturity or fever / scrotal insulation. Re-examine after 60 days (one full spermatogenic cycle) if cause identified.",col:C.mid},
{name:"Abaxial Tail",sub:"Off-center insertion",body:"Usually a normal variation. Extreme cases cause circular swimming. Only abnormal when holding sperm at acute angle.",col:C.green},
];
defects.forEach((d,i) => {
const col=i%3; const row=Math.floor(i/3);
const x=0.28+col*3.22; const y=0.84+row*2.4;
rect(s, x, y, 3.06, 2.24, C.white, d.col, 1.5);
rect(s, x, y, 3.06, 0.54, d.col);
txt(s, d.name, x+0.1, y+0.04, 2.86, 0.3,
{ fontSize:11, bold:true, color:C.white });
txt(s, d.sub, x+0.1, y+0.32, 2.86, 0.2,
{ fontSize:8.5, italic:true, color:C.lgray });
txt(s, d.body, x+0.12, y+0.62, 2.82, 1.55,
{ fontSize:9, color:C.text, wrap:true });
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 13 — BSE CLASSIFICATION TABLE
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s, C.offwhite);
leftBar(s, C.mid);
hdr(s, "Bull Breeding Soundness Examination (BSE) — Classification Criteria");
// Table header
rect(s, 0.28, 0.84, 9.44, 0.46, C.dark);
[["Parameter",0.34,2.6],["Minimum Requirement",2.96,3.3],["Classification Significance",6.3,3.38]]
.forEach(([h,x,w]) => txt(s,h, x, 0.87, w, 0.4,
{ fontSize:10, bold:true, color:C.white, valign:"middle" }));
const rows = [
["Gross Motility","≥ Fair OR ≥ 30% progressive motility","Must pass — below minimum = Unsatisfactory"],
["Morphologically Normal Sperm","≥ 70% normal morphology","Core criterion — most commonly failed"],
["Live Spermatozoa (EN stain)","≥ 70% viable (unstained by eosin)","Confirms vitality alongside morphology"],
["Scrotal Circumference","Age-dependent minimum (e.g. ≥ 30 cm at 15 mo)","Correlates with daily sperm output & capacity"],
];
rows.forEach((row,ri) => {
const y = 1.3 + ri*0.78;
const bgc = ri%2===0 ? C.white : C.light;
rect(s, 0.28, y, 9.44, 0.75, bgc, C.lgray, 0.5);
[row[0],row[1],row[2]].forEach((cell,ci) => {
const xs=[0.34,2.96,6.3]; const ws=[2.56,3.24,3.34];
txt(s, cell, xs[ci], y+0.06, ws[ci], 0.62,
{ fontSize:9.5, bold:ci===0, color:ci===0?C.dark:C.text,
valign:"middle", wrap:true });
});
});
// Outcome boxes
const outcomes = [
{label:"SATISFACTORY\nPOTENTIAL BREEDER",col:C.green,note:"All minimum criteria met"},
{label:"DEFERRED\n(Re-examine in 60 days)",col:C.mid,note:"Marginal results — one cycle recovery"},
{label:"UNSATISFACTORY\nPOTENTIAL BREEDER",col:C.red,note:"One or more criteria failed"},
];
outcomes.forEach((o,i) => {
const x=0.28+i*3.18;
rect(s, x, 4.5, 3.06, 0.94, o.col);
txt(s, o.label, x+0.05, 4.53, 2.96, 0.52,
{ fontSize:10, bold:true, color:C.white, align:"center", valign:"middle" });
txt(s, o.note, x+0.05, 5.04, 2.96, 0.35,
{ fontSize:8, italic:true, color:C.lgray, align:"center" });
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 14 — SUMMARY
// ════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s, C.dark);
rect(s, 0, 4.85, 10, 0.775, C.mid);
rect(s, 0, 4.82, 10, 0.06, C.cream);
txt(s,"Key Takeaways", 0.45, 0.12, 9, 0.66,
{ fontSize:27, bold:true, color:C.white });
txt(s,"Live & Dead Spermatozoa in Cattle", 0.45, 0.72, 9, 0.42,
{ fontSize:13, italic:true, color:C.cream });
const pts = [
"Eosin-nigrosin (Blom, 1950) is the gold-standard viability stain based on membrane dye-exclusion",
"Live sperm exclude eosin (white head); dead sperm absorb it (pink/red head); nigrosin provides dark background contrast",
"≥ 70% live, morphologically normal sperm is required for a Satisfactory Potential Breeder in BSE",
"Primary abnormalities arise in the testis (major defects); secondary arise post-testicularly (generally minor)",
"Uncompensable defects (knobbed acrosome, diadem) cannot be overcome by more sperm — most clinically dangerous",
"Notable cattle defects: Dag, decapitated sperm, knobbed acrosome, proximal droplet — each with distinct etiology",
];
pts.forEach((p,i) => {
const col=i%2; const row=Math.floor(i/2);
const x=0.32+col*4.88; const y=1.25+row*1.18;
rect(s, x, y, 4.68, 1.08, "1E6678", "3BA8BB", 1);
oval(s, x+0.1, y+0.32, 0.44, 0.44, C.mid);
txt(s, String(i+1).padStart(2,"0"), x+0.1, y+0.32, 0.44, 0.44,
{ fontSize:9, bold:true, color:C.white, align:"center", valign:"middle" });
txt(s, p, x+0.64, y+0.1, 3.96, 0.88,
{ fontSize:9, color:C.white, valign:"middle", wrap:true });
});
txt(s,"Reference: Barth & Oko (1989). Abnormal Morphology of Bovine Spermatozoa. Iowa State University Press.",
0.3, 4.9, 9.4, 0.32,
{ fontSize:7.5, italic:true, color:C.lgray, align:"center", valign:"middle" });
}
// ── WRITE ───────────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/sperm-cattle-ppt/Live_Dead_Spermatozoa_Cattle_v2.pptx" })
.then(() => console.log("SUCCESS"))
.catch(err => { console.error("ERROR:", err); process.exit(1); });
cd /home/daytona/workspace/sperm-cattle-ppt && node build2.js 2>&1
ls -lh /home/daytona/workspace/sperm-cattle-ppt/Live_Dead_Spermatozoa_Cattle_v2.pptx
Live Dead Spermatozoa Cattle v2
Presentation · PPTX
| # | Slide |
|---|---|
| 1 | Title slide - live (green) & dead (red) sperm circles, decorative layout |
| 2 | Agenda - 8 numbered topic cards |
| 3 | Why assess viability? - 70% stat box + BSE / AI / DX cards |
| 4 | EN principle - history card, dye-exclusion diagram, live vs dead visual with sperm drawings |
| 5 | Reagents & 7-step procedure |
| 6 | Interpretation table (live/dead rows) + 4 pitfall notes |
| 7 | HOS test - positive (coiled tail) vs negative (straight tail) diagrams |
| 8 | 4 classification systems - Primary/Secondary, Major/Minor, Compensable/Uncompensable, Anatomical |
| 9 | 9 Primary abnormality cards (testicular origin) |
| 10 | 8 Secondary abnormality cards (epididymal/handling origin) |
| 11 | Compensable vs Uncompensable - side-by-side comparison |
| 12 | 6 clinically notable defects (Dag, Decapitated, Knobbed acrosome, Diadem, Proximal droplet, Abaxial) |
| 13 | BSE classification table + Satisfactory / Deferred / Unsatisfactory outcome boxes |
| 14 | Dark summary slide - 6 key takeaways + reference |
Ppt not downloading
ls -lh /home/daytona/workspace/sperm-cattle-ppt/ && echo "---" && file /home/daytona/workspace/sperm-cattle-ppt/Live_Dead_Spermatozoa_Cattle_v2.pptx
cp /home/daytona/workspace/sperm-cattle-ppt/Live_Dead_Spermatozoa_Cattle_v2.pptx /home/daytona/workspace/Spermatozoa_Cattle.pptx && ls -lh /home/daytona/workspace/Spermatozoa_Cattle.pptx
Spermatozoa Cattle
Presentation · PPTX
Where is link
Spermatozoa Cattle
Presentation · PPTX
/home/daytona/workspace/Spermatozoa_Cattle.pptxIt's not downloading
cd /home/daytona/workspace && python3 -c " import base64 with open('Spermatozoa_Cattle.pptx', 'rb') as f: data = f.read() b64 = base64.b64encode(data).decode() print(f'Size: {len(data)} bytes') print(f'Base64 length: {len(b64)}') # Write an HTML download page html = f'''<!DOCTYPE html> <html> <head><title>Download PPTX</title></head> <body> <h2>Live and Dead Spermatozoa in Cattle - Presentation</h2> <a href=\"data:application/vnd.openxmlformats-officedocument.presentationml.presentation;base64,{b64}\" download=\"Spermatozoa_Cattle.pptx\" style=\"font-size:20px; padding:10px 20px; background:#0D4F5C; color:white; text-decoration:none; border-radius:5px;\"> Click Here to Download PPTX </a> </body> </html>''' with open('download.html', 'w') as f: f.write(html) print('HTML page created') "
download
HTML File · HTML
Ok co vert to pdf
cd /home/daytona/workspace && libreoffice --headless --convert-to pdf Spermatozoa_Cattle.pptx --outdir /home/daytona/workspace/ 2>&1
cp /home/daytona/workspace/Spermatozoa_Cattle.pptx /tmp/Spermatozoa_Cattle.pptx && libreoffice --headless --convert-to pdf /tmp/Spermatozoa_Cattle.pptx --outdir /tmp/ 2>&1 && cp /tmp/Spermatozoa_Cattle.pdf /home/daytona/workspace/Spermatozoa_Cattle.pdf && ls -lh /home/daytona/workspace/Spermatozoa_Cattle.pdf
Spermatozoa Cattle
PDF Document · PDF
Spermatozoa Cattle
PDF Document · PDF
Not downloading
4
Paste all 14 slides as text I can copy into Google Slides
≥ 70% normal viable sperm required for Satisfactory Potential Breeder
| Cell Status | Membrane | Eosin Entry | Appearance |
|---|---|---|---|
| LIVE | Intact (semi-permeable) | EXCLUDED | White / unstained head |
| DEAD | Damaged / porous | ENTERS CELL | Pink to dark-red head |
| Parameter | Minimum Requirement | Significance |
|---|---|---|
| Gross Motility | ≥ Fair OR ≥ 30% progressive motility | Must pass — failure = Unsatisfactory |
| Morphologically Normal Sperm | ≥ 70% normal morphology | Core criterion — most commonly failed |
| Live Spermatozoa (EN stain) | ≥ 70% viable (unstained by eosin) | Confirms vitality alongside morphology |
| Scrotal Circumference | Age-dependent minimum (e.g. ≥ 30 cm at 15 mo) | Correlates with daily sperm output |
Create a ppt
cd /home/daytona/workspace && node -e " const pptxgen = require('pptxgenjs'); const p = new pptxgen(); p.layout = 'LAYOUT_16x9'; const s = p.addSlide(); s.addText('Test', {x:1,y:1,w:8,h:2,fontSize:36,bold:true,color:'0D4F5C'}); p.writeFile({fileName:'/home/daytona/workspace/test_out.pptx'}).then(()=>console.log('OK')).catch(e=>console.error(e)); " 2>&1 && ls -lh /home/daytona/workspace/test_out.pptx
mkdir -p /home/daytona/workspace/cattle-sperm && cat > /home/daytona/workspace/cattle-sperm/make.js << 'ENDOFSCRIPT' const pptxgen = require("pptxgenjs"); const P = new pptxgen(); P.layout = "LAYOUT_16x9"; P.title = "Live and Dead Spermatozoa in Cattle"; // Palette const D = "0D4F5C"; // dark teal const M = "2A8C9E"; // mid teal const LT = "E8F5F8"; // light teal const CR = "F5EDD6"; // cream const RD = "C94040"; // red = dead const GN = "2E7D52"; // green = live const WH = "FFFFFF"; const OF = "F7F9F9"; const TX = "1A2E35"; const SB = "3D6B77"; const GR = "B0C4CC"; const LG = "E2EAEC"; function R(s,x,y,w,h,f,lc,lw){lc=lc||f;lw=lw===undefined?0:lw;s.addShape(P.shapes.RECTANGLE,{x,y,w,h,fill:{color:f},line:{color:lc,width:lw}});} function O(s,x,y,w,h,f,lc,lw){lc=lc||f;lw=lw===undefined?0:lw;s.addShape(P.shapes.OVAL,{x,y,w,h,fill:{color:f},line:{color:lc,width:lw}});} function T(s,text,x,y,w,h,o){s.addText(text,Object.assign({x,y,w,h,fontFace:"Calibri",margin:0},o||{}));} function BG(s,c){R(s,0,0,10,5.625,c);} function LB(s,c){R(s,0,0,0.18,5.625,c);} function HD(s,t,bc,tc){bc=bc||D;tc=tc||WH;R(s,0.18,0,9.82,0.72,bc);T(s,t,0.38,0.06,9.42,0.60,{fontSize:19,bold:true,color:tc,valign:"middle"});} //────────────────────────────────────────────────────────────────────────────── // S1 TITLE //────────────────────────────────────────────────────────────────────────────── {const s=P.addSlide();BG(s,D); R(s,6.4,0,3.6,5.625,M);R(s,6.25,0,0.1,5.625,CR); O(s,6.75,0.3,1.35,1.35,GN,WH,2);T(s,"LIVE",6.75,0.72,1.35,0.5,{fontSize:15,bold:true,color:WH,align:"center"}); O(s,8.3,0.3,1.35,1.35,RD,WH,2);T(s,"DEAD",8.3,0.72,1.35,0.5,{fontSize:15,bold:true,color:WH,align:"center"}); T(s,"Live and Dead",0.4,0.9,5.7,0.85,{fontSize:30,bold:true,color:WH}); T(s,"Spermatozoa in Cattle",0.4,1.72,5.7,0.85,{fontSize:30,bold:true,color:CR}); T(s,"Eosin-Nigrosin Staining · Viability Principles · Morphological Abnormalities",0.4,2.75,5.7,0.5,{fontSize:11,italic:true,color:GR}); T(s,"Veterinary Reproductive Biology",0.4,5.1,5.7,0.35,{fontSize:10,color:GR});} //────────────────────────────────────────────────────────────────────────────── // S2 AGENDA //────────────────────────────────────────────────────────────────────────────── {const s=P.addSlide();BG(s,OF);LB(s,M);HD(s,"Agenda"); const items=[ ["01","Why Assess Sperm Viability?","BSE & the 70% fertility threshold"], ["02","Eosin-Nigrosin Staining","History, principle & dye-exclusion mechanism"], ["03","Reagents & Procedure","One-step method, step-by-step"], ["04","Interpretation & Pitfalls","Live vs. dead; special cases"], ["05","Sperm Abnormality Classification","4 classification systems"], ["06","Primary Abnormalities","Testicular origin; major defects"], ["07","Secondary Abnormalities","Post-testicular; minor defects"], ["08","Compensable vs. Uncompensable","Fertility implications & BSE outcomes"], ]; items.forEach((item,i)=>{const col=i<4?0:1;const row=i%4;const x=0.32+col*4.88;const y=0.88+row*1.17; R(s,x,y,4.6,1.08,WH,LG,1);R(s,x,y,0.52,1.08,M); T(s,item[0],x,y+0.3,0.52,0.46,{fontSize:13,bold:true,color:WH,align:"center"}); T(s,item[1],x+0.62,y+0.06,3.9,0.45,{fontSize:11,bold:true,color:TX}); T(s,item[2],x+0.62,y+0.55,3.9,0.44,{fontSize:9,italic:true,color:SB});});} //────────────────────────────────────────────────────────────────────────────── // S3 WHY ASSESS //────────────────────────────────────────────────────────────────────────────── {const s=P.addSlide();BG(s,OF);LB(s,GN);HD(s,"Why Assess Sperm Viability?"); R(s,3.6,0.9,2.8,1.3,D);T(s,"≥ 70%",3.6,0.93,2.8,0.7,{fontSize:34,bold:true,color:CR,align:"center"}); T(s,"Normal viable sperm\nfor Satisfactory Potential Breeder",3.6,1.6,2.8,0.54,{fontSize:8.5,color:GR,align:"center"}); const cards=[ {x:0.32,c:GN,icon:"BSE",title:"Breeding Soundness Exam",body:"Core evaluation of bull fertility before breeding season. Includes motility, morphology, and viability."}, {x:3.66,c:M, icon:"AI", title:"Artificial Insemination",body:"Viability must be confirmed in chilled and frozen-thawed semen. Dead sperm reduce conception rates."}, {x:6.99,c:RD,icon:"DX", title:"Differential Diagnosis", body:"Differentiates asthenozoospermia (alive but immotile) from necrozoospermia (high proportion of dead sperm)."}, ]; cards.forEach(c=>{R(s,c.x,2.35,3.1,3.05,WH,LG,1);R(s,c.x,2.35,3.1,0.5,c.c); T(s,c.icon,c.x,2.37,3.1,0.46,{fontSize:13,bold:true,color:WH,align:"center",valign:"middle"}); T(s,c.title,c.x+0.12,2.94,2.86,0.46,{fontSize:11,bold:true,color:TX}); T(s,c.body,c.x+0.12,3.44,2.86,1.86,{fontSize:9.5,color:SB,wrap:true});});} //────────────────────────────────────────────────────────────────────────────── // S4 PRINCIPLE //────────────────────────────────────────────────────────────────────────────── {const s=P.addSlide();BG(s,OF);LB(s,M);HD(s,"Eosin-Nigrosin Staining — History & Principle"); // History R(s,0.3,0.86,4.4,1.95,WH,LG,1);R(s,0.3,0.86,4.4,0.46,M);T(s,"HISTORY",0.3,0.88,4.4,0.42,{fontSize:11,bold:true,color:WH,align:"center",valign:"middle"}); T(s,[{text:"Developed by ",options:{fontSize:9.5,color:TX}},{text:"Blom (1950)",options:{fontSize:9.5,bold:true,color:D}},{text:" for bull semen evaluation\n",options:{fontSize:9.5,color:TX}}, {text:"• Originally two-step; now one-step method\n",options:{fontSize:9.5,color:TX}}, {text:"• Gold standard ",options:{fontSize:9.5,bold:true,color:D}},{text:"in vet & human reproductive labs\n",options:{fontSize:9.5,color:TX}}, {text:"• Validated against WHO standards (Bjorndahl et al., 2003)",options:{fontSize:9.5,color:TX}}], {x:0.45,y:1.4,w:4.1,h:1.3,fontFace:"Calibri",margin:0}); // Principle R(s,5.0,0.86,4.65,1.95,WH,LG,1);R(s,5.0,0.86,4.65,0.46,D);T(s,"PRINCIPLE — DYE EXCLUSION METHOD",5.0,0.88,4.65,0.42,{fontSize:10,bold:true,color:WH,align:"center",valign:"middle"}); T(s,[{text:"INTACT membrane (live):\n",options:{fontSize:9.5,bold:true,color:GN}},{text:" Semi-permeable → Eosin excluded → Head stays WHITE\n\n",options:{fontSize:9.5,color:TX}}, {text:"DAMAGED membrane (dead):\n",options:{fontSize:9.5,bold:true,color:RD}},{text:" Porous → Eosin penetrates → Head stains PINK/RED\n\n",options:{fontSize:9.5,color:TX}}, {text:"Nigrosin: ",options:{fontSize:9.5,bold:true,color:D}},{text:"black background dye — contrast only",options:{fontSize:9.5,color:TX}}], {x:5.15,y:1.4,w:4.4,h:1.3,fontFace:"Calibri",margin:0}); // Visual R(s,0.3,3.0,9.35,2.45,WH,LG,1);T(s,"VISUAL REPRESENTATION",0.3,3.0,9.35,0.38,{fontSize:10,bold:true,color:SB,align:"center",valign:"middle"}); T(s,"LIVE SPERMATOZOON",0.55,3.46,3.5,0.32,{fontSize:10,bold:true,color:GN,align:"center"}); O(s,0.75,3.84,0.7,0.42,WH,GN,2.5);R(s,1.44,4.02,0.55,0.07,GN);R(s,1.98,3.98,1.1,0.06,GN); T(s,"Unstained head (white)",0.55,4.35,3.0,0.32,{fontSize:8.5,italic:true,color:GN,align:"center"}); T(s,"MEMBRANE",3.75,3.42,2.5,0.22,{fontSize:9,bold:true,color:SB,align:"center"}); O(s,3.85,3.72,1.1,1.1,LT,GN,2.5);T(s,"Intact\n✓",3.85,3.97,1.1,0.6,{fontSize:9,bold:true,color:GN,align:"center"}); O(s,5.1,3.72,1.1,1.1,"FDEAEA",RD,2.5);T(s,"Porous\n✗",5.1,3.97,1.1,0.6,{fontSize:9,bold:true,color:RD,align:"center"}); T(s,"DEAD SPERMATOZOON",6.2,3.46,3.2,0.32,{fontSize:10,bold:true,color:RD,align:"center"}); O(s,6.3,3.84,0.7,0.42,"FBBCBC",RD,2.5);R(s,6.99,4.02,0.55,0.07,RD);R(s,7.53,3.98,1.1,0.06,RD); T(s,"Pink / red stained head",6.2,4.35,3.0,0.32,{fontSize:8.5,italic:true,color:RD,align:"center"});} //────────────────────────────────────────────────────────────────────────────── // S5 REAGENTS & PROCEDURE //────────────────────────────────────────────────────────────────────────────── {const s=P.addSlide();BG(s,OF);LB(s,M);HD(s,"Reagents & Step-by-Step Procedure (One-Step Method)"); R(s,0.3,0.85,3.55,4.55,WH,LG,1);R(s,0.3,0.85,3.55,0.46,M);T(s,"REAGENTS",0.3,0.87,3.55,0.42,{fontSize:12,bold:true,color:WH,align:"center",valign:"middle"}); const reagents=[{n:"Eosin Y (5%)",r:"Vital dye — stains dead cells pink/red",d:RD},{n:"Nigrosin (10%)",r:"Background dye — dark contrast only",d:D},{n:"Distilled Water",r:"Solvent for stain preparation",d:SB},{n:"Warm Slide (37 °C)",r:"Prevents cold-shock artefact",d:M}]; reagents.forEach((r,i)=>{const y=1.44+i*1.0;R(s,0.46,y+0.14,0.12,0.62,r.d);T(s,r.n,0.66,y+0.04,3.05,0.38,{fontSize:11,bold:true,color:TX});T(s,r.r,0.66,y+0.44,3.05,0.34,{fontSize:9,italic:true,color:SB});}); R(s,4.1,0.85,5.55,4.55,WH,LG,1);R(s,4.1,0.85,5.55,0.46,D);T(s,"PROCEDURE — Step by Step",4.1,0.87,5.55,0.42,{fontSize:12,bold:true,color:WH,align:"center",valign:"middle"}); const steps=["Place a small drop of fresh semen on a warm slide (37 °C)","Add an equal volume of eosin-nigrosin stain solution","Mix gently and incubate approximately 30 seconds at 37 °C","Make a thin smear and allow to air-dry completely","Examine under bright-field microscope at ×400–1000","Count a minimum of 200 spermatozoa per slide","Record % unstained heads (live) and % pink heads (dead)"]; steps.forEach((step,i)=>{const y=1.42+i*0.56;O(s,4.26,y+0.04,0.36,0.36,M);T(s,String(i+1),4.26,y+0.04,0.36,0.36,{fontSize:10,bold:true,color:WH,align:"center",valign:"middle"});T(s,step,4.72,y+0.04,4.75,0.38,{fontSize:9.5,color:TX,valign:"middle",wrap:true});});} //────────────────────────────────────────────────────────────────────────────── // S6 INTERPRETATION //────────────────────────────────────────────────────────────────────────────── {const s=P.addSlide();BG(s,OF);LB(s,GN);HD(s,"Interpretation of Results & Pitfalls"); R(s,0.3,0.84,9.35,0.44,M); [[ "Cell Status",0.35,1.8],["Membrane Integrity",2.2,2.4],["Eosin Entry",4.65,1.6],["Microscopic Appearance",6.3,3.3]].forEach(([h,x,w])=>T(s,h,x,0.87,w,0.38,{fontSize:10,bold:true,color:WH,valign:"middle"})); R(s,0.3,1.28,9.35,0.6,"E8F8F0",LG,0.5); [["LIVE",GN],["Intact (semi-permeable)",TX],["EXCLUDED",GN],["White / unstained head",GN]].forEach(([c,col],i)=>{const xs=[0.38,2.22,4.67,6.32];const ws=[1.78,2.36,1.56,3.28];T(s,c,xs[i],1.31,ws[i],0.54,{fontSize:10,bold:i===0||i===2,color:col,valign:"middle"});}); R(s,0.3,1.88,9.35,0.6,"FFF0F0",LG,0.5); [["DEAD",RD],["Damaged / porous",TX],["ENTERS CELL",RD],["Pink to dark-red head",RD]].forEach(([c,col],i)=>{const xs=[0.38,2.22,4.67,6.32];const ws=[1.78,2.36,1.56,3.28];T(s,c,xs[i],1.91,ws[i],0.54,{fontSize:10,bold:i===0||i===2,color:col,valign:"middle"});}); R(s,0.3,2.62,9.35,2.78,WH,LG,1);R(s,0.3,2.62,9.35,0.42,D);T(s,"SPECIAL NOTES & PITFALLS",0.3,2.64,9.35,0.38,{fontSize:11,bold:true,color:WH,align:"center",valign:"middle"}); const notes=[{i:"!",c:CR,t:"Leaky neck membrane: stain confined to neck only, head unstained → Count as LIVE (not true cell death)"},{i:"V",c:LT,t:"Validation: % Dead (EN) + % Motile (wet mount) must total < 100%. If it exceeds 100%, a method error has occurred"},{i:"*",c:LT,t:"Use warm slides (37 C) — cold shock damages membranes artificially, inflating the dead-cell percentage"},{i:"T",c:CR,t:"Optimal incubation ~30 sec. Over-incubation = false positives; Under-incubation = poor contrast"}]; notes.forEach((n,i)=>{const y=3.18+i*0.54;R(s,0.42,y,0.38,0.42,n.c,LG,0);T(s,n.i,0.42,y,0.38,0.42,{fontSize:12,align:"center",valign:"middle",bold:true,color:D});T(s,n.t,0.9,y+0.04,8.6,0.38,{fontSize:9.5,color:TX,valign:"middle",wrap:true});});} //────────────────────────────────────────────────────────────────────────────── // S7 HOS TEST //────────────────────────────────────────────────────────────────────────────── {const s=P.addSlide();BG(s,OF);LB(s,M);HD(s,"Alternative Viability Method: Hypoosmotic Swelling (HOS) Test"); R(s,0.3,0.84,9.35,1.62,WH,LG,1);R(s,0.3,0.84,9.35,0.46,M);T(s,"PRINCIPLE",0.3,0.86,9.35,0.42,{fontSize:12,bold:true,color:WH,align:"center",valign:"middle"}); T(s,"A live sperm with an intact functional membrane placed in hypoosmotic solution (~150 mOsm) absorbs water by osmosis → tail coils or curls (positive HOS).\nA dead sperm with a non-functional membrane does NOT swell → tail remains straight (negative HOS).",{x:0.45,y:1.38,w:9.1,h:1.0,fontSize:10,color:TX,fontFace:"Calibri",margin:0,wrap:true}); // Positive card R(s,0.3,2.62,4.55,2.78,WH,GN,2);R(s,0.3,2.62,4.55,0.5,GN);T(s,"POSITIVE HOS — Live Cell",0.3,2.64,4.55,0.46,{fontSize:11,bold:true,color:WH,align:"center",valign:"middle"}); T(s,"Intact membrane → Water influx → Tail coils / curls\n\nResult: SPERM IS ALIVE",0.45,3.2,4.25,1.0,{fontSize:10,color:TX,wrap:true}); O(s,0.55,4.32,0.52,0.32,GN);R(s,1.06,4.44,0.6,0.06,GN);O(s,1.6,4.18,0.48,0.48,WH,GN,2); T(s,"(tail coiled = LIVE)",0.5,4.72,3.5,0.28,{fontSize:8.5,italic:true,color:GN,align:"center"}); // Negative card R(s,5.1,2.62,4.55,2.78,WH,RD,2);R(s,5.1,2.62,4.55,0.5,RD);T(s,"NEGATIVE HOS — Dead Cell",5.1,2.64,4.55,0.46,{fontSize:11,bold:true,color:WH,align:"center",valign:"middle"}); T(s,"Damaged membrane → No swelling → Tail stays straight\n\nResult: SPERM IS DEAD",5.25,3.2,4.25,1.0,{fontSize:10,color:TX,wrap:true}); O(s,5.3,4.32,0.52,0.32,RD);R(s,5.81,4.44,1.35,0.06,RD); T(s,"(tail straight = DEAD)",5.25,4.72,3.5,0.28,{fontSize:8.5,italic:true,color:RD,align:"center"}); R(s,0.3,5.38,9.35,0.22,CR,LG,1);T(s,"Note: EN staining remains the gold standard for cattle. HOS is an alternative when staining is unavailable.",0.45,5.39,9.1,0.2,{fontSize:8,italic:true,color:SB,valign:"middle"});} //────────────────────────────────────────────────────────────────────────────── // S8 CLASSIFICATION SYSTEMS //────────────────────────────────────────────────────────────────────────────── {const s=P.addSlide();BG(s,OF);LB(s,RD);HD(s,"Classification Systems for Bovine Sperm Abnormalities"); const sys=[ {t:"Primary / Secondary",a:"Blom, 1950",c:D,b:"Based on SITE OF ORIGIN\n\u2022 Primary = Spermatogenesis in testis\n\u2022 Secondary = Post-testicular (epididymis, ejaculation, handling)"}, {t:"Major / Minor",a:"Blom, 1971",c:M,b:"Based on SIGNIFICANCE to fertility\n\u2022 Major defects — seriously impair or eliminate fertility\n\u2022 Minor defects — little or no effect on fertility"}, {t:"Compensable / Uncompensable",a:"Saacke, 1990",c:RD,b:"Based on MODE OF ACTION\n\u2022 Compensable — more sperm overcomes effect\n\u2022 Uncompensable — increasing numbers CANNOT compensate"}, {t:"Anatomical Location",a:"Descriptive",c:GN,b:"Based on STRUCTURAL SITE\n\u2022 Head defects | Midpiece defects | Tail defects\n\u2022 Cytoplasmic droplets (proximal / distal)"}, ]; sys.forEach((sy,i)=>{const col=i%2;const row=Math.floor(i/2);const x=0.28+col*4.88;const y=0.86+row*2.38; R(s,x,y,4.62,2.2,WH,LG,1);R(s,x,y,4.62,0.5,sy.c); T(s,sy.t,x+0.1,y+0.03,3.7,0.44,{fontSize:11,bold:true,color:WH,valign:"middle"}); T(s,sy.a,x+3.62,y+0.12,0.88,0.28,{fontSize:8,italic:true,color:LG,align:"right"}); T(s,sy.b,x+0.15,y+0.58,4.32,1.55,{fontSize:9.5,color:TX,wrap:true});});} //────────────────────────────────────────────────────────────────────────────── // S9 PRIMARY ABNORMALITIES //────────────────────────────────────────────────────────────────────────────── {const s=P.addSlide();BG(s,OF);LB(s,D);HD(s,"Primary Abnormalities — Origin: Spermatogenesis (Testis) — MAJOR Defects"); const prims=[ ["Underdeveloped / Small Heads","Immature nucleus; poor chromatin condensation; spermatogenic failure"], ["Double Forms","Bicephalic or biflagellate — failed cytokinesis during spermiogenesis"], ["Knobbed / Missing Acrosome","Cannot penetrate zona pellucida — most fertility-damaging; UNCOMPENSABLE"], ["Narrow / Pyriform Heads","Tapered or pear-shaped heads; poor DNA integrity; infertility"], ["Crater / Diadem Defect","Nuclear vacuoles — chromatin instability; early embryonic death"], ["Proximal Cytoplasmic Droplet","Retained cytoplasm near neck — immaturity or heat stress"], ["Abnormal Midpiece","Coiled, bent, or thickened midpiece — impairs motility and ATP production"], ["Accessory Tails","Extra axonemal structures; genetic origin; may impair fertility"], ["Strongly Coiled Tail","Tight proximal coiling — testicular origin; distinct from distal coil"], ]; prims.forEach((p,i)=>{const col=i%3;const row=Math.floor(i/3);const x=0.28+col*3.22;const y=0.85+row*1.6; R(s,x,y,3.08,1.52,WH,LG,0.5);R(s,x,y,0.16,1.52,D); T(s,p[0],x+0.24,y+0.06,2.78,0.42,{fontSize:9.5,bold:true,color:D}); T(s,p[1],x+0.24,y+0.5,2.78,0.96,{fontSize:8.5,color:SB,wrap:true});});} //────────────────────────────────────────────────────────────────────────────── // S10 SECONDARY ABNORMALITIES //────────────────────────────────────────────────────────────────────────────── {const s=P.addSlide();BG(s,OF);LB(s,M);HD(s,"Secondary Abnormalities — Origin: Epididymis / Post-Ejaculation — MINOR Defects"); const secs=[ ["Small Normal Heads","Slightly reduced size, normal shape; minor significance"], ["Giant / Short Broad Heads","Abnormal nuclear size from epididymal malfunction"], ["Detached / Loose Acrosome","Partially lifted acrosomal membrane; less severe than primary acrosome defects"], ["Abaxial Implantation","Off-center tail attachment; mostly normal variation; extreme cases swim in circles"], ["Distal Cytoplasmic Droplet","Droplet migrated to principal piece; minor; common in young bulls"], ["Detached Heads","Separation of head from tail; often processing or cold-shock artefact"], ["Simple Bent Tail","Single tail bend; cold shock during handling; largely artefactual"], ["Distal Coiled Tail","Terminal piece coiling; hypoosmotic stress; less serious than proximal coil"], ]; secs.forEach((p,i)=>{const col=i%4;const row=Math.floor(i/4);const x=0.24+col*2.42;const y=0.85+row*2.38; R(s,x,y,2.28,2.2,WH,LG,0.5);R(s,x,y,2.28,0.4,M); T(s,p[0],x+0.08,y+0.04,2.12,0.34,{fontSize:8.5,bold:true,color:WH,valign:"middle",wrap:true}); T(s,p[1],x+0.1,y+0.48,2.08,1.65,{fontSize:8.5,color:SB,wrap:true});});} //────────────────────────────────────────────────────────────────────────────── // S11 COMPENSABLE vs UNCOMPENSABLE //────────────────────────────────────────────────────────────────────────────── {const s=P.addSlide();BG(s,OF);LB(s,RD);HD(s,"Compensable vs. Uncompensable Sperm Defects"); // Compensable R(s,0.28,0.84,4.42,4.6,WH,GN,2);R(s,0.28,0.84,4.42,0.5,GN);T(s,"COMPENSABLE",0.28,0.86,4.42,0.46,{fontSize:13,bold:true,color:WH,align:"center",valign:"middle"}); T(s,[{text:"Definition:\n",options:{bold:true,fontSize:10,color:D}},{text:"Defective sperm fail to fertilize but do NOT block competing normal sperm. Increasing sperm numbers can overcome fertility loss.\n\n",options:{fontSize:10,color:TX}},{text:"Examples:\n",options:{bold:true,fontSize:10,color:GN}},{text:"\u2022 Detached heads\n\u2022 Distal cytoplasmic droplets\n\u2022 Distal coiled tails\n\u2022 Abaxial implantation\n\u2022 Simple bent tails\n\n",options:{fontSize:10,color:TX}},{text:"Clinical note:\n",options:{bold:true,fontSize:10,color:D}},{text:"More critical in AI (fixed sperm dose) than in natural service.",options:{fontSize:10,color:SB}}],{x:0.42,y:1.44,w:4.1,h:3.9,fontFace:"Calibri",margin:0,wrap:true}); // Uncompensable R(s,5.3,0.84,4.42,4.6,WH,RD,2);R(s,5.3,0.84,4.42,0.5,RD);T(s,"UNCOMPENSABLE",5.3,0.86,4.42,0.46,{fontSize:13,bold:true,color:WH,align:"center",valign:"middle"}); T(s,[{text:"Definition:\n",options:{bold:true,fontSize:10,color:D}},{text:"Defective sperm interfere with normal sperm — occupying binding sites without fertilizing. More sperm CANNOT compensate.\n\n",options:{fontSize:10,color:TX}},{text:"Examples:\n",options:{bold:true,fontSize:10,color:RD}},{text:"\u2022 Knobbed / missing acrosome\n\u2022 Nuclear vacuoles (diadem defect)\n\u2022 Abnormal head shapes\n\u2022 Decapitated sperm defect\n\u2022 Dag defect (coiled midpiece)\n\n",options:{fontSize:10,color:TX}},{text:"Clinical note:\n",options:{bold:true,fontSize:10,color:D}},{text:"Dangerous in natural mating — bull classified UNSATISFACTORY.",options:{fontSize:10,color:SB}}],{x:5.44,y:1.44,w:4.1,h:3.9,fontFace:"Calibri",margin:0,wrap:true}); T(s,"vs.",4.7,2.85,0.6,0.55,{fontSize:20,bold:true,color:GR,align:"center",valign:"middle"});} //────────────────────────────────────────────────────────────────────────────── // S12 NOTABLE DEFECTS //────────────────────────────────────────────────────────────────────────────── {const s=P.addSlide();BG(s,OF);LB(s,D);HD(s,"Clinically Notable Sperm Defects in Cattle"); const defects=[ {n:"Dag Defect",s:"Coiled midpiece",b:"Genetic; seen in Guernsey & other breeds. Severely impairs motility. Affected bull should be culled.",c:D}, {n:"Decapitated Sperm",s:"Head detaches in epididymis",b:"Breed-associated (Guernsey bulls). Heads and tails separate spontaneously during epididymal transit causing severe subfertility.",c:RD}, {n:"Knobbed Acrosome",s:"Primary acrosome defect",b:"Most fertility-impairing defect. Sperm cannot penetrate zona pellucida. UNCOMPENSABLE — bull should fail BSE.",c:RD}, {n:"Nuclear Vacuoles",s:"Diadem / Crater defect",b:"Chromatin instability and DNA fragmentation. Associated with fertilization failure and early embryonic death.",c:D}, {n:"Proximal Droplet",s:"Cytoplasmic retention at neck",b:"Indicates immaturity or fever/scrotal insulation. Re-examine after 60 days if cause is identified and corrected.",c:M}, {n:"Abaxial Tail",s:"Off-center insertion",b:"Usually a normal variation. Extreme cases cause circular swimming — only classified abnormal at acute angles.",c:GN}, ]; defects.forEach((d,i)=>{const col=i%3;const row=Math.floor(i/3);const x=0.28+col*3.22;const y=0.84+row*2.4; R(s,x,y,3.06,2.24,WH,d.c,1.5);R(s,x,y,3.06,0.54,d.c); T(s,d.n,x+0.1,y+0.04,2.86,0.3,{fontSize:11,bold:true,color:WH}); T(s,d.s,x+0.1,y+0.32,2.86,0.2,{fontSize:8.5,italic:true,color:LG}); T(s,d.b,x+0.12,y+0.62,2.82,1.55,{fontSize:9,color:TX,wrap:true});});} //────────────────────────────────────────────────────────────────────────────── // S13 BSE TABLE //────────────────────────────────────────────────────────────────────────────── {const s=P.addSlide();BG(s,OF);LB(s,M);HD(s,"Bull Breeding Soundness Examination (BSE) — Classification Criteria"); R(s,0.28,0.84,9.44,0.46,D); [["Parameter",0.34,2.6],["Minimum Requirement",2.96,3.3],["Classification Significance",6.3,3.38]].forEach(([h,x,w])=>T(s,h,x,0.87,w,0.4,{fontSize:10,bold:true,color:WH,valign:"middle"})); const rows=[ ["Gross Motility",">=Fair OR >=30% progressive motility","Must pass — below minimum = Unsatisfactory"], ["Morphologically Normal Sperm",">=70% normal morphology","Core criterion — most commonly failed"], ["Live Spermatozoa (EN stain)",">=70% viable (unstained by eosin)","Confirms vitality alongside morphology"], ["Scrotal Circumference","Age-dependent minimum (e.g. >=30 cm at 15 mo)","Correlates with daily sperm output & capacity"], ]; rows.forEach((row,ri)=>{const y=1.3+ri*0.78;const bgc=ri%2===0?WH:LT; R(s,0.28,y,9.44,0.75,bgc,LG,0.5); [row[0],row[1],row[2]].forEach((cell,ci)=>{const xs=[0.34,2.96,6.3];const ws=[2.56,3.24,3.34];T(s,cell,xs[ci],y+0.06,ws[ci],0.62,{fontSize:9.5,bold:ci===0,color:ci===0?D:TX,valign:"middle",wrap:true});});}); const outcomes=[{l:"SATISFACTORY\nPOTENTIAL BREEDER",c:GN,n:"All minimum criteria met"},{l:"DEFERRED\n(Re-examine in 60 days)",c:M,n:"Marginal results — one spermatogenic cycle"},{l:"UNSATISFACTORY\nPOTENTIAL BREEDER",c:RD,n:"One or more criteria failed"}]; outcomes.forEach((o,i)=>{const x=0.28+i*3.18;R(s,x,4.5,3.06,0.94,o.c);T(s,o.l,x+0.05,4.53,2.96,0.52,{fontSize:10,bold:true,color:WH,align:"center",valign:"middle"});T(s,o.n,x+0.05,5.04,2.96,0.35,{fontSize:8,italic:true,color:LG,align:"center"});});} //────────────────────────────────────────────────────────────────────────────── // S14 SUMMARY //────────────────────────────────────────────────────────────────────────────── {const s=P.addSlide();BG(s,D);R(s,0,4.85,10,0.775,M);R(s,0,4.82,10,0.06,CR); T(s,"Key Takeaways",0.45,0.12,9,0.66,{fontSize:27,bold:true,color:WH}); T(s,"Live & Dead Spermatozoa in Cattle",0.45,0.72,9,0.42,{fontSize:13,italic:true,color:CR}); const pts=[ "Eosin-nigrosin (Blom, 1950) is the gold-standard viability stain — principle is dye exclusion based on membrane integrity", "Live sperm exclude eosin (white head); dead sperm absorb it (pink/red head); nigrosin provides dark background contrast", ">=70% live, morphologically normal sperm is required for a Satisfactory Potential Breeder classification in BSE", "Primary abnormalities arise in the testis (major defects); secondary arise post-testicularly (generally minor defects)", "Uncompensable defects (knobbed acrosome, diadem) cannot be overcome by more sperm — most clinically dangerous", "Notable cattle defects — Dag, decapitated sperm, knobbed acrosome, proximal droplet — each with distinct etiology", ]; pts.forEach((p,i)=>{const col=i%2;const row=Math.floor(i/2);const x=0.32+col*4.88;const y=1.25+row*1.18; R(s,x,y,4.68,1.08,"1E6678","3BA8BB",1);O(s,x+0.1,y+0.32,0.44,0.44,M); T(s,String(i+1).padStart(2,"0"),x+0.1,y+0.32,0.44,0.44,{fontSize:9,bold:true,color:WH,align:"center",valign:"middle"}); T(s,p,x+0.64,y+0.1,3.96,0.88,{fontSize:9,color:WH,valign:"middle",wrap:true});}); T(s,"Reference: Barth & Oko (1989). Abnormal Morphology of Bovine Spermatozoa. Iowa State University Press.",0.3,4.9,9.4,0.32,{fontSize:7.5,italic:true,color:GR,align:"center",valign:"middle"});} //────────────────────────────────────────────────────────────────────────────── P.writeFile({fileName:"/home/daytona/workspace/cattle-sperm/Spermatozoa_Cattle_Final.pptx"}) .then(()=>console.log("SUCCESS")) .catch(e=>{console.error("ERROR:",e);process.exit(1);}); ENDOFSCRIPT echo "Script written"
cd /home/daytona/workspace/cattle-sperm && node make.js 2>&1
ls -lh /home/daytona/workspace/cattle-sperm/Spermatozoa_Cattle_Final.pptx && cp /tmp/Spermatozoa_Cattle.pptx /tmp/old.pptx; cp /home/daytona/workspace/cattle-sperm/Spermatozoa_Cattle_Final.pptx /tmp/final.pptx && libreoffice --headless --convert-to pdf /tmp/final.pptx --outdir /tmp/ 2>&1 && cp /tmp/final.pdf /home/daytona/workspace/cattle-sperm/Spermatozoa_Cattle_Final.pdf && ls -lh /home/daytona/workspace/cattle-sperm/
Spermatozoa Cattle Final
Presentation · PPTX
Spermatozoa Cattle Final
PDF Document · PDF