Hello
Help me in preparing for neet pg
NEET PG 2026 syllabus pattern high yield topics strategy
| Priority | Subjects |
|---|---|
| Tier 1 (Most Questions) | Medicine, Surgery, OBG, Pediatrics, Pathology |
| Tier 2 (Moderate) | Pharmacology, Microbiology, Anatomy, Physiology, Biochemistry |
| Tier 3 (Lower but scoring) | Ophthalmology, ENT, Orthopedics, PSM/Community Medicine, Radiology, Anesthesia, Dermatology, Psychiatry, Forensic Medicine |
Create a 12-month revision schedule in Excel
mkdir -p /home/daytona/workspace/neet-pg && ls /home/daytona/workspace/neet-pg/
~/neet-pg/create_schedule.py
from openpyxl import Workbook
from openpyxl.styles import (
Font, PatternFill, Alignment, Border, Side, GradientFill
)
from openpyxl.utils import get_column_letter
wb = Workbook()
# ─────────────────────────────────────────────
# COLOUR PALETTE
# ─────────────────────────────────────────────
CLR = {
"dark_blue": "1F3864",
"med_blue": "2E75B6",
"light_blue": "D6E4F0",
"phase1": "E8F5E9", # green tint
"phase2": "FFF8E1", # amber tint
"phase3": "FCE4EC", # pink tint
"phase4": "EDE7F6", # purple tint
"phase1_hdr": "43A047",
"phase2_hdr": "FB8C00",
"phase3_hdr": "E53935",
"phase4_hdr": "6A1B9A",
"white": "FFFFFF",
"grey_light": "F5F5F5",
"grey_border": "BDBDBD",
"gold": "FFD600",
"green_ok": "C8E6C9",
"amber_warn": "FFE082",
"red_warn": "FFCDD2",
}
def fill(hex_color):
return PatternFill("solid", start_color=hex_color, fgColor=hex_color)
def thin_border():
s = Side(style="thin", color=CLR["grey_border"])
return Border(left=s, right=s, top=s, bottom=s)
def header_font(size=11, bold=True, color="FFFFFF"):
return Font(name="Arial", size=size, bold=bold, color=color)
def body_font(size=10, bold=False, color="000000"):
return Font(name="Arial", size=size, bold=bold, color=color)
def center():
return Alignment(horizontal="center", vertical="center", wrap_text=True)
def left_align():
return Alignment(horizontal="left", vertical="center", wrap_text=True)
def apply_border(ws, min_row, max_row, min_col, max_col):
for row in ws.iter_rows(min_row=min_row, max_row=max_row,
min_col=min_col, max_col=max_col):
for cell in row:
cell.border = thin_border()
# ══════════════════════════════════════════════════════════════════
# SHEET 1 – OVERVIEW DASHBOARD
# ══════════════════════════════════════════════════════════════════
ws1 = wb.active
ws1.title = "Overview"
ws1.sheet_view.showGridLines = False
# Freeze top rows
ws1.freeze_panes = "A5"
# Column widths
col_widths = [3, 22, 14, 18, 18, 22, 22, 16]
for i, w in enumerate(col_widths, 1):
ws1.column_dimensions[get_column_letter(i)].width = w
# Row heights
ws1.row_dimensions[1].height = 10
ws1.row_dimensions[2].height = 40
ws1.row_dimensions[3].height = 20
ws1.row_dimensions[4].height = 30
# ── TITLE ──
ws1.merge_cells("B2:H2")
t = ws1["B2"]
t.value = "NEET PG 2027 – 12-Month Revision Master Schedule"
t.font = Font(name="Arial", size=18, bold=True, color=CLR["white"])
t.fill = fill(CLR["dark_blue"])
t.alignment = center()
# Subtitle
ws1.merge_cells("B3:H3")
s = ws1["B3"]
s.value = "Start Date: August 2026 | Exam Target: July 2027 | Daily Goal: 8–10 hrs"
s.font = Font(name="Arial", size=10, italic=True, color=CLR["white"])
s.fill = fill(CLR["med_blue"])
s.alignment = center()
# Phase legend header
ws1.merge_cells("B4:H4")
lg = ws1["B4"]
lg.value = "PHASE LEGEND ► Phase 1: Foundation | Phase 2: Subject Build | Phase 3: Revision | Phase 4: Final Sprint"
lg.font = Font(name="Arial", size=9, bold=True, color=CLR["dark_blue"])
lg.fill = fill(CLR["light_blue"])
lg.alignment = center()
# ── COLUMN HEADERS (row 5) ──
ws1.row_dimensions[5].height = 28
headers = ["#", "Phase / Month", "Month", "Subjects (Primary)", "Subjects (Secondary)",
"Daily Focus", "MCQ Target / Day", "Revision Count"]
hdr_fills = [CLR["dark_blue"]] * 8
for col_idx, (hdr, hf) in enumerate(zip(headers, hdr_fills), 2):
cell = ws1.cell(row=5, column=col_idx, value=hdr)
cell.font = header_font(10)
cell.fill = fill(hf)
cell.alignment = center()
cell.border = thin_border()
# ── SCHEDULE DATA ──
schedule = [
# (Phase, Month Label, Month, Primary Subjects, Secondary Subjects, Daily Focus, MCQ/day, Rev Count, phase_key)
(1, "Foundation", "Aug 2026", "Pathology, Pharmacology", "Biochemistry",
"Concept building + Notes making", 30, "1st Read", "phase1"),
(1, "Foundation", "Sep 2026", "Physiology, Biochemistry", "Anatomy",
"Diagram-heavy topics + Mnemonics", 40, "1st Read", "phase1"),
(2, "Subject Build", "Oct 2026", "Anatomy, Microbiology", "Pharmacology revision",
"High-yield tables + MCQ solving", 60, "1st Read", "phase2"),
(2, "Subject Build", "Nov 2026", "Medicine (Part 1)", "Pathology revision",
"Clinical vignettes + ECG practice", 70, "1st Read", "phase2"),
(2, "Subject Build", "Dec 2026", "Medicine (Part 2), Surgery (Part 1)", "Physiology revision",
"System-wise integration", 80, "1st Read", "phase2"),
(2, "Subject Build", "Jan 2027", "Surgery (Part 2), OBG (Part 1)", "Microbiology revision",
"Clinical case MCQs", 80, "1st Read", "phase2"),
(2, "Subject Build", "Feb 2027", "OBG (Part 2), Pediatrics", "Anatomy revision",
"Image-based MCQs + Tables", 90, "1st Read", "phase2"),
(2, "Subject Build", "Mar 2027", "PSM, Ophthalmology, ENT", "Medicine revision",
"Short subjects + Stats & Epidemiology", 90, "1st Read", "phase2"),
(3, "Revision", "Apr 2027", "Ortho, Anesthesia, Radiology", "Surgery revision",
"Rapid revision of Tier-3 subjects", 100, "2nd Rev", "phase3"),
(3, "Revision", "May 2027", "Dermatology, Psychiatry, Forensics", "OBG revision",
"Notes revision + 3x wrong-answer review", 120, "2nd Rev", "phase3"),
(3, "Revision", "Jun 2027", "All Subjects – Full Revision", "Pediatrics + PSM revision",
"Grand Test Series + Analysis", 150, "3rd Rev", "phase3"),
(4, "Final Sprint", "Jul 2027", "Previous Year Papers (10 yrs)", "Weak area targeting",
"Timed mock tests + Error log review", 200, "Final Rev", "phase4"),
]
phase_colors = {
"phase1": (CLR["phase1"], CLR["phase1_hdr"]),
"phase2": (CLR["phase2"], CLR["phase2_hdr"]),
"phase3": (CLR["phase3"], CLR["phase3_hdr"]),
"phase4": (CLR["phase4"], CLR["phase4_hdr"]),
}
row = 6
prev_phase = None
for i, (ph_num, ph_name, month, primary, secondary, focus, mcq, rev, ph_key) in enumerate(schedule, 1):
ws1.row_dimensions[row].height = 32
bg, hdr_clr = phase_colors[ph_key]
row_data = [i, f"Phase {ph_num} – {ph_name}", month, primary, secondary, focus, mcq, rev]
for col_idx, val in enumerate(row_data, 2):
cell = ws1.cell(row=row, column=col_idx, value=val)
cell.fill = fill(bg)
cell.border = thin_border()
if col_idx == 3: # Phase/Month col
cell.font = Font(name="Arial", size=10, bold=True, color=hdr_clr)
cell.alignment = center()
elif col_idx == 2: # #
cell.font = body_font(10, bold=True)
cell.alignment = center()
elif col_idx == 9: # MCQ
cell.font = Font(name="Arial", size=10, bold=True, color=hdr_clr)
cell.alignment = center()
else:
cell.font = body_font(10)
cell.alignment = left_align() if col_idx in [5, 6, 7, 8] else center()
row += 1
apply_border(ws1, 5, row - 1, 2, 9)
# ── TIPS BOX ──
row += 1
ws1.merge_cells(f"B{row}:H{row}")
tip_hdr = ws1[f"B{row}"]
tip_hdr.value = "KEY TIPS FOR EACH PHASE"
tip_hdr.font = header_font(11)
tip_hdr.fill = fill(CLR["dark_blue"])
tip_hdr.alignment = center()
ws1.row_dimensions[row].height = 22
row += 1
tips = [
("Phase 1 (Foundation)", "Focus on UNDERSTANDING, not memorising. Build notes from day 1. Do 30-40 MCQs/day."),
("Phase 2 (Subject Build)", "Finish all 19 subjects. Start timed MCQ sessions. Track weak areas in a log."),
("Phase 3 (Revision)", "Minimum 2 full revisions of all notes. Grand test series mandatory. Review every wrong answer."),
("Phase 4 (Sprint)", "No new topics. PYQs are your best friend. Sleep 7 hrs. Confidence is built by mock tests."),
]
for tip_phase, tip_text in tips:
ws1.row_dimensions[row].height = 26
ws1.merge_cells(f"B{row}:C{row}")
c1 = ws1[f"B{row}"]
c1.value = tip_phase
c1.font = Font(name="Arial", size=10, bold=True, color=CLR["dark_blue"])
c1.fill = fill(CLR["grey_light"])
c1.alignment = left_align()
c1.border = thin_border()
ws1.merge_cells(f"D{row}:H{row}")
c2 = ws1[f"D{row}"]
c2.value = tip_text
c2.font = body_font(10)
c2.fill = fill(CLR["white"])
c2.alignment = left_align()
c2.border = thin_border()
row += 1
# ══════════════════════════════════════════════════════════════════
# SHEET 2 – MONTHLY DETAIL PLANNER
# ══════════════════════════════════════════════════════════════════
ws2 = wb.create_sheet("Monthly Planner")
ws2.sheet_view.showGridLines = False
ws2.freeze_panes = "A4"
col_widths2 = [5, 18, 22, 22, 22, 22, 20, 18]
for i, w in enumerate(col_widths2, 1):
ws2.column_dimensions[get_column_letter(i)].width = w
ws2.row_dimensions[1].height = 10
ws2.row_dimensions[2].height = 38
ws2.row_dimensions[3].height = 28
ws2.merge_cells("A2:H2")
t2 = ws2["A2"]
t2.value = "NEET PG – Monthly Detailed Planner"
t2.font = Font(name="Arial", size=16, bold=True, color=CLR["white"])
t2.fill = fill(CLR["dark_blue"])
t2.alignment = center()
# Headers row 3
hdrs2 = ["#", "Month", "Week 1 Focus", "Week 2 Focus", "Week 3 Focus", "Week 4 Focus",
"Monthly MCQ Target", "Self-Assessment"]
for c, h in enumerate(hdrs2, 1):
cell = ws2.cell(row=3, column=c, value=h)
cell.font = header_font(10)
cell.fill = fill(CLR["med_blue"])
cell.alignment = center()
cell.border = thin_border()
monthly_detail = [
(1, "Aug 2026",
"Pathology: Cell injury, Inflammation, Neoplasia",
"Pathology: Systemic (CVS, Resp, Renal)",
"Pharmacology: Autonomic NS, CNS drugs",
"Pharmacology: CVS, Antibiotics + Biochem start",
"=G4*30", "phase1"),
(2, "Sep 2026",
"Physiology: Neurophysiology, CVS physiology",
"Physiology: Renal, GI, Endocrine",
"Biochemistry: Metabolism (Carbs, Lipids, Proteins)",
"Biochemistry: Molecular biology + Anatomy start",
"=G5*40", "phase1"),
(3, "Oct 2026",
"Anatomy: Gross (Upper limb, Lower limb)",
"Anatomy: Head & Neck, Thorax",
"Microbiology: Bacteriology (Gram+, Gram-)",
"Microbiology: Virology, Mycology, Parasitology",
"=G6*60", "phase2"),
(4, "Nov 2026",
"Medicine: Cardiology (IHD, HF, Arrhythmias)",
"Medicine: Respiratory + Nephrology",
"Medicine: Neurology + Gastroenterology",
"Medicine: Endocrinology + Hematology",
"=G7*70", "phase2"),
(5, "Dec 2026",
"Medicine: Rheumatology, Dermatology (brief)",
"Surgery: GI Surgery, Hepatobiliary",
"Surgery: Urology, Vascular, Trauma",
"Surgery: Head & Neck, Thyroid, Breast",
"=G8*80", "phase2"),
(6, "Jan 2027",
"Surgery: Ortho basics (revision in detail later)",
"OBG: Normal labour, ANC, High-risk pregnancy",
"OBG: APH, PPH, Hypertensive disorders",
"OBG: Contraception, Gynaecology",
"=G9*80", "phase2"),
(7, "Feb 2027",
"OBG: Infertility, Oncogynecology",
"Paediatrics: Growth, Development, Milestones",
"Paediatrics: Neonatology, Nutrition, Vaccines",
"Paediatrics: Systemic diseases + Image MCQs",
"=G10*90", "phase2"),
(8, "Mar 2027",
"PSM: Epidemiology, Biostatistics (High Yield)",
"PSM: National Health Programmes, Nutrition",
"Ophthalmology: Full subject (high-yield only)",
"ENT: Full subject (high-yield) + Quick pharma revision",
"=G11*90", "phase2"),
(9, "Apr 2027",
"Orthopaedics: Fractures, Joints, Tumours",
"Anaesthesia: Drugs, Airway, Regional blocks",
"Radiology: Imaging modalities, Key X-ray findings",
"Surgery revision (full rapid) + Ortho MCQs",
"=G12*100", "phase3"),
(10, "May 2027",
"Dermatology: High-yield lesions + STDs",
"Psychiatry: Schizophrenia, Mood, Anxiety",
"Forensic Medicine: Thanatology, Toxicology, MLC",
"OBG full revision + Paeds rapid revision",
"=G13*120", "phase3"),
(11, "Jun 2027",
"All subjects – Grand Test series (2 tests/week)",
"Medicine + Surgery mega revision",
"Pathology + Micro + Pharma rapid revision",
"PSM + PSM stats MCQ bank + Full mock test",
"=G14*150", "phase3"),
(12, "Jul 2027",
"PYQs: Last 5 years full papers (timed)",
"PYQs: Last 5-10 years analysis + weak spots",
"Final notes revision – all high-yield",
"Rest + Light revision + Confidence building",
"=G15*200", "phase4"),
]
row2 = 4
for entry in monthly_detail:
num, month, w1, w2, w3, w4, mcq_formula, ph_key = entry
ws2.row_dimensions[row2].height = 38
bg, hdr_clr = phase_colors[ph_key]
row_vals = [num, month, w1, w2, w3, w4, mcq_formula, "□ Done □ Partial □ Pending"]
for c, val in enumerate(row_vals, 1):
cell = ws2.cell(row=row2, column=c, value=val)
cell.fill = fill(bg)
cell.border = thin_border()
if c == 1:
cell.font = body_font(10, bold=True)
cell.alignment = center()
elif c == 2:
cell.font = Font(name="Arial", size=10, bold=True, color=hdr_clr)
cell.alignment = center()
elif c == 7:
cell.font = Font(name="Arial", size=10, bold=True, color=hdr_clr)
cell.alignment = center()
cell.number_format = "#,##0"
elif c == 8:
cell.font = Font(name="Arial", size=9, italic=True, color="555555")
cell.alignment = center()
else:
cell.font = body_font(9)
cell.alignment = left_align()
row2 += 1
# ══════════════════════════════════════════════════════════════════
# SHEET 3 – SUBJECT TRACKER
# ══════════════════════════════════════════════════════════════════
ws3 = wb.create_sheet("Subject Tracker")
ws3.sheet_view.showGridLines = False
ws3.freeze_panes = "A4"
col_widths3 = [4, 22, 14, 16, 16, 16, 14, 14, 20]
for i, w in enumerate(col_widths3, 1):
ws3.column_dimensions[get_column_letter(i)].width = w
ws3.row_dimensions[1].height = 10
ws3.row_dimensions[2].height = 38
ws3.row_dimensions[3].height = 28
ws3.merge_cells("A2:I2")
t3 = ws3["A2"]
t3.value = "NEET PG – Subject Completion & Revision Tracker"
t3.font = Font(name="Arial", size=16, bold=True, color=CLR["white"])
t3.fill = fill(CLR["dark_blue"])
t3.alignment = center()
hdrs3 = ["#", "Subject", "Priority", "1st Read\nComplete?", "2nd Rev\nComplete?",
"3rd Rev\nComplete?", "Notes\nStatus", "Accuracy\n(%)", "Remarks / Weak Topics"]
for c, h in enumerate(hdrs3, 1):
cell = ws3.cell(row=3, column=c, value=h)
cell.font = header_font(10)
cell.fill = fill(CLR["med_blue"])
cell.alignment = center()
cell.border = thin_border()
subjects = [
("Medicine", "Tier 1", CLR["red_warn"]),
("Surgery", "Tier 1", CLR["red_warn"]),
("OBG", "Tier 1", CLR["red_warn"]),
("Paediatrics", "Tier 1", CLR["red_warn"]),
("Pathology", "Tier 1", CLR["red_warn"]),
("Pharmacology", "Tier 2", CLR["amber_warn"]),
("Microbiology", "Tier 2", CLR["amber_warn"]),
("Anatomy", "Tier 2", CLR["amber_warn"]),
("Physiology", "Tier 2", CLR["amber_warn"]),
("Biochemistry", "Tier 2", CLR["amber_warn"]),
("PSM", "Tier 3", CLR["green_ok"]),
("Ophthalmology", "Tier 3", CLR["green_ok"]),
("ENT", "Tier 3", CLR["green_ok"]),
("Orthopaedics", "Tier 3", CLR["green_ok"]),
("Anaesthesia", "Tier 3", CLR["green_ok"]),
("Radiology", "Tier 3", CLR["green_ok"]),
("Dermatology", "Tier 3", CLR["green_ok"]),
("Psychiatry", "Tier 3", CLR["green_ok"]),
("Forensic Medicine","Tier 3", CLR["green_ok"]),
]
row3 = 4
for i, (subj, priority, bg_color) in enumerate(subjects, 1):
ws3.row_dimensions[row3].height = 24
row_vals = [i, subj, priority, "☐ Pending", "☐ Pending", "☐ Pending",
"☐ Not Started", "", ""]
for c, val in enumerate(row_vals, 1):
cell = ws3.cell(row=row3, column=c, value=val)
cell.fill = fill(bg_color)
cell.border = thin_border()
if c == 2:
cell.font = Font(name="Arial", size=10, bold=True, color="1A237E")
cell.alignment = left_align()
elif c == 3:
cell.font = body_font(10, bold=True)
cell.alignment = center()
else:
cell.font = body_font(10)
cell.alignment = center()
row3 += 1
# Tier legend
row3 += 1
ws3.merge_cells(f"A{row3}:I{row3}")
leg = ws3[f"A{row3}"]
leg.value = "LEGEND: 🔴 Tier 1 = Highest weightage (>60% questions) | 🟡 Tier 2 = Moderate weightage | 🟢 Tier 3 = Lower weightage but highly scoring"
leg.font = Font(name="Arial", size=9, italic=True, color=CLR["dark_blue"])
leg.fill = fill(CLR["light_blue"])
leg.alignment = left_align()
leg.border = thin_border()
ws3.row_dimensions[row3].height = 20
# ══════════════════════════════════════════════════════════════════
# SHEET 4 – DAILY STUDY LOG TEMPLATE
# ══════════════════════════════════════════════════════════════════
ws4 = wb.create_sheet("Daily Log Template")
ws4.sheet_view.showGridLines = False
col_widths4 = [5, 14, 22, 18, 12, 12, 12, 22]
for i, w in enumerate(col_widths4, 1):
ws4.column_dimensions[get_column_letter(i)].width = w
ws4.row_dimensions[1].height = 10
ws4.row_dimensions[2].height = 38
ws4.row_dimensions[3].height = 28
ws4.freeze_panes = "A4"
ws4.merge_cells("A2:H2")
t4 = ws4["A2"]
t4.value = "NEET PG – Daily Study Log (Fill this every day!)"
t4.font = Font(name="Arial", size=15, bold=True, color=CLR["white"])
t4.fill = fill(CLR["dark_blue"])
t4.alignment = center()
hdrs4 = ["#", "Date", "Subject / Topic Covered", "Resource Used",
"MCQs Done", "Correct (%)", "Hours Studied", "Notes / Doubts"]
for c, h in enumerate(hdrs4, 1):
cell = ws4.cell(row=3, column=c, value=h)
cell.font = header_font(10)
cell.fill = fill(CLR["med_blue"])
cell.alignment = center()
cell.border = thin_border()
# 30 blank log rows
for i in range(1, 31):
r = 3 + i
ws4.row_dimensions[r].height = 22
for c in range(1, 9):
cell = ws4.cell(row=r, column=c)
cell.fill = fill(CLR["white"] if i % 2 == 0 else CLR["grey_light"])
cell.border = thin_border()
cell.alignment = center() if c in [1, 5, 6, 7] else left_align()
cell.font = body_font(10)
if c == 1:
cell.value = i
# Summary row
sr = 34
ws4.row_dimensions[sr].height = 26
ws4.merge_cells(f"A{sr}:C{sr}")
sum_lbl = ws4[f"A{sr}"]
sum_lbl.value = "MONTHLY TOTALS"
sum_lbl.font = header_font(10)
sum_lbl.fill = fill(CLR["dark_blue"])
sum_lbl.alignment = center()
sum_lbl.border = thin_border()
ws4.cell(row=sr, column=4, value="Total MCQs:").font = body_font(10, bold=True)
ws4.cell(row=sr, column=5, value=f"=SUM(E4:E33)").font = body_font(10, bold=True)
ws4.cell(row=sr, column=5).number_format = "#,##0"
ws4.cell(row=sr, column=6, value=f"=AVERAGE(F4:F33)").font = body_font(10, bold=True)
ws4.cell(row=sr, column=6).number_format = "0.0%"
ws4.cell(row=sr, column=7, value=f"=SUM(G4:G33)").font = body_font(10, bold=True)
ws4.cell(row=sr, column=7).number_format = "#,##0.0"
for c in range(4, 9):
ws4.cell(row=sr, column=c).fill = fill(CLR["light_blue"])
ws4.cell(row=sr, column=c).alignment = center()
ws4.cell(row=sr, column=c).border = thin_border()
# ══════════════════════════════════════════════════════════════════
# SHEET 5 – HIGH-YIELD TOPICS CHECKLIST
# ══════════════════════════════════════════════════════════════════
ws5 = wb.create_sheet("High-Yield Checklist")
ws5.sheet_view.showGridLines = False
ws5.freeze_panes = "A4"
col_widths5 = [4, 20, 36, 14, 14, 14]
for i, w in enumerate(col_widths5, 1):
ws5.column_dimensions[get_column_letter(i)].width = w
ws5.row_dimensions[1].height = 10
ws5.row_dimensions[2].height = 38
ws5.row_dimensions[3].height = 28
ws5.merge_cells("A2:F2")
t5 = ws5["A2"]
t5.value = "NEET PG – High-Yield Topics Master Checklist"
t5.font = Font(name="Arial", size=16, bold=True, color=CLR["white"])
t5.fill = fill(CLR["dark_blue"])
t5.alignment = center()
hdrs5 = ["#", "Subject", "High-Yield Topic", "1st Rev ✓", "2nd Rev ✓", "Final Rev ✓"]
for c, h in enumerate(hdrs5, 1):
cell = ws5.cell(row=3, column=c, value=h)
cell.font = header_font(10)
cell.fill = fill(CLR["med_blue"])
cell.alignment = center()
cell.border = thin_border()
hy_topics = [
("Medicine", "IHD – STEMI, NSTEMI, Stable angina management"),
("Medicine", "Heart Failure – Types, staging, management"),
("Medicine", "ECG interpretation – Arrhythmias, blocks"),
("Medicine", "Hypertension – JNC guidelines, secondary causes"),
("Medicine", "Diabetes Mellitus – Types, complications, drugs"),
("Medicine", "Thyroid disorders – Hypo/Hyperthyroid, investigations"),
("Medicine", "Nephrotic vs Nephritic syndrome"),
("Medicine", "Stroke – Types, management, imaging"),
("Medicine", "Meningitis – Bacterial, viral, CSF findings"),
("Surgery", "Hernia – Types, complications, repair"),
("Surgery", "Thyroid carcinoma – Types, management"),
("Surgery", "Hepatocellular carcinoma – Diagnosis, staging"),
("Surgery", "Acute abdomen – Appendicitis, peritonitis"),
("Surgery", "Burns – Rule of 9, fluid resuscitation (Parkland formula)"),
("OBG", "Normal labour – Stages, mechanisms, management"),
("OBG", "Pre-eclampsia & Eclampsia – Diagnosis, management"),
("OBG", "Antepartum Haemorrhage – Placenta previa vs Abruption"),
("OBG", "Postpartum Haemorrhage – Causes (4 Ts), management"),
("OBG", "Contraception – OCP, IUCD, emergency contraception"),
("Pathology", "Tumour markers – AFP, CEA, PSA, CA-125, etc."),
("Pathology", "Anaemia classification & peripheral smear findings"),
("Pathology", "Glomerulonephritis – Types, IF patterns"),
("Pathology", "Inflammation – Acute vs Chronic, granuloma types"),
("Pharmacology", "Beta-blockers – Cardioselective vs non-selective, uses"),
("Pharmacology", "Antibiotics – Mechanism of action, resistance, side effects"),
("Pharmacology", "Antiepileptics – Drug of choice, teratogenicity"),
("Pharmacology", "Anticancer drugs – Alkylating agents, antimetabolites"),
("Microbiology", "Bacterial toxins – Exotoxins vs Endotoxins"),
("Microbiology", "HIV – Pathogenesis, CD4 count thresholds, HAART"),
("Microbiology", "Hepatitis B serology – HBsAg, Anti-HBs, HBeAg"),
("Pediatrics", "Developmental milestones – Motor, speech, social"),
("Pediatrics", "Vaccination schedule – National Immunisation Programme"),
("Pediatrics", "Neonatal jaundice – Physiological vs pathological"),
("PSM", "Sensitivity, Specificity, PPV, NPV – Calculations"),
("PSM", "Relative Risk, Odds Ratio, Attributable Risk"),
("PSM", "National health programmes – TB, Malaria, Leprosy, HIV"),
("Anatomy", "Brachial plexus – Roots, trunks, cords, nerves"),
("Anatomy", "Cranial nerve nuclei + Lesion clinicals"),
("Physiology", "Renal physiology – GFR, tubular transport, diuretics"),
("Physiology", "Cardiac cycle – Pressure-volume loop, sounds"),
]
row5 = 4
subj_colors = {
"Medicine": CLR["red_warn"], "Surgery": CLR["red_warn"],
"OBG": CLR["red_warn"], "Pediatrics": CLR["red_warn"], "Pathology": CLR["red_warn"],
"Pharmacology": CLR["amber_warn"], "Microbiology": CLR["amber_warn"],
"Anatomy": CLR["amber_warn"], "Physiology": CLR["amber_warn"], "Biochemistry": CLR["amber_warn"],
"PSM": CLR["green_ok"],
}
for i, (subj, topic) in enumerate(hy_topics, 1):
ws5.row_dimensions[row5].height = 22
bg = subj_colors.get(subj, CLR["grey_light"])
row_data = [i, subj, topic, "☐", "☐", "☐"]
for c, val in enumerate(row_data, 1):
cell = ws5.cell(row=row5, column=c, value=val)
cell.fill = fill(bg)
cell.border = thin_border()
cell.font = body_font(10, bold=(c == 2))
cell.alignment = center() if c in [1, 4, 5, 6] else left_align()
row5 += 1
# ══════════════════════════════════════════════════════════════════
# SAVE
# ══════════════════════════════════════════════════════════════════
out_path = "/home/daytona/workspace/neet-pg/NEET_PG_12Month_Schedule.xlsx"
wb.save(out_path)
print(f"Saved: {out_path}")
cd /home/daytona/workspace/neet-pg && python create_schedule.py
cd /home/daytona/workspace/neet-pg && python -c " import io, os from openpyxl import Workbook wb = Workbook() ws = wb.active ws['A1'] = 'test' buf = io.BytesIO() wb.save(buf) buf.seek(0) with open('test.xlsx', 'wb') as f: f.write(buf.read()) print('OK', os.path.getsize('test.xlsx')) "
~/neet-pg/create_schedule.py
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/neet-pg/create_schedule.py'
cd /home/daytona/workspace/neet-pg && python create_schedule.py
cd /home/daytona/workspace/neet-pg && python /home/daytona/skills/xlsx/scripts/recalc.py NEET_PG_12Month_Schedule.xlsx
NEET PG 12Month Schedule
Spreadsheet · XLSX
| Sheet | What it contains |
|---|---|
| Overview | Master 12-month phase-wise schedule - all subjects, MCQ targets, daily focus, revision count per month |
| Monthly Planner | Week-by-week breakdown for all 12 months - exactly what to study each week |
| Subject Tracker | All 19 subjects with color-coded priority tiers - tick off 1st read, 2nd & 3rd revision, track accuracy % |
| Daily Log Template | 30-row daily study log with auto-totals for MCQs done, accuracy %, and hours studied |
| High-Yield Checklist | 40 highest-yield topics across all subjects with 3-revision checkboxes |