Okay. Determinants of virulence factor in bacteria, that is factor predisposing to microbial pathogenicity. I wanna write in the microbiology exam as a five marker.
| Determinant | Mechanism | Example |
|---|---|---|
| Adhesins | Bind host receptors | Pili of E. coli |
| Capsule | Antiphagocytic | S. pneumoniae |
| Biofilm | Antibiotic/immune resistance | P. aeruginosa |
| Exotoxins | Cytolytic, neurotoxic, enterotoxic | Cholera toxin |
| Endotoxin (LPS) | Macrophage activation, septic shock | Gram-negative bacteria |
| Type III secretion | Injects effectors into host cells | Salmonella, Shigella |
| Antigenic variation | Evades antibody response | N. gonorrhoeae |
| Siderophores | Iron chelation | E. coli aerobactin |
| Pathogenicity islands | Co-regulate multiple virulence genes | SPI-2 of Salmonella |
Little weasy language
| Factor | What it does | Example |
|---|---|---|
| Adhesins/Pili | Stick to host cells | E. coli UTI |
| Capsule | Block phagocytosis | S. pneumoniae |
| Biofilm | Antibiotic resistance | Pseudomonas |
| Exotoxins | Kill cells / affect nerves / gut | Cholera, Tetanus |
| Endotoxin (LPS) | Septic shock | Gram-negatives |
| Secretion systems | Inject proteins into host cells | Salmonella |
| Antigenic variation | Dodge antibodies | N. gonorrhoeae |
| Siderophores | Steal iron for growth | E. coli |
| Pathogenicity islands | Bundle of virulence genes | Salmonella SPI-2 |
Anaerobic culture media ka mindmap banao
A detailed educational mind map on "Anaerobic Culture Media" for a microbiology exam. Central node labeled "ANAEROBIC CULTURE MEDIA" in bold. Five main branches radiating outward: 1. LIQUID MEDIA (branch color: blue) - sub-nodes: Thioglycollate broth (sodium thioglycollate reduces O2; resazurin indicator turns pink on O2 exposure), Robertson's Cooked Meat (RCM) medium (cooked meat particles absorb O2; used for Clostridia and mixed anaerobes), Peptone yeast glucose broth 2. SOLID MEDIA (branch color: green) - sub-nodes: Blood Agar (non-selective, enriched), Brucella Blood Agar (BBA) - enriched non-selective solid medium, Neomycin Blood Agar - selective for Gram-positive anaerobes, Bacteroides Bile Esculin Agar (BBE) - selective for Bacteroides fragilis group (esculin hydrolysis + black precipitate), Egg Yolk Agar - for Clostridia lecithinase/lipase detection, Laked Blood Kanamycin Vancomycin Agar (LKV) - selective for Gram-negative anaerobes like Bacteroides and Prevotella, CCFA (Cycloserine Cefoxitin Fructose Agar) - selective for C. difficile (yellow fluorescent colonies) 3. ANAEROBIC SYSTEMS (branch color: orange) - sub-nodes: McIntosh & Fildes Jar (H2 + CO2 generator sachet + palladium catalyst converts O2 to H2O), Anaerobic Glove Box / Chamber (N2 + H2 + CO2 atmosphere; all manipulations inside), GasPak system (commercial H2+CO2 generator), Anaerobic Bio-Bag (single plate system) 4. REDUCING AGENTS IN MEDIA (branch color: purple) - sub-nodes: Sodium thioglycollate, Cysteine, Dithiothreitol (DTT), Ascorbic acid, Resazurin (oxidation-reduction indicator - colourless = anaerobic, pink = aerobic) 5. SPECIMEN TRANSPORT (branch color: red) - sub-nodes: Anaerobic transport vials (pre-reduced), Port-a-Cul tubes, Stuart's transport medium, Direct needle aspiration in syringe (expel air before transport), Transport within 30 minutes ideal Clean white background, colorful branches, neat labels, professional medical diagram style suitable for MBBS exam revision.

