New Chat Recent TISH Technique Study Guide RGUHS TISH Technique Overview for RGUHS TISH Technique Study Guide TISH Technique Overview Lung Lesion in HIV Diagnosis HIV Associated Lung Lesions Guide Jul 20, 2026 Automations in Hematology RGUHS Jun 19, 2026 Gene Editing Basics Jun 16, 2026 Liquid Biopsy Markers in Cytology priyam mundra Pdf on TISH technique for rguhs university exam 10 marks with appropriate Line diagram and flow chart

Reading File
Finding Sources
Finding Sources
Searching the Web

TISH technique cytology RGUHS exam tissue in situ hybridization

Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Generating Image

A detailed scientific line diagram showing the TISH (Tissue In Situ Hybridization) technique steps: 1) Tissue section on glass slide, 2) Tissue fixation and deparaffinization, 3) Protease digestion to unmask targets, 4) Denaturation of double-stranded DNA with heat, 5) Labeled probe application (showing DNA probe structure), 6) Hybridization step with probe binding to complementary DNA sequence, 7) Stringency wash to remove unbound probe, 8) Detection - fluorescent or chromogenic signal. Show each step as a labeled diagram with arrows connecting them in sequence. Clean black and white scientific illustration style suitable for medical exam study guide.

Generating Image

A detailed scientific flowchart showing the complete TISH (Tissue In Situ Hybridization) procedure for a medical exam study guide. The flowchart should show: START -> Tissue Preparation (FFPE sections, 4-6 micron) -> Deparaffinization (xylene, graded alcohols) -> Antigen/Target Retrieval (protease treatment) -> Denaturation (heat 80-95 degrees, or chemical with NaOH) -> Probe Hybridization (37-42 degrees overnight) -> Post-hybridization Stringency Washes -> Signal Detection (FISH: fluorescence microscopy / CISH: chromogenic, DAB or AP) -> Counterstaining (DAPI for FISH, Hematoxylin for CISH) -> Microscopic Visualization -> Result Interpretation. Each box should be clearly labeled with conditions and reagents. Use clean black and white flowchart style with rectangular process boxes and diamond decision boxes.

Reading File
Running Command

mkdir -p /tmp/workspace/tish-guide && ls /tmp/workspace/tish-guide/

Running Command

cd /tmp/workspace/tish-guide && python3 -c " import urllib.request urllib.request.urlretrieve('https://cdn.orris.care/image-gen/125b16fc534f49ae9c82103089e84be1.png', 'diagram.png') urllib.request.urlretrieve('https://cdn.orris.care/image-gen/6d963035250c482da15052fe9b915471.png', 'flowchart.png') print('Images downloaded') "

Writing File

~/tish-guide/create_tish_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.lib import colors
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    Image, PageBreak, HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.pdfgen import canvas

OUTPUT = "/tmp/workspace/tish-guide/TISH_Technique_RGUHS.pdf"

# ── Custom Styles ──────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()

DARK_BLUE  = colors.HexColor("#1A3A5C")
MID_BLUE   = colors.HexColor("#2E6DA4")
LIGHT_BLUE = colors.HexColor("#D6E8F5")
ACCENT     = colors.HexColor("#E8A020")
WHITE      = colors.white
LIGHT_GRAY = colors.HexColor("#F5F5F5")
DARK_GRAY  = colors.HexColor("#333333")
BOX_BG     = colors.HexColor("#EAF3FB")

title_style = ParagraphStyle(
    "TitleStyle", parent=styles["Title"],
    fontSize=22, leading=28, alignment=TA_CENTER,
    textColor=WHITE, spaceAfter=4
)
subtitle_style = ParagraphStyle(
    "SubtitleStyle", parent=styles["Normal"],
    fontSize=12, leading=16, alignment=TA_CENTER,
    textColor=colors.HexColor("#D6E8F5"), spaceAfter=6
)
h1 = ParagraphStyle(
    "H1", parent=styles["Heading1"],
    fontSize=14, leading=18, textColor=WHITE,
    spaceBefore=14, spaceAfter=6, leftIndent=0
)
h2 = ParagraphStyle(
    "H2", parent=styles["Heading2"],
    fontSize=12, leading=15, textColor=DARK_BLUE,
    spaceBefore=10, spaceAfter=4, leftIndent=0
)
body = ParagraphStyle(
    "Body", parent=styles["Normal"],
    fontSize=10, leading=14, textColor=DARK_GRAY,
    alignment=TA_JUSTIFY, spaceAfter=6
)
bullet = ParagraphStyle(
    "Bullet", parent=styles["Normal"],
    fontSize=10, leading=13, textColor=DARK_GRAY,
    leftIndent=14, spaceAfter=3,
    bulletIndent=4, bulletFontName="Helvetica", bulletFontSize=10
)
box_style = ParagraphStyle(
    "Box", parent=styles["Normal"],
    fontSize=9.5, leading=13, textColor=DARK_GRAY,
    leftIndent=6, spaceAfter=3
)
caption = ParagraphStyle(
    "Caption", parent=styles["Normal"],
    fontSize=8.5, leading=11, alignment=TA_CENTER,
    textColor=MID_BLUE, spaceBefore=2, spaceAfter=8, fontName="Helvetica-Oblique"
)
table_header = ParagraphStyle(
    "TH", parent=styles["Normal"],
    fontSize=9.5, textColor=WHITE, fontName="Helvetica-Bold", leading=12
)
table_cell = ParagraphStyle(
    "TC", parent=styles["Normal"],
    fontSize=9, textColor=DARK_GRAY, leading=12
)

# ── Header / Footer ────────────────────────────────────────────────────────────
def on_page(canvas_obj, doc):
    W, H = A4
    # Header bar
    canvas_obj.setFillColor(DARK_BLUE)
    canvas_obj.rect(0, H - 28, W, 28, fill=1, stroke=0)
    canvas_obj.setFillColor(WHITE)
    canvas_obj.setFont("Helvetica-Bold", 9)
    canvas_obj.drawString(1.5*cm, H - 18, "TISH Technique  |  RGUHS Study Guide")
    canvas_obj.setFont("Helvetica", 8)
    canvas_obj.drawRightString(W - 1.5*cm, H - 18, "10 Marks Question")
    # Footer
    canvas_obj.setFillColor(DARK_BLUE)
    canvas_obj.rect(0, 0, W, 18, fill=1, stroke=0)
    canvas_obj.setFillColor(WHITE)
    canvas_obj.setFont("Helvetica", 7.5)
    canvas_obj.drawCentredString(W / 2, 6, f"Page {doc.page}")

# ── Section header helper ──────────────────────────────────────────────────────
def section_header(text):
    data = [[Paragraph(text, h1)]]
    t = Table(data, colWidths=[17.2*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
        ("LEFTPADDING",  (0,0), (-1,-1), 8),
        ("RIGHTPADDING", (0,0), (-1,-1), 8),
        ("TOPPADDING",   (0,0), (-1,-1), 5),
        ("BOTTOMPADDING",(0,0), (-1,-1), 5),
        ("ROUNDEDCORNERS", [4]),
    ]))
    return t

def info_box(title, items):
    """Tinted info box with bullet list."""
    content = [Paragraph(f"<b>{title}</b>", ParagraphStyle(
        "IB", parent=styles["Normal"], fontSize=10.5, textColor=MID_BLUE,
        fontName="Helvetica-Bold", spaceAfter=4))]
    for item in items:
        content.append(Paragraph(f"• {item}", box_style))
    data = [[content]]
    t = Table(data, colWidths=[17.2*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND",   (0,0), (-1,-1), BOX_BG),
        ("BOX",          (0,0), (-1,-1), 0.8, MID_BLUE),
        ("LEFTPADDING",  (0,0), (-1,-1), 10),
        ("RIGHTPADDING", (0,0), (-1,-1), 10),
        ("TOPPADDING",   (0,0), (-1,-1), 7),
        ("BOTTOMPADDING",(0,0), (-1,-1), 7),
    ]))
    return t

# ── Build story ────────────────────────────────────────────────────────────────
story = []
W_page, H_page = A4
doc = SimpleDocTemplate(
    OUTPUT, pagesize=A4,
    topMargin=1.8*cm, bottomMargin=1.5*cm,
    leftMargin=1.9*cm, rightMargin=1.9*cm
)

# ── COVER PAGE ─────────────────────────────────────────────────────────────────
story.append(Spacer(1, 0.5*cm))

cover_data = [[
    Paragraph("TISH TECHNIQUE", title_style),
    Paragraph("Tissue In Situ Hybridization", subtitle_style),
    Paragraph("Comprehensive Study Guide for RGUHS University Examination", subtitle_style),
    Paragraph("10-Mark Question  |  Molecular Pathology / Cytology", subtitle_style),
]]
cover_table = Table([[cover_data[0][0]], [cover_data[0][1]], [cover_data[0][2]], [cover_data[0][3]]], colWidths=[17.2*cm])
cover_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), DARK_BLUE),
    ("ALIGN",         (0,0), (-1,-1), "CENTER"),
    ("LEFTPADDING",   (0,0), (-1,-1), 12),
    ("RIGHTPADDING",  (0,0), (-1,-1), 12),
    ("TOPPADDING",    (0,0), (-1,-1), 16),
    ("BOTTOMPADDING", (0,0), (-1,-1), 16),
    ("ROUNDEDCORNERS",[6]),
]))
story.append(cover_table)
story.append(Spacer(1, 0.4*cm))

# Quick-ref box
story.append(info_box("Key Facts at a Glance", [
    "TISH = Tissue In Situ Hybridization — detects specific DNA/RNA sequences directly in tissue",
    "Variants: FISH (Fluorescent ISH) and CISH (Chromogenic ISH)",
    "Principle: Watson-Crick complementary base-pairing between labeled probe and target nucleic acid",
    "Specimens: FFPE tissue sections, cytology smears, metaphase chromosome spreads",
    "Detection: Fluorescence microscope (FISH) or bright-field microscope (CISH)",
]))
story.append(Spacer(1, 0.3*cm))

# ── SECTION 1: DEFINITION AND PRINCIPLE ────────────────────────────────────────
story.append(section_header("1.  DEFINITION AND PRINCIPLE"))
story.append(Spacer(1, 0.2*cm))

story.append(Paragraph(
    "<b>Tissue In Situ Hybridization (TISH)</b> is a molecular technique that localizes and detects "
    "specific nucleic acid sequences (DNA or RNA) <i>in situ</i> — directly within fixed tissue sections "
    "or cytological preparations — while preserving the morphological architecture of the tissue. "
    "The word <i>in situ</i> (Latin: 'in position') distinguishes this from solution-based hybridization "
    "techniques that require extraction of nucleic acids.",
    body))

story.append(Paragraph(
    "<b>Principle:</b> The technique exploits Watson-Crick complementary base-pairing. "
    "Single-stranded DNA (ssDNA) or RNA molecules will hybridize (anneal) to complementary "
    "sequences under appropriate temperature and ionic conditions. A labeled probe — a "
    "synthetic single-stranded nucleic acid complementary to the target sequence — is applied "
    "to the denatured (single-stranded) nucleic acid in the tissue. After hybridization and "
    "washing away unbound probe, the signal from the label reveals the location of the target.",
    body))

story.append(Paragraph(
    "The concept was first demonstrated in 1969 by Pardue & Gall and John et al., who used "
    "radiolabeled RNA probes on cytological preparations to locate complementary DNA sequences.",
    body))
story.append(Spacer(1, 0.2*cm))

# ── SECTION 2: CLASSIFICATION / TYPES ──────────────────────────────────────────
story.append(section_header("2.  CLASSIFICATION OF ISH TECHNIQUES"))
story.append(Spacer(1, 0.2*cm))

classify_data = [
    [Paragraph("<b>Feature</b>", table_header),
     Paragraph("<b>FISH</b>", table_header),
     Paragraph("<b>CISH</b>", table_header),
     Paragraph("<b>RISH / Radio-ISH</b>", table_header)],
    [Paragraph("Detection label", table_cell),
     Paragraph("Fluorescent dye (FITC, Rhodamine, DAPI, Cy3, Cy5)", table_cell),
     Paragraph("Enzyme (HRP or AP) → colorimetric substrate", table_cell),
     Paragraph("Radioactive isotope (³H, ³²P, ³⁵S)", table_cell)],
    [Paragraph("Microscopy", table_cell),
     Paragraph("Fluorescence microscope", table_cell),
     Paragraph("Bright-field (light) microscope", table_cell),
     Paragraph("Autoradiography + light microscope", table_cell)],
    [Paragraph("Counterstain", table_cell),
     Paragraph("DAPI (blue nuclear stain)", table_cell),
     Paragraph("Hematoxylin (blue)", table_cell),
     Paragraph("Nuclear fast red", table_cell)],
    [Paragraph("Sensitivity", table_cell),
     Paragraph("Very high — detects single copy", table_cell),
     Paragraph("High", table_cell),
     Paragraph("Very high but hazardous", table_cell)],
    [Paragraph("Permanence", table_cell),
     Paragraph("Fades (photo-bleaching)", table_cell),
     Paragraph("Permanent staining", table_cell),
     Paragraph("Permanent (film)", table_cell)],
    [Paragraph("Multiplex", table_cell),
     Paragraph("Yes — multiple probes, different colors", table_cell),
     Paragraph("Limited (dual CISH)", table_cell),
     Paragraph("Difficult", table_cell)],
    [Paragraph("Cost", table_cell),
     Paragraph("High", table_cell),
     Paragraph("Lower", table_cell),
     Paragraph("Low but regulatory issues", table_cell)],
    [Paragraph("Clinical use", table_cell),
     Paragraph("HER2, ALK, ROS1, BCR-ABL, prenatal diagnosis", table_cell),
     Paragraph("HER2 (Dual CISH), HPV", table_cell),
     Paragraph("Research mainly", table_cell)],
]
t = Table(classify_data, colWidths=[3.5*cm, 4.8*cm, 4.8*cm, 4.1*cm])
t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  MID_BLUE),
    ("BACKGROUND",    (0,1), (-1,1),  LIGHT_BLUE),
    ("BACKGROUND",    (0,2), (-1,2),  WHITE),
    ("BACKGROUND",    (0,3), (-1,3),  LIGHT_BLUE),
    ("BACKGROUND",    (0,4), (-1,4),  WHITE),
    ("BACKGROUND",    (0,5), (-1,5),  LIGHT_BLUE),
    ("BACKGROUND",    (0,6), (-1,6),  WHITE),
    ("BACKGROUND",    (0,7), (-1,7),  LIGHT_BLUE),
    ("BACKGROUND",    (0,8), (-1,8),  WHITE),
    ("GRID",          (0,0), (-1,-1), 0.5, colors.HexColor("#A0BDD0")),
    ("LEFTPADDING",   (0,0), (-1,-1), 5),
    ("RIGHTPADDING",  (0,0), (-1,-1), 5),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
]))
story.append(t)
story.append(Spacer(1, 0.3*cm))

# ── SECTION 3: TYPES OF PROBES ──────────────────────────────────────────────────
story.append(section_header("3.  TYPES OF PROBES USED IN TISH"))
story.append(Spacer(1, 0.2*cm))

probe_data = [
    [Paragraph("<b>Probe Type</b>", table_header),
     Paragraph("<b>Size</b>", table_header),
     Paragraph("<b>Target</b>", table_header),
     Paragraph("<b>Remarks</b>", table_header)],
    [Paragraph("Oligonucleotide probes", table_cell),
     Paragraph("20–40 bp", table_cell),
     Paragraph("DNA or mRNA", table_cell),
     Paragraph("Synthetic, easy to produce, low sensitivity individually — used in arrays", table_cell)],
    [Paragraph("Double-stranded DNA (dsDNA) probes", table_cell),
     Paragraph("200–1,000 bp", table_cell),
     Paragraph("Genomic DNA", table_cell),
     Paragraph("Must be denatured before use; high sensitivity", table_cell)],
    [Paragraph("Single-stranded cDNA probes", table_cell),
     Paragraph("200–1,000 bp", table_cell),
     Paragraph("mRNA", table_cell),
     Paragraph("Made from mRNA via reverse transcriptase", table_cell)],
    [Paragraph("RNA probes (Riboprobes)", table_cell),
     Paragraph("100–1,000 bp", table_cell),
     Paragraph("mRNA / viral RNA", table_cell),
     Paragraph("Most sensitive for mRNA; resist RNase after hybridization", table_cell)],
    [Paragraph("Locus-specific probes", table_cell),
     Paragraph("Variable", table_cell),
     Paragraph("Single gene locus", table_cell),
     Paragraph("Used for gene amplification/deletion; e.g., HER2", table_cell)],
    [Paragraph("Centromere probes (CEP)", table_cell),
     Paragraph("Repeat sequences", table_cell),
     Paragraph("Centromeric repeats", table_cell),
     Paragraph("Enumerate chromosomes; detect aneuploidy", table_cell)],
    [Paragraph("Whole-chromosome painting probes", table_cell),
     Paragraph("Whole chr.", table_cell),
     Paragraph("Entire chromosome", table_cell),
     Paragraph("Detect translocations and rearrangements; spectral karyotyping (SKY)", table_cell)],
]
t = Table(probe_data, colWidths=[4.0*cm, 2.3*cm, 3.2*cm, 7.7*cm])
t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  MID_BLUE),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [LIGHT_BLUE, WHITE]),
    ("GRID",          (0,0), (-1,-1), 0.5, colors.HexColor("#A0BDD0")),
    ("LEFTPADDING",   (0,0), (-1,-1), 5),
    ("RIGHTPADDING",  (0,0), (-1,-1), 5),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
]))
story.append(t)
story.append(Spacer(1, 0.2*cm))

# ── SECTION 4: LABELING METHODS ─────────────────────────────────────────────────
story.append(section_header("4.  PROBE LABELING METHODS"))
story.append(Spacer(1, 0.15*cm))
story.append(Paragraph("<b>A. Direct Labeling</b>", h2))
story.append(Paragraph(
    "The fluorochrome or reporter is directly incorporated into the probe nucleotides during synthesis "
    "(e.g., fluorescent dUTP analogs). Signal is detected directly without further antibody steps. "
    "Faster, fewer steps, but slightly less sensitive.",
    body))

story.append(Paragraph("<b>B. Indirect Labeling (most common)</b>", h2))
story.append(Paragraph(
    "The probe is labeled with a hapten (small molecule) such as:",
    body))
for item in [
    "<b>Digoxigenin (DIG)</b> — detected by anti-DIG antibody conjugated to enzyme (HRP/AP) or fluorochrome",
    "<b>Biotin</b> — detected by streptavidin-enzyme or streptavidin-fluorochrome (strong affinity, Kd ~10⁻¹⁵ M)",
    "<b>Dinitrophenol (DNP)</b> — detected by anti-DNP antibody",
]:
    story.append(Paragraph(f"• {item}", bullet))

story.append(Paragraph("<b>C. Radioactive Labeling</b>", h2))
story.append(Paragraph(
    "Isotopes ³H, ³²P, ³⁵S are incorporated into nucleotides. "
    "Detected by autoradiography (photographic emulsion over section). "
    "High sensitivity but hazardous; rarely used today clinically.",
    body))
story.append(Spacer(1, 0.2*cm))

# ── SECTION 5: STEP-BY-STEP PROCEDURE ──────────────────────────────────────────
story.append(PageBreak())
story.append(section_header("5.  STEP-BY-STEP PROCEDURE (TISH Protocol)"))
story.append(Spacer(1, 0.2*cm))

steps = [
    ("Step 1", "Tissue Preparation",
     "Cut FFPE (Formalin-Fixed Paraffin-Embedded) sections 4–6 μm onto positively-charged poly-L-lysine or silanized glass slides. Air-dry at 37°C overnight. Alternatively, cytological smears or touch preparations can be used."),
    ("Step 2", "Deparaffinization & Rehydration",
     "Immerse in xylene (2 × 5 min) to remove paraffin, then rehydrate through graded alcohols: 100% → 90% → 70% → distilled water (each 3 min). This restores aqueous environment needed for hybridization reagents."),
    ("Step 3", "Protease Digestion (Target Unmasking)",
     "Treat sections with Proteinase K (0.5–50 μg/mL, 37°C, 10–30 min) or pepsin (0.4% in 0.2 N HCl, 37°C, 15–30 min). Over-digestion destroys morphology; under-digestion prevents probe access. This step removes proteins cross-linked by formalin fixation that block probe access to DNA/RNA."),
    ("Step 4", "Fixation (Post-protease)",
     "Brief re-fixation in 4% paraformaldehyde or 10% NBF for 5 min to stabilize tissue. Then wash in PBS (2 × 5 min)."),
    ("Step 5", "Denaturation",
     "Denature double-stranded DNA to single-stranded form. Methods: (a) Heat denaturation — place slide on hot plate at 85–95°C for 5–10 min in 70% formamide/2× SSC; (b) Simultaneous co-denaturation — probe and tissue denatured together at 80°C for 5 min. This is the most critical step — incomplete denaturation = no hybridization signal."),
    ("Step 6", "Probe Application & Hybridization",
     "Apply labeled probe (10–30 μL per section) in hybridization buffer (formamide, dextran sulfate, SSC, salmon sperm DNA as blocking DNA). Cover-slip and seal. Incubate in humidified chamber at 37–42°C overnight (12–18 h). Probe anneals to complementary sequences by Watson-Crick base-pairing."),
    ("Step 7", "Post-hybridization Stringency Washes",
     "Remove unbound/non-specifically bound probe by washing in: (a) 2× SSC at 37°C × 2 for 5 min each; (b) 0.1× SSC at 37°C or 45°C × 2 for 10 min (high stringency). Higher stringency washes = lower background but risk of washing off specific signal. Stringency is controlled by salt concentration (SSC) and temperature."),
    ("Step 8", "Signal Detection",
     "FISH: Apply DAPI counterstain (1 μg/mL, 10 min) and mount with anti-fade medium. Visualize under fluorescence microscope with appropriate filter sets.\n"
     "CISH: Apply anti-hapten antibody (anti-DIG or streptavidin), then secondary antibody-enzyme conjugate; incubate with chromogenic substrate (DAB → brown, or Fast Red → red). Counterstain with hematoxylin. Mount and cover-slip. Visualize under bright-field microscope."),
    ("Step 9", "Result Interpretation",
     "Count signal spots per nucleus. Amplification: ≥6 copies or gene/CEP ratio >2.2 (HER2 by FISH). Deletion: <2 copies. Translocation: separate red and green signals (break-apart probes). For CISH: count dot signals per nucleus at 40× objective."),
]

for step_num, step_name, step_desc in steps:
    step_data = [[
        Paragraph(step_num, ParagraphStyle("SN", parent=styles["Normal"], fontSize=9,
                                           fontName="Helvetica-Bold", textColor=WHITE,
                                           alignment=TA_CENTER)),
        Paragraph(f"<b>{step_name}</b>", ParagraphStyle("ST", parent=styles["Normal"],
                                                         fontSize=10, fontName="Helvetica-Bold",
                                                         textColor=DARK_BLUE)),
        Paragraph(step_desc, body),
    ]]
    row_table = Table(step_data, colWidths=[1.6*cm, 3.8*cm, 11.8*cm])
    row_table.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (0,0), MID_BLUE),
        ("BACKGROUND",    (1,0), (-1,0), LIGHT_BLUE),
        ("ALIGN",         (0,0), (0,0), "CENTER"),
        ("VALIGN",        (0,0), (-1,-1), "TOP"),
        ("BOX",           (0,0), (-1,-1), 0.8, MID_BLUE),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
        ("RIGHTPADDING",  (0,0), (-1,-1), 6),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ]))
    story.append(row_table)
    story.append(Spacer(1, 0.1*cm))

story.append(Spacer(1, 0.2*cm))

# ── SECTION 6: LINE DIAGRAM ─────────────────────────────────────────────────────
story.append(PageBreak())
story.append(section_header("6.  LINE DIAGRAM — TISH Procedure"))
story.append(Spacer(1, 0.2*cm))

try:
    img1 = Image("/tmp/workspace/tish-guide/diagram.png", width=16*cm, height=11*cm)
    story.append(img1)
    story.append(Paragraph(
        "Fig. 1 — Diagrammatic representation of TISH technique showing the stepwise procedure "
        "from tissue section preparation to signal detection.",
        caption))
except Exception as e:
    story.append(Paragraph(f"[Diagram image not available: {e}]", body))

story.append(Spacer(1, 0.3*cm))

# ── SECTION 7: FLOWCHART ────────────────────────────────────────────────────────
story.append(section_header("7.  FLOWCHART — TISH Procedure"))
story.append(Spacer(1, 0.2*cm))

try:
    img2 = Image("/tmp/workspace/tish-guide/flowchart.png", width=16*cm, height=11*cm)
    story.append(img2)
    story.append(Paragraph(
        "Fig. 2 — Complete procedural flowchart for TISH (FISH/CISH) showing specimen preparation, "
        "hybridization, washing, and detection with key reagents and conditions at each stage.",
        caption))
except Exception as e:
    story.append(Paragraph(f"[Flowchart image not available: {e}]", body))

story.append(Spacer(1, 0.2*cm))

# ── SECTION 8: APPLICATIONS ──────────────────────────────────────────────────────
story.append(PageBreak())
story.append(section_header("8.  CLINICAL APPLICATIONS OF TISH"))
story.append(Spacer(1, 0.2*cm))

apps_data = [
    [Paragraph("<b>Clinical Area</b>", table_header),
     Paragraph("<b>Specific Application</b>", table_header),
     Paragraph("<b>Probe Used</b>", table_header)],
    [Paragraph("Breast Cancer", table_cell),
     Paragraph("HER2 gene amplification — guides trastuzumab (Herceptin) therapy", table_cell),
     Paragraph("HER2 locus-specific + CEP17 dual probe", table_cell)],
    [Paragraph("Lung Cancer", table_cell),
     Paragraph("ALK, ROS1, RET rearrangements — targeted therapy selection", table_cell),
     Paragraph("Break-apart FISH probes", table_cell)],
    [Paragraph("Chronic Myeloid Leukemia", table_cell),
     Paragraph("BCR-ABL translocation t(9;22) — Philadelphia chromosome", table_cell),
     Paragraph("BCR-ABL dual fusion probe", table_cell)],
    [Paragraph("Prenatal Diagnosis", table_cell),
     Paragraph("Rapid aneuploidy detection (trisomy 21, 18, 13; Turner, Klinefelter)", table_cell),
     Paragraph("CEP probes for chromosomes 13, 18, 21, X, Y", table_cell)],
    [Paragraph("Virology / Infection", table_cell),
     Paragraph("HPV detection and typing in cervical smears; EBV, CMV in tissue", table_cell),
     Paragraph("Viral genome-specific probes", table_cell)],
    [Paragraph("Lymphoma", table_cell),
     Paragraph("MYC, BCL2, BCL6 rearrangements (double/triple-hit lymphoma)", table_cell),
     Paragraph("Break-apart probes", table_cell)],
    [Paragraph("Gene Mapping", table_cell),
     Paragraph("Chromosomal localization of genes; spectral karyotyping (SKY)", table_cell),
     Paragraph("Whole-chromosome paint probes", table_cell)],
    [Paragraph("Radiation Biology", table_cell),
     Paragraph("Chromosome translocation frequency in astronaut lymphocytes for absorbed dose", table_cell),
     Paragraph("WCP probes", table_cell)],
]
t = Table(apps_data, colWidths=[3.8*cm, 7.8*cm, 5.6*cm])
t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  MID_BLUE),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [LIGHT_BLUE, WHITE]),
    ("GRID",          (0,0), (-1,-1), 0.5, colors.HexColor("#A0BDD0")),
    ("LEFTPADDING",   (0,0), (-1,-1), 5),
    ("RIGHTPADDING",  (0,0), (-1,-1), 5),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
]))
story.append(t)
story.append(Spacer(1, 0.3*cm))

# ── SECTION 9: ADVANTAGES & LIMITATIONS ─────────────────────────────────────────
story.append(section_header("9.  ADVANTAGES AND LIMITATIONS"))
story.append(Spacer(1, 0.15*cm))

adv_data = [
    [Paragraph("<b>Advantages</b>", table_header),
     Paragraph("<b>Limitations</b>", table_header)],
    [Paragraph(
        "• Preserves tissue morphology — can correlate molecular result with histology\n"
        "• Works on FFPE archival tissue — routine diagnostic use\n"
        "• High sensitivity — detects single copy of gene\n"
        "• Multiplexing possible with FISH (multiple colors)\n"
        "• Rapid results (24–48 hrs for FISH)\n"
        "• No need for nucleic acid extraction\n"
        "• Both DNA and RNA can be detected\n"
        "• Highly specific (Watson-Crick base-pairing)\n"
        "• Useful for interphase cells — no need for cell culture",
        ParagraphStyle("AL", parent=styles["Normal"], fontSize=9.5, leading=14, textColor=DARK_GRAY)),
     Paragraph(
        "• Technically demanding — multiple critical steps\n"
        "• Fluorescent signals fade (photo-bleaching in FISH)\n"
        "• Requires expensive fluorescence microscope (FISH)\n"
        "• Fixation artifacts can reduce sensitivity\n"
        "• Probe cost is high\n"
        "• Interpretation subjective — operator-dependent\n"
        "• FFPE fixation can fragment nucleic acids\n"
        "• Background autofluorescence can be a problem\n"
        "• Cannot detect point mutations or small insertions",
        ParagraphStyle("LL", parent=styles["Normal"], fontSize=9.5, leading=14, textColor=DARK_GRAY)),
    ],
]
t = Table(adv_data, colWidths=[8.6*cm, 8.6*cm])
t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (0,0), colors.HexColor("#1A6B3C")),
    ("BACKGROUND",    (1,0), (1,0), colors.HexColor("#8B1A1A")),
    ("BACKGROUND",    (0,1), (0,1), colors.HexColor("#E8F5E9")),
    ("BACKGROUND",    (1,1), (1,1), colors.HexColor("#FDECEA")),
    ("BOX",           (0,0), (-1,-1), 0.8, colors.HexColor("#888")),
    ("LINEAFTER",     (0,0), (0,-1), 1, colors.HexColor("#888")),
    ("LEFTPADDING",   (0,0), (-1,-1), 7),
    ("RIGHTPADDING",  (0,0), (-1,-1), 7),
    ("TOPPADDING",    (0,0), (-1,-1), 6),
    ("BOTTOMPADDING", (0,0), (-1,-1), 6),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
]))
story.append(t)
story.append(Spacer(1, 0.3*cm))

# ── SECTION 10: IMPORTANT CONTROLS ───────────────────────────────────────────────
story.append(section_header("10.  CONTROLS IN TISH"))
story.append(Spacer(1, 0.15*cm))
controls = [
    ("Positive Control", "Known positive tissue section — confirms probe is working and procedure is adequate"),
    ("Negative Control", "No-probe control — hybridization buffer without probe; confirms absence of background"),
    ("Digestion Control", "Varying protease concentrations to determine optimal unmasking conditions"),
    ("Internal Control", "Housekeeping gene probes (e.g., CEP 17 used with HER2) normalize copy number"),
    ("Denaturation Control", "Ensures dsDNA is fully denatured before probe application"),
]
ctrl_data = [[Paragraph("<b>Control Type</b>", table_header), Paragraph("<b>Purpose</b>", table_header)]]
for ctrl, purpose in controls:
    ctrl_data.append([Paragraph(ctrl, table_cell), Paragraph(purpose, table_cell)])
t = Table(ctrl_data, colWidths=[4.5*cm, 12.7*cm])
t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  MID_BLUE),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [LIGHT_BLUE, WHITE]),
    ("GRID",          (0,0), (-1,-1), 0.5, colors.HexColor("#A0BDD0")),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("RIGHTPADDING",  (0,0), (-1,-1), 6),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
]))
story.append(t)
story.append(Spacer(1, 0.3*cm))

# ── SECTION 11: TROUBLESHOOTING ────────────────────────────────────────────────
story.append(section_header("11.  TROUBLESHOOTING"))
story.append(Spacer(1, 0.15*cm))
trouble_data = [
    [Paragraph("<b>Problem</b>", table_header),
     Paragraph("<b>Likely Cause</b>", table_header),
     Paragraph("<b>Remedy</b>", table_header)],
    [Paragraph("No signal", table_cell),
     Paragraph("Incomplete denaturation; probe degradation; excess protease", table_cell),
     Paragraph("Optimize denaturation temperature; check probe storage; reduce protease concentration", table_cell)],
    [Paragraph("High background", table_cell),
     Paragraph("Insufficient stringency washes; non-specific probe binding", table_cell),
     Paragraph("Increase wash temperature; reduce probe concentration; use blocking DNA", table_cell)],
    [Paragraph("Tissue loss", table_cell),
     Paragraph("Inadequate slide coating; harsh washes", table_cell),
     Paragraph("Use positively-charged slides; reduce wash stringency", table_cell)],
    [Paragraph("Diffuse signal", table_cell),
     Paragraph("Over-digestion with protease", table_cell),
     Paragraph("Reduce protease concentration or time", table_cell)],
    [Paragraph("Photo-bleaching (FISH)", table_cell),
     Paragraph("Oxidation of fluorochromes", table_cell),
     Paragraph("Use anti-fade mounting medium; store slides at -20°C in dark", table_cell)],
]
t = Table(trouble_data, colWidths=[3.6*cm, 6.5*cm, 7.1*cm])
t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  MID_BLUE),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [LIGHT_BLUE, WHITE]),
    ("GRID",          (0,0), (-1,-1), 0.5, colors.HexColor("#A0BDD0")),
    ("LEFTPADDING",   (0,0), (-1,-1), 5),
    ("RIGHTPADDING",  (0,0), (-1,-1), 5),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
]))
story.append(t)
story.append(Spacer(1, 0.3*cm))

# ── SECTION 12: TISH vs OTHER TECHNIQUES ─────────────────────────────────────
story.append(PageBreak())
story.append(section_header("12.  TISH vs. RELATED MOLECULAR TECHNIQUES"))
story.append(Spacer(1, 0.15*cm))
compare_data = [
    [Paragraph("<b>Feature</b>", table_header),
     Paragraph("<b>TISH (ISH)</b>", table_header),
     Paragraph("<b>PCR</b>", table_header),
     Paragraph("<b>Southern Blot</b>", table_header),
     Paragraph("<b>IHC</b>", table_header)],
    [Paragraph("Target", table_cell), Paragraph("DNA/RNA", table_cell),
     Paragraph("DNA/RNA", table_cell), Paragraph("DNA", table_cell), Paragraph("Protein", table_cell)],
    [Paragraph("Tissue morphology", table_cell), Paragraph("Preserved", table_cell),
     Paragraph("Destroyed", table_cell), Paragraph("Destroyed", table_cell), Paragraph("Preserved", table_cell)],
    [Paragraph("Probe/Primer", table_cell), Paragraph("Labeled probe", table_cell),
     Paragraph("Primers", table_cell), Paragraph("Labeled probe", table_cell), Paragraph("Antibody", table_cell)],
    [Paragraph("Spatial info", table_cell), Paragraph("Yes — cell-specific", table_cell),
     Paragraph("No", table_cell), Paragraph("No", table_cell), Paragraph("Yes", table_cell)],
    [Paragraph("Quantification", table_cell), Paragraph("Semi-quantitative", table_cell),
     Paragraph("Precise (qPCR)", table_cell), Paragraph("Semi-quantitative", table_cell), Paragraph("Semi-quant.", table_cell)],
    [Paragraph("Works on FFPE", table_cell), Paragraph("Yes", table_cell),
     Paragraph("Yes", table_cell), Paragraph("Yes", table_cell), Paragraph("Yes", table_cell)],
]
t = Table(compare_data, colWidths=[3.4*cm, 3.5*cm, 3.4*cm, 3.4*cm, 3.5*cm])
t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  MID_BLUE),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [LIGHT_BLUE, WHITE]),
    ("GRID",          (0,0), (-1,-1), 0.5, colors.HexColor("#A0BDD0")),
    ("LEFTPADDING",   (0,0), (-1,-1), 5),
    ("RIGHTPADDING",  (0,0), (-1,-1), 5),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
]))
story.append(t)
story.append(Spacer(1, 0.3*cm))

# ── SECTION 13: EXAM SUMMARY ─────────────────────────────────────────────────
story.append(section_header("13.  EXAM ANSWER BLUEPRINT  (10 Marks)"))
story.append(Spacer(1, 0.15*cm))

exam_items = [
    ("Introduction", "2 marks",
     "Define TISH/ISH. State principle — Watson-Crick base-pairing between labeled probe and denatured target DNA/RNA in tissue. Historical note (1969, Pardue & Gall)."),
    ("Types of ISH", "1 mark",
     "FISH (fluorescent), CISH (chromogenic), Radio-ISH. Brief comparison of FISH vs CISH."),
    ("Types of Probes", "1 mark",
     "Oligonucleotide, dsDNA, cDNA, Riboprobe, Locus-specific, Centromere, Whole-chromosome painting probes."),
    ("Step-by-step Procedure", "3 marks",
     "Tissue preparation → Deparaffinization → Protease digestion → Denaturation → Probe hybridization → Stringency washing → Signal detection (FISH/CISH) → Interpretation."),
    ("Line Diagram + Flowchart", "1 mark",
     "Draw labeled diagram showing each step. Flowchart with boxes connected by arrows."),
    ("Applications", "1 mark",
     "HER2 in breast cancer, ALK/ROS1 in lung cancer, BCR-ABL in CML, prenatal diagnosis, HPV detection."),
    ("Advantages and Limitations", "1 mark",
     "Preserve morphology, FFPE compatible, specific, sensitive — vs. technically demanding, expensive, fading."),
]

for topic, marks, content in exam_items:
    edata = [[
        Paragraph(f"<b>{topic}</b>", ParagraphStyle("ET", parent=styles["Normal"],
                  fontSize=10, fontName="Helvetica-Bold", textColor=DARK_BLUE)),
        Paragraph(f"<b>{marks}</b>", ParagraphStyle("EM", parent=styles["Normal"],
                  fontSize=10, fontName="Helvetica-Bold", textColor=ACCENT, alignment=TA_CENTER)),
        Paragraph(content, body),
    ]]
    et = Table(edata, colWidths=[3.5*cm, 1.8*cm, 11.9*cm])
    et.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (1,0), LIGHT_BLUE),
        ("BACKGROUND",    (2,0), (2,0), WHITE),
        ("BOX",           (0,0), (-1,-1), 0.8, MID_BLUE),
        ("LINEBEFORE",    (2,0), (2,0), 1, MID_BLUE),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
        ("RIGHTPADDING",  (0,0), (-1,-1), 6),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("VALIGN",        (0,0), (-1,-1), "TOP"),
    ]))
    story.append(et)
    story.append(Spacer(1, 0.08*cm))

story.append(Spacer(1, 0.3*cm))

# ── MEMORY AIDS ────────────────────────────────────────────────────────────────
story.append(info_box("Memory Aid — TISH Steps Mnemonic: 'D.D.P.D.H.W.D'", [
    "D — Deparaffinize (xylene + graded alcohols)",
    "D — Digest with Protease (unmask target DNA/RNA)",
    "P — Pre-hybridization (block non-specific binding)",
    "D — Denature (heat or formamide — make ssDNA)",
    "H — Hybridize (probe + target, 37°C overnight)",
    "W — Wash (stringency washes, remove unbound probe)",
    "D — Detect (fluorescent or chromogenic signal)",
]))
story.append(Spacer(1, 0.3*cm))

# ── REFERENCES ─────────────────────────────────────────────────────────────────
story.append(section_header("REFERENCES"))
story.append(Spacer(1, 0.1*cm))
refs = [
    "Mescher AL. Junqueira's Basic Histology: Text and Atlas, 17th Edition. McGraw-Hill Education; 2024. Chapter 1 (Hybridization Techniques, p. 57–59).",
    "Ross MH, Pawlina W. Histology: A Text and Atlas with Correlated Cell and Molecular Biology, 8th Edition. Wolters Kluwer; 2020. pp. 80–82.",
    "Rifai N, Horvath AR, Wittwer CT. Tietz Textbook of Laboratory Medicine, 7th Edition. Elsevier; 2022. Chapter 69 (Solid-Phase Hybridization, p. 4001–4005).",
    "Pardue ML, Gall JG. Molecular hybridization of radioactive DNA to the DNA of cytological preparations. Proc Natl Acad Sci USA. 1969;64(2):600–604.",
    "Tanner M et al. Chromogenic in situ hybridization: a practical alternative to fluorescence in situ hybridization to detect HER2 gene amplification. Am J Surg Pathol. 2000.",
]
for i, ref in enumerate(refs, 1):
    story.append(Paragraph(f"{i}. {ref}", ParagraphStyle(
        "Ref", parent=styles["Normal"], fontSize=8.5, leading=12, textColor=DARK_GRAY,
        leftIndent=12, firstLineIndent=-12, spaceAfter=3)))
story.append(Spacer(1, 0.5*cm))

# ── BUILD ──────────────────────────────────────────────────────────────────────
doc.build(story, onFirstPage=on_page, onLaterPages=on_page)
print(f"PDF created: {OUTPUT}")
Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.
This is a shared conversation. Sign in to Orris to start your own chat.