अब हम आते हैं दूसरे group और त Cytosine and thymine are pyr- pyrimidine. अगर आपको याद करने में कष्ट होता है कि कौन सी pyrimidine है, कौन सी pyrimidine है, बहुत आसान है। Pyrimidine के नाम में Y आत Now convert this into English and make this into a PDF of high yield notes like a summary. I need a PDF. Okay.
mkdir -p /home/daytona/workspace/biochem-notes && python3 << 'EOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import cm from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, KeepTogether) from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY from reportlab.platypus import ListFlowable, ListItem doc = SimpleDocTemplate( "/home/daytona/workspace/biochem-notes/Nucleotide_Bases_HighYield.pdf", pagesize=A4, rightMargin=1.8*cm, leftMargin=1.8*cm, topMargin=1.8*cm, bottomMargin=1.8*cm, title="Nucleotide Bases – High Yield Notes", author="Orris AI" ) W, H = A4 styles = getSampleStyleSheet() # ── Custom Styles ────────────────────────────────────────────────────────── DARK_BLUE = colors.HexColor("#1a237e") MID_BLUE = colors.HexColor("#1565c0") ACCENT = colors.HexColor("#0288d1") YELLOW_BG = colors.HexColor("#fff9c4") GREEN_BG = colors.HexColor("#e8f5e9") ORANGE_BG = colors.HexColor("#fff3e0") PURPLE_BG = colors.HexColor("#f3e5f5") LIGHT_GREY = colors.HexColor("#eceff1") WHITE = colors.white RED_ACCENT = colors.HexColor("#c62828") title_style = ParagraphStyle("Title", parent=styles["Normal"], fontSize=22, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, leading=28, spaceAfter=4) subtitle_style = ParagraphStyle("SubTitle", parent=styles["Normal"], fontSize=11, fontName="Helvetica", textColor=colors.HexColor("#bbdefb"), alignment=TA_CENTER, leading=14, spaceAfter=2) section_style = ParagraphStyle("Section", parent=styles["Normal"], fontSize=14, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_LEFT, leading=18, leftIndent=6) body_style = ParagraphStyle("Body", parent=styles["Normal"], fontSize=10.5, fontName="Helvetica", textColor=colors.HexColor("#212121"), leading=15, spaceAfter=4, leftIndent=4) bold_body = ParagraphStyle("BoldBody", parent=body_style, fontName="Helvetica-Bold", textColor=DARK_BLUE) mnemonic_style = ParagraphStyle("Mnemonic", parent=styles["Normal"], fontSize=11, fontName="Helvetica-BoldOblique", textColor=colors.HexColor("#4a148c"), leading=16, leftIndent=10, spaceAfter=4) small_style = ParagraphStyle("Small", parent=styles["Normal"], fontSize=9.5, fontName="Helvetica", textColor=colors.HexColor("#424242"), leading=13, leftIndent=10) highlight_style = ParagraphStyle("Highlight", parent=styles["Normal"], fontSize=10.5, fontName="Helvetica-Bold", textColor=colors.HexColor("#bf360c"), leading=15, leftIndent=8) # ── Helper: Section Header ───────────────────────────────────────────────── def section_header(text, bg=MID_BLUE): tbl = Table([[Paragraph(text, section_style)]], colWidths=[W - 3.6*cm]) tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), bg), ("ROUNDEDCORNERS", [6]), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 10), ])) return tbl def sub_header(text, bg=ACCENT): s = ParagraphStyle("SH", parent=styles["Normal"], fontSize=11, fontName="Helvetica-Bold", textColor=WHITE, leading=15, leftIndent=4) tbl = Table([[Paragraph(text, s)]], colWidths=[W - 3.6*cm]) tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), bg), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 14), ])) return tbl def info_box(rows_list, bg=YELLOW_BG, col_widths=None): if col_widths is None: col_widths = [W - 3.6*cm] cell_data = [[Paragraph(r, body_style)] for r in rows_list] tbl = Table(cell_data, colWidths=col_widths) tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), bg), ("BOX", (0,0), (-1,-1), 0.8, colors.HexColor("#bdbdbd")), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 10), ("RIGHTPADDING", (0,0), (-1,-1), 8), ])) return tbl def sp(n=0.25): return Spacer(1, n*cm) # ══════════════════════════════════════════════════════════════════════════ # BUILD CONTENT # ══════════════════════════════════════════════════════════════════════════ story = [] # ── TITLE BANNER ────────────────────────────────────────────────────────── title_tbl = Table( [[Paragraph("Nucleotide Bases", title_style)], [Paragraph("Purines & Pyrimidines — High-Yield Summary", subtitle_style)], [Paragraph("Biochemistry | USMLE / NEET / Medical Entrance", subtitle_style)]], colWidths=[W - 3.6*cm] ) title_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), DARK_BLUE), ("TOPPADDING", (0,0), (-1,-1), 14), ("BOTTOMPADDING", (0,0), (-1,-1), 14), ("LEFTPADDING", (0,0), (-1,-1), 12), ("ROUNDEDCORNERS", [8]), ])) story.append(title_tbl) story.append(sp(0.5)) # ── OVERVIEW ────────────────────────────────────────────────────────────── story.append(section_header("1. Overview — Two Groups of Nitrogenous Bases")) story.append(sp(0.2)) overview_data = [ ["Feature", "PURINES", "PYRIMIDINES"], ["Bases", "Adenine (A), Guanine (G)", "Cytosine (C), Thymine (T), Uracil (U)"], ["Ring structure", "Double ring (bicyclic)", "Single ring (monocyclic)"], ["Found in", "DNA & RNA", "DNA (C, T) | RNA (C, U)"], ["Molecular weight", "Larger / heavier", "Smaller / lighter"], ["Mnemonic", "PURe As Gold", '"CUT the PY" — C, U, T = pYrimidines'], ] col_w = [(W - 3.6*cm) * f for f in [0.22, 0.39, 0.39]] hdr_style = ParagraphStyle("TH", parent=styles["Normal"], fontSize=10, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, leading=13) cell_s = ParagraphStyle("TC", parent=styles["Normal"], fontSize=10, fontName="Helvetica", textColor=colors.HexColor("#212121"), alignment=TA_LEFT, leading=13) table_rows = [] for i, row in enumerate(overview_data): styled_row = [] for j, cell in enumerate(row): s = hdr_style if i == 0 else cell_s styled_row.append(Paragraph(cell, s)) table_rows.append(styled_row) t = Table(table_rows, colWidths=col_w, repeatRows=1) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), MID_BLUE), ("BACKGROUND", (0,1), (-1,-1), LIGHT_GREY), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_GREY]), ("BOX", (0,0), (-1,-1), 0.8, colors.HexColor("#90a4ae")), ("INNERGRID", (0,0), (-1,-1), 0.4, colors.HexColor("#b0bec5")), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 7), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(t) story.append(sp(0.4)) # ── MNEMONIC BOX ────────────────────────────────────────────────────────── mnemo_data = [[ Paragraph("🧠 MNEMONIC — PURines: <b>PUR</b>e <b>A</b>s <b>G</b>old → Adenine, Guanine", mnemonic_style), Paragraph("🧠 MNEMONIC — PYrimidines contain the letter <b>Y</b>: C<b>y</b>tosine, Th<b>y</b>mine, Uracil (<b>CUT</b>)", mnemonic_style), ]] mbox = Table(mnemo_data, colWidths=[(W-3.6*cm)/2]*2) mbox.setStyle(TableStyle([ ("BACKGROUND", (0,0), (0,0), colors.HexColor("#ede7f6")), ("BACKGROUND", (1,0), (1,0), colors.HexColor("#fce4ec")), ("BOX", (0,0), (-1,-1), 1.0, colors.HexColor("#9c27b0")), ("INNERGRID", (0,0), (-1,-1), 0.5, colors.HexColor("#ce93d8")), ("TOPPADDING", (0,0), (-1,-1), 8), ("BOTTOMPADDING", (0,0), (-1,-1), 8), ("LEFTPADDING", (0,0), (-1,-1), 8), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(mbox) story.append(sp(0.5)) # ── PURINES ─────────────────────────────────────────────────────────────── story.append(section_header("2. PURINES — Adenine & Guanine", bg=colors.HexColor("#1b5e20"))) story.append(sp(0.2)) purine_rows = [ ["Property", "Adenine (A)", "Guanine (G)"], ["Nucleoside", "Adenosine", "Guanosine"], ["Pairs with (DNA)", "Thymine (T) — 2 H-bonds", "Cytosine (C) — 3 H-bonds"], ["Pairs with (RNA)", "Uracil (U)", "Cytosine (C)"], ["Key roles", "ATP (energy), cAMP (signaling),\nNAD⁺, FAD, CoA", "GTP (signaling, translation),\ncGMP, part of tRNA"], ["Degradation product","Uric acid (via xanthine oxidase)", "Uric acid (via xanthine oxidase)"], ] col_w2 = [(W - 3.6*cm) * f for f in [0.23, 0.385, 0.385]] pur_header = ParagraphStyle("PH", parent=styles["Normal"], fontSize=10, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, leading=13) pur_cell = ParagraphStyle("PC", parent=styles["Normal"], fontSize=10, fontName="Helvetica", textColor=colors.HexColor("#1b5020"), alignment=TA_LEFT, leading=13) pur_table_rows = [] for i, row in enumerate(purine_rows): styled_row = [Paragraph(cell, pur_header if i==0 else pur_cell) for cell in row] pur_table_rows.append(styled_row) tp = Table(pur_table_rows, colWidths=col_w2, repeatRows=1) tp.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#2e7d32")), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, GREEN_BG]), ("BOX", (0,0), (-1,-1), 0.8, colors.HexColor("#81c784")), ("INNERGRID", (0,0), (-1,-1), 0.4, colors.HexColor("#a5d6a7")), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 7), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(tp) story.append(sp(0.3)) story.append(info_box([ "⚡ <b>ATP</b> (Adenosine Tri-Phosphate) is the primary energy currency of the cell.", "📡 <b>cAMP</b> acts as a second messenger — produced from ATP by adenylyl cyclase.", "🔴 Excess purine degradation → <b>Uric acid</b> → hyperuricemia → <b>Gout</b>.", "💊 <b>Allopurinol</b> inhibits xanthine oxidase, reducing uric acid production." ], bg=GREEN_BG)) story.append(sp(0.5)) # ── PYRIMIDINES ─────────────────────────────────────────────────────────── story.append(section_header("3. PYRIMIDINES — Cytosine, Thymine & Uracil", bg=colors.HexColor("#880e4f"))) story.append(sp(0.2)) pyr_rows = [ ["Property", "Cytosine (C)", "Thymine (T)", "Uracil (U)"], ["Found in", "DNA & RNA", "DNA only", "RNA only"], ["Nucleoside", "Cytidine", "Thymidine", "Uridine"], ["Pairs with", "Guanine (G) — 3 H-bonds", "Adenine (A) — 2 H-bonds", "Adenine (A) — 2 H-bonds"], ["Methyl group", "No", "Yes (5-methyl group)", "No"], ["Key notes", "Deamination → Uracil\n(mutation hotspot!)", "Unique to DNA;\nthymidylate synthase adds methyl to dUMP", "Replaces Thymine in RNA;\nNo methyl group"], ] col_w3 = [(W - 3.6*cm) * f for f in [0.20, 0.265, 0.265, 0.27]] pyr_header = ParagraphStyle("PyH", parent=styles["Normal"], fontSize=9.5, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, leading=13) pyr_cell = ParagraphStyle("PyC", parent=styles["Normal"], fontSize=9.5, fontName="Helvetica", textColor=colors.HexColor("#4a0072"), alignment=TA_LEFT, leading=13) pyr_table_rows = [] for i, row in enumerate(pyr_rows): styled_row = [Paragraph(cell, pyr_header if i==0 else pyr_cell) for cell in row] pyr_table_rows.append(styled_row) tpy = Table(pyr_table_rows, colWidths=col_w3, repeatRows=1) tpy.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#ad1457")), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, PURPLE_BG]), ("BOX", (0,0), (-1,-1), 0.8, colors.HexColor("#f48fb1")), ("INNERGRID", (0,0), (-1,-1), 0.4, colors.HexColor("#f8bbd0")), ("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(tpy) story.append(sp(0.3)) story.append(info_box([ "⚠️ <b>Cytosine deamination</b> converts C → U (Uracil in DNA = mutation signal; repaired by base-excision repair).", "🧬 Thymine = 5-methyluracil. It is the <b>methylated form of Uracil</b>.", "💉 <b>5-Fluorouracil (5-FU)</b> — anticancer drug that inhibits thymidylate synthase → blocks DNA synthesis.", "🔬 Uracil is found <b>only in RNA</b>; if Uracil appears in DNA, it means cytosine was deaminated.", ], bg=PURPLE_BG)) story.append(sp(0.5)) # ── HYDROGEN BONDS ──────────────────────────────────────────────────────── story.append(section_header("4. Hydrogen Bonds — High-Yield Rule", bg=colors.HexColor("#e65100"))) story.append(sp(0.2)) hbond_data = [ ["Base Pair", "H-bonds", "Stability", "Key Point"], ["A = T (DNA)", "2", "Less stable", "Adenine–Thymine"], ["A = U (RNA)", "2", "Less stable", "Adenine–Uracil"], ["G ≡ C (DNA/RNA)","3", "More stable", "Guanine–Cytosine"], ] col_w4 = [(W - 3.6*cm) * f for f in [0.28, 0.14, 0.22, 0.36]] hb_header = ParagraphStyle("HBH", parent=styles["Normal"], fontSize=10, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, leading=13) hb_cell = ParagraphStyle("HBC", parent=styles["Normal"], fontSize=10, fontName="Helvetica", textColor=colors.HexColor("#bf360c"), alignment=TA_CENTER, leading=13) hb_cell_l = ParagraphStyle("HBCL", parent=hb_cell, alignment=TA_LEFT) hb_table_rows = [] for i, row in enumerate(hbond_data): if i == 0: sr = [Paragraph(c, hb_header) for c in row] else: sr = [Paragraph(row[0], hb_cell_l), Paragraph(row[1], hb_header if row[1]=="3" else hb_cell), Paragraph(row[2], hb_cell), Paragraph(row[3], hb_cell_l)] if row[1]=="3": pass hb_table_rows.append(sr) thb = Table(hb_table_rows, colWidths=col_w4, repeatRows=1) thb.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#e65100")), ("BACKGROUND", (0,3), (-1,3), colors.HexColor("#fff8e1")), ("ROWBACKGROUNDS",(0,1), (-1,2), [WHITE, ORANGE_BG]), ("BACKGROUND", (1,3), (1,3), colors.HexColor("#ff6f00")), ("TEXTCOLOR", (1,3), (1,3), WHITE), ("FONTNAME", (1,3), (1,3), "Helvetica-Bold"), ("BOX", (0,0), (-1,-1), 0.8, colors.HexColor("#ffb74d")), ("INNERGRID", (0,0), (-1,-1), 0.4, colors.HexColor("#ffe0b2")), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 7), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ("ALIGN", (1,0), (1,-1), "CENTER"), ])) story.append(thb) story.append(sp(0.3)) story.append(info_box([ "📌 High G≡C content → <b>higher melting temperature (Tm)</b> of DNA (more H-bonds to break).", "📌 AT-rich regions denature first — important in DNA replication initiation (origin of replication).", ], bg=ORANGE_BG)) story.append(sp(0.5)) # ── SYNTHESIS & SALVAGE ─────────────────────────────────────────────────── story.append(section_header("5. Synthesis Pathways — Key Points", bg=colors.HexColor("#006064"))) story.append(sp(0.2)) synth_data = [ ["Pathway", "Bases", "Rate-limiting enzyme", "Inhibited by"], ["De novo synthesis\n(Purines)", "Purines built\non ribose-5-P", "PRPP amidotransferase\n(glutamine donates N)", "Azathioprine,\n6-MP, Methotrexate"], ["De novo synthesis\n(Pyrimidines)", "Ring formed\nbefore ribose", "Carbamoyl phosphate\nsynthetase II (CPS II)", "PALA\n(N-phosphonoacetyl-L-aspartate)"], ["Salvage pathway", "Recycles free bases", "HGPRT\n(Hypoxanthine-Guanine\nPhosphoribosyl Transferase)", "Deficiency → Lesch-Nyhan\nsyndrome (Purines only)"], ] col_ws = [(W - 3.6*cm) * f for f in [0.22, 0.22, 0.30, 0.26]] syn_h = ParagraphStyle("SH2", parent=styles["Normal"], fontSize=9.5, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, leading=13) syn_c = ParagraphStyle("SC2", parent=styles["Normal"], fontSize=9.5, fontName="Helvetica", textColor=colors.HexColor("#004d40"), alignment=TA_LEFT, leading=13) syn_rows = [] for i, row in enumerate(synth_data): sr = [Paragraph(c, syn_h if i==0 else syn_c) for c in row] syn_rows.append(sr) tsyn = Table(syn_rows, colWidths=col_ws, repeatRows=1) tsyn.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#00695c")), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, colors.HexColor("#e0f2f1")]), ("BOX", (0,0), (-1,-1), 0.8, colors.HexColor("#80cbc4")), ("INNERGRID", (0,0), (-1,-1), 0.4, colors.HexColor("#b2dfdb")), ("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(tsyn) story.append(sp(0.3)) story.append(info_box([ "🔑 Purines are synthesised <b>on</b> the ribose ring (ring built on sugar). Pyrimidines: ring is built <b>first</b>, then attached to ribose.", "⚠️ <b>HGPRT deficiency</b> → Lesch-Nyhan syndrome: gout, intellectual disability, self-mutilation.", "💊 <b>Methotrexate, 5-FU, Azathioprine</b> are clinically important anti-metabolites targeting these pathways.", ], bg=colors.HexColor("#e0f2f1"))) story.append(sp(0.5)) # ── QUICK MNEMONICS SUMMARY ─────────────────────────────────────────────── story.append(section_header("6. High-Yield Mnemonics at a Glance", bg=colors.HexColor("#283593"))) story.append(sp(0.2)) mnemo_table_data = [ ["Mnemonic", "What it reminds you"], ['"PURe As Gold"', "PURines = Adenine & Guanine"], ['"CUT the PY" / pYrimidines have a Y', "C, U, T are Pyrimidines (Cytosine, Uracil, Thymine)"], ['"2 AT, 3 GC"', "A-T = 2 H-bonds; G-C = 3 H-bonds"], ['"Thymine is Terrific in DNA" (T→DNA only)', "Thymine is unique to DNA; Uracil is unique to RNA"], ['"HGPRT — Lesch-Nyhan"', "HGPRT deficiency → Lesch-Nyhan (purine salvage failure)"], ['"5-FU Freezes DNA synthesis"', "5-FU inhibits thymidylate synthase → no dTMP → no DNA"], ['"Gout from Uric Acid (Purine breakdown)"', "Purines degrade to uric acid via xanthine oxidase"], ] col_wm = [(W - 3.6*cm) * f for f in [0.46, 0.54]] mn_h = ParagraphStyle("MH", parent=styles["Normal"], fontSize=10, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, leading=13) mn_c1 = ParagraphStyle("MC1", parent=styles["Normal"], fontSize=10, fontName="Helvetica-BoldOblique", textColor=colors.HexColor("#1a237e"), alignment=TA_LEFT, leading=13) mn_c2 = ParagraphStyle("MC2", parent=styles["Normal"], fontSize=10, fontName="Helvetica", textColor=colors.HexColor("#212121"), alignment=TA_LEFT, leading=13) mn_rows = [] for i, row in enumerate(mnemo_table_data): if i == 0: mn_rows.append([Paragraph(c, mn_h) for c in row]) else: mn_rows.append([Paragraph(row[0], mn_c1), Paragraph(row[1], mn_c2)]) tmn = Table(mn_rows, colWidths=col_wm, repeatRows=1) tmn.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#283593")), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, colors.HexColor("#e8eaf6")]), ("BOX", (0,0), (-1,-1), 0.8, colors.HexColor("#7986cb")), ("INNERGRID", (0,0), (-1,-1), 0.4, colors.HexColor("#9fa8da")), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 8), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(tmn) story.append(sp(0.5)) # ── CLINICAL PEARLS ─────────────────────────────────────────────────────── story.append(section_header("7. Clinical Pearls — Must Know", bg=RED_ACCENT)) story.append(sp(0.2)) pearls = [ ("<b>Gout</b>: Excess purine catabolism → ↑ Uric acid → monosodium urate crystals in joints. " "Tx: Allopurinol (xanthine oxidase inhibitor) or Febuxostat."), ("<b>Lesch-Nyhan Syndrome</b>: X-linked recessive. HGPRT deficiency. Hyperuricemia + neurological symptoms " "(choreoathetosis, intellectual disability, self-mutilation). Treat with Allopurinol (controls uric acid " "but NOT neurological symptoms)."), ("<b>Orotic Aciduria</b>: Defect in UMP synthase (pyrimidine synthesis). Presents with megaloblastic anemia, " "failure to thrive, orotic acid in urine (no hyperammonemia). Tx: Uridine supplementation."), ("<b>5-Fluorouracil (5-FU)</b>: Pyrimidine analog. Inhibits thymidylate synthase → ↓ dTMP → " "DNA synthesis halted. Used in colorectal cancer. Toxicity: myelosuppression, mucositis."), ("<b>Methotrexate / Trimethoprim / Pyrimethamine</b>: All inhibit DHFR → ↓ THF → " "↓ purine & dTMP synthesis → ↓ DNA/RNA production."), ("<b>Cytosine Deamination</b>: Spontaneous C→U conversion in DNA → G:C to A:T transition mutation " "if not repaired by Uracil-DNA Glycosylase (base excision repair)."), ] pearl_rows = [[Paragraph(f"{'◆'} {p}", body_style)] for p in pearls] tp2 = Table(pearl_rows, colWidths=[W - 3.6*cm]) tp2.setStyle(TableStyle([ ("ROWBACKGROUNDS", (0,0), (-1,-1), [WHITE, colors.HexColor("#ffebee")]), ("BOX", (0,0), (-1,-1), 0.8, colors.HexColor("#ef9a9a")), ("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#ffcdd2")), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 10), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(tp2) story.append(sp(0.5)) # ── FOOTER ──────────────────────────────────────────────────────────────── story.append(HRFlowable(width="100%", thickness=1, color=MID_BLUE)) story.append(sp(0.1)) footer_style = ParagraphStyle("Footer", parent=styles["Normal"], fontSize=8.5, fontName="Helvetica-Oblique", textColor=colors.HexColor("#78909c"), alignment=TA_CENTER, leading=12) story.append(Paragraph( "Orris AI — High Yield Biochemistry Notes | Nucleotide Bases: Purines & Pyrimidines | July 2026", footer_style)) # ── BUILD ────────────────────────────────────────────────────────────────── doc.build(story) print("PDF created successfully!") EOF
Nucleotide Bases HighYield
PDF Document · PDF
I don't need all this extra information. I just need you to convert whatever text I already have given you into a PDF and convert it into English. That is all I need. Okay.
python3 << 'EOF' from reportlab.lib.pagesizes import A4 from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import cm from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer from reportlab.lib.enums import TA_LEFT doc = SimpleDocTemplate( "/home/daytona/workspace/biochem-notes/Nucleotide_Bases_Converted.pdf", pagesize=A4, rightMargin=2.5*cm, leftMargin=2.5*cm, topMargin=2.5*cm, bottomMargin=2.5*cm, ) styles = getSampleStyleSheet() body = ParagraphStyle("body", parent=styles["Normal"], fontSize=12, fontName="Helvetica", leading=20, spaceAfter=10) text = ( "Now we come to the second group. Cytosine and Thymine are pyrimidines. " "If you find it difficult to remember which ones are pyrimidines, it is very easy. " "The word 'Pyrimidine' itself contains the letter Y — and so do Cytosine (C<u>y</u>tosine) " "and Th<u>y</u>mine. That is how you remember: if the base name has a Y in it, it is a Pyrimidine." ) story = [Paragraph(text, body)] doc.build(story) print("Done") EOF
Nucleotide Bases Converted
PDF Document · PDF
"Now we come to the second group. Cytosine and Thymine are pyrimidines. If you find it difficult to remember which ones are pyrimidines, it is very easy. The word 'Pyrimidine' itself contains the letter Y — and so do Cytosine and Thymine. That is how you remember: if the base name has a Y in it, it is a Pyrimidine."