| Medium | Key Feature |
|---|---|
| Thioglycollate Broth | Sodium thioglycollate O2 ko reduce karta hai; resazurin indicator - pink ho toh O2 aa gaya |
| Robertson's Cooked Meat (RCM) | Cooked meat particles O2 absorb karte hain; Clostridia ke liye best |
| Peptone Yeast Glucose Broth | General purpose anaerobic liquid medium |
| Medium | Selective For |
|---|---|
| Blood Agar | Non-selective, enriched - sab anaerobes |
| Brucella Blood Agar (BBA) | Gold standard non-selective solid medium |
| LKV Agar (Laked blood + Kanamycin + Vancomycin) | Gram-negative anaerobes (Bacteroides, Prevotella) |
| BBE Agar (Bile Esculin) | Bacteroides fragilis - black colonies |
| Neomycin Blood Agar | Gram-positive anaerobes |
| CCFA Agar | C. difficile - yellow fluorescent colonies, UV mein glow karte hain |
| Egg Yolk Agar | Clostridia - lecithinase/lipase activity |
Create a study notes PDF on this mindmap
ls -la /tmp/workspace/ 2>/dev/null || echo "workspace empty or missing"
mkdir -p /tmp/workspace/anaerobic-notes && python3 << 'EOF' # Download the mindmap image first import urllib.request url = "https://cdn.orris.care/image-gen/9040ce698d5e45e6bd36b99ba93985c3.png" urllib.request.urlretrieve(url, "/tmp/workspace/anaerobic-notes/mindmap.png") print("Image downloaded") EOF
~/anaerobic-notes/make_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm, mm
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, Image, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
import os
OUTPUT = "/tmp/workspace/anaerobic-notes/Anaerobic_Culture_Media_Notes.pdf"
MINDMAP = "/tmp/workspace/anaerobic-notes/mindmap.png"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=1.8*cm, rightMargin=1.8*cm,
topMargin=1.8*cm, bottomMargin=1.8*cm
)
W, H = A4
# ── Colour palette ──────────────────────────────────────────
C_NAVY = colors.HexColor("#1a237e")
C_TEAL = colors.HexColor("#00695c")
C_PURPLE = colors.HexColor("#6a1b9a")
C_ORANGE = colors.HexColor("#e65100")
C_RED = colors.HexColor("#b71c1c")
C_BLUE = colors.HexColor("#1565c0")
C_LBLUE = colors.HexColor("#e3f2fd")
C_LGREEN = colors.HexColor("#e8f5e9")
C_LPURPLE = colors.HexColor("#f3e5f5")
C_LORANGE = colors.HexColor("#fff3e0")
C_LRED = colors.HexColor("#ffebee")
C_LGREY = colors.HexColor("#f5f5f5")
C_GOLD = colors.HexColor("#f9a825")
C_WHITE = colors.white
C_BLACK = colors.HexColor("#212121")
styles = getSampleStyleSheet()
def S(name, **kw):
return ParagraphStyle(name, **kw)
# ── Custom styles ────────────────────────────────────────────
sTitle = S("sTitle",
fontSize=22, textColor=C_WHITE, alignment=TA_CENTER,
fontName="Helvetica-Bold", spaceAfter=4)
sSub = S("sSub",
fontSize=11, textColor=C_WHITE, alignment=TA_CENTER,
fontName="Helvetica", spaceAfter=2)
sH1 = S("sH1",
fontSize=14, textColor=C_WHITE, fontName="Helvetica-Bold",
leftIndent=6, spaceAfter=0, spaceBefore=0, leading=18)
sH2 = S("sH2",
fontSize=11, textColor=C_NAVY, fontName="Helvetica-Bold",
spaceBefore=6, spaceAfter=2)
sBody = S("sBody",
fontSize=9.5, textColor=C_BLACK, fontName="Helvetica",
leading=14, spaceAfter=2)
sBullet = S("sBullet",
fontSize=9.5, textColor=C_BLACK, fontName="Helvetica",
leading=14, leftIndent=12, spaceAfter=1,
bulletIndent=0)
sNote = S("sNote",
fontSize=8.5, textColor=C_TEAL, fontName="Helvetica-Oblique",
leading=12, spaceAfter=2)
sTableHdr = S("sTableHdr",
fontSize=9, textColor=C_WHITE, fontName="Helvetica-Bold",
alignment=TA_CENTER, leading=12)
sTableCell = S("sTableCell",
fontSize=8.5, textColor=C_BLACK, fontName="Helvetica",
leading=11, alignment=TA_LEFT)
sCaption = S("sCaption",
fontSize=8, textColor=colors.grey, alignment=TA_CENTER,
fontName="Helvetica-Oblique")
sFooter = S("sFooter",
fontSize=7.5, textColor=colors.grey, alignment=TA_CENTER,
fontName="Helvetica")
# ── Helper: coloured section header ─────────────────────────
def section_header(text, bg=C_NAVY):
tbl = Table([[Paragraph(text, sH1)]], colWidths=[W - 3.6*cm])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("ROUNDEDCORNERS", [6]),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LEFTPADDING", (0,0), (-1,-1), 10),
]))
return tbl
def bullet(txt, colour=C_NAVY):
return Paragraph(f'<font color="#{colour.hexval()[2:]}">•</font> {txt}', sBullet)
def note(txt):
return Paragraph(f'<i>⚠ {txt}</i>', sNote)
# ── PAGE-LEVEL BACKGROUND (grey strip top) via onPage ───────
def on_page(canvas, doc):
canvas.saveState()
# header strip
canvas.setFillColor(C_NAVY)
canvas.rect(0, H - 1.1*cm, W, 1.1*cm, fill=1, stroke=0)
canvas.setFillColor(C_WHITE)
canvas.setFont("Helvetica-Bold", 9)
canvas.drawCentredString(W/2, H - 0.75*cm, "MICROBIOLOGY STUDY NOTES | ANAEROBIC CULTURE MEDIA")
# footer strip
canvas.setFillColor(C_LGREY)
canvas.rect(0, 0, W, 0.9*cm, fill=1, stroke=0)
canvas.setFillColor(colors.grey)
canvas.setFont("Helvetica", 7.5)
canvas.drawCentredString(W/2, 0.35*cm,
"Sources: Jawetz Medical Microbiology 28e | Sherris & Ryan 8e | Henry's Clinical Diagnosis 23e")
canvas.restoreState()
# ════════════════════════════════════════════════════════════
# BUILD CONTENT
# ════════════════════════════════════════════════════════════
story = []
# ── TITLE BANNER ─────────────────────────────────────────────
title_tbl = Table(
[[Paragraph("ANAEROBIC CULTURE MEDIA", sTitle)],
[Paragraph("Complete Study Notes for Microbiology Exam", sSub)]],
colWidths=[W - 3.6*cm]
)
title_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), C_NAVY),
("TOPPADDING", (0,0), (-1,-1), 14),
("BOTTOMPADDING", (0,0), (-1,-1), 14),
("LEFTPADDING", (0,0), (-1,-1), 16),
("RIGHTPADDING", (0,0), (-1,-1), 16),
]))
story.append(Spacer(1, 0.3*cm))
story.append(title_tbl)
story.append(Spacer(1, 0.4*cm))
# ── MINDMAP IMAGE ────────────────────────────────────────────
if os.path.exists(MINDMAP):
img = Image(MINDMAP, width=W - 3.6*cm, height=9*cm, kind="proportional")
story.append(img)
story.append(Paragraph("Fig. 1 — Mind Map: Anaerobic Culture Media", sCaption))
story.append(Spacer(1, 0.4*cm))
# ── INTRO BOX ────────────────────────────────────────────────
intro_data = [[
Paragraph(
"<b>Why anaerobic culture is special?</b> Obligate anaerobes die on exposure to O<sub>2</sub>. "
"Successful isolation requires (1) oxygen-free transport, (2) pre-reduced media with reducing agents, "
"(3) an anaerobic incubation system, and (4) selective media to suppress faster-growing facultative organisms. "
"Incubation is held for <b>48 h minimum</b> (solid) and up to <b>5 days</b> before discarding as negative.",
sBody)
]]
intro_tbl = Table(intro_data, colWidths=[W - 3.6*cm])
intro_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), C_LBLUE),
("TOPPADDING", (0,0), (-1,-1), 10),
("BOTTOMPADDING", (0,0), (-1,-1), 10),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
("BOX", (0,0), (-1,-1), 1, C_BLUE),
]))
story.append(intro_tbl)
story.append(Spacer(1, 0.5*cm))
# ════════════════════════════════════════
# SECTION 1 — LIQUID MEDIA
# ════════════════════════════════════════
story.append(section_header("1. LIQUID (BROTH) MEDIA", C_BLUE))
story.append(Spacer(1, 0.2*cm))
liquid_data = [
[Paragraph("<b>Medium</b>", sTableHdr),
Paragraph("<b>Composition / Key Feature</b>", sTableHdr),
Paragraph("<b>Uses</b>", sTableHdr)],
[Paragraph("Thioglycollate Broth", sTableCell),
Paragraph("Sodium thioglycollate reduces dissolved O\u2082. "
"<b>Resazurin</b> indicator — colourless = anaerobic ✔, pink = O\u2082 contamination ✘. "
"Semisolid consistency traps O\u2082 at top layer.", sTableCell),
Paragraph("General-purpose; good for mixed anaerobes & facultatives", sTableCell)],
[Paragraph("Robertson's Cooked Meat (RCM)", sTableCell),
Paragraph("Minced cooked meat particles absorb O\u2082 and provide nutrients. "
"No indicator. Charcoal version also available.", sTableCell),
Paragraph("Clostridia, mixed anaerobes; excellent for spore-forming anaerobes", sTableCell)],
[Paragraph("Peptone Yeast Glucose (PYG) Broth", sTableCell),
Paragraph("Enriched broth with yeast extract + glucose as fermentation substrate.", sTableCell),
Paragraph("Metabolic end-product analysis by GC; identification of anaerobes", sTableCell)],
]
lt = Table(liquid_data, colWidths=[3.8*cm, 8*cm, 4.6*cm])
lt.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), C_BLUE),
("ROWBACKGROUNDS",(0,1), (-1,-1), [C_LBLUE, C_WHITE]),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#bbdefb")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(lt)
story.append(Spacer(1, 0.15*cm))
story.append(note("RCM is the BEST transport/holding medium for Clostridia. Resazurin is the classic O\u2082 indicator."))
story.append(Spacer(1, 0.45*cm))
# ════════════════════════════════════════
# SECTION 2 — SOLID MEDIA
# ════════════════════════════════════════
story.append(section_header("2. SOLID MEDIA", C_TEAL))
story.append(Spacer(1, 0.2*cm))
solid_data = [
[Paragraph("<b>Medium</b>", sTableHdr),
Paragraph("<b>Selective / Non-selective</b>", sTableHdr),
Paragraph("<b>Selective Agents & Colony Feature</b>", sTableHdr)],
[Paragraph("Blood Agar (BA)", sTableCell),
Paragraph("Non-selective, enriched", sTableCell),
Paragraph("No selective agents; supports all anaerobes", sTableCell)],
[Paragraph("Brucella Blood Agar (BBA)", sTableCell),
Paragraph("Non-selective, enriched (Gold standard)", sTableCell),
Paragraph("Brucella broth base + 5% sheep blood + Vit K\u2081 + haemin", sTableCell)],
[Paragraph("Laked Blood Kanamycin-Vancomycin (LKV)", sTableCell),
Paragraph("Selective — Gram-negative anaerobes", sTableCell),
Paragraph("Kanamycin + Vancomycin suppress Gram+ve & coliforms. Laked (lysed) blood enhances pigment", sTableCell)],
[Paragraph("Neomycin Blood Agar", sTableCell),
Paragraph("Selective — Gram-positive anaerobes", sTableCell),
Paragraph("Neomycin suppresses Gram-negative facultatives", sTableCell)],
[Paragraph("Bacteroides Bile Esculin (BBE)", sTableCell),
Paragraph("Selective — B. fragilis group", sTableCell),
Paragraph("20% ox-bile + esculin + gentamicin. Esculin hydrolysis → black precipitate. B. fragilis = black colonies", sTableCell)],
[Paragraph("CCFA (Cycloserine Cefoxitin Fructose Agar)", sTableCell),
Paragraph("Selective — C. difficile", sTableCell),
Paragraph("D-cycloserine + cefoxitin + fructose + neutral red. C. difficile → yellow ground-glass colonies, fluoresce chartreuse under UV (360 nm)", sTableCell)],
[Paragraph("Egg Yolk Agar (EYA)", sTableCell),
Paragraph("Differential — Clostridia", sTableCell),
Paragraph("Egg yolk substrate. Lecithinase activity → opaque halo (C. perfringens). Lipase → iridescent sheen", sTableCell)],
[Paragraph("KVLB / Phenylethyl Alcohol (PEA)", sTableCell),
Paragraph("Selective — Gram-positive anaerobes", sTableCell),
Paragraph("PEA inhibits Gram-negative organisms including Enterobacteriaceae", sTableCell)],
]
st2 = Table(solid_data, colWidths=[4*cm, 4.5*cm, 7.9*cm])
st2.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), C_TEAL),
("ROWBACKGROUNDS",(0,1), (-1,-1), [C_LGREEN, C_WHITE]),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#c8e6c9")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(st2)
story.append(Spacer(1, 0.15*cm))
story.append(note("BBA = primary non-selective plate. Always inoculate LKV + BBE together for Gram-negative anaerobe suspicion."))
story.append(Spacer(1, 0.45*cm))
# ════════════════════════════════════════
# SECTION 3 — REDUCING AGENTS
# ════════════════════════════════════════
story.append(section_header("3. REDUCING AGENTS IN ANAEROBIC MEDIA", C_PURPLE))
story.append(Spacer(1, 0.2*cm))
ra_data = [
[Paragraph("<b>Agent</b>", sTableHdr), Paragraph("<b>Role</b>", sTableHdr)],
[Paragraph("Sodium Thioglycollate", sTableCell),
Paragraph("Primary reducing agent; reduces sulphur bonds and O\u2082", sTableCell)],
[Paragraph("L-Cysteine", sTableCell),
Paragraph("Amino acid with –SH group; scavenges O\u2082 free radicals", sTableCell)],
[Paragraph("Dithiothreitol (DTT)", sTableCell),
Paragraph("Potent reductant; maintains very low redox potential", sTableCell)],
[Paragraph("Ascorbic Acid", sTableCell),
Paragraph("Mild reducing agent; acts as O\u2082 scavenger", sTableCell)],
[Paragraph("Resazurin (Indicator)", sTableCell),
Paragraph("Oxidation-reduction indicator. Colourless = reduced (anaerobic) ✔; Pink = oxidised (O\u2082 present) ✘", sTableCell)],
[Paragraph("Vitamin K\u2081 + Haemin", sTableCell),
Paragraph("Growth supplements, not reducing agents; essential for Bacteroides and Prevotella growth", sTableCell)],
]
rat = Table(ra_data, colWidths=[4.5*cm, 11.9*cm])
rat.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), C_PURPLE),
("ROWBACKGROUNDS",(0,1), (-1,-1), [C_LPURPLE, C_WHITE]),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#e1bee7")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(rat)
story.append(Spacer(1, 0.45*cm))
# ════════════════════════════════════════
# SECTION 4 — ANAEROBIC INCUBATION SYSTEMS
# ════════════════════════════════════════
story.append(section_header("4. ANAEROBIC INCUBATION SYSTEMS", C_ORANGE))
story.append(Spacer(1, 0.2*cm))
sys_data = [
[Paragraph("<b>System</b>", sTableHdr),
Paragraph("<b>Principle</b>", sTableHdr),
Paragraph("<b>Notes</b>", sTableHdr)],
[Paragraph("McIntosh & Fildes Anaerobic Jar", sTableCell),
Paragraph("H\u2082 + CO\u2082 generator sachet activated by adding water. Palladium-coated catalyst pellets in lid convert O\u2082 + H\u2082 → H\u2082O.", sTableCell),
Paragraph("Methylene blue/resazurin strip confirms anaerobiosis. Classic & widely used.", sTableCell)],
[Paragraph("GasPak System", sTableCell),
Paragraph("Commercial variation of anaerobic jar. GasPak envelope generates H\u2082 + CO\u2082 on addition of water.", sTableCell),
Paragraph("Disposable, convenient. Indicator strip included.", sTableCell)],
[Paragraph("Anaerobic Glove Box / Chamber", sTableCell),
Paragraph("Large sealed plastic chamber filled with N\u2082 + H\u2082 + CO\u2082 (85:10:5). Palladium catalyst maintains anaerobiosis. Internal incubator present.", sTableCell),
Paragraph("Gold standard for strict anaerobes. All manipulations done through sealed gloves. Best recovery rate.", sTableCell)],
[Paragraph("Anaerobic Bio-Bag", sTableCell),
Paragraph("Transparent plastic pouch for single plate. Contains its own gas generator + palladium catalyst.", sTableCell),
Paragraph("Useful for small labs / single specimen testing.", sTableCell)],
[Paragraph("PRAS Media System", sTableCell),
Paragraph("Pre-Reduced Anaerobically Sterilized media. Prepared and stored under O\u2082-free conditions, sealed with butyl rubber stoppers.", sTableCell),
Paragraph("Best for fastidious anaerobes; media never exposed to O\u2082 at any stage.", sTableCell)],
]
syst = Table(sys_data, colWidths=[4*cm, 7*cm, 5.4*cm])
syst.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), C_ORANGE),
("ROWBACKGROUNDS",(0,1), (-1,-1), [C_LORANGE, C_WHITE]),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#ffe0b2")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(syst)
story.append(Spacer(1, 0.15*cm))
story.append(note("Anaerobic glove box = best recovery. McIntosh & Fildes jar = most commonly used in routine labs."))
story.append(Spacer(1, 0.45*cm))
# ════════════════════════════════════════
# SECTION 5 — SPECIMEN TRANSPORT
# ════════════════════════════════════════
story.append(section_header("5. SPECIMEN COLLECTION & TRANSPORT", C_RED))
story.append(Spacer(1, 0.2*cm))
trans_data = [
[Paragraph("<b>Method</b>", sTableHdr), Paragraph("<b>Details</b>", sTableHdr)],
[Paragraph("Needle & Syringe Aspiration", sTableCell),
Paragraph("Best method. Aspirate pus directly; expel all air bubbles from syringe before capping. Transport within 30 minutes.", sTableCell)],
[Paragraph("Port-a-Cul Transport Vials", sTableCell),
Paragraph("Pre-reduced semi-solid medium in airtight vials. Maintains anaerobiosis during transport.", sTableCell)],
[Paragraph("Anaerobic Transport Swabs", sTableCell),
Paragraph("Swab inserted into tube containing reduced medium (e.g. thioglycollate) under N\u2082 atmosphere. Less ideal than aspirate.", sTableCell)],
[Paragraph("Pus / Fluid in Sterile Container", sTableCell),
Paragraph("Large volume of pus is its own best transport medium if lab is close. Air-tight container essential.", sTableCell)],
[Paragraph("Tissue Biopsy", sTableCell),
Paragraph("Place in small amount of sterile saline or anaerobic transport medium. Never let it dry out.", sTableCell)],
]
trt = Table(trans_data, colWidths=[5*cm, 11.4*cm])
trt.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), C_RED),
("ROWBACKGROUNDS",(0,1), (-1,-1), [C_LRED, C_WHITE]),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#ffcdd2")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(trt)
story.append(Spacer(1, 0.15*cm))
story.append(note("NEVER use a dry swab or expose specimen to air. Swabs are the WORST transport method for anaerobes."))
story.append(Spacer(1, 0.45*cm))
# ════════════════════════════════════════
# SECTION 6 — IDENTIFICATION METHODS
# ════════════════════════════════════════
story.append(section_header("6. IDENTIFICATION OF ANAEROBES (After Culture)", colors.HexColor("#37474f")))
story.append(Spacer(1, 0.2*cm))
id_items = [
("Gram Stain", "Most rapid & clinically useful step. Mixed Gram+ve and Gram-ve organisms strongly suggests anaerobic infection."),
("Colony Morphology", "Characteristic on selective media (e.g. black colonies on BBE = B. fragilis; yellow on CCFA = C. difficile)."),
("Biochemical Tests", "API anaerobe strips, spot tests (indole, catalase, lecithinase)."),
("Gas-Liquid Chromatography (GLC)", "Detects volatile fatty acid end-products of anaerobic metabolism (e.g. acetic, butyric, propionic acids). Gold standard for genus-level ID."),
("MALDI-TOF MS", "Rapid, accurate species-level ID from colonies. Increasingly replacing GLC in modern labs."),
("Antibiotic Disc Susceptibility (Special Kanamycin, Colistin, Vancomycin discs)", "Used to differentiate anaerobes — e.g. B. fragilis resistant to kanamycin & vancomycin but sensitive to colistin helps ID."),
]
id_data = [[Paragraph("<b>Method</b>", sTableHdr), Paragraph("<b>Details</b>", sTableHdr)]]
for m, d in id_items:
id_data.append([Paragraph(m, sTableCell), Paragraph(d, sTableCell)])
idt = Table(id_data, colWidths=[5*cm, 11.4*cm])
idt.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#37474f")),
("ROWBACKGROUNDS",(0,1), (-1,-1), [C_LGREY, C_WHITE]),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#cfd8dc")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(idt)
story.append(Spacer(1, 0.45*cm))
# ════════════════════════════════════════
# QUICK REVISION BOX
# ════════════════════════════════════════
story.append(section_header("QUICK EXAM MEMORY TRICKS", C_GOLD))
story.append(Spacer(1, 0.2*cm))
tricks = [
("Resazurin indicator", "Pink = Problem (O\u2082 got in). Colourless = Correct (anaerobic)."),
("RCM", "Robertson's Cooked Meat = for Clostridia (both start with 'C')."),
("BBE agar", "Bacteroides makes Black colonies on Bile Esculin agar."),
("CCFA", "C. difficile → Chartreuse Colour under UV, grows on Cycloserine Cefoxitin Fructose Agar."),
("LKV", "Laked blood Kanamycin Vancomycin → Kills everything except Gram-negative anaerobes."),
("McIntosh & Fildes jar", "H\u2082 + Palladium catalyst + O\u2082 → H\u2082O. Catalyst in LID. Indicator strip confirms."),
("Glove box", "Best system for fastidious anaerobes; all work done inside the sealed chamber."),
("PRAS", "Pre-Reduced Anaerobically Sterilized — never touched O\u2082 at any point."),
("Incubation time", "Solid media: 48 h. Liquid media: 48–96 h. Total hold time: 5 days before calling negative."),
]
trick_data = [[Paragraph("<b>Topic</b>", sTableHdr), Paragraph("<b>Memory Trick / Key Point</b>", sTableHdr)]]
for t, m in tricks:
trick_data.append([Paragraph(t, sTableCell), Paragraph(m, sTableCell)])
trickt = Table(trick_data, colWidths=[5*cm, 11.4*cm])
trickt.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), C_GOLD),
("ROWBACKGROUNDS",(0,1), (-1,-1), [colors.HexColor("#fff9c4"), C_WHITE]),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#fff176")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(trickt)
story.append(Spacer(1, 0.4*cm))
# ── BUILD ─────────────────────────────────────────────────────
doc.build(story, onFirstPage=on_page, onLaterPages=on_page)
print(f"PDF created: {OUTPUT}")
cd /tmp/workspace/anaerobic-notes && python3 make_pdf.py 2>&1
ls -lh /tmp/workspace/anaerobic-notes/Anaerobic_Culture_Media_Notes.pdf
Anaerobic Culture Media Notes
PDF Document · PDF
| Section | Content |
|---|---|
| Title Banner + Mind Map | Wahi mindmap jo abhi banaya, PDF ke top pe |
| Introduction Box | Anaerobic culture kyun special hai - 3 key rules |
| 1. Liquid Media | Thioglycollate broth, RCM, PYG broth - full table |
| 2. Solid Media | 8 media - BBA, LKV, BBE, CCFA, Neomycin, EYA, PEA - selective agents + colony features |
| 3. Reducing Agents | Thioglycollate, Cysteine, DTT, Resazurin indicator explained |
| 4. Anaerobic Systems | McIntosh & Fildes jar, GasPak, Glove box, Bio-Bag, PRAS |
| 5. Specimen Transport | Syringe aspiration, Port-a-Cul, swabs - best to worst |
| 6. Identification | Gram stain, GLC, MALDI-TOF, disc tests |
| Quick Memory Tricks | Exam ke liye short mnemonics - e.g. "Pink = Problem" for resazurin |