" SEMEN ANALYSIS PA 23.3a (CC): Describe and interpret the abnormalities in semen analysis. Q. Write a short note on semen analysis. Semen (seminal fluid) consists of spermatozoa (sperms) and the fluid part. About 40% of cases of infertility are due to abnormalities in semen and therefore, semen analysis is the first test to be performed while investigating for infertility. The defect of sperms may be quantitative (absence of sperms, lack of enough sperms) or qualitative. Indications for semen analysis are listed in Box 15.24. BOX 15.24: Indications for semen analysis. Assessment of fertility/infertility To monitor the success of surgical procedures, such as varicocelectomy and vasectomy Determine the suitability of donor semen for artificial insemination Medicolegal purpose: In alleged rape cases, vaginal pool smears are examined to detect sperms For selection of assisted reproductive technology (e.g., in vitro fertilization, gamete intrafallopian transfer technique) Collection of the Sample Q. Write a short note on a collection of semen for analysis. The patient is asked to collect the semen by masturbation after a minimum of 2 days and a maximum of 7 days of sexual abstinence (2-7 days of ejaculatory abstinence). The specimen should be collected in a clean, dry, wide-mouthed plastic/glass container. Collection of condom samples is not advisable because they often contain spermicidal agents which impair sperm motility. Examination of Semen Q. Write a short notes on various tests/parameters of the semen with normal range. Physical Examination Liquefaction: Immediately after ejaculation, the semen is normally a semisolid coagulated mass. At room temperature, the semen usually begins to liquefy (become thinner) within a few minutes and completely liquefles within 15 minutes Within 30 minutes it becomes more homogeneous and watery. Fallure to liquefy may be due to inadequate prostate secretion. Semen viscosity: Fresh semen is viscid and the viscosity can be estimated by gently aspirating semen into a wide-bore (approximately 1.5 mm diameter) plastic disposable pipette, allowing the semen to drop by gravity. Normal semen falls drop by drop and if viscosity is abnormal, the drop will form a thread more than 2 cm long. Normal viscosity is important since the increase in viscosity affects sperm motility. Appearance: Freshly ejaculated semen is an opaque, white-gray, and viscid fluid. After liquefaction, it has a homogeneous gray-opalescent appearance. Semen may have red-brown color when red blood cells are present (hemospermia) or yellow in patients with jaundice or ingestion of certain vitamins or drugs. The yellow hue appearance is associated with pyospermia; a rust color is due to small bleeding in the seminal vesicle. Semen volume: Normal volume >1.4 mL. First sample is weighed and then volume is calculated by assuming the density of semen to be 1 g/mL.. Low semen volume may be due to obstruction of the ejaculatory duct, congenital bilateral absence of the vas deferens, or can also be due to difficulty in collection. High semen volume may be due to active exudation in cases of inflammatory lesions of the accessory organs. Semen pH: Alkaline and ranges from 7.2-8 (>7.2). The pH should be measured after liquefaction, preferably after 30 minutes. Microscopic Examination Q. Write a short note on the microscopic examination of semen. Sperm aggregation or agglutination: The adherence either of immotile spermatozoa to each other or of motile spermatozoa to mucus strands, nonsperm cells. or debris is considered to be nonspecific aggregation and should be noted. Agglutination refers to motile spermatozoa sticking to each other, head-to-head, tail to tail, or in a mixed way. Any motile spermatozoa that stick to each other by their heads, tails, or midpieces should be recorded. QW Cla 15. ofs US in Cellular elements other than spermatozoa: During microscopic examination, a search should be made for 1. the presence of cells other than spermatozoa. Some of these cells may be clinically relevant, which includes epithelial cells from the genitourinary tract and "round cells" (leukocytes and immature germ cells). Assessment of sperm motility: Motility of the sperms helps in the penetration of cervical mucus and migra-tion of the sperms into the fallopian tube. In normal 2. semen, 42 (40-43)% of sperms should be motile (rapidly progressive and slowly progressive). This is assessed by placing a drop of liquefied semen on a clean glass slide with a coverslip placed over it and examining it under a microscope. According to the 3. WHO (2021), the motility of each spermatozoon (plural is spermatozoa) is categorized as rapidly progressive (29-31%), and slow-progressive (1%). Te A rapidly progressive spermatozoon moves >5 head lengths per second. Immotile sperms may be 54 (50-56)%. Th th ar pl Te di te T Sperm vitality: It is important to know whether immotile spermatozoa are alive or dead. Normally, 54 (50-56)% of live forms are observed. The vitality of the spermatozoa is estimated by identifying those with an intact cell membrane and is especially important for samples with less than about 40% progressively motile spermatozoa. The percentage of live spermatozoa is assessed either (" by dye exclusion or by hypotonic swelling. Q. Write a short note on sperm count. Total sperm count: Sperm count is carried out in an improved Neubauer chamber using a Thoma pipette in a dilution of 1 in 20 (as for total leukocyte count) using semen diluting fluid. T Normal range of sperm count: >39 million/ejaculate. Aspermia: No semen. Azoospermia: No spermatozoa in the ejaculate. Oligospermia: Total number of spermatozoa below the lower reference limit. Sperm morphology (Fig. 15.18): Smear prepared from semen is fixed and stained with Papanicolaou stain to identify the morphological features. Normal spermatozoa have a head, neck, middle piece (midpiece), principal piece, and endpiece. Since the endpiece is difficult to see under a light microscope, the spermatozoa can be considered to consist of a head (and neck) and a tail (midpiece and principal piece). Normally, >4% of sperms have normal morphology. For a spermatozoon to be considered normal, both its head and tail must be morphologically normal. All other forms should be considered as abnormal. Q. Write a short answer on abnormal forms of sperm. Classification of abnormal sperm morphology (Fig. 15.18): During morphological examination all major parts of spermatozoa should be assessed, abnormal spermatozoa usually have a lower fertilizing capacity. The abnormalities in morphology can be classified as: 1. Head defects: Abnormal size: Large or small head. Abnormal shape: Pointed/tapered, round, pyriform, amorphous. Acrosomal defects: Vacuolated acrosomal region, abnormality of acrosomal areas. Abnormal number: Double-headed. Neck and midpiece defects: Sharply bent neck. a-al 2. e S a d e n y Asymmetrical insertion of the midpiece into the head. Thick or thin or irregular midpiece. 3. Tail (principal) piece defects: These abnormalities include short or bent or coiled or double tail. Tests for Antibody Coating of Spermatozoa -e The agglutination of spermatozoa may be the result of the anti-sperm antibodies (ASAs) or other factors present in the semen. ASAs in the semen belong to IgA and IgG types and they may also be found in sperm-free fluids (seminal plasma, blood serum, and cervical mucus). Tests for antibodies on spermatozoa ("direct tests"): Two direct tests include the mixed antiglobulin reaction (MAR) - test and the immunobead (IB) test. Tests for antisperm antibodies in sperm-free fluids ("indirect" tests). " Make this text of dr. Priyanka’s pathology prof buster book. Removal of unnecessary words like a, an, the, is, are, it is, there is wherever possible. And then make masterchart of semen analysis including everything.

What was done:
  1. Prof Buster Rewrite - All unnecessary words (a, an, the, is, are, it is, there is) removed wherever possible. Sentences converted to crisp, point-form style. Key values bolded. Structure preserved exactly as in source.
  2. Master Chart - Single table covering all parameters organized into sections:
    • Collection
    • Physical parameters (liquefaction, viscosity, appearance, volume, pH)
    • Microscopic (count, motility with WHO 2021 values, vitality, morphology with defect types)
    • Cellular elements, agglutination, ASA tests
    • Terminology summary at the bottom (aspermia, azoospermia, oligospermia, asthenospermia, teratospermia, necrospermia, hemospermia, pyospermia, OAT syndrome) - all high-yield for exams
Pro tip for exam: The most commonly asked values are - volume >1.4 mL, count >39 million/ejaculate, total motility ≥42%, morphology >4%, vitality >54%, pH 7.2-8. OAT syndrome (combined low count + motility + morphology) = most common cause of male infertility.

Create masterchart of semen analysis.

Asking for Preferences
Reading File
Reading File
Running Command

mkdir -p /home/daytona/workspace/semen-analysis && ls /home/daytona/workspace/semen-analysis/

Writing File

~/semen-analysis/semen_chart.py

from reportlab.lib.pagesizes import A4, landscape
from reportlab.platypus import (
    SimpleDocTemplate, Table, TableStyle, Paragraph,
    Spacer, HRFlowable
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib import colors
from reportlab.lib.units import mm
from reportlab.lib.enums import TA_CENTER, TA_LEFT

OUTPUT = "/home/daytona/workspace/semen-analysis/Semen_Analysis_MasterChart.pdf"

# ── Colour palette ──────────────────────────────────────────────
C_NAVY      = colors.HexColor("#1A3557")   # header band
C_TEAL      = colors.HexColor("#1B6CA8")   # section headers
C_LTBLUE    = colors.HexColor("#D6E8F7")   # section header bg
C_YELLOW    = colors.HexColor("#FFF8DC")   # normal value bg
C_GREEN     = colors.HexColor("#E8F5E9")   # row 1 stripe
C_WHITE     = colors.white
C_RED       = colors.HexColor("#C0392B")   # abnormal / alert
C_ORANGE    = colors.HexColor("#D35400")   # subhead accent
C_GREY      = colors.HexColor("#F5F5F5")   # alt row stripe
C_DARKTEXT  = colors.HexColor("#1A1A2E")

doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=landscape(A4),
    leftMargin=12*mm, rightMargin=12*mm,
    topMargin=12*mm, bottomMargin=12*mm
)

styles = getSampleStyleSheet()

def S(text, size=8, bold=False, color=C_DARKTEXT, align=TA_LEFT, italic=False):
    """Quick paragraph style helper."""
    return Paragraph(
        f"<b>{text}</b>" if bold else ("<i>{}</i>".format(text) if italic else text),
        ParagraphStyle(
            "x", fontSize=size, textColor=color,
            alignment=align, leading=size * 1.35,
            fontName="Helvetica-Bold" if bold else ("Helvetica-Oblique" if italic else "Helvetica"),
            spaceAfter=0, spaceBefore=0
        )
    )

def SC(text, size=8, bold=False, color=C_DARKTEXT):
    return S(text, size=size, bold=bold, color=color, align=TA_CENTER)

# ── Section header row ──────────────────────────────────────────
def SEC(label):
    return [
        Paragraph(
            f"<b>{label}</b>",
            ParagraphStyle("sec", fontSize=8.5, textColor=C_WHITE,
                           alignment=TA_LEFT, fontName="Helvetica-Bold",
                           leading=11, leftIndent=3)
        ),
        "", "", "", ""
    ]

# ── Column widths (landscape A4 ≈ 277 mm usable) ───────────────
W = [58*mm, 42*mm, 55*mm, 60*mm, 52*mm]  # = 267 mm

# ── TABLE DATA ──────────────────────────────────────────────────
data = []

# ===== TITLE ROW =====
data.append([
    Paragraph(
        "<b>SEMEN ANALYSIS — MASTER CHART</b>",
        ParagraphStyle("title", fontSize=13, textColor=C_WHITE,
                       alignment=TA_CENTER, fontName="Helvetica-Bold", leading=16)
    ),
    "", "", "", ""
])

# ===== COLUMN HEADERS =====
data.append([
    SC("PARAMETER", bold=True, color=C_WHITE),
    SC("NORMAL VALUE", bold=True, color=C_WHITE),
    SC("ABNORMAL FINDING", bold=True, color=C_WHITE),
    SC("CAUSES / SIGNIFICANCE", bold=True, color=C_WHITE),
    SC("NOTES / MNEMONICS", bold=True, color=C_WHITE),
])

# ===== SECTION 1: COLLECTION =====
data.append(SEC("1.  SAMPLE COLLECTION"))
rows_s1 = [
    ["Method", "Masturbation", "Coitus interruptus: unreliable", "Sample loss likely", "Condom avoided — spermicidal agents impair motility"],
    ["Abstinence period", "2 – 7 days", "<2 d or >7 d = invalid", "<2 d: low count; >7 d: ↓ motility", "Mnemo: '2-7 Days Before the Test'"],
    ["Container", "Clean, dry, wide-mouthed plastic/glass", "Condom: NOT acceptable", "Spermicides alter results", "Deliver to lab within 1 hour at body temp"],
    ["Temperature during transport", "Body temperature (~37°C)", "Extremes of temp", "Cold → ↓ motility; Heat → DNA damage", "Keep in trouser pocket during transport"],
]
for r in rows_s1:
    data.append([S(r[0], bold=True), S(r[1], color=C_TEAL, bold=True), S(r[2]), S(r[3]), S(r[4])])

# ===== SECTION 2: PHYSICAL =====
data.append(SEC("2.  PHYSICAL EXAMINATION"))
rows_s2 = [
    ["Liquefaction",
     "Begins: few min\nComplete: ≤15 min\nHomogeneous: 30 min",
     "Failure to liquefy / >60 min",
     "↓ Prostatic secretion (zinc, PSA, prostate-specific proteins needed)",
     "Prostate responsible for liquefaction"],
    ["Viscosity",
     "Drops drop-by-drop\n(wide-bore 1.5 mm pipette)",
     "Thread >2 cm long",
     "↑ Viscosity → ↓ sperm motility\nSeminal vesicle dysfunction",
     "Test: let semen drop by gravity from pipette"],
    ["Appearance",
     "Opaque, white-gray → gray-opalescent after liquefaction",
     "See abnormal colors →",
     "Red-brown = Hemospermia (RBCs)\nYellow = Pyospermia / jaundice / drugs\nRust = Seminal vesicle bleed",
     "Watery = very low sperm count"],
    ["Volume",
     ">1.4 mL",
     "Low: <1.4 mL = Hypospermia\nHigh: >6 mL = Hyperspermia",
     "Low: ejaculatory duct obstruction, bilateral absence of vas deferens, incomplete collection\nHigh: inflammatory exudation of accessory glands",
     "Weigh sample first; volume = weight (density of semen ≈ 1 g/mL)"],
    ["pH",
     "7.2 – 8.0 (Alkaline)",
     "Acidic pH <7.0 = Ejaculatory duct obstruction / absence of seminal vesicles",
     "Seminal vesicles (alkaline) + Prostate (acidic) = net alkaline\nAcidic semen → azoospermia",
     "Measure after 30 min post-liquefaction"],
]
for r in rows_s2:
    data.append([S(r[0], bold=True), S(r[1], color=C_TEAL, bold=True), S(r[2], color=C_RED), S(r[3]), S(r[4])])

# ===== SECTION 3: SPERM COUNT =====
data.append(SEC("3.  SPERM COUNT"))
rows_s3 = [
    ["Sperm count (Total)",
     ">39 million / ejaculate",
     "See terminology below",
     "Counting chamber: Improved Neubauer\nPipette: Thoma | Dilution: 1:20 (same as TLC)\nDiluting fluid: semen diluting fluid",
     "Same method as WBC counting"],
    ["Aspermia", "–", "No semen at all", "Retrograde ejaculation / ejaculatory failure", "No fluid produced"],
    ["Azoospermia", "–", "No spermatozoa in ejaculate", "Obstructive (post-testicular) or Non-obstructive (testicular/pre-testicular)", "Semen present but no sperms"],
    ["Oligospermia", "–", "Count < lower reference limit", "Varicocele, hormonal (↓FSH/LH/Testosterone), genetic (Klinefelter), infections", "Most common treatable cause"],
    ["Polyzoospermia", "–", "Count >250 million/mL", "↑ Risk of abnormal morphology", "Rarely clinically significant"],
]
for r in rows_s3:
    data.append([S(r[0], bold=True), S(r[1], color=C_TEAL, bold=True), S(r[2], color=C_RED), S(r[3]), S(r[4])])

# ===== SECTION 4: MOTILITY =====
data.append(SEC("4.  SPERM MOTILITY  (WHO 2021)"))
rows_s4 = [
    ["Total motile (RP + SP)",
     "≥ 42% (40–43%)",
     "Asthenospermia = < 42%",
     "↓ Motility → fails to penetrate cervical mucus / reach fallopian tube",
     "Assess: drop of liquefied semen under coverslip on warm slide"],
    ["Rapidly Progressive (RP)",
     "29 – 31%",
     "< 29% significant",
     "Moves >5 head lengths per second\nMost important for natural fertility",
     "Grade A in older WHO classification"],
    ["Slowly Progressive (SP)",
     "~1%",
     "–",
     "Forward movement < 5 head lengths/sec",
     "Grade B in older WHO"],
    ["Immotile",
     "54% (50–56%)",
     ">56% immotile = Necrospermia (if all dead)",
     "Distinguish live vs dead by vitality test",
     "Immotile ≠ dead; use dye exclusion to confirm"],
]
for r in rows_s4:
    data.append([S(r[0], bold=True), S(r[1], color=C_TEAL, bold=True), S(r[2], color=C_RED), S(r[3]), S(r[4])])

# ===== SECTION 5: VITALITY =====
data.append(SEC("5.  SPERM VITALITY"))
rows_s5 = [
    ["Live spermatozoa",
     "≥ 54% (50–56%) live forms",
     "Necrospermia = majority dead",
     "Sperm with intact cell membrane = alive",
     "Test especially when progressively motile sperms < 40%"],
    ["Dye exclusion test",
     "Dead cells stain (eosin Y)",
     "Live cells exclude dye → unstained",
     "Eosin-nigrosin stain used; dead = pink/red, live = white",
     "Eosin = vital dye; Nigrosin = background"],
    ["Hypotonic swelling (HOS) test",
     "Live cells swell / tail curls",
     "Dead cells do not swell",
     "Intact membrane allows osmotic entry of water",
     "Used when dye exclusion not available"],
]
for r in rows_s5:
    data.append([S(r[0], bold=True), S(r[1], color=C_TEAL, bold=True), S(r[2], color=C_RED), S(r[3]), S(r[4])])

# ===== SECTION 6: MORPHOLOGY =====
data.append(SEC("6.  SPERM MORPHOLOGY  (Strict Kruger Criteria)"))
rows_s6 = [
    ["Normal morphology",
     ">4% normal forms",
     "Teratospermia = < 4%",
     "Stain: Papanicolaou stain (preferred); also H&E, Shorr, Diff-Quik",
     "Both head AND tail must be normal for classification as 'normal'"],
    ["Normal structure",
     "Head + Neck + Midpiece + Principal piece + Endpiece",
     "Any deviation = abnormal",
     "Endpiece difficult to see on LM → practically: Head (+ neck) + Tail (midpiece + principal piece)",
     "Acrosome covers anterior 40–70% of head"],
    ["HEAD DEFECTS",
     "–",
     "Large / small head\nPointed / tapered\nRound / pyriform / amorphous\nVacuolated acrosome\nAcrosomal abnormality\nDouble head",
     "Large head → polyploidy\nSmall head → poor DNA packaging\nRound head (Globozoospermia) → absent acrosome → fertilization failure",
     "Mnemo: 'LAPTRAD' — Large, Amorphous, Pyriform, Tapered, Round, Acrosomal, Double"],
    ["NECK & MIDPIECE DEFECTS",
     "–",
     "Bent neck (sharply)\nAsymmetric midpiece insertion\nThick / thin / irregular midpiece\nResidual cytoplasm",
     "Midpiece contains mitochondria → powers motility\nDefects → ↓ motility",
     "Midpiece = powerhouse of sperm"],
    ["TAIL (PRINCIPAL PIECE) DEFECTS",
     "–",
     "Short / bent / coiled / double tail\nHairpin tail",
     "Immotile Cilia Syndrome (Kartagener) → absent dynein arms → immotile straight tail",
     "Coiled tail = most common tail defect"],
]
for r in rows_s6:
    data.append([S(r[0], bold=True), S(r[1], color=C_TEAL, bold=True), S(r[2], color=C_RED), S(r[3]), S(r[4])])

# ===== SECTION 7: CELLULAR ELEMENTS =====
data.append(SEC("7.  CELLULAR ELEMENTS (Non-Sperm Cells)"))
rows_s7 = [
    ["Round cells",
     "< 5 million/mL total",
     "> 5 million/mL = Leukocytospermia",
     "Round cells = leukocytes + immature germ cells\nLeukocytospermia → ROS → DNA damage → ↓ fertility",
     "Peroxidase stain distinguishes leukocytes (peroxidase +ve) from immature germ cells"],
    ["Epithelial cells",
     "Occasional",
     "Excessive = genitourinary infection/inflammation",
     "From urethra, vas deferens, epididymis",
     "Note on report"],
    ["Agglutination",
     "None",
     "Present = suggests Anti-Sperm Antibodies (ASAs)",
     "Head-to-head / tail-to-tail / mixed\nMotile sperms sticking to each other",
     "Agglutination ≠ Aggregation"],
    ["Aggregation (non-specific)",
     "None significant",
     "Immotile sperms on mucus/debris",
     "Non-immunological; no clinical significance",
     "Aggregation = immotile sperms on non-sperm material"],
]
for r in rows_s7:
    data.append([S(r[0], bold=True), S(r[1], color=C_TEAL, bold=True), S(r[2], color=C_RED), S(r[3]), S(r[4])])

# ===== SECTION 8: ANTI-SPERM ANTIBODIES =====
data.append(SEC("8.  ANTI-SPERM ANTIBODY (ASA) TESTS"))
rows_s8 = [
    ["ASA types in semen",
     "None / < 50% binding",
     "> 50% sperms coated = significant",
     "IgA + IgG types\nFound in: semen, seminal plasma, blood serum, cervical mucus",
     "IgA more clinically relevant (local immunity)"],
    ["MAR Test (Mixed Antiglobulin Reaction) — DIRECT",
     "Negative",
     "Positive = ASAs on sperm surface",
     "Motile sperms mixed with IgG-coated latex/RBCs + anti-IgG\nIf sperms agglutinate with particles → ASAs present",
     "Screening test; quick and easy"],
    ["Immunobead (IB) Test — DIRECT",
     "Negative",
     "Positive",
     "Immunobeads coated with anti-IgG/IgA bind to antibody-coated sperms\nMore specific than MAR; identifies Ig class and binding site (head/tail)",
     "Gold standard direct ASA test"],
    ["Indirect tests (sperm-free fluids)",
     "Negative",
     "Positive = ASAs in serum/cervical mucus",
     "Used when direct test not possible\nSperm-free serum/cervical mucus incubated with donor sperms",
     "Detects systemic ASA production"],
]
for r in rows_s8:
    data.append([S(r[0], bold=True), S(r[1], color=C_TEAL, bold=True), S(r[2], color=C_RED), S(r[3]), S(r[4])])

# ===== SECTION 9: TERMINOLOGY =====
data.append(SEC("9.  TERMINOLOGY QUICK-REFERENCE"))
terms = [
    ("Aspermia", "No semen at all"),
    ("Azoospermia", "No spermatozoa in ejaculate"),
    ("Oligospermia", "Sperm count < lower reference limit"),
    ("Polyzoospermia", "Sperm count > 250 million/mL"),
    ("Asthenospermia", "↓ Motility (total motile < 42%)"),
    ("Necrospermia", "Majority of sperms dead (↓ vitality)"),
    ("Teratospermia", "↓ Normal morphology (< 4%)"),
    ("Hemospermia", "Blood in semen (red-brown color)"),
    ("Pyospermia", "Pus cells in semen (yellow)"),
    ("OAT Syndrome", "Oligo + Astheno + Teratospermia combined → most common cause of male infertility"),
    ("Hypospermia", "Semen volume < 1.4 mL"),
    ("Hyperspermia", "Semen volume > 6 mL"),
    ("Leukocytospermia", "WBCs in semen > 5 million/mL (peroxidase +ve cells)"),
    ("Globozoospermia", "Round-headed sperms with absent acrosome → fertilization failure"),
]
for t in terms:
    data.append([
        S(t[0], bold=True, color=C_ORANGE),
        S(t[1]),
        "", "", ""
    ])

# ===== SECTION 10: HIGH-YIELD EXAM BOX =====
data.append(SEC("10.  HIGH-YIELD EXAM POINTS"))
hye = [
    "First test in male infertility workup = Semen analysis",
    "Collection by masturbation | 2-7 days abstinence | Condom = AVOID (spermicides)",
    "Liquefaction by prostate | Failure = ↓ prostatic secretion",
    "Sperm count: Improved Neubauer chamber | Thoma pipette | Dilution 1:20",
    "WHO 2021: Normal count >39 million/ejaculate | Total motile ≥42% | Normal morphology >4% | Vitality ≥54%",
    "Rapidly progressive sperm = moves >5 head lengths/sec",
    "Vitality test: Eosin-nigrosin (dye exclusion) OR Hypotonic swelling (HOS) test",
    "Round head (Globozoospermia) = absent acrosome = cannot fertilize",
    "Midpiece defects → ↓ motility (midpiece = mitochondria = energy)",
    "Immotile Cilia Syndrome (Kartagener) → immotile sperms + situs inversus + bronchiectasis",
    "ASA Direct tests: MAR test + Immunobead test | Indirect tests: sperm-free fluids",
    "OAT Syndrome = most common cause of male infertility (Oligo + Astheno + Terato)",
    "Hemospermia = RBCs | Pyospermia = pus (yellow) | Rust color = seminal vesicle bleed",
    "Acidic pH (<7.0) = absent seminal vesicles / ejaculatory duct obstruction",
]
for h in hye:
    data.append([S(f"• {h}", size=7.5), "", "", "", ""])


# ── TABLE STYLE ─────────────────────────────────────────────────
style_cmds = [
    # Title row
    ("SPAN",         (0, 0), (4, 0)),
    ("BACKGROUND",   (0, 0), (4, 0), C_NAVY),
    ("ALIGN",        (0, 0), (4, 0), "CENTER"),
    ("VALIGN",       (0, 0), (4, 0), "MIDDLE"),
    ("TOPPADDING",   (0, 0), (4, 0), 8),
    ("BOTTOMPADDING",(0, 0), (4, 0), 8),

    # Column header row
    ("BACKGROUND",   (0, 1), (4, 1), C_TEAL),
    ("ALIGN",        (0, 1), (4, 1), "CENTER"),
    ("VALIGN",       (0, 1), (4, 1), "MIDDLE"),
    ("TOPPADDING",   (0, 1), (4, 1), 5),
    ("BOTTOMPADDING",(0, 1), (4, 1), 5),

    # Global
    ("GRID",         (0, 0), (-1, -1), 0.4, colors.HexColor("#AAAAAA")),
    ("VALIGN",       (0, 0), (-1, -1), "TOP"),
    ("TOPPADDING",   (0, 2), (-1, -1), 4),
    ("BOTTOMPADDING",(0, 2), (-1, -1), 4),
    ("LEFTPADDING",  (0, 0), (-1, -1), 5),
    ("RIGHTPADDING", (0, 0), (-1, -1), 5),
    ("FONTSIZE",     (0, 0), (-1, -1), 8),
    ("WORDWRAP",     (0, 0), (-1, -1), True),
]

# Find section header rows and terminology rows for special formatting
sec_rows = []
for i, row in enumerate(data):
    if row[0] == "" and row[1] == "" and row[2] == "" and row[3] == "" and row[4] == "":
        continue
    cell = row[0]
    if isinstance(cell, Paragraph):
        raw = cell.text if hasattr(cell, 'text') else ""
    else:
        raw = str(cell)
    # Detect section rows (they're lists with empty trailing cells)
    if row[1] == "" and row[2] == "" and row[3] == "" and row[4] == "":
        sec_rows.append(i)

for i, row in enumerate(data):
    if i < 2:
        continue
    if row[1] == "" and row[2] == "" and row[3] == "" and row[4] == "":
        # Section header
        style_cmds += [
            ("SPAN",        (0, i), (4, i)),
            ("BACKGROUND",  (0, i), (4, i), C_TEAL),
            ("TOPPADDING",  (0, i), (4, i), 4),
            ("BOTTOMPADDING",(0,i), (4, i), 4),
        ]
    else:
        # Alternate row shading
        bg = C_WHITE if i % 2 == 0 else C_GREY
        style_cmds += [("BACKGROUND", (0, i), (4, i), bg)]

# Highlight normal value column
style_cmds += [("BACKGROUND", (1, 2), (1, -1), colors.HexColor("#EBF5FB"))]

table = Table(data, colWidths=W, repeatRows=2)
table.setStyle(TableStyle(style_cmds))

# ── FOOTNOTE ────────────────────────────────────────────────────
footnote_style = ParagraphStyle(
    "fn", fontSize=7, textColor=colors.HexColor("#555555"),
    alignment=TA_CENTER, leading=9
)
footnote = Paragraph(
    "Reference: Dr. Priyanka's Pathology Prof Buster | WHO 2021 criteria | "
    "Normal values: Volume >1.4 mL | pH 7.2–8.0 | Count >39 M/ejaculate | "
    "Motility ≥42% | Morphology >4% | Vitality ≥54%",
    footnote_style
)

story = [table, Spacer(1, 4*mm), footnote]
doc.build(story)
print("PDF created successfully:", OUTPUT)
Running Command

cd /home/daytona/workspace/semen-analysis && python semen_chart.py 2>&1

Running Command

ls -lh /home/daytona/workspace/semen-analysis/Semen_Analysis_MasterChart.pdf

Your master chart PDF is ready. Download it here:

Semen Analysis MasterChart

PDF Document · PDF


What's inside the chart (landscape A4, color-coded):
SectionContent
1. Sample CollectionMethod, abstinence period, container, transport temp
2. Physical ExaminationLiquefaction, viscosity, appearance, volume, pH - with normal values, causes of abnormality
3. Sperm CountNormal value, counting method (Neubauer/Thoma/1:20), Aspermia/Azoospermia/Oligospermia/Polyzoospermia
4. Motility (WHO 2021)RP %, SP %, total motile %, immotile % - with clinical significance
5. VitalityNormal %, dye exclusion test, HOS test
6. MorphologyNormal >4%, Papanicolaou stain, head/neck/tail defects with causes + mnemonics
7. Cellular ElementsRound cells, leukocytospermia, agglutination vs aggregation
8. ASA TestsMAR test, Immunobead test, indirect tests
9. TerminologyAll 14 terms (Aspermia → OAT Syndrome)
10. High-Yield Exam Points14 one-liners for quick revision
Color coding: Normal values = blue | Abnormal findings = red | Section headers = teal on white | Alternating row shading for easy reading.

### **SEMEN ANALYSIS** ## Definition * Semen = **spermatozoa (sperms) + seminal fluid** * ~40% infertility cases due to semen abnormalities * First investigation in infertility workup * Defects: * **Quantitative** → absent/low sperm number * **Qualitative** → abnormal sperm function/morphology --- ## Indications * Assessment of fertility/infertility * Monitor success of: * Varicocelectomy * Vasectomy * Assess donor semen for artificial insemination * Medicolegal purpose: * Alleged rape cases → vaginal pool smear for sperm detection * Selection of assisted reproductive techniques: * IVF * GIFT --- # Collection of Sample ### Requirements * Masturbation collection * Ejaculatory abstinence: **2–7 days** * Collect in: * Clean * Dry * Wide-mouthed plastic/glass container ### Avoid Condom Sample * May contain spermicidal agents * Impair sperm motility --- # Examination of Semen # I. Physical Examination ## 1. Liquefaction ### Normal * Immediately after ejaculation → semisolid coagulated mass * Begins liquefying within few minutes * Complete liquefaction within **15 min** * By **30 min** → homogeneous, watery ### Abnormal * Failure to liquefy → inadequate prostate secretion --- ## 2. Semen Viscosity ### Method * Aspirate semen into wide-bore pipette (~1.5 mm) * Allow drop by gravity ### Normal * Falls drop by drop ### Increased Viscosity * Thread >2 cm long ### Significance * Increased viscosity ↓ sperm motility --- ## 3. Appearance ### Normal * Fresh semen: * Opaque * White-gray * Viscid ### After Liquefaction * Homogeneous gray-opalescent ### Abnormal Colors | Color | Cause | | ------------ | --------------------------------- | | Red-brown | RBCs (hemospermia) | | Yellow | Jaundice, certain vitamins/drugs | | Yellow hue | Pyospermia | | Rust colored | Small bleeding in seminal vesicle | --- ## 4. Semen Volume ### Normal * > 1.4 mL ### Measurement * Weigh sample * Density assumed = **1 g/mL** ### Low Volume * Ejaculatory duct obstruction * Congenital bilateral absence of vas deferens * Collection difficulty ### High Volume * Active exudation due to inflammatory lesions of accessory organs --- ## 5. Semen pH ### Normal * Alkaline * **7.2–8** * > 7.2 ### Measurement * After liquefaction * Preferably after 30 min --- # II. Microscopic Examination ## 1. Sperm Aggregation vs Agglutination ### Aggregation * Nonspecific * Immotile sperms stick together * Motile sperms attach to: * Mucus strands * Debris * Nonsperm cells ### Agglutination * Motile sperms stick to each other: * Head-to-head * Tail-to-tail * Mixed pattern --- ## 2. Cellular Elements Other Than Sperms Look for: * Epithelial cells from genitourinary tract * Round cells: * Leukocytes * Immature germ cells --- ## 3. Sperm Motility ### Importance * Cervical mucus penetration * Migration into fallopian tube ### Normal * **42% (40–43%) motile sperms** Includes: * Rapidly progressive * Slowly progressive ### Method * Drop of liquefied semen on slide * Coverslip * Microscopic examination ### WHO 2021 Categories #### Rapidly Progressive * 29–31% * Movement >5 head lengths/sec #### Slow Progressive * ~1% #### Immotile * 54% (50–56%) --- ## 4. Sperm Vitality ### Purpose * Determine whether immotile sperms alive or dead ### Normal * **54% (50–56%) live forms** ### Based On * Intact cell membrane ### Especially Important * Progressive motility <40% ### Methods * Dye exclusion test * Hypotonic swelling test --- ## 5. Total Sperm Count ### Method * Improved Neubauer chamber * Thoma pipette * Dilution 1:20 * Same as TLC method ### Normal * > 39 million/ejaculate ### Terms #### Aspermia * No semen #### Azoospermia * No spermatozoa in ejaculate #### Oligospermia * Sperm count below lower reference limit --- # 6. Sperm Morphology ### Stain * Papanicolaou stain ### Normal Sperm Parts * Head * Neck * Midpiece * Principal piece * Endpiece ### Practical View * Head + neck * Tail (midpiece + principal piece) ### Normal Morphology * > 4% normal forms ### Requirement * Both head and tail normal ### Otherwise * Abnormal sperm --- # Classification of Abnormal Sperm Morphology ## A. Head Defects ### Abnormal Size * Large head * Small head ### Abnormal Shape * Pointed * Tapered * Round * Pyriform * Amorphous ### Acrosomal Defects * Vacuolated acrosomal region * Abnormal acrosomal area ### Abnormal Number * Double-headed sperm --- ## B. Neck & Midpiece Defects * Sharply bent neck * Asymmetrical midpiece insertion * Thick midpiece * Thin midpiece * Irregular midpiece --- ## C. Tail (Principal Piece) Defects * Short tail * Bent tail * Coiled tail * Double tail --- # Tests for Antibody Coating of Spermatozoa ## Antisperm Antibodies (ASA) ### Cause * May produce sperm agglutination ### Types * IgA * IgG ### Present In * Semen * Seminal plasma * Blood serum * Cervical mucus --- ## Direct Tests (Detect antibodies on sperm) ### 1. MAR Test * Mixed Antiglobulin Reaction test ### 2. Immunobead (IB) Test --- ## Indirect Tests (Detect antisperm antibodies in sperm-free fluids) * Performed on: * Seminal plasma * Serum * Cervical mucus --- ### Ultra-Short Revision Box **Normal Values** * Volume → **>1.4 mL** * pH → **7.2–8** * Motility → **42%** * Vitality → **54%** * Sperm count → **>39 million/ejaculate** * Normal morphology → **>4%** **Definitions** * Aspermia = No semen * Azoospermia = No sperms * Oligospermia = Low sperm count * Hemospermia = Blood in semen * Pyospermia = Pus cells in semen * Agglutination = Motile sperms stick to each other "

Asking for Preferences
This is a shared conversation. Sign in to Orris to start your own chat.