Hi can u givee a proper schedule for next 18 days with Pharmacology Pathology Biocy Surgery Med ( CVS , RSk
What is the goal/exam for this schedule? · How many hours can you study per day? · What is your current preparation level?
| Day | Date | Morning (3h) | Afternoon (4h) | Evening (3h) |
|---|---|---|---|---|
| 1 | Sun Jul 12 | Pharmacology - ANS (Cholinergic + Adrenergic) | Pathology - Cell Injury, Necrosis, Apoptosis | Biochemistry - Carbohydrate Metabolism (Glycolysis, TCA) |
| 2 | Mon Jul 13 | Pharmacology - CVS drugs (Anti-HTN, Anti-anginal) | Medicine CVS - IHD, Angina, MI | Pathology - Inflammation (Acute) |
| 3 | Tue Jul 14 | Biochemistry - Lipid metabolism + Lipoproteins | Pathology - Inflammation (Chronic) + Granuloma | Surgery - Fluid & Electrolytes, Shock |
| 4 | Wed Jul 15 | Pharmacology - Anti-arrhythmics + Heart failure drugs | Medicine CVS - Arrhythmias, Heart Failure | Biochemistry - Amino acid metabolism + Urea cycle |
| 5 | Thu Jul 16 | Pathology - Hemodynamics (Thrombosis, Embolism, Infarction) | Medicine CVS - Hypertension, Aortic disease | Surgery - Wounds, Burns, Pre/Post-op care |
| 6 | Fri Jul 17 | Pharmacology - Respiratory drugs (Bronchodilators, Steroids) | Medicine RS - Asthma, COPD | MCQ Revision Block 1 (Pharm + Path + Biochem) |
| Day | Date | Morning (3h) | Afternoon (4h) | Evening (3h) |
|---|---|---|---|---|
| 7 | Sat Jul 18 | Pathology - RBC disorders (Anemia - types, Iron def, Megaloblastic) | Biochemistry - Vitamins + Minerals | Surgery - GI Surgery (Esophagus, Stomach, Small bowel) |
| 8 | Sun Jul 19 | Pharmacology - Antihypertensives (ACEi, ARBs, CCBs, diuretics) | Medicine CVS - Valvular diseases, IE, Pericarditis | Pathology - WBC disorders (Leukemia, Lymphoma) |
| 9 | Mon Jul 20 | Medicine RS - Pneumonia, Pleural effusion, TB | Pharmacology - Antitubercular + Respiratory (full) | Surgery - Hepatobiliary + Pancreatic Surgery |
| 10 | Tue Jul 21 | Biochemistry - Molecular biology (DNA repair, PCR, Blotting) | Pathology - Neoplasia (Grading, Staging, Tumor markers) | Medicine CVS - Congenital heart diseases |
| 11 | Wed Jul 22 | Surgery - Breast + Thyroid Surgery | Pathology - Vascular tumors + Cardiac pathology | Pharmacology - CNS drugs (Sedatives, Anxiolytics, Antidepressants) |
| 12 | Thu Jul 23 | Medicine RS - ARDS, ILD, Pulmonary HTN, Lung CA | Pharmacology - Antiepileptics + Parkinsonism drugs | MCQ Revision Block 2 (Surgery + Med CVS/RS) |
| Day | Date | Morning (3h) | Afternoon (4h) | Evening (3h) |
|---|---|---|---|---|
| 13 | Fri Jul 24 | Pharmacology - Antimicrobials (Penicillins, Cephalosporins, Aminoglycosides) | Pathology - Kidney diseases (GN, NS, ATN) | Biochemistry - Enzymes, Porphyria, Hemoglobin |
| 14 | Sat Jul 25 | Surgery - Vascular Surgery + Orthopedic high-yield | Medicine CVS - Cardiomyopathy, Cor pulmonale, Shock | Pharmacology - Antifungals, Antivirals, Antiparasitic |
| 15 | Sun Jul 26 | Pathology - Liver diseases + Gallbladder | Biochemistry - Hormone biochem + Signal transduction | Medicine RS - Sleep apnea, Respiratory failure, Mechanical ventilation |
| 16 | Mon Jul 27 | Surgery - Colorectal, Anal + Hernia | Pharmacology - Cancer chemotherapy + Immunosuppressants | Pathology - Lung pathology + Environmental diseases |
| Day | Date | Session | Task |
|---|---|---|---|
| 17 | Tue Jul 28 | Morning (3h) | Rapid revision - Pharmacology high-yield tables (drug of choice, side effects) |
| Afternoon (4h) | Rapid revision - Pathology (all systems, key buzzwords) | ||
| Evening (3h) | Rapid revision - Biochemistry (all pathways, diseases) | ||
| 18 | Wed Jul 29 | Morning (3h) | Rapid revision - Medicine CVS + RS (key clinical features, investigations, management) |
| Afternoon (4h) | Rapid revision - Surgery (all high-yield topics) | ||
| Evening (3h) | Full Grand Test (200 MCQs) + Analysis |
06:00 - 09:00 → Morning Session (3h) - Theory + Notes
09:00 - 09:30 → Break
09:30 - 11:30 → Afternoon Session Part 1 (2h) - Theory
11:30 - 12:30 → Lunch Break
12:30 - 14:30 → Afternoon Session Part 2 (2h) - Theory
14:30 - 15:00 → Break
15:00 - 16:30 → Evening Session Part 1 (1.5h) - Theory/Revision
16:30 - 17:00 → Short Break
17:00 - 18:30 → Evening Session Part 2 (1.5h) - MCQs (minimum 50-75 Qs)
| Week | MCQ Target |
|---|---|
| Week 1 (Days 1-6) | 300+ MCQs |
| Week 2 (Days 7-12) | 400+ MCQs |
| Week 3 (Days 13-16) | 400+ MCQs |
| Final 2 days | 200+ (mock test) |
| Total | 1300+ MCQs |
Not from today from tomorrow
| Day | Date | Morning (3h) | Afternoon (4h) | Evening (3h) |
|---|---|---|---|---|
| 1 | Mon Jul 13 | Pharmacology - ANS (Cholinergic + Adrenergic) | Pathology - Cell Injury, Necrosis, Apoptosis | Biochemistry - Glycolysis, TCA cycle |
| 2 | Tue Jul 14 | Pharmacology - CVS drugs (Anti-HTN, Anti-anginal) | Medicine CVS - IHD, Angina, MI | Pathology - Acute Inflammation |
| 3 | Wed Jul 15 | Biochemistry - Lipid metabolism + Lipoproteins | Pathology - Chronic Inflammation + Granuloma | Surgery - Fluids, Electrolytes, Shock |
| 4 | Thu Jul 16 | Pharmacology - Anti-arrhythmics + Heart failure drugs | Medicine CVS - Arrhythmias, Heart Failure | Biochemistry - Amino acid metabolism + Urea cycle |
| 5 | Fri Jul 17 | Pathology - Hemodynamics (Thrombosis, Embolism, Infarction) | Medicine CVS - Hypertension, Aortic disease | Surgery - Wounds, Burns, Pre/Post-op care |
| 6 | Sat Jul 18 | Pharmacology - Respiratory drugs (Bronchodilators, Steroids) | Medicine RS - Asthma, COPD | MCQ Revision Block 1 (All subjects so far) |
| Day | Date | Morning (3h) | Afternoon (4h) | Evening (3h) |
|---|---|---|---|---|
| 7 | Sun Jul 19 | Pathology - RBC disorders (Iron def, Megaloblastic, Hemolytic) | Biochemistry - Vitamins + Minerals | Surgery - GI Surgery (Esophagus, Stomach, Small bowel) |
| 8 | Mon Jul 20 | Pharmacology - ACEi, ARBs, CCBs, Diuretics (deep dive) | Medicine CVS - Valvular diseases, IE, Pericarditis | Pathology - WBC disorders (Leukemia, Lymphoma) |
| 9 | Tue Jul 21 | Medicine RS - Pneumonia, Pleural effusion, TB | Pharmacology - Antitubercular + full Respiratory drugs | Surgery - Hepatobiliary + Pancreatic Surgery |
| 10 | Wed Jul 22 | Biochemistry - Molecular biology (DNA repair, PCR, Blotting) | Pathology - Neoplasia (Grading, Staging, Tumor markers) | Medicine CVS - Congenital Heart Diseases |
| 11 | Thu Jul 23 | Surgery - Breast + Thyroid Surgery | Pathology - Vascular tumors + Cardiac pathology | Pharmacology - CNS drugs (Sedatives, Antidepressants, Antipsychotics) |
| 12 | Fri Jul 24 | Medicine RS - ARDS, ILD, Pulmonary HTN, Lung CA | Pharmacology - Antiepileptics + Parkinsonism drugs | MCQ Revision Block 2 (Surgery + Med CVS/RS) |
| Day | Date | Morning (3h) | Afternoon (4h) | Evening (3h) |
|---|---|---|---|---|
| 13 | Sat Jul 25 | Pharmacology - Antimicrobials (Penicillins, Cephalosporins, Aminoglycosides) | Pathology - Kidney diseases (GN, NS, ATN) | Biochemistry - Enzymes, Porphyria, Hemoglobin |
| 14 | Sun Jul 26 | Surgery - Vascular Surgery + Orthopedic high-yield | Medicine CVS - Cardiomyopathy, Cor pulmonale, Shock | Pharmacology - Antifungals, Antivirals, Antiparasitic |
| 15 | Mon Jul 27 | Pathology - Liver diseases + Gallbladder | Biochemistry - Hormone biochemistry + Signal transduction | Medicine RS - Sleep apnea, Respiratory failure, Mechanical ventilation |
| 16 | Tue Jul 28 | Surgery - Colorectal, Anal + Hernia | Pharmacology - Cancer chemotherapy + Immunosuppressants | Pathology - Lung pathology + Environmental diseases |
| Day | Date | Morning (3h) | Afternoon (4h) | Evening (3h) |
|---|---|---|---|---|
| 17 | Wed Jul 29 | Rapid revision - Pharmacology (drug of choice, side effects tables) | Rapid revision - Pathology (all systems, buzzwords) | Rapid revision - Biochemistry (pathways, enzyme deficiencies) |
| 18 | Thu Jul 30 | Rapid revision - Medicine CVS + RS (ECG, X-ray, clinical scenarios) | Rapid revision - Surgery (high-yield surgical topics) | Full Grand Test (200 MCQs) + Analysis |
06:00 - 09:00 → Morning Session (3h) - Theory
09:00 - 09:30 → Break
09:30 - 11:30 → Afternoon Part 1 (2h) - Theory
11:30 - 12:30 → Lunch Break
12:30 - 14:30 → Afternoon Part 2 (2h) - Theory
14:30 - 15:00 → Break
15:00 - 16:30 → Evening Part 1 (1.5h) - Theory/Revision
16:30 - 17:00 → Short Break
17:00 - 18:30 → Evening Part 2 (1.5h) - MCQs (50-75 Qs daily)
| Block | Target |
|---|---|
| Block 1 (Days 1-6) | 300+ MCQs |
| Block 2 (Days 7-12) | 400+ MCQs |
| Block 3 (Days 13-16) | 350+ MCQs |
| Block 4 - Grand Test | 200 MCQs |
| Total | 1250+ MCQs |
Use this
| Day | Date | Morning (3h) | Afternoon (4h) | Evening (3h) |
|---|---|---|---|---|
| 1 | Mon Jul 13 | Biochem - Vitamins (15×) - ALL vitamins A,B,C,D,E,K in detail | Pathology - Genetics & Syndrome (8×) + Leukaemia (8×) | Pharmacology - Antihypertensives (7×) + Antimuscarinic (7×) |
| 2 | Tue Jul 14 | Medicine CVS - ECG, Arrhythmias, Heart Blocks (9×) - most repeated topic | Pharmacology - Antiarrhythmic (6×) + Anticoagulants & Fibrinolytics (5×) | Pathology - Intestinal disorders (5×) + Lymphoma (5×) |
| 3 | Wed Jul 15 | Pharmacology - Anti-TB (5×) + Antiemetics (5×) + NSAIDs (5×) | Surgery - Breast Cancer (5×) + Inguinal Hernia (5×) | Medicine - ABG & RTA (5×) + Valvular Heart Disease (4×) |
| 4 | Thu Jul 16 | Biochem - Lysosomal storage disorders (6×) + Glycogen storage (4×) | Pathology - Carcinoma lung & thymoma (4×) + Glomerular diseases (4×) + Thyroid (4×) | Surgery - Bladder Carcinoma (4×) + Oral Cavity Cancer (4×) + Triage/Trauma (4×) |
| Day | Date | Morning (3h) | Afternoon (4h) | Evening (3h) |
|---|---|---|---|---|
| 5 | Fri Jul 17 | Pharmacology - Pharmacokinetics & PD (4×) + Antiparkinsons (3×) | Medicine CVS - Vasculitis (4×) + Coronary artery disease (3×) + Disorders of Aorta (3×) | Pathology - Disorders of Haemoglobin (4×) + Tumors (4×) |
| 6 | Sat Jul 18 | Surgery - Penile Carcinoma (4×) + Aortic Dissection (3×) + Hollow Viscus Perforation (3×) | Biochem - Alkaptonuria (3×) + Familial hypercholesterolaemia (3×) + Homocystinuria (2×) | MCQ Block 1 - All Day 1-5 topics (75 MCQs) |
| 7 | Sun Jul 19 | Medicine RS - Pleural disease (3×) + ABG deep dive + JVP (3×) | Pharmacology - Antifungal (3×) + Antimalarials (3×) + Antimicrobials (3×) | Pathology - Coagulation disorders (3×) + Inflammation (3×) |
| 8 | Mon Jul 20 | Surgery - Fistula in Ano (3×) + Glasgow Coma Scale (3×) + Hydatid Cyst (3×) | Medicine CVS - Heart Failure (3×) + Electrolyte disorders (3×) + Cirrhosis & complications (3×) | Pathology - Iron def anaemia (3×) + Macrocytic anaemia (3×) + Multiple Myeloma & Amyloid (3×) |
| 9 | Tue Jul 21 | Surgery - Oesophageal Varices (3×) + Peripheral arterial disease/Leriche's (3×) + Rectal Carcinoma (3×) | Surgery - Subarachnoid Haemorrhage (3×) + Cystourethroscope (3×) | Biochem - Metabolic cycles (2×) + Enzyme Inhibition (2×) + Minerals (2×) |
| Day | Date | Morning (3h) | Afternoon (4h) | Evening (3h) |
|---|---|---|---|---|
| 10 | Wed Jul 22 | Pharmacology - Antihypertensives REVISION + mechanism deep dive | Medicine CVS - ECG revision + Valvular HD + Heart Failure (all integrated) | MCQ Block 2 - Pharmacology all 12 topics (75 MCQs) |
| 11 | Thu Jul 23 | Pathology - Genetics/Syndrome + Leukaemia + Lymphoma revision (big 3) | Surgery - Breast + Hernia + Bladder + Rectal Carcinoma revision | Medicine RS - Malabsorption (3×) + Pleural disease full revision + ABG |
| 12 | Fri Jul 24 | Biochem - Full revision: Vitamins + Lysosomal + Glycogen + all metabolic disorders | Pathology - Glomerular diseases + Anaemias + Myeloma full revision | MCQ Block 3 - Pathology + Biochem (75 MCQs) |
| 13 | Sat Jul 25 | Surgery - Trauma/Triage + GCS + SAH + Aortic dissection (emergency surgery group) | Pharmacology - Anticoagulants + Antiemetics + NSAIDs revision | Medicine CVS - Vasculitis + CAD + Electrolytes + Aorta revision |
| 14 | Sun Jul 26 | Pharmacology - Anti-TB + Antifungal + Antimicrobials + Antimalarials revision | Surgery - Oral Ca + Penile Ca + Hydatid + Oesophageal varices revision | Pathology - Inflammation + Coagulation + Tumors revision |
| Day | Date | Morning (3h) | Afternoon (4h) | Evening (3h) |
|---|---|---|---|---|
| 15 | Mon Jul 27 | Revisit your personally weak topics from MCQ analysis | Medicine - Full CVS integration: ECG + Valvular + HF + CAD + Aorta | Surgery - All 16 topics rapid fire revision |
| 16 | Tue Jul 28 | Biochem - All 9 topics speed revision (tables + enzyme deficiencies) | Pharmacology - Drug of choice list + Side effects master table | MCQ Block 4 - Surgery + Medicine (75 MCQs) |
| Day | Date | Task |
|---|---|---|
| 17 | Wed Jul 29 | Morning: Pathology all 14 topics buzzwords. Afternoon: Pharmacology all 12 rapid fire. Evening: Biochem all 9 topics. Night: Medicine CVS+RS key points |
| 18 | Thu Jul 30 | Morning: Surgery all 16 topics rapid fire. Afternoon: 200 MCQ Grand Test from Dr. Ganga predicted topics only. Evening: Full analysis + weak spot review |
| Priority | Topics to nail first |
|---|---|
| 🔴 Day 1-2 (Highest) | Vitamins 15×, ECG 9×, Genetics/Leukaemia 8×, Antihypertensives 7× |
| 🟠 Day 3-4 | Anti-TB 5×, Breast/Hernia 5×, ABG 5×, Lysosomal 6× |
| 🟡 Day 5-9 | All 3×-4× topics across all subjects |
| 🟢 Day 10-16 | Revision cycles + integration |
| ✅ Day 17-18 | Grand revision + mock test |
06:00 - 09:00 Morning Session (3h)
09:00 - 09:30 Break
09:30 - 13:30 Afternoon Session (4h)
13:30 - 14:30 Lunch
14:30 - 17:30 Evening Session (3h) — last 1h always MCQs
With time for PYQ and BTR
06:00 - 09:00 ┃ Session 1 - Theory (3h)
09:00 - 09:30 ┃ Break
09:30 - 13:00 ┃ Session 2 - Theory (3.5h)
13:00 - 14:00 ┃ Lunch Break
14:00 - 15:30 ┃ PYQ Block (1.5h) → Solve 40-50 PYQs from today's topics
15:30 - 16:30 ┃ BTR Block (1h) → Re-read every wrong/guessed answer
16:30 - 17:00 ┃ Break + Walk
17:00 - 18:30 ┃ Session 3 - Theory (1.5h)
18:30 - 19:00 ┃ Quick notes/flashcards
19:00 - 20:00 ┃ Previous Day BTR Repeat (1h) → Re-check yesterday's wrongs
20:00 - 21:00 ┃ Night MCQ Sprint (1h) → 30-40 mixed MCQs
21:00 ┃ Wind down / sleep
| Time | Activity |
|---|---|
| 06:00-09:00 | Biochem Theory - Vitamins (15×): A, D, E, K (fat-soluble) in depth |
| 09:30-13:00 | Biochem Theory - Vitamins B1-B12 + C (water-soluble) + deficiency diseases |
| 14:00-15:30 | PYQ - Biochem Vitamins (40-50 Qs from NEET PG/INI-CET PYQ) |
| 15:30-16:30 | BTR - Re-read all wrong vitamin answers from source |
| 17:00-18:30 | Pathology Theory - Genetics & Syndrome (8×): chromosomal disorders, syndromes |
| 19:00-20:00 | BTR Repeat - Yesterday was Day 0, today: re-check Vitamins flashcards |
| 20:00-21:00 | Night MCQ Sprint - 30 mixed Biochem MCQs |
| Time | Activity |
|---|---|
| 06:00-09:00 | Pathology Theory - Leukaemia (8×): ALL, AML, CLL, CML - classification, markers |
| 09:30-13:00 | Medicine Theory - ECG, Arrhythmias, Heart Blocks (9×) - most repeated topic in NEET PG |
| 14:00-15:30 | PYQ - Pathology Leukaemia + Medicine ECG/Arrhythmias (40-50 Qs) |
| 15:30-16:30 | BTR - Re-read all wrong answers (focus: ECG patterns, leukaemia markers) |
| 17:00-18:30 | Pharmacology Theory - Antihypertensives (7×) + Antimuscarinic (7×) |
| 19:00-20:00 | BTR Repeat - Day 1 wrongs: Vitamins weak points |
| 20:00-21:00 | Night MCQ Sprint - 30 Pharmacology MCQs |
| Time | Activity |
|---|---|
| 06:00-09:00 | Pharmacology Theory - Antiarrhythmic (6×) + Anticoagulants & Fibrinolytics (5×) |
| 09:30-13:00 | Surgery Theory - Breast Cancer (5×) + Inguinal Hernia (5×) in full detail |
| 14:00-15:30 | PYQ - Pharmacology Antiarrhythmic + Anticoagulants + Surgery Breast/Hernia (40-50 Qs) |
| 15:30-16:30 | BTR - Re-read wrongs (drug mechanisms, surgical anatomy) |
| 17:00-18:30 | Medicine Theory - ABG & RTA (5×) + Valvular Heart Disease (4×) |
| 19:00-20:00 | BTR Repeat - Day 2 wrongs: ECG patterns + Leukaemia markers |
| 20:00-21:00 | Night MCQ Sprint - 30 Medicine CVS MCQs |
| Time | Activity |
|---|---|
| 06:00-09:00 | Biochem Theory - Lysosomal storage disorders (6×) + Glycogen storage disorders (4×) |
| 09:30-13:00 | Pathology Theory - Glomerular diseases (4×) + Thyroid pathology (4×) + Intestinal disorders (5×) |
| 14:00-15:30 | PYQ - Biochem metabolic disorders + Pathology Glomerular/Thyroid (40-50 Qs) |
| 15:30-16:30 | BTR - Re-read all wrongs (enzyme deficiencies, GN types) |
| 17:00-18:30 | Surgery Theory - Bladder Carcinoma (4×) + Oral Cavity Cancer (4×) + Triage/Trauma (4×) |
| 19:00-20:00 | BTR Repeat - Day 3 wrongs: Pharmacology drug mechanisms |
| 20:00-21:00 | Night MCQ Sprint - 30 Surgery MCQs |
| Time | Activity |
|---|---|
| 06:00-09:00 | Pharmacology Theory - Anti-TB (5×) + Antiemetics (5×) + NSAIDs (5×) |
| 09:30-13:00 | Pathology Theory - Lymphoma (5×) + Disorders of Haemoglobin (4×) + Tumors (4×) |
| 14:00-15:30 | PYQ - Pharmacology Anti-TB/Antiemetics/NSAIDs + Pathology Lymphoma (40-50 Qs) |
| 15:30-16:30 | BTR - Re-read wrongs (TB drug side effects, lymphoma classification) |
| 17:00-18:30 | Medicine Theory - Vasculitis (4×) + Coronary artery disease (3×) + Disorders of Aorta (3×) |
| 19:00-20:00 | BTR Repeat - Day 4 wrongs: Metabolic disorders + GN |
| 20:00-21:00 | Night MCQ Sprint - 30 Medicine CVS MCQs |
| Time | Activity |
|---|---|
| 06:00-09:00 | Pharmacology Theory - Pharmacokinetics & PD (4×) + Antiparkinsons (3×) + Antifungal (3×) |
| 09:30-13:00 | Surgery Theory - Penile Carcinoma (4×) + Aortic Dissection (3×) + Hollow Viscus Perforation (3×) |
| 14:00-15:30 | PYQ - PK/PD + Antifungal + Surgery topics (40-50 Qs) |
| 15:30-16:30 | BTR - Re-read wrongs |
| 17:00-18:30 | Biochem Theory - Alkaptonuria (3×) + Familial hypercholesterolaemia (3×) + Homocystinuria (2×) |
| 19:00-20:00 | BTR Repeat - Day 5 wrongs: TB drugs + Lymphoma |
| 20:00-21:00 | WEEKLY MCQ SPRINT - 50 mixed questions (all week topics) |
| Time | Activity |
|---|---|
| 06:00-09:00 | Medicine RS Theory - Pleural disease (3×) + JVP (3×) + ABG deep dive |
| 09:30-13:00 | Pathology Theory - Coagulation disorders (3×) + Inflammation (3×) + Carcinoma lung & thymoma (4×) |
| 14:00-15:30 | PYQ - Medicine RS + Pathology coagulation/inflammation (40-50 Qs) |
| 15:30-16:30 | BTR - Re-read wrongs (coagulation cascade, pleural fluid analysis) |
| 17:00-18:30 | Pharmacology Theory - Antimalarials (3×) + Antimicrobials (3×) |
| 19:00-20:00 | BTR Repeat - Day 6 wrongs: PK/PD concepts |
| 20:00-21:00 | Night MCQ Sprint - 30 MCQs |
| Time | Activity |
|---|---|
| 06:00-09:00 | Surgery Theory - Fistula in Ano (3×) + Glasgow Coma Scale (3×) + Hydatid Cyst (3×) |
| 09:30-13:00 | Medicine CVS Theory - Heart Failure (3×) + Electrolyte disorders (3×) + Cirrhosis & complications (3×) |
| 14:00-15:30 | PYQ - Surgery fistula/GCS/Hydatid + Medicine HF/Electrolytes (40-50 Qs) |
| 15:30-16:30 | BTR - Re-read wrongs |
| 17:00-18:30 | Pathology Theory - Iron def anaemia (3×) + Macrocytic anaemia (3×) + Multiple Myeloma & Amyloid (3×) |
| 19:00-20:00 | BTR Repeat - Day 7 wrongs: Pleural disease + Coagulation |
| 20:00-21:00 | Night MCQ Sprint - 30 Pathology MCQs |
| Time | Activity |
|---|---|
| 06:00-09:00 | Surgery Theory - Oesophageal Varices (3×) + Peripheral arterial disease/Leriche's (3×) + Rectal Ca (3×) |
| 09:30-13:00 | Surgery Theory - Subarachnoid Haemorrhage (3×) + Cystourethroscope (3×) - complete all 16 Surgery topics |
| 14:00-15:30 | PYQ - Surgery remaining topics (40-50 Qs) |
| 15:30-16:30 | BTR - Re-read all surgery wrongs |
| 17:00-18:30 | Biochem Theory - Metabolic cycles/insulin-glucagon (2×) + Enzyme Inhibition (2×) + Minerals (2×) |
| 19:00-20:00 | BTR Repeat - Day 8 wrongs: HF + Anaemias |
| 20:00-21:00 | Night MCQ Sprint - 30 Biochem MCQs |
| Time | Activity |
|---|---|
| 06:00-09:00 | Pharmacology Revision R1 - Antihypertensives + Antimuscarinic + Antiarrhythmic (top 3 by frequency) |
| 09:30-13:00 | Medicine CVS Revision R1 - ECG + Valvular HD + Heart Failure (integrated revision) |
| 14:00-15:30 | PYQ Block - Pharmacology all 12 topics mixed (50 Qs) |
| 15:30-16:30 | BTR - Weak pharmacology topics identified from PYQ |
| 17:00-18:30 | Pathology Revision R1 - Genetics/Syndrome + Leukaemia + Lymphoma (big 3) |
| 19:00-20:00 | BTR Repeat - Day 9 wrongs: Surgery + Biochem |
| 20:00-21:00 | Night MCQ Sprint - 30 Pathology MCQs |
| Time | Activity |
|---|---|
| 06:00-09:00 | Surgery Revision R1 - Breast + Hernia + Bladder + Rectal Ca (cancer group) |
| 09:30-13:00 | Surgery Revision R1 - Trauma + GCS + SAH + Aortic Dissection (emergency group) |
| 14:00-15:30 | PYQ Block - Surgery all 16 topics mixed (50 Qs) |
| 15:30-16:30 | BTR - All surgery weak points |
| 17:00-18:30 | Medicine RS Revision R1 - Pleural disease + ABG + Malabsorption + JVP |
| 19:00-20:00 | BTR Repeat - Day 10 wrongs: Pharmacology mechanisms |
| 20:00-21:00 | Night MCQ Sprint - 30 Medicine RS MCQs |
| Time | Activity |
|---|---|
| 06:00-09:00 | Biochem Revision R1 - Vitamins (full) + Lysosomal + Glycogen storage (top 3) |
| 09:30-13:00 | Biochem Revision R1 - Alkaptonuria + FH + Homocystinuria + Metabolic cycles |
| 14:00-15:30 | PYQ Block - Biochem all 9 topics mixed (50 Qs) |
| 15:30-16:30 | BTR - Biochem weak areas |
| 17:00-18:30 | Pathology Revision R1 - Glomerular + Anaemias + Myeloma + Coagulation |
| 19:00-20:00 | BTR Repeat - Day 11 wrongs: Surgery + Medicine RS |
| 20:00-21:00 | Night MCQ Sprint - 30 Pathology MCQs |
| Time | Activity |
|---|---|
| 06:00-09:00 | Pharmacology Revision R2 - Anti-TB + Antiemetics + NSAIDs + Anticoagulants |
| 09:30-13:00 | Medicine CVS Revision R2 - Vasculitis + CAD + Aorta + Electrolytes + Cirrhosis |
| 14:00-15:30 | PYQ Block - Medicine CVS+RS all topics mixed (50 Qs) |
| 15:30-16:30 | BTR - All Medicine weak points flagged |
| 17:00-18:30 | Pathology Revision R2 - Intestinal disorders + Lung Ca + Thyroid + Tumors + Inflammation |
| 19:00-20:00 | BTR Repeat - Day 12 wrongs: Biochem pathways |
| 20:00-21:00 | WEEKLY MCQ SPRINT - 60 mixed all subjects |
| Time | Activity |
|---|---|
| 06:00-09:00 | Pharmacology Revision R2 - Antifungal + Antimicrobials + Antimalarials + Antiparkinsons + PK/PD |
| 09:30-13:00 | Surgery Revision R2 - All 16 topics rapid fire (3-4 min per topic, key points only) |
| 14:00-15:30 | PYQ Block - Surgery + Pharmacology combined (50 Qs) |
| 15:30-16:30 | BTR - Wrongs from this PYQ block |
| 17:00-18:30 | Pathology Revision R2 - Coagulation + Iron def + Macrocytic + Myeloma |
| 19:00-20:00 | BTR Repeat - Day 13 wrongs |
| 20:00-21:00 | Night MCQ Sprint - 30 MCQs |
| Time | Activity |
|---|---|
| 06:00-09:00 | Personal Weak Area Block - Re-study your 3 weakest topics from PYQ analysis |
| 09:30-13:00 | Medicine CVS Full Integration - ECG + HF + Valvular + CAD + Aorta (connect all) |
| 14:00-15:30 | PYQ Block - Dr. Ganga predicted topics strictly - 50 Qs from prediction list |
| 15:30-16:30 | BTR - All wrongs |
| 17:00-18:30 | Biochem Revision R2 - All 9 topics speed revision (tables + deficiency charts) |
| 19:00-20:00 | BTR Repeat - Day 14 wrongs |
| 20:00-21:00 | Night MCQ Sprint - 30 MCQs |
| Time | Activity |
|---|---|
| 06:00-09:00 | Pharmacology Master Table - Drug of choice + Side effects (all 12 topics) |
| 09:30-13:00 | Surgery Revision R3 - All 16 topics + surgical indications + complications |
| 14:00-15:30 | PYQ Block - Surgery all 16 topics strictly (50 Qs) |
| 15:30-16:30 | BTR - Wrongs |
| 17:00-18:30 | Pathology Revision R3 - All 14 topics buzzwords + morphology key points |
| 19:00-20:00 | BTR Repeat - Day 15 wrongs |
| 20:00-21:00 | WEEKLY MCQ SPRINT - 60 mixed all 5 subjects |
| Time | Activity |
|---|---|
| 06:00-08:00 | Pathology - All 14 topics rapid fire (key words, tables, images) |
| 08:00-10:00 | Pharmacology - All 12 topics rapid fire (mechanisms, side effects, DOC) |
| 10:00-10:30 | Break |
| 10:30-12:30 | Biochem - All 9 topics rapid fire (enzyme deficiencies, metabolic charts) |
| 12:30-13:30 | Lunch |
| 13:30-15:30 | Medicine CVS+RS - All topics rapid fire (ECG patterns, clinical keys) |
| 15:30-17:30 | Surgery - All 16 topics rapid fire (key surgical facts) |
| 17:30-18:30 | PYQ Compilation Block - Solve your personally marked "starred hard questions" from all weeks |
| 19:00-21:00 | BTR Final - All remaining weak areas - last reading |
| Time | Activity |
|---|---|
| 06:00-07:00 | Light revision only - no new topics |
| 07:00-10:00 | MOCK TEST Part 1 - 100 MCQs (timed, exam conditions) |
| 10:00-10:30 | Break |
| 10:30-13:30 | MOCK TEST Part 2 - 100 MCQs (timed, exam conditions) |
| 13:30-14:30 | Lunch |
| 14:30-17:00 | Full Test Analysis - subject-wise score, identify weak chapters |
| 17:00-19:00 | BTR - Test Wrongs - Re-read every wrong answer from mock test |
| 19:00-20:00 | Final revision of the top 20 most important Dr. Ganga topics |
| 20:00 | Rest - you're ready! |
| Week | PYQ Qs | BTR Sessions |
|---|---|---|
| Days 1-6 | 240-300 Qs | 6 same-day + 5 next-day repeats |
| Days 7-12 | 300-360 Qs | 6 same-day + 5 next-day repeats |
| Days 13-16 | 200+ Qs | 4 same-day + 4 next-day repeats |
| Day 17-18 | 200 Qs (Mock) | 1 full BTR post-mock |
| Total | ~1000+ PYQs | 20+ BTR sessions |
Generate a printable PDF schedule to pin on your wall
mkdir -p /home/daytona/workspace/neet-schedule && ls /home/daytona/workspace/neet-schedule/
~/neet-schedule/generate_schedule.py
from reportlab.lib.pagesizes import A3, landscape
from reportlab.lib import colors
from reportlab.lib.units import mm
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer, HRFlowable
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from reportlab.platypus import PageBreak
OUTPUT = "/home/daytona/workspace/neet-schedule/NEET_PG_18Day_Schedule.pdf"
doc = SimpleDocTemplate(OUTPUT, pagesize=landscape(A3),
leftMargin=10*mm, rightMargin=10*mm,
topMargin=10*mm, bottomMargin=10*mm)
styles = getSampleStyleSheet()
# Custom styles
title_style = ParagraphStyle('title', fontSize=22, fontName='Helvetica-Bold',
alignment=TA_CENTER, textColor=colors.HexColor('#1a1a2e'),
spaceAfter=4)
subtitle_style = ParagraphStyle('subtitle', fontSize=11, fontName='Helvetica',
alignment=TA_CENTER, textColor=colors.HexColor('#e94560'),
spaceAfter=8)
section_style = ParagraphStyle('section', fontSize=13, fontName='Helvetica-Bold',
textColor=colors.white, alignment=TA_CENTER)
cell_style = ParagraphStyle('cell', fontSize=7.5, fontName='Helvetica',
leading=10, textColor=colors.HexColor('#1a1a2e'))
cell_bold = ParagraphStyle('cellb', fontSize=7.5, fontName='Helvetica-Bold',
leading=10, textColor=colors.HexColor('#1a1a2e'))
day_style = ParagraphStyle('day', fontSize=9, fontName='Helvetica-Bold',
alignment=TA_CENTER, textColor=colors.white)
time_style = ParagraphStyle('time', fontSize=7, fontName='Helvetica-Bold',
alignment=TA_CENTER, textColor=colors.HexColor('#e94560'))
legend_style = ParagraphStyle('leg', fontSize=8, fontName='Helvetica', leading=11)
# Color palette
COL_PHARM = colors.HexColor('#d4edda') # green tint
COL_PATH = colors.HexColor('#fff3cd') # yellow tint
COL_BIOCHEM = colors.HexColor('#cce5ff') # blue tint
COL_SURG = colors.HexColor('#f8d7da') # red tint
COL_MED = colors.HexColor('#e2d9f3') # purple tint
COL_PYQ = colors.HexColor('#ffeeba') # amber
COL_BTR = colors.HexColor('#d1ecf1') # teal
COL_MCQ = colors.HexColor('#f5c6cb') # pink
COL_HEADER = colors.HexColor('#1a1a2e')
COL_DAY_BG = colors.HexColor('#e94560')
COL_BLOCK = colors.HexColor('#0f3460')
def P(text, style=cell_style):
return Paragraph(text, style)
def make_cell(subject, topics, color):
return [Paragraph(f'<b>{subject}</b>', cell_bold),
Paragraph(topics, cell_style)]
# ─── PAGE 1: OVERVIEW TABLE (all 18 days, 5 columns) ───────────────────────
schedule = [
# Day, Date, Morning(3h), Afternoon(4h), Evening(3h)+PYQ/BTR
(1, "Mon\nJul 13",
("BIOCHEM", "Vitamins (15×)\nAll A,D,E,K,B-complex,C\nDeficiency diseases", COL_BIOCHEM),
("PATHOLOGY", "Genetics & Syndrome (8×)\nLeukaemia (8×)\nClassification + markers", COL_PATH),
("PHARMACOLOGY", "Antihypertensives (7×)\nAntimuscarinic (7×)\nMechanisms + DOC", COL_PHARM)),
(2, "Tue\nJul 14",
("PATHOLOGY", "Leukaemia (8×) deep\nALL, AML, CLL, CML\nSurface markers", COL_PATH),
("MEDICINE CVS", "ECG, Arrhythmias,\nHeart Blocks (9×)\n★ Most repeated topic", COL_MED),
("PHARMACOLOGY", "Antiarrhythmic (6×)\nAnticoagulants &\nFibrinolytics (5×)", COL_PHARM)),
(3, "Wed\nJul 15",
("PHARMACOLOGY", "Anti-TB (5×)\nAntiemetics (5×)\nNSAIDs (5×)", COL_PHARM),
("SURGERY", "Breast Cancer (5×)\nInguinal Hernia (5×)\nFull anatomy + staging", COL_SURG),
("MEDICINE", "ABG & RTA (5×)\nValvular Heart\nDisease (4×)", COL_MED)),
(4, "Thu\nJul 16",
("BIOCHEM", "Lysosomal storage (6×)\nGlycogen storage (4×)\nEnzyme deficiencies", COL_BIOCHEM),
("PATHOLOGY", "Glomerular diseases (4×)\nThyroid pathology (4×)\nIntestinal disorders (5×)", COL_PATH),
("SURGERY", "Bladder Carcinoma (4×)\nOral Cavity Cancer (4×)\nTriage / Trauma (4×)", COL_SURG)),
(5, "Fri\nJul 17",
("PHARMACOLOGY", "Pharmacokinetics &\nPD (4×) + Antiparkinsons\n(3×) + Antifungal (3×)", COL_PHARM),
("PATHOLOGY", "Lymphoma (5×)\nDisorders of Hb (4×)\nTumors (4×)", COL_PATH),
("MEDICINE CVS", "Vasculitis (4×)\nCoronary artery\ndisease (3×) + Aorta (3×)", COL_MED)),
(6, "Sat\nJul 18",
("SURGERY", "Penile Carcinoma (4×)\nAortic Dissection (3×)\nHollow Viscus Perf (3×)", COL_SURG),
("BIOCHEM", "Alkaptonuria (3×)\nFamilial hypercholest. (3×)\nHomocystinuria (2×)", COL_BIOCHEM),
("★ WEEKLY MCQ", "50 Mixed Qs\nAll Week 1 Topics\n+ BTR wrongs review", COL_MCQ)),
(7, "Sun\nJul 19",
("MEDICINE RS", "Pleural disease (3×)\nJVP (3×)\nABG deep dive", COL_MED),
("PATHOLOGY", "Coagulation (3×)\nInflammation (3×)\nCarcinoma lung (4×)", COL_PATH),
("PHARMACOLOGY", "Antimalarials (3×)\nAntimicrobials (3×)\nRevision: Antiemetics", COL_PHARM)),
(8, "Mon\nJul 20",
("SURGERY", "Fistula in Ano (3×)\nGlasgow Coma Scale (3×)\nHydatid Cyst (3×)", COL_SURG),
("MEDICINE CVS", "Heart Failure (3×)\nElectrolyte disorders (3×)\nCirrhosis + SBP (3×)", COL_MED),
("PATHOLOGY", "Iron def anaemia (3×)\nMacrocytic anaemia (3×)\nMultiple Myeloma (3×)", COL_PATH)),
(9, "Tue\nJul 21",
("SURGERY", "Oesophageal Varices (3×)\nPeripheral art. disease (3×)\nRectal Carcinoma (3×)", COL_SURG),
("SURGERY", "SAH (3×)\nCystourethroscope (3×)\n★ All 16 Surg topics done", COL_SURG),
("BIOCHEM", "Metabolic cycles (2×)\nEnzyme Inhibition (2×)\nMinerals (2×)", COL_BIOCHEM)),
(10, "Wed\nJul 22",
("PHARM R1", "Antihypertensives +\nAntimuscarinic +\nAntiarrhythmic revision", COL_PHARM),
("MED CVS R1", "ECG + Valvular HD +\nHeart Failure\nIntegrated revision", COL_MED),
("PATH R1", "Genetics + Leukaemia +\nLymphoma\nTop 3 revision", COL_PATH)),
(11, "Thu\nJul 23",
("SURGERY R1", "Breast + Hernia +\nBladder + Rectal Ca\nCancer group revision", COL_SURG),
("SURGERY R1", "Trauma + GCS + SAH +\nAortic Dissection\nEmergency group", COL_SURG),
("MED RS R1", "Pleural disease +\nABG + Malabsorption\n+ JVP revision", COL_MED)),
(12, "Fri\nJul 24",
("BIOCHEM R1", "Vitamins (full) +\nLysosomal + Glycogen\nTop 3 revision", COL_BIOCHEM),
("BIOCHEM R1", "Alkaptonuria + FH +\nHomocystinuria +\nMetabolic cycles", COL_BIOCHEM),
("PATH R1", "Glomerular + Anaemias +\nMyeloma + Coagulation\nRevision", COL_PATH)),
(13, "Sat\nJul 25",
("PHARM R2", "Anti-TB + Antiemetics +\nNSAIDs + Anticoagulants\nRevision", COL_PHARM),
("MED CVS R2", "Vasculitis + CAD +\nAorta + Electrolytes +\nCirrhosis revision", COL_MED),
("★ WEEKLY MCQ", "60 Mixed All Subjects\nPYQ Dr. Ganga list\n+ BTR review", COL_MCQ)),
(14, "Sun\nJul 26",
("PHARM R2", "Antifungal + Antimicrob\n+ Antimalarials +\nAntiparkinsons + PK/PD", COL_PHARM),
("SURGERY R2", "All 16 topics rapid fire\n3-4 min per topic\nKey points only", COL_SURG),
("PATH R2", "Coagulation + Iron def +\nMacrocytic + Myeloma\nRevision", COL_PATH)),
(15, "Mon\nJul 27",
("WEAK AREAS", "Re-study 3 weakest\ntopics from your\nPYQ analysis", COL_MCQ),
("MED CVS INT", "ECG + HF + Valvular +\nCAD + Aorta\nFull integration", COL_MED),
("BIOCHEM R2", "All 9 topics speed\nrevision — tables +\ndeficiency charts", COL_BIOCHEM)),
(16, "Tue\nJul 28",
("PHARM MASTER", "Drug of Choice table +\nSide effects chart\nAll 12 topics", COL_PHARM),
("SURGERY R3", "All 16 topics +\nsurgical indications +\ncomplications", COL_SURG),
("★ WEEKLY MCQ", "60 Mixed All 5 Subjects\nSurgery 16 topics PYQ\n+ BTR wrongs", COL_MCQ)),
(17, "Wed\nJul 29",
("GRAND REVISION", "Path (all 14) rapid fire\nPharm (all 12) rapid fire\nBuzzwords + tables", COL_PATH),
("GRAND REVISION", "Biochem (all 9)\nMed CVS+RS all topics\nECG patterns", COL_BIOCHEM),
("GRAND REVISION", "Surgery all 16 rapid\nStarred hard Qs\nFinal BTR", COL_SURG)),
(18, "Thu\nJul 30",
("MOCK TEST Pt1", "100 MCQs timed\nExam conditions\nDr. Ganga topics", COL_MCQ),
("MOCK TEST Pt2", "100 MCQs timed\n+ Full test analysis\nSubject-wise score", COL_MCQ),
("BTR FINAL", "Re-read ALL mock\nwrong answers\nTop 20 Dr. Ganga Qs", COL_BTR)),
]
# ── DAILY TIME TABLE (bottom of page 1 / page 2) ──────────────────────────
elements = []
# Title block
elements.append(Paragraph("🩺 NEET PG / INI-CET — 18-DAY MASTER STUDY SCHEDULE", title_style))
elements.append(Paragraph("Jul 13 – Jul 30, 2026 | Based on Dr. Ganga's 180 Topics Prediction | 10+ hrs/day | With PYQ + BTR", subtitle_style))
elements.append(HRFlowable(width="100%", thickness=2, color=colors.HexColor('#e94560')))
elements.append(Spacer(1, 4*mm))
# Build main schedule table
# Headers
header_row = [
P("<b>DAY</b>", day_style),
P("<b>DATE</b>", day_style),
P("<b>MORNING 06:00–09:00 (3h Theory)</b>", day_style),
P("<b>AFTERNOON 09:30–13:00 (3.5h Theory)</b>", day_style),
P("<b>EVENING 17:00–18:30 (1.5h Theory)</b>", day_style),
P("<b>14:00–15:30 PYQ\n(40-50 Qs)</b>", day_style),
P("<b>15:30–16:30 BTR\n(Wrong Ans)</b>", day_style),
P("<b>19:00–20:00 BTR\nRepeat (Prev Day)</b>", day_style),
P("<b>20:00–21:00 Night\nMCQ Sprint (30Q)</b>", day_style),
]
table_data = [header_row]
block_labels = {
1: "BLOCK 1 — DAYS 1-4: Highest Frequency Topics (7×–15×)",
5: "BLOCK 2 — DAYS 5-9: Core Clinical Depth (3×–5×)",
10: "BLOCK 3 — DAYS 10-14: Revision Cycles R1 & R2",
15: "BLOCK 4 — DAYS 15-16: Weak Areas + Integration",
17: "BLOCK 5 — DAYS 17-18: Grand Revision + Mock Test",
}
block_colors = {
1: colors.HexColor('#0f3460'),
5: colors.HexColor('#16213e'),
10: colors.HexColor('#1a4a2e'),
15: colors.HexColor('#4a1a0f'),
17: colors.HexColor('#4a0f3c'),
}
row_colors = {}
current_block_color = COL_HEADER
for day, date, morn, aft, eve in schedule:
# Insert block separator rows
if day in block_labels:
sep_row = [Paragraph(f'<b>{block_labels[day]}</b>', section_style)] + [''] * 8
table_data.append(sep_row)
row_colors[len(table_data)-1] = block_colors[day]
subj_m, topic_m, col_m = morn
subj_a, topic_a, col_a = aft
subj_e, topic_e, col_e = eve
# Determine PYQ/BTR subject focus
pyq_text = f"From today's\n{subj_m} +\n{subj_a} topics"
btr_text = "Re-read all\nwrong answers\nfrom PYQ block"
btr_rep = "Yesterday's\nwrong answers\n(Day %d)" % (day-1) if day > 1 else "Start fresh\ntoday!"
night = "30 Mixed\nMCQs from\ntoday's topics"
if day in [6, 13, 16]:
pyq_text = "50 Mixed Qs\nAll week topics\nGrand sprint"
night = "Review errors\n+ mark weak\nchapters"
if day == 17:
pyq_text = "Starred hard\nQs from all\nweeks"
night = "Final BTR\nAll weak\nareas"
if day == 18:
pyq_text = "200 MCQ\nMock Test\n(timed)"
btr_text = "Mock test\nanalysis\n+ weak spots"
night = "Top 20\nDr. Ganga\nQs review"
row = [
Paragraph(f'<b>Day {day}</b>', day_style),
Paragraph(f'<b>{date}</b>', day_style),
Paragraph(f'<b><font color="#1a4a2e">{subj_m}</font></b><br/>{topic_m.replace(chr(10), "<br/>")}', cell_style),
Paragraph(f'<b><font color="#1a4a2e">{subj_a}</font></b><br/>{topic_a.replace(chr(10), "<br/>")}', cell_style),
Paragraph(f'<b><font color="#1a4a2e">{subj_e}</font></b><br/>{topic_e.replace(chr(10), "<br/>")}', cell_style),
Paragraph(pyq_text, cell_style),
Paragraph(btr_text, cell_style),
Paragraph(btr_rep, cell_style),
Paragraph(night, cell_style),
]
table_data.append(row)
row_colors[len(table_data)-1] = (col_m, col_a, col_e)
# Column widths (A3 landscape = ~420mm usable)
col_widths = [14*mm, 14*mm, 60*mm, 60*mm, 55*mm, 35*mm, 32*mm, 32*mm, 30*mm]
main_table = Table(table_data, colWidths=col_widths, repeatRows=1)
# Build style commands
ts = TableStyle([
# Header
('BACKGROUND', (0,0), (-1,0), COL_HEADER),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,0), 8),
('ALIGN', (0,0), (-1,0), 'CENTER'),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#cccccc')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.white, colors.HexColor('#f8f9fa')]),
('TOPPADDING', (0,0), (-1,-1), 3),
('BOTTOMPADDING', (0,0), (-1,-1), 3),
('LEFTPADDING', (0,0), (-1,-1), 3),
('RIGHTPADDING', (0,0), (-1,-1), 3),
('FONTSIZE', (0,1), (-1,-1), 7.5),
])
# Apply block separator rows styling and data row coloring
for i, row in enumerate(table_data):
if i == 0:
continue
if i in row_colors:
val = row_colors[i]
if isinstance(val, tuple) and len(val) == 3:
col_m, col_a, col_e = val
ts.add('BACKGROUND', (2, i), (2, i), col_m)
ts.add('BACKGROUND', (3, i), (3, i), col_a)
ts.add('BACKGROUND', (4, i), (4, i), col_e)
ts.add('BACKGROUND', (5, i), (5, i), COL_PYQ)
ts.add('BACKGROUND', (6, i), (6, i), COL_BTR)
ts.add('BACKGROUND', (7, i), (7, i), COL_BTR)
ts.add('BACKGROUND', (8, i), (8, i), COL_MCQ)
elif isinstance(val, colors.Color):
# Block separator
ts.add('BACKGROUND', (0, i), (-1, i), val)
ts.add('TEXTCOLOR', (0, i), (-1, i), colors.white)
ts.add('SPAN', (0, i), (-1, i))
ts.add('ALIGN', (0, i), (-1, i), 'CENTER')
ts.add('FONTNAME', (0, i), (-1, i), 'Helvetica-Bold')
ts.add('FONTSIZE', (0, i), (-1, i), 9)
# Day and date column coloring
for i in range(1, len(table_data)):
if i in row_colors and isinstance(row_colors[i], tuple):
ts.add('BACKGROUND', (0, i), (0, i), COL_DAY_BG)
ts.add('TEXTCOLOR', (0, i), (0, i), colors.white)
ts.add('BACKGROUND', (1, i), (1, i), colors.HexColor('#16213e'))
ts.add('TEXTCOLOR', (1, i), (1, i), colors.white)
ts.add('ALIGN', (0, i), (1, i), 'CENTER')
main_table.setStyle(ts)
elements.append(main_table)
# ── PAGE 2: DAILY TIMETABLE + LEGEND ────────────────────────────────────────
elements.append(PageBreak())
elements.append(Paragraph("📅 DAILY TIMETABLE + STUDY RULES", title_style))
elements.append(HRFlowable(width="100%", thickness=2, color=colors.HexColor('#e94560')))
elements.append(Spacer(1, 5*mm))
daily_data = [
[P("<b>TIME SLOT</b>", day_style), P("<b>ACTIVITY</b>", day_style), P("<b>DURATION</b>", day_style), P("<b>NOTES</b>", day_style)],
[P("06:00 – 09:00", time_style), P("<b>Session 1 — Theory</b>", cell_bold), P("3 hours", cell_style), P("Morning block — freshest brain. No phone.", cell_style)],
[P("09:00 – 09:30", time_style), P("Break + Breakfast", cell_style), P("30 min", cell_style), P("Hydrate, light snack", cell_style)],
[P("09:30 – 13:00", time_style), P("<b>Session 2 — Theory</b>", cell_bold), P("3.5 hours", cell_style), P("Longest block. Deep reading.", cell_style)],
[P("13:00 – 14:00", time_style), P("Lunch Break", cell_style), P("1 hour", cell_style), P("Proper meal. Short walk recommended.", cell_style)],
[P("14:00 – 15:30", time_style), P("<b>★ PYQ Block</b>", cell_bold), P("1.5 hours", cell_style), P("40-50 Qs strictly from TODAY's topics. Timed.", cell_style)],
[P("15:30 – 16:30", time_style), P("<b>★ BTR Block (Same Day)</b>", cell_bold), P("1 hour", cell_style), P("Re-read source for EVERY wrong/guessed answer. Write 1-line fact.", cell_style)],
[P("16:30 – 17:00", time_style), P("Break + Walk", cell_style), P("30 min", cell_style), P("Step away from desk. Refresh.", cell_style)],
[P("17:00 – 18:30", time_style), P("<b>Session 3 — Theory</b>", cell_bold), P("1.5 hours", cell_style), P("Evening block. Lighter topics or integration.", cell_style)],
[P("18:30 – 19:00", time_style), P("Quick Notes / Flashcards", cell_style), P("30 min", cell_style), P("Write key points, mnemonics, tables.", cell_style)],
[P("19:00 – 20:00", time_style), P("<b>★ BTR Repeat (Prev Day)</b>", cell_bold), P("1 hour", cell_style), P("Re-check YESTERDAY's wrong answers. Spaced repetition.", cell_style)],
[P("20:00 – 21:00", time_style), P("<b>★ Night MCQ Sprint</b>", cell_bold), P("1 hour", cell_style), P("30 mixed MCQs. Mark all ★ twice-wrong questions.", cell_style)],
[P("21:00+", time_style), P("Sleep / Wind Down", cell_style), P("—", cell_style), P("Minimum 7h sleep. Non-negotiable.", cell_style)],
]
daily_table = Table(daily_data, colWidths=[45*mm, 70*mm, 30*mm, 180*mm])
daily_ts = TableStyle([
('BACKGROUND', (0,0), (-1,0), COL_HEADER),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('ALIGN', (0,0), (-1,0), 'CENTER'),
('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#aaaaaa')),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 5),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.white, colors.HexColor('#f0f7ff')]),
])
for i, row in enumerate(daily_data):
if i in [5, 6, 10, 11]:
daily_ts.add('BACKGROUND', (0,i), (-1,i), colors.HexColor('#fff9db'))
daily_table.setStyle(daily_ts)
elements.append(daily_table)
elements.append(Spacer(1, 8*mm))
# BTR Rules box
elements.append(Paragraph("<b>★ BTR RULES (Back To Reading)</b>", ParagraphStyle('btrtitle', fontSize=12, fontName='Helvetica-Bold', textColor=colors.HexColor('#e94560'))))
elements.append(Spacer(1, 2*mm))
rules_data = [
[P("<b>Rule 1</b>", cell_bold), P("Never skip BTR — it is non-negotiable. Every wrong answer must be read back from source.", cell_style)],
[P("<b>Rule 2</b>", cell_bold), P("For each wrong answer, write ONE line in your notebook: the correct fact only.", cell_style)],
[P("<b>Rule 3</b>", cell_bold), P("'BTR Repeat' at 19:00 = Yesterday's wrongs ONLY. Keeps memory consolidation active.", cell_style)],
[P("<b>Rule 4</b>", cell_bold), P("★ Star any question you get wrong TWICE. These become Day 17 priority topics.", cell_style)],
[P("<b>Rule 5</b>", cell_bold), P("Weekly MCQ Sprints (Days 6, 13, 16): 50-60 Qs mixed from ALL subjects studied that week.", cell_style)],
]
rules_table = Table(rules_data, colWidths=[25*mm, 295*mm])
rules_table.setStyle(TableStyle([
('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#aaaaaa')),
('BACKGROUND', (0,0), (0,-1), colors.HexColor('#fff3cd')),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 6),
('ROWBACKGROUNDS', (1,0), (1,-1), [colors.white, colors.HexColor('#f8f9fa')]),
]))
elements.append(rules_table)
elements.append(Spacer(1, 8*mm))
# Subject legend
elements.append(Paragraph("<b>SUBJECT COLOR LEGEND</b>", ParagraphStyle('legtitle', fontSize=11, fontName='Helvetica-Bold', textColor=COL_HEADER)))
elements.append(Spacer(1, 2*mm))
legend_data = [[
Paragraph("■ <font color='#1a4a2e'><b>PHARMACOLOGY</b></font> (Green)", legend_style),
Paragraph("■ <font color='#856404'><b>PATHOLOGY</b></font> (Yellow)", legend_style),
Paragraph("■ <font color='#004085'><b>BIOCHEMISTRY</b></font> (Blue)", legend_style),
Paragraph("■ <font color='#721c24'><b>SURGERY</b></font> (Red)", legend_style),
Paragraph("■ <font color='#383d75'><b>MEDICINE CVS/RS</b></font> (Purple)", legend_style),
Paragraph("■ <font color='#856404'><b>PYQ BLOCK</b></font> (Amber)", legend_style),
Paragraph("■ <font color='#0c5460'><b>BTR BLOCK</b></font> (Teal)", legend_style),
Paragraph("■ <font color='#721c24'><b>MCQ SPRINT</b></font> (Pink)", legend_style),
]]
leg_table = Table(legend_data, colWidths=[40*mm]*8)
leg_table.setStyle(TableStyle([
('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#dddddd')),
('BACKGROUND', (0,0), (0,0), COL_PHARM),
('BACKGROUND', (1,0), (1,0), COL_PATH),
('BACKGROUND', (2,0), (2,0), COL_BIOCHEM),
('BACKGROUND', (3,0), (3,0), COL_SURG),
('BACKGROUND', (4,0), (4,0), COL_MED),
('BACKGROUND', (5,0), (5,0), COL_PYQ),
('BACKGROUND', (6,0), (6,0), COL_BTR),
('BACKGROUND', (7,0), (7,0), COL_MCQ),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 5),
]))
elements.append(leg_table)
elements.append(Spacer(1, 5*mm))
# MCQ Targets
elements.append(Paragraph("<b>MCQ TARGETS</b>", ParagraphStyle('mqtitle', fontSize=11, fontName='Helvetica-Bold', textColor=COL_HEADER)))
elements.append(Spacer(1, 2*mm))
mcq_data = [
[P("<b>Block</b>", day_style), P("<b>Days</b>", day_style), P("<b>PYQ Target</b>", day_style), P("<b>Weekly Sprint</b>", day_style), P("<b>Total</b>", day_style)],
[P("Block 1", cell_style), P("1–6", cell_style), P("240–300 Qs", cell_style), P("50 Qs (Day 6)", cell_style), P("~350", cell_style)],
[P("Block 2", cell_style), P("7–12", cell_style), P("300–360 Qs", cell_style), P("—", cell_style), P("~360", cell_style)],
[P("Block 3", cell_style), P("13–16", cell_style), P("200–240 Qs", cell_style), P("60 Qs (Day 13) + 60 Qs (Day 16)", cell_style), P("~360", cell_style)],
[P("Final", cell_style), P("17–18", cell_style), P("200 MCQ Mock Test", cell_style), P("Grand Analysis", cell_style), P("~200", cell_style)],
[P("<b>TOTAL</b>", cell_bold), P("<b>18 days</b>", cell_bold), P("", cell_style), P("", cell_style), P("<b>~1270+ Qs</b>", cell_bold)],
]
mcq_table = Table(mcq_data, colWidths=[30*mm, 20*mm, 50*mm, 100*mm, 25*mm])
mcq_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), COL_HEADER),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#aaaaaa')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.white, colors.HexColor('#f0f7ff')]),
('BACKGROUND', (0,5), (-1,5), colors.HexColor('#fff3cd')),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
('ALIGN', (0,0), (-1,0), 'CENTER'),
('ALIGN', (4,0), (4,-1), 'CENTER'),
]))
elements.append(mcq_table)
elements.append(Spacer(1, 5*mm))
elements.append(Paragraph(
"<b>Best of luck! Stay consistent, trust the process, and crack NEET PG! 🔥</b>",
ParagraphStyle('footer', fontSize=12, fontName='Helvetica-Bold',
alignment=TA_CENTER, textColor=colors.HexColor('#e94560'))
))
doc.build(elements)
print(f"PDF generated: {OUTPUT}")
cd /home/daytona/workspace/neet-schedule && python generate_schedule.py 2>&1
ls -lh /home/daytona/workspace/neet-schedule/NEET_PG_18Day_Schedule.pdf
NEET PG 18Day Schedule
PDF Document · PDF
Actually this looks vasst can u make 2 / subject ay with adequate time for PYQ and RR and gangT and Discussion
So you want 2 subjects per day (instead of 3). Which 2 subjects should be paired together on the same day? Or should I decide the pairing? · What is 'GangT' in your schedule? (confirming what you mean) · What does 'RR' mean here?
| Pairing | Why |
|---|---|
| Pharmacology + Medicine | Drugs link directly to CVS/RS clinical context |
| Pathology + Biochemistry | Metabolic + structural disease overlap heavily |
| Surgery (standalone) | Needs focused surgical reasoning - no dilution |
06:00 – 08:30 ┃ Subject 1 — Theory (2.5h)
08:30 – 09:30 ┃ GangT — Dr. Ganga Video Lecture (1h) [Subject 1 topic]
09:30 – 10:00 ┃ Break
10:00 – 12:30 ┃ Subject 2 — Theory (2.5h)
12:30 – 13:00 ┃ GangT — Dr. Ganga Video Lecture (30 min) [Subject 2 topic]
13:00 – 14:00 ┃ Lunch
14:00 – 15:00 ┃ PYQ Block (1h) — 30–40 Qs from Subject 1
15:00 – 15:30 ┃ RR — Rapid Revision of Subject 1 wrongs (30 min)
15:30 – 16:30 ┃ PYQ Block (1h) — 30–40 Qs from Subject 2
16:30 – 17:00 ┃ RR — Rapid Revision of Subject 2 wrongs (30 min)
17:00 – 17:30 ┃ Break
17:30 – 18:30 ┃ Discussion (1h) — Discuss both subjects' tough topics
18:30 – 19:00 ┃ Quick Notes / Flashcards
19:00 – 20:00 ┃ Night MCQ Sprint — 30 mixed Qs (both subjects)
20:00 ┃ Wind down
| Day | Date | Subject 1 (06:00–09:30) | Subject 2 (10:00–13:00) | PYQ Focus | Discussion Topic |
|---|---|---|---|---|---|
| 1 | Mon Jul 13 | BIOCHEM — Vitamins (15×): A,D,E,K,B-complex,C | PATHOLOGY — Genetics & Syndrome (8×) | Biochem Vitamins (30Q) + Path Genetics (30Q) | Vitamin deficiency clinical cases vs chromosomal syndrome features |
| 2 | Tue Jul 14 | MEDICINE CVS — ECG, Arrhythmias, Heart Blocks (9×) ★ | PHARMACOLOGY — Antihypertensives (7×) + Antimuscarinic (7×) | Med ECG (40Q) + Pharm Anti-HTN (30Q) | ECG pattern recognition + drug mechanisms for HTN |
| 3 | Wed Jul 15 | PATHOLOGY — Leukaemia (8×): ALL,AML,CLL,CML markers | BIOCHEM — Lysosomal storage (6×) + Glycogen storage (4×) | Path Leukaemia (35Q) + Biochem storage (30Q) | Leukemia markers vs enzyme deficiency diseases |
| 4 | Thu Jul 16 | PHARMACOLOGY — Antiarrhythmic (6×) + Anticoagulants (5×) | MEDICINE CVS — Valvular Heart Disease (4×) + ABG & RTA (5×) | Pharm antiarrhythmic (35Q) + Med Valvular (30Q) | Anti-arrhythmic drug + ECG correlation |
| 5 | Fri Jul 17 | SURGERY — Breast Cancer (5×) + Inguinal Hernia (5×) | SURGERY — Bladder Ca (4×) + Oral Cavity Ca (4×) + Triage (4×) | Surgery cancers (40Q) + Surgery emergency (30Q) | Staging systems + surgical approaches |
| 6 | Sat Jul 18 | PHARMACOLOGY — Anti-TB (5×) + Antiemetics (5×) + NSAIDs (5×) | PATHOLOGY — Intestinal disorders (5×) + Lymphoma (5×) | Pharm (35Q) + Path Lymphoma (30Q) | TB drug regimens + GI pathology correlations |
| Day | Date | Subject 1 (06:00–09:30) | Subject 2 (10:00–13:00) | PYQ Focus | Discussion Topic |
|---|---|---|---|---|---|
| 7 | Sun Jul 19 | PATHOLOGY — Glomerular diseases (4×) + Thyroid (4×) + Tumors (4×) | BIOCHEM — Alkaptonuria (3×) + Familial hypercholest. (3×) + Homocystinuria (2×) | Path Glomerular/Thyroid (35Q) + Biochem (25Q) | Nephrotic vs nephritic + metabolic disease features |
| 8 | Mon Jul 20 | MEDICINE CVS — Vasculitis (4×) + CAD (3×) + Disorders of Aorta (3×) | PHARMACOLOGY — Pharmacokinetics & PD (4×) + Antifungal (3×) + Antimalarials (3×) | Med CVS (35Q) + Pharm PK (30Q) | Aortic disease spectrum + PK/PD in clinical prescribing |
| 9 | Tue Jul 21 | SURGERY — Fistula in Ano (3×) + GCS (3×) + Hydatid (3×) + Oesophageal Varices (3×) | SURGERY — Peripheral art. disease (3×) + Rectal Ca (3×) + SAH (3×) + Cystourethroscope (3×) | Surgery Part 1 (35Q) + Surgery Part 2 (35Q) | Surgical emergencies rapid fire |
| 10 | Wed Jul 22 | MEDICINE RS — Pleural disease (3×) + JVP (3×) + Malabsorption (3×) | PATHOLOGY — Coagulation (3×) + Inflammation (3×) + Iron def (3×) + Macrocytic (3×) | Med RS (35Q) + Path anaemias (35Q) | Pleural fluid analysis + coagulation cascade |
| 11 | Thu Jul 23 | PHARMACOLOGY — Antimicrobials (3×) + Antiparkinsons (3×) + Antiemetics RR | BIOCHEM — Metabolic cycles (2×) + Enzyme Inhibition (2×) + Minerals (2×) | Pharm (30Q) + Biochem (25Q) | Antibiotic spectrum + metabolic pathway diseases |
| 12 | Fri Jul 24 | PATHOLOGY — Multiple Myeloma & Amyloid (3×) + Carcinoma lung (4×) + Disorders of Hb (4×) | MEDICINE CVS — Heart Failure (3×) + Electrolyte disorders (3×) + Cirrhosis (3×) | Path (35Q) + Med CVS (35Q) | Paraprotein diseases + clinical HF management |
| Day | Date | Subject 1 — R1 Revision | Subject 2 — R1 Revision | PYQ Sprint | Discussion |
|---|---|---|---|---|---|
| 13 | Sat Jul 25 | PHARM R1 — Antihypertensives + Antiarrhythmic + Anticoagulants (top 3 × frequency) | MED CVS R1 — ECG + Valvular + HF + CAD integrated | Pharm 50Q mixed | ECG + drug correlation |
| 14 | Sun Jul 26 | PATH R1 — Genetics + Leukaemia + Lymphoma + Myeloma (haematology block) | BIOCHEM R1 — Vitamins + Lysosomal + Glycogen + all storage disorders | Path 50Q mixed | Haematology rapid fire |
| 15 | Mon Jul 27 | SURGERY R1 — All 16 topics rapid fire: Cancer group (Breast, Hernia, Bladder, Oral, Penile, Rectal) | SURGERY R1 — Emergency group (Trauma, GCS, SAH, Aortic, HV Perf, Varices, Leriche's, Hydatid) | Surgery 60Q full | Surgical decision-making |
| 16 | Tue Jul 28 | PHARM R2 — Anti-TB + Antiemetics + NSAIDs + PK/PD + Antifungal + Antimalarials + Antimicrobials | MED RS R1 — Pleural disease + ABG + Malabsorption + JVP full revision | Pharm 40Q + Med RS 30Q | Drug side effect clusters |
| Day | Date | Morning | Afternoon | Evening |
|---|---|---|---|---|
| 17 | Wed Jul 29 | Path R2 (all 14 topics buzzwords) + Biochem R2 (all 9 topics tables) | GangT Marathon — Watch key Dr. Ganga lectures back-to-back (2h) + PYQ Sprint 60Q from Dr. Ganga predicted list | Discussion — Go through all ★ twice-wrong questions. Final RR of weak spots. Night: 30 mixed MCQs |
| 18 | Thu Jul 30 | Pharm R3 (DOC table + side effects) + Surgery R2 rapid fire | 200 MCQ Grand Mock Test (timed, exam conditions) | Full Test Analysis — Subject-wise score + BTR of all mock wrongs + Top 20 GangT topics final read |
GangT (Ganga Video) → 1.5h daily (2 slots: 1h + 30 min)
PYQ → 2h daily (2 slots of 1h each)
RR (Rapid Revision) → 1h daily (2 slots of 30 min each)
Discussion → 1h daily (1 slot)
Theory → 5h daily (2 subjects × 2.5h)
Night MCQ Sprint → 1h daily (30 Qs mixed)
─────────────────────────────────────────────
TOTAL → 10.5h/day
Yes, generate the 2-subject/day PDF now
One request plddont give railwa y tim
No no pls don't give railway timing give 12 hrs time
Nothing give asame as before with including timing
~/neet-schedule/generate_schedule_v2.py
from reportlab.lib.pagesizes import A3, landscape
from reportlab.lib import colors
from reportlab.lib.units import mm
from reportlab.platypus import (SimpleDocTemplate, Table, TableStyle,
Paragraph, Spacer, HRFlowable, PageBreak)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
OUTPUT = "/home/daytona/workspace/neet-schedule/NEET_PG_18Day_v2.pdf"
doc = SimpleDocTemplate(OUTPUT, pagesize=landscape(A3),
leftMargin=8*mm, rightMargin=8*mm,
topMargin=8*mm, bottomMargin=8*mm)
# ── Styles ─────────────────────────────────────────────────────────────────
title_sty = ParagraphStyle('T', fontSize=20, fontName='Helvetica-Bold',
alignment=TA_CENTER, textColor=colors.HexColor('#1a1a2e'), spaceAfter=3)
sub_sty = ParagraphStyle('S', fontSize=9, fontName='Helvetica',
alignment=TA_CENTER, textColor=colors.HexColor('#e94560'), spaceAfter=6)
hdr_sty = ParagraphStyle('H', fontSize=8, fontName='Helvetica-Bold',
alignment=TA_CENTER, textColor=colors.white)
blk_sty = ParagraphStyle('B', fontSize=9, fontName='Helvetica-Bold',
alignment=TA_CENTER, textColor=colors.white)
cell_sty = ParagraphStyle('C', fontSize=7.2,fontName='Helvetica', leading=9.5,
textColor=colors.HexColor('#1a1a2e'))
cellb_sty = ParagraphStyle('CB',fontSize=7.2,fontName='Helvetica-Bold', leading=9.5,
textColor=colors.HexColor('#1a1a2e'))
day_sty = ParagraphStyle('D', fontSize=8.5,fontName='Helvetica-Bold',
alignment=TA_CENTER, textColor=colors.white)
time_sty = ParagraphStyle('TM',fontSize=7, fontName='Helvetica-Bold',
alignment=TA_CENTER, textColor=colors.HexColor('#0f3460'))
leg_sty = ParagraphStyle('L', fontSize=8, fontName='Helvetica', leading=11)
# ── Colours ────────────────────────────────────────────────────────────────
C_PHARM = colors.HexColor('#d4edda')
C_PATH = colors.HexColor('#fff3cd')
C_BIO = colors.HexColor('#cce5ff')
C_SURG = colors.HexColor('#f8d7da')
C_MED = colors.HexColor('#e2d9f3')
C_GANG = colors.HexColor('#ffe0b2') # orange tint – GangT
C_PYQ = colors.HexColor('#ffeeba') # amber – PYQ
C_RR = colors.HexColor('#d1ecf1') # teal – RR
C_DISC = colors.HexColor('#f3e5f5') # lavender – Discussion
C_MCQ = colors.HexColor('#f5c6cb') # pink – Night MCQ
C_HDR = colors.HexColor('#1a1a2e')
C_DAY = colors.HexColor('#e94560')
C_BLK = {1: colors.HexColor('#0f3460'),
7: colors.HexColor('#16213e'),
13: colors.HexColor('#1a4a2e'),
17: colors.HexColor('#4a0f3c')}
BLK_LABEL = {
1: "BLOCK 1 — DAYS 1–6 | Highest Priority Topics (5× – 15×)",
7: "BLOCK 2 — DAYS 7–12 | Core Clinical Depth (3× – 5×)",
13: "BLOCK 3 — DAYS 13–16 | Revision Cycles (RR + GangT Heavy)",
17: "BLOCK 4 — DAYS 17–18 | Grand Revision + Mock Test",
}
def P(txt, sty=cell_sty):
return Paragraph(txt, sty)
# ── Schedule data ──────────────────────────────────────────────────────────
# (day, weekday\ndate, subj1_label, subj1_topics, col1,
# subj2_label, subj2_topics, col2,
# pyq_text, rr_text, gang_text, disc_text, night_text)
DAYS = [
# ── BLOCK 1 ────────────────────────────────────────────────────────────
(1,"Mon\nJul 13",
"BIOCHEM","Vitamins (15×)\nAll fat-sol: A,D,E,K\nAll water-sol: B1–B12,C\nDeficiency diseases",C_BIO,
"PATHOLOGY","Genetics & Syndrome (8×)\nChromosomal disorders\nDown, Turner, Klinefelter\nKey syndrome features",C_PATH,
"Biochem Vitamins\n30 Qs\n+\nPath Genetics\n30 Qs",
"Re-read vitamin\ndeficiency facts\n+ syndrome table",
"GangT Slot:\nVitamins lecture\n+ Genetics video",
"Vitamin deficiency\nclinical cases vs\nsyndrome features",
"30 Mixed Qs\nBiochem + Path"),
(2,"Tue\nJul 14",
"MED CVS","ECG, Arrhythmias,\nHeart Blocks (9×) ★\nMost repeated topic!\nAll ECG patterns",C_MED,
"PHARMACOLOGY","Antihypertensives (7×)\nAntimuscarinic (7×)\nMechanisms + DOC\nSide effects",C_PHARM,
"Med ECG\n40 Qs\n+\nPharm Anti-HTN\n30 Qs",
"ECG pattern\nweak spots\n+ drug mechanisms",
"GangT Slot:\nECG lecture\n+ HTN drugs video",
"ECG pattern\nrecognition +\ndrug-disease link",
"30 Mixed Qs\nMed + Pharm"),
(3,"Wed\nJul 15",
"PATHOLOGY","Leukaemia (8×)\nALL, AML, CLL, CML\nSurface markers\nClassification",C_PATH,
"BIOCHEM","Lysosomal storage (6×)\nGlycogen storage (4×)\nEnzyme deficiencies\nKey lab findings",C_BIO,
"Path Leukaemia\n35 Qs\n+\nBiochem Storage\n30 Qs",
"Leukemia markers\n+ enzyme\ndeficiency table",
"GangT Slot:\nLeukaemia lecture\n+ Storage dis. video",
"Leukemia markers\nvs enzyme\ndeficiency diseases",
"30 Mixed Qs\nPath + Biochem"),
(4,"Thu\nJul 16",
"PHARMACOLOGY","Antiarrhythmic (6×)\nAnticoagulants &\nFibrinolytics (5×)\nMOA + side effects",C_PHARM,
"MED CVS","Valvular Heart\nDisease (4×)\nABG & RTA (5×)\nManagement keys",C_MED,
"Pharm Antiarrhyth.\n35 Qs\n+\nMed Valvular\n30 Qs",
"Anti-arrhythmic\ndrug class review\n+ ABG steps",
"GangT Slot:\nAnti-arrhythmic\n+ Valvular lecture",
"Anti-arrhythmic\ndrug + ECG\ncorrelation",
"30 Mixed Qs\nPharm + Med"),
(5,"Fri\nJul 17",
"SURGERY","Breast Cancer (5×)\nInguinal Hernia (5×)\nBladder Ca (4×)\nOral Cavity Ca (4×)",C_SURG,
"SURGERY","Penile Ca (4×)\nTriage / Trauma (4×)\nAortic Dissection (3×)\nHollow Viscus Perf (3×)",C_SURG,
"Surgery Part 1\n40 Qs\n+\nSurgery Part 2\n35 Qs",
"Staging systems\n+ surgical\napproaches review",
"GangT Slot:\nBreast + Hernia\nlecture video",
"Staging systems +\nsurgical decision-\nmaking",
"30 Surgery Qs\nRapid fire"),
(6,"Sat\nJul 18",
"PHARMACOLOGY","Anti-TB (5×)\nAntiemetics (5×)\nNSAIDs (5×)\nAnticoagulants RR",C_PHARM,
"PATHOLOGY","Intestinal disorders (5×)\nLymphoma (5×)\nCarcinoma lung (4×)\nThyroid pathology (4×)",C_PATH,
"Pharm 35 Qs\n+\nPath Lymphoma\n+ Intestinal 35 Qs",
"TB drug side\neffects + lymphoma\nclassification",
"GangT Slot:\nAnti-TB lecture\n+ Lymphoma video",
"TB regimens +\nGI + Lymphoma\nclinical correlates",
"★ WEEKLY SPRINT\n60 Mixed All Subjects"),
# ── BLOCK 2 ────────────────────────────────────────────────────────────
(7,"Sun\nJul 19",
"PATHOLOGY","Glomerular diseases (4×)\nThyroid (4×)\nTumors (4×)\nDisorders of Hb (4×)",C_PATH,
"BIOCHEM","Alkaptonuria (3×)\nFamilial hypercholest. (3×)\nHomocystinuria (2×)\nMetabolic cycles (2×)",C_BIO,
"Path Glomerular\n35 Qs\n+\nBiochem (25 Qs)",
"GN types table\n+ metabolic\ndisease features",
"GangT Slot:\nGlomerular disease\n+ Biochem lecture",
"Nephrotic vs\nnephritic +\nmetabolic diseases",
"30 Mixed Qs\nPath + Biochem"),
(8,"Mon\nJul 20",
"MED CVS","Vasculitis (4×)\nCoronary artery dis. (3×)\nDisorders of Aorta (3×)\nHeart Failure (3×)",C_MED,
"PHARMACOLOGY","Pharmacokinetics &\nPD (4×)\nAntifungal (3×)\nAntimalarials (3×)",C_PHARM,
"Med CVS 35 Qs\n+\nPharm PK/PD\n30 Qs",
"Aortic disease\nspectrum + PK\nconcepts review",
"GangT Slot:\nVasculitis + CAD\nlecture video",
"Aortic disease\nspectrum + PK/PD\nclinical prescribing",
"30 Mixed Qs\nMed + Pharm"),
(9,"Tue\nJul 21",
"SURGERY","Fistula in Ano (3×)\nGlasgow Coma Scale (3×)\nHydatid Cyst (3×)\nOesophageal Varices (3×)",C_SURG,
"SURGERY","Peripheral art. dis. (3×)\nRectal Carcinoma (3×)\nSAH (3×)\nCystourethroscope (3×)",C_SURG,
"Surgery Part 1\n35 Qs\n+\nSurgery Part 2\n35 Qs",
"Surgical emergency\nkey facts + SAH\nmanagement steps",
"GangT Slot:\nSurgery rapid\nrevision lecture",
"Surgical emergencies\nrapid fire Q&A\ndiscussion",
"30 Surgery Qs"),
(10,"Wed\nJul 22",
"MED RS","Pleural disease (3×)\nJVP (3×)\nMalabsorption (3×)\nABG deep dive",C_MED,
"PATHOLOGY","Coagulation dis. (3×)\nInflammation (3×)\nIron def anaemia (3×)\nMacrocytic anaemia (3×)",C_PATH,
"Med RS 35 Qs\n+\nPath Anaemias\n35 Qs",
"Pleural fluid\nanalysis + coag\ncascade table",
"GangT Slot:\nPleural disease\n+ Anaemia lecture",
"Pleural fluid\nanalysis + coag\ncascade discussion",
"30 Mixed Qs\nMed RS + Path"),
(11,"Thu\nJul 23",
"PHARMACOLOGY","Antimicrobials (3×)\nAntiparkinsons (3×)\nAntiemetics RR\nAntifungal RR",C_PHARM,
"BIOCHEM","Enzyme Inhibition (2×)\nMinerals (2×)\nFamilial hypercholest. RR\nHomocystinuria RR",C_BIO,
"Pharm 30 Qs\n+\nBiochem 25 Qs",
"Antibiotic spectrum\ntable + mineral\ndeficiency chart",
"GangT Slot:\nAntimicrobials\n+ Biochem lecture",
"Antibiotic spectrum\n+ metabolic\npathway diseases",
"30 Mixed Qs\nPharm + Biochem"),
(12,"Fri\nJul 24",
"PATHOLOGY","Multiple Myeloma &\nAmyloid (3×)\nCoagulation dis. RR\nInflammation RR",C_PATH,
"MED CVS","Electrolyte disorders (3×)\nCirrhosis + SBP (3×)\nHeart Failure RR\nCAD RR",C_MED,
"Path 35 Qs\n+\nMed CVS 35 Qs",
"Myeloma criteria\n+ electrolyte\ndisorder review",
"GangT Slot:\nMyeloma + Cirrhosis\nlecture video",
"Paraprotein diseases\n+ clinical HF\nmanagement",
"★ WEEKLY SPRINT\n60 Mixed All Subjects"),
# ── BLOCK 3 ────────────────────────────────────────────────────────────
(13,"Sat\nJul 25",
"PHARM R1","Antihypertensives +\nAntiarrhythmic +\nAnticoagulants\nTop 3 by frequency",C_PHARM,
"MED CVS R1","ECG + Valvular HD +\nHF + CAD\nIntegrated revision\nAll patterns",C_MED,
"Pharm 50 Qs\nmixed",
"Pharm weak\ndrug mechanisms\n+ ECG drug link",
"GangT Slot:\nPharm top 3\nrevision lecture",
"ECG + drug\ncorrelation\nrapid fire",
"30 Mixed Qs\nPharm + Med"),
(14,"Sun\nJul 26",
"PATH R1","Genetics + Leukaemia +\nLymphoma + Myeloma\nHaematology block\nAll markers",C_PATH,
"BIOCHEM R1","Vitamins + Lysosomal\n+ Glycogen +\nAll storage disorders\nFull revision",C_BIO,
"Path 50 Qs\nmixed",
"Haematology\nmarkers table\n+ vitamin chart",
"GangT Slot:\nHaematology\nrevision lecture",
"Haematology\nrapid fire\nQ&A",
"30 Mixed Qs\nPath + Biochem"),
(15,"Mon\nJul 27",
"SURGERY R1","Cancer group:\nBreast + Hernia +\nBladder + Oral +\nPenile + Rectal Ca",C_SURG,
"SURGERY R1","Emergency group:\nTrauma + GCS + SAH +\nAortic + HV Perf +\nVarices + Leriche's",C_SURG,
"Surgery 60 Qs\nAll 16 topics",
"Staging systems\n+ surgical\nindications review",
"GangT Slot:\nSurgery full\nrevision lecture",
"Surgical decision-\nmaking rapid\nfire Q&A",
"30 Surgery Qs"),
(16,"Tue\nJul 28",
"PHARM R2","Anti-TB + NSAIDs +\nPK/PD + Antifungal +\nAntimalarials +\nAntimicrobials",C_PHARM,
"MED RS R1","Pleural disease +\nABG + Malabsorption\n+ JVP\nFull revision",C_MED,
"Pharm 40 Qs\n+\nMed RS 30 Qs",
"Drug side-effect\nclusters table\n+ ABG steps",
"GangT Slot:\nMed RS + Pharm\nrevision lecture",
"Drug side-effect\nclusters +\nABG cases",
"★ WEEKLY SPRINT\n60 Mixed All Subjects"),
# ── BLOCK 4 ────────────────────────────────────────────────────────────
(17,"Wed\nJul 29",
"PATH R2 +\nBIOCHEM R2","Path: all 14 topics\nbuzzwords + morphology\nBiochem: all 9 topics\ntables + enzyme charts",C_PATH,
"PHARM R3 +\nSURG R2","Pharm: DOC table +\nside-effects master\nSurg: all 16 topics\nrapid fire key facts",C_PHARM,
"★ Starred hard\nQs from all\nweeks (60 Qs)",
"All remaining\nweak areas\nfinal read",
"GangT Marathon:\nDr. Ganga key\nlectures 2h",
"All ★ twice-wrong\nquestions\ndiscussion",
"30 Mixed Qs\nAll subjects"),
(18,"Thu\nJul 30",
"MOCK TEST\nPart 1","100 MCQs timed\nExam conditions\nDr. Ganga predicted\ntopics strictly",C_MCQ,
"MOCK TEST\nPart 2","100 MCQs timed\nFull test analysis\nSubject-wise score\nWeak spot ID",C_MCQ,
"200 MCQ\nGrand Mock\n(timed)",
"Re-read ALL\nmock wrong\nanswers",
"GangT Final:\nTop 20 Ganga\npredicted topics",
"Mock test analysis\n+ subject-wise\nweak spots",
"Final 20 Qs\nDr. Ganga list"),
]
C_MCQ2 = colors.HexColor('#ffeeba')
# ── Build table ────────────────────────────────────────────────────────────
elements = []
# Title
elements.append(Paragraph("NEET PG / INI-CET — 18-DAY MASTER SCHEDULE", title_sty))
elements.append(Paragraph(
"Jul 13 – Jul 30, 2026 | 2 Subjects/Day | 12 hrs/day | "
"Dr. Ganga's 180 Topics | PYQ + RR + GangT + Discussion every day",
sub_sty))
elements.append(HRFlowable(width="100%", thickness=2, color=colors.HexColor('#e94560')))
elements.append(Spacer(1, 3*mm))
# Column headers
HEADERS = [
"DAY\n& DATE",
"SLOT 1 — Theory\n(2.5 h)",
"GangT\n(45 min)",
"SLOT 2 — Theory\n(2.5 h)",
"GangT\n(30 min)",
"PYQ\n(2 × 1 h)",
"RR — Rapid\nRevision (1 h)",
"Discussion\n(1 h)",
"Night MCQ\nSprint (1 h)",
]
hdr_row = [P(f"<b>{h}</b>", hdr_sty) for h in HEADERS]
table_data = [hdr_row]
row_meta = {} # row_index -> colour tuple or block colour
for (day, date, s1, t1, c1, s2, t2, c2, pyq, rr, gang, disc, night) in DAYS:
# block separator
if day in BLK_LABEL:
sep = [P(f"<b>{BLK_LABEL[day]}</b>", blk_sty)] + [P("")]*8
table_data.append(sep)
row_meta[len(table_data)-1] = ("blk", C_BLK[day])
row = [
P(f"<b>Day {day}</b>\n{date}", day_sty),
P(f"<b><font color='#1a4a2e'>{s1}</font></b><br/>{t1.replace(chr(10),'<br/>')}", cell_sty),
P(gang.split('\n')[0] + "<br/>" + "<br/>".join(gang.split('\n')[1:]), cell_sty),
P(f"<b><font color='#1a4a2e'>{s2}</font></b><br/>{t2.replace(chr(10),'<br/>')}", cell_sty),
P("<br/>".join(gang.split('\n')[1:2]), cell_sty), # 2nd gangt note
P(pyq.replace(chr(10),'<br/>'), cell_sty),
P(rr.replace(chr(10),'<br/>'), cell_sty),
P(disc.replace(chr(10),'<br/>'), cell_sty),
P(night.replace(chr(10),'<br/>'),cell_sty),
]
table_data.append(row)
row_meta[len(table_data)-1] = ("data", c1, c2)
# Col widths — A3 landscape usable ~405 mm
CW = [18*mm, 62*mm, 26*mm, 62*mm, 22*mm, 36*mm, 34*mm, 40*mm, 32*mm]
tbl = Table(table_data, colWidths=CW, repeatRows=1)
ts = TableStyle([
# header row
('BACKGROUND', (0,0), (-1,0), C_HDR),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,0), 7.5),
('ALIGN', (0,0), (-1,0), 'CENTER'),
('VALIGN', (0,0), (-1,-1),'TOP'),
('GRID', (0,0), (-1,-1), 0.35, colors.HexColor('#cccccc')),
('TOPPADDING', (0,0), (-1,-1), 3),
('BOTTOMPADDING',(0,0),(-1,-1),3),
('LEFTPADDING',(0,0), (-1,-1), 3),
('RIGHTPADDING',(0,0),(-1,-1), 3),
('FONTSIZE', (0,1), (-1,-1), 7.2),
])
for i, row in enumerate(table_data):
if i == 0:
continue
if i not in row_meta:
continue
meta = row_meta[i]
if meta[0] == "blk":
bc = meta[1]
ts.add('BACKGROUND', (0,i), (-1,i), bc)
ts.add('TEXTCOLOR', (0,i), (-1,i), colors.white)
ts.add('SPAN', (0,i), (-1,i))
ts.add('ALIGN', (0,i), (-1,i), 'CENTER')
ts.add('FONTNAME', (0,i), (-1,i), 'Helvetica-Bold')
ts.add('FONTSIZE', (0,i), (-1,i), 8.5)
ts.add('TOPPADDING', (0,i), (-1,i), 4)
ts.add('BOTTOMPADDING',(0,i),(-1,i),4)
elif meta[0] == "data":
_, c1, c2 = meta
ts.add('BACKGROUND', (0,i), (0,i), C_DAY)
ts.add('TEXTCOLOR', (0,i), (0,i), colors.white)
ts.add('ALIGN', (0,i), (0,i), 'CENTER')
ts.add('BACKGROUND', (1,i), (1,i), c1)
ts.add('BACKGROUND', (2,i), (2,i), C_GANG)
ts.add('BACKGROUND', (3,i), (3,i), c2)
ts.add('BACKGROUND', (4,i), (4,i), C_GANG)
ts.add('BACKGROUND', (5,i), (5,i), C_PYQ)
ts.add('BACKGROUND', (6,i), (6,i), C_RR)
ts.add('BACKGROUND', (7,i), (7,i), C_DISC)
ts.add('BACKGROUND', (8,i), (8,i), C_MCQ)
# Alternating very light stripe for readability (only data rows)
tbl.setStyle(ts)
elements.append(tbl)
# ── PAGE 2 — Daily Structure + Legend + Rules ──────────────────────────────
elements.append(PageBreak())
elements.append(Paragraph("DAILY SCHEDULE STRUCTURE + STUDY RULES", title_sty))
elements.append(HRFlowable(width="100%", thickness=2, color=colors.HexColor('#e94560')))
elements.append(Spacer(1, 4*mm))
# Daily timetable
dt_data = [
[P("<b>SLOT</b>", hdr_sty), P("<b>ACTIVITY</b>", hdr_sty),
P("<b>DURATION</b>", hdr_sty), P("<b>WHAT TO DO</b>", hdr_sty)],
[P("Slot 1", time_sty),
P("<b>Subject 1 — Theory</b>", cellb_sty), P("2.5 h", cell_sty),
P("Deep reading of Topic 1. Make short notes & mnemonics.", cell_sty)],
[P("GangT #1", time_sty),
P("<b>Dr. Ganga Video Lecture — Subject 1</b>", cellb_sty), P("45 min", cell_sty),
P("Watch Dr. Ganga lecture for the same topic. Pause & note high-yield points.", cell_sty)],
[P("Break", time_sty),
P("Short Break", cell_sty), P("30 min", cell_sty),
P("Hydrate. Step away from desk. Light snack.", cell_sty)],
[P("Slot 2", time_sty),
P("<b>Subject 2 — Theory</b>", cellb_sty), P("2.5 h", cell_sty),
P("Deep reading of Topic 2. Make short notes & mnemonics.", cell_sty)],
[P("GangT #2", time_sty),
P("<b>Dr. Ganga Video Lecture — Subject 2</b>", cellb_sty), P("30 min", cell_sty),
P("Quick GangT for Topic 2 — key points, images, tables.", cell_sty)],
[P("Lunch", time_sty),
P("Lunch Break", cell_sty), P("1 h", cell_sty),
P("Proper meal + short walk. No studying.", cell_sty)],
[P("PYQ #1", time_sty),
P("<b>★ PYQ Block — Subject 1</b>", cellb_sty), P("1 h", cell_sty),
P("30–40 NEET PG PYQs strictly from today's Subject 1 topics. Timed. Circle all guesses.", cell_sty)],
[P("RR #1", time_sty),
P("<b>★ RR — Rapid Revision Subject 1</b>", cellb_sty), P("30 min", cell_sty),
P("Re-read notes for every wrong/guessed answer. Write ONE correct fact per wrong Q.", cell_sty)],
[P("PYQ #2", time_sty),
P("<b>★ PYQ Block — Subject 2</b>", cellb_sty), P("1 h", cell_sty),
P("30–40 NEET PG PYQs from today's Subject 2 topics. Timed. Circle all guesses.", cell_sty)],
[P("RR #2", time_sty),
P("<b>★ RR — Rapid Revision Subject 2</b>", cellb_sty), P("30 min", cell_sty),
P("Re-read notes for every wrong/guessed answer. Write ONE correct fact per wrong Q.", cell_sty)],
[P("Break", time_sty),
P("Short Break", cell_sty), P("30 min", cell_sty),
P("Walk / stretch. Mental reset.", cell_sty)],
[P("Discussion", time_sty),
P("<b>★ Discussion Slot</b>", cellb_sty), P("1 h", cell_sty),
P("Discuss both topics — tricky MCQs, image-based Qs, high-yield clinical correlations.", cell_sty)],
[P("Night MCQ", time_sty),
P("<b>★ Night MCQ Sprint</b>", cellb_sty), P("1 h", cell_sty),
P("30 mixed MCQs from both subjects. Mark ★ any Q wrong twice — these are Day 17 priority.", cell_sty)],
[P("TOTAL", time_sty),
P("<b>12 hours of focused study</b>", cellb_sty), P("<b>12 h</b>", cellb_sty),
P("Theory 5h + GangT 1.25h + PYQ 2h + RR 1h + Discussion 1h + MCQ 1h + Breaks 1.5h", cell_sty)],
]
dt_tbl = Table(dt_data, colWidths=[28*mm, 72*mm, 22*mm, 208*mm])
dt_ts = TableStyle([
('BACKGROUND', (0,0), (-1,0), C_HDR),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('ALIGN', (0,0), (-1,0), 'CENTER'),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#aaaaaa')),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING',(0,0),(-1,-1),4),
('LEFTPADDING', (0,0), (-1,-1), 5),
('ROWBACKGROUNDS',(0,1),(-1,-2),[colors.white, colors.HexColor('#f8f9fa')]),
('BACKGROUND', (0,-1),(-1,-1), colors.HexColor('#fff3cd')),
('FONTNAME', (0,-1),(-1,-1), 'Helvetica-Bold'),
])
# Highlight key slots
for r in [1, 2, 4, 5, 7, 8, 9, 10, 12, 13]:
colours_map = {1:C_BIO, 2:C_GANG, 4:C_MED, 5:C_GANG,
7:C_PYQ, 8:C_RR, 9:C_PYQ, 10:C_RR,
12:C_DISC, 13:C_MCQ}
if r in colours_map:
dt_ts.add('BACKGROUND', (0,r),(1,r), colours_map[r])
dt_tbl.setStyle(dt_ts)
elements.append(dt_tbl)
elements.append(Spacer(1, 5*mm))
# ── Rules box ─────────────────────────────────────────────────────────────
elements.append(Paragraph("<b>KEY STUDY RULES</b>",
ParagraphStyle('rt', fontSize=11, fontName='Helvetica-Bold',
textColor=colors.HexColor('#e94560'))))
elements.append(Spacer(1, 2*mm))
rules = [
("<b>PYQ Rule</b>",
"Always do PYQ strictly from today's topics only — never random. Timed sessions. Circle every guessed answer."),
("<b>RR Rule</b>",
"RR = go back to notes immediately after PYQ. Write ONE corrected fact per wrong answer in your notebook."),
("<b>GangT Rule</b>",
"Watch Dr. Ganga lecture AFTER reading theory — not before. Pause at each key point, note it down."),
("<b>Discussion Rule</b>",
"Discussion = explain topics to a peer OR self-explain out loud. Focus on questions you got wrong in PYQ."),
("<b>★ Star Rule</b>",
"Any question wrong TWICE gets a ★. All starred questions become Day 17 morning priority revision."),
("<b>Weekly Sprint</b>",
"Days 6, 12, 16: 60-question mixed sprint from ALL subjects covered that week. Score yourself."),
("<b>Day 18 Mock</b>",
"200 MCQs under strict exam conditions. Full analysis after. BTR for all mock wrongs before sleeping."),
]
r_data = [[P(a, cellb_sty), P(b, cell_sty)] for a, b in rules]
r_tbl = Table(r_data, colWidths=[32*mm, 298*mm])
r_tbl.setStyle(TableStyle([
('GRID', (0,0),(-1,-1), 0.4, colors.HexColor('#cccccc')),
('BACKGROUND', (0,0),(0,-1), colors.HexColor('#fff3cd')),
('ROWBACKGROUNDS',(1,0),(1,-1),[colors.white, colors.HexColor('#f0f7ff')]),
('VALIGN', (0,0),(-1,-1),'MIDDLE'),
('TOPPADDING', (0,0),(-1,-1),4),
('BOTTOMPADDING',(0,0),(-1,-1),4),
('LEFTPADDING',(0,0),(-1,-1),5),
]))
elements.append(r_tbl)
elements.append(Spacer(1, 5*mm))
# ── Legend ─────────────────────────────────────────────────────────────────
elements.append(Paragraph("<b>COLOUR LEGEND</b>",
ParagraphStyle('lt', fontSize=10, fontName='Helvetica-Bold', textColor=C_HDR)))
elements.append(Spacer(1, 2*mm))
legend = [
(C_PHARM, "PHARMACOLOGY"),
(C_PATH, "PATHOLOGY"),
(C_BIO, "BIOCHEMISTRY"),
(C_SURG, "SURGERY"),
(C_MED, "MEDICINE CVS/RS"),
(C_GANG, "GangT — Ganga Video"),
(C_PYQ, "PYQ Block"),
(C_RR, "RR — Rapid Revision"),
(C_DISC, "Discussion"),
(C_MCQ, "Night MCQ Sprint"),
]
leg_row = [[Paragraph(f"<b>{lbl}</b>", leg_sty) for _, lbl in legend]]
leg_tbl = Table(leg_row, colWidths=[33*mm]*10)
leg_ts = TableStyle([('GRID',(0,0),(-1,-1),0.4,colors.HexColor('#cccccc')),
('TOPPADDING',(0,0),(-1,-1),5),
('BOTTOMPADDING',(0,0),(-1,-1),5),
('LEFTPADDING',(0,0),(-1,-1),4)])
for i,(c,_) in enumerate(legend):
leg_ts.add('BACKGROUND',(i,0),(i,0),c)
leg_tbl.setStyle(leg_ts)
elements.append(leg_tbl)
elements.append(Spacer(1, 5*mm))
# ── MCQ Targets ────────────────────────────────────────────────────────────
elements.append(Paragraph("<b>MCQ TARGETS OVER 18 DAYS</b>",
ParagraphStyle('mt', fontSize=10, fontName='Helvetica-Bold', textColor=C_HDR)))
elements.append(Spacer(1, 2*mm))
mq_data = [
[P("<b>Block</b>",hdr_sty), P("<b>Days</b>",hdr_sty), P("<b>PYQ/day</b>",hdr_sty),
P("<b>Weekly Sprint</b>",hdr_sty), P("<b>Night MCQ/day</b>",hdr_sty), P("<b>Block Total</b>",hdr_sty)],
[P("Block 1"),P("1–6"), P("60–70 Qs"),P("60 Qs (Day 6)"), P("30 Qs"),P("~480")],
[P("Block 2"),P("7–12"), P("60–70 Qs"),P("60 Qs (Day 12)"),P("30 Qs"),P("~480")],
[P("Block 3"),P("13–16"),P("50–60 Qs"),P("60 Qs (Day 16)"),P("30 Qs"),P("~360")],
[P("Block 4"),P("17–18"),P("60 starred"),P("200 Mock Test"),P("20 Qs"), P("~280")],
[P("<b>TOTAL</b>",cellb_sty),P("18 days",cellb_sty),P("",cell_sty),
P("",cell_sty),P("",cell_sty),P("<b>~1600+ Qs</b>",cellb_sty)],
]
mq_tbl = Table(mq_data, colWidths=[25*mm,20*mm,30*mm,55*mm,40*mm,35*mm])
mq_tbl.setStyle(TableStyle([
('BACKGROUND',(0,0),(-1,0),C_HDR),('TEXTCOLOR',(0,0),(-1,0),colors.white),
('GRID',(0,0),(-1,-1),0.4,colors.HexColor('#aaaaaa')),
('ROWBACKGROUNDS',(0,1),(-1,-2),[colors.white,colors.HexColor('#f0f7ff')]),
('BACKGROUND',(0,5),(-1,5),colors.HexColor('#fff3cd')),
('TOPPADDING',(0,0),(-1,-1),4),('BOTTOMPADDING',(0,0),(-1,-1),4),
('LEFTPADDING',(0,0),(-1,-1),5),('ALIGN',(0,0),(-1,0),'CENTER'),
]))
elements.append(mq_tbl)
elements.append(Spacer(1, 6*mm))
elements.append(Paragraph(
"<b>Stay consistent. Trust the process. NEET PG is yours! ★</b>",
ParagraphStyle('foot', fontSize=13, fontName='Helvetica-Bold',
alignment=TA_CENTER, textColor=colors.HexColor('#e94560'))))
doc.build(elements)
print(f"Done: {OUTPUT}")
cd /home/daytona/workspace/neet-schedule && python generate_schedule_v2.py 2>&1
ls -lh /home/daytona/workspace/neet-schedule/NEET_PG_18Day_v2.pdf
NEET PG 18Day v2
PDF Document · PDF
No it's not good What i want is 2 sub theory Question practice for that 2 subjects Btdr Test anddiscussion Wrong question practice
Give timing also
1. Theory Sub 1 → 2.5h
2. Theory Sub 2 → 2.5h
3. Question Practice → 1.5h (PYQ for both subjects)
4. BTDR → 1h (Back To Deep Reading - wrongs)
5. Test + Discussion → 1.5h (Mini test + discuss tough Qs)
6. Wrong Qs Practice → 1h (Re-attempt only wrong Qs)
─────────────────────────────
TOTAL = 10h study + breaks = 12h day
~/neet-schedule/generate_v3.py
from reportlab.lib.pagesizes import A3, landscape
from reportlab.lib import colors
from reportlab.lib.units import mm
from reportlab.platypus import (SimpleDocTemplate, Table, TableStyle,
Paragraph, Spacer, HRFlowable, PageBreak)
from reportlab.lib.styles import ParagraphStyle
from reportlab.lib.enums import TA_CENTER
OUTPUT = "/home/daytona/workspace/neet-schedule/NEET_PG_18Day_v3.pdf"
doc = SimpleDocTemplate(OUTPUT, pagesize=landscape(A3),
leftMargin=8*mm, rightMargin=8*mm,
topMargin=8*mm, bottomMargin=8*mm)
# ── Styles ──────────────────────────────────────────────────────────────────
def sty(name, size=8, bold=False, color='#1a1a2e', align=TA_CENTER, leading=11):
return ParagraphStyle(name, fontSize=size,
fontName='Helvetica-Bold' if bold else 'Helvetica',
textColor=colors.HexColor(color),
alignment=align, leading=leading)
TITLE = sty('title', 20, True, '#1a1a2e', TA_CENTER)
SUB = sty('sub', 9, False, '#e94560', TA_CENTER)
HDR = sty('hdr', 8, True, '#ffffff', TA_CENTER)
BLK = sty('blk', 9, True, '#ffffff', TA_CENTER)
DAY = sty('day', 9, True, '#ffffff', TA_CENTER)
CELL = sty('cell', 7.3, False, '#1a1a2e', TA_CENTER, 10)
CELLB = sty('cellb', 7.3, True, '#1a1a2e', TA_CENTER, 10)
FOOT = sty('foot', 12, True, '#e94560', TA_CENTER)
def P(t, s=CELL): return Paragraph(t, s)
# ── Colours ─────────────────────────────────────────────────────────────────
C_PHARM = colors.HexColor('#d4edda')
C_PATH = colors.HexColor('#fff3cd')
C_BIO = colors.HexColor('#cce5ff')
C_SURG = colors.HexColor('#f8d7da')
C_MED = colors.HexColor('#e2d9f3')
C_QP = colors.HexColor('#ffe0b2') # Question Practice – orange
C_BTDR = colors.HexColor('#d1ecf1') # BTDR – teal
C_TEST = colors.HexColor('#f3e5f5') # Test+Discussion – lavender
C_WQ = colors.HexColor('#ffeeba') # Wrong Qs – amber
C_HDR = colors.HexColor('#1a1a2e')
C_DAY = colors.HexColor('#e94560')
BLK_C = {1: colors.HexColor('#0f3460'),
7: colors.HexColor('#16213e'),
13: colors.HexColor('#1a4a2e'),
17: colors.HexColor('#6a0f3c')}
BLK_L = {
1: "BLOCK 1 — DAYS 1–6 Highest Priority Topics (5× – 15×) Dr. Ganga Prediction",
7: "BLOCK 2 — DAYS 7–12 Core Clinical Depth (3× – 5×)",
13: "BLOCK 3 — DAYS 13–16 Revision Cycles (RR Heavy)",
17: "BLOCK 4 — DAYS 17–18 Grand Revision + Grand Mock Test",
}
# ── Day data ─────────────────────────────────────────────────────────────────
# (day, date_str,
# sub1_name, sub1_topics, col1,
# sub2_name, sub2_topics, col2,
# qp_topics, btdr_focus, test_topic, wq_focus)
DAYS = [
(1,"Mon Jul 13",
"BIOCHEMISTRY","Vitamins (15×)\nAll fat-sol: A,D,E,K\nWater-sol: B1–B12, C\nDeficiency diseases + lab",C_BIO,
"PATHOLOGY","Genetics & Syndrome (8×)\nDown, Turner, Klinefelter\nChromosomal disorders\nKey features + karyotype",C_PATH,
"Biochem Vitamins 30Q\n+ Path Genetics 30Q",
"Re-read vitamin\ndeficiency facts\n+ syndrome table",
"Mini test: 20Q\nVitamins + Genetics\n+ Discuss tough Qs",
"Redo all wrong Qs\nfrom QP + Test\n(both subjects)"),
(2,"Tue Jul 14",
"MEDICINE CVS","ECG, Arrhythmias,\nHeart Blocks (9×) ★\nAll ECG patterns\nManagement keys",C_MED,
"PHARMACOLOGY","Antihypertensives (7×)\nAntimuscarinic (7×)\nMechanisms + DOC\nSide effects table",C_PHARM,
"Med ECG 40Q\n+ Pharm Anti-HTN 30Q",
"ECG pattern weak\nspots + drug\nmechanisms review",
"Mini test: 20Q\nECG + HTN drugs\n+ Discuss patterns",
"Redo all wrong Qs\nfrom QP + Test\n(both subjects)"),
(3,"Wed Jul 15",
"PATHOLOGY","Leukaemia (8×)\nALL, AML, CLL, CML\nSurface markers\nClassification + Rx",C_PATH,
"BIOCHEMISTRY","Lysosomal storage (6×)\nGlycogen storage (4×)\nEnzyme deficiencies\nKey lab findings",C_BIO,
"Path Leukaemia 35Q\n+ Biochem Storage 30Q",
"Leukaemia markers\n+ enzyme\ndeficiency table",
"Mini test: 20Q\nLeukaemia + Storage\n+ Discuss markers",
"Redo all wrong Qs\nfrom QP + Test\n(both subjects)"),
(4,"Thu Jul 16",
"PHARMACOLOGY","Antiarrhythmic (6×)\nAnticoagulants &\nFibrinolytics (5×)\nMOA + side effects",C_PHARM,
"MEDICINE CVS","Valvular Heart\nDisease (4×)\nABG & RTA (5×)\nManagement keys",C_MED,
"Pharm Antiarryth. 35Q\n+ Med Valvular 30Q",
"Drug class review\n+ ABG steps\nweak areas",
"Mini test: 20Q\nAntiarrhyth + ABG\n+ Discuss cases",
"Redo all wrong Qs\nfrom QP + Test\n(both subjects)"),
(5,"Fri Jul 17",
"SURGERY","Breast Cancer (5×)\nInguinal Hernia (5×)\nBladder Ca (4×)\nOral Cavity Ca (4×)",C_SURG,
"SURGERY","Penile Ca (4×)\nTriage / Trauma (4×)\nAortic Dissection (3×)\nHollow Viscus Perf (3×)",C_SURG,
"Surgery Part 1: 40Q\n+ Surgery Part 2: 35Q",
"Staging systems\n+ surgical\napproaches review",
"Mini test: 20Q\nAll Surgery topics\n+ Discuss staging",
"Redo all wrong Qs\nfrom QP + Test\n(Surgery)"),
(6,"Sat Jul 18",
"PHARMACOLOGY","Anti-TB (5×)\nAntiemetics (5×)\nNSAIDs (5×)\nAnticoagulants RR",C_PHARM,
"PATHOLOGY","Intestinal dis. (5×)\nLymphoma (5×)\nCa lung (4×)\nThyroid path. (4×)",C_PATH,
"Pharm 35Q\n+ Path Lymphoma\n+ Intestinal 35Q",
"TB drug side effects\n+ Lymphoma\nclassification",
"★ WEEKLY TEST 40Q\nAll week topics\n+ Group Discussion",
"Redo all wrong Qs\nWeek 1 compilation\n(all subjects)"),
(7,"Sun Jul 19",
"PATHOLOGY","Glomerular dis. (4×)\nThyroid (4×)\nTumors (4×)\nDisorders of Hb (4×)",C_PATH,
"BIOCHEMISTRY","Alkaptonuria (3×)\nFamilial hypercholest. (3×)\nHomocystinuria (2×)\nMetabolic cycles (2×)",C_BIO,
"Path Glomerular 35Q\n+ Biochem 25Q",
"GN types table\n+ metabolic\ndisease features",
"Mini test: 20Q\nGlomerular + Biochem\n+ Discuss cases",
"Redo all wrong Qs\nfrom QP + Test\n(both subjects)"),
(8,"Mon Jul 20",
"MEDICINE CVS","Vasculitis (4×)\nCoronary artery dis. (3×)\nDisorders of Aorta (3×)\nHeart Failure (3×)",C_MED,
"PHARMACOLOGY","Pharmacokinetics &\nPD (4×)\nAntifungal (3×)\nAntimalarials (3×)",C_PHARM,
"Med CVS 35Q\n+ Pharm PK/PD 30Q",
"Aortic disease\nspectrum + PK\nconcepts review",
"Mini test: 20Q\nVasculitis + PK/PD\n+ Discuss cases",
"Redo all wrong Qs\nfrom QP + Test\n(both subjects)"),
(9,"Tue Jul 21",
"SURGERY","Fistula in Ano (3×)\nGlasgow Coma (3×)\nHydatid Cyst (3×)\nOesoph. Varices (3×)",C_SURG,
"SURGERY","Peripheral art. dis. (3×)\nRectal Ca (3×)\nSAH (3×)\nCystourethroscope (3×)",C_SURG,
"Surgery Part 1: 35Q\n+ Surgery Part 2: 35Q",
"Surgical emergency\nkey facts + SAH\nmanagement steps",
"Mini test: 20Q\nAll Surgery Pt 2\n+ Discuss emergencies",
"Redo all wrong Qs\nfrom QP + Test\n(Surgery)"),
(10,"Wed Jul 22",
"MEDICINE RS","Pleural disease (3×)\nJVP (3×)\nMalabsorption (3×)\nABG deep dive",C_MED,
"PATHOLOGY","Coagulation dis. (3×)\nInflammation (3×)\nIron def anaemia (3×)\nMacrocytic anaemia (3×)",C_PATH,
"Med RS 35Q\n+ Path Anaemias 35Q",
"Pleural fluid\nanalysis + coag\ncascade table",
"Mini test: 20Q\nMed RS + Anaemias\n+ Discuss ABG cases",
"Redo all wrong Qs\nfrom QP + Test\n(both subjects)"),
(11,"Thu Jul 23",
"PHARMACOLOGY","Antimicrobials (3×)\nAntiparkinsons (3×)\nAntiemetics RR\nAntifungal RR",C_PHARM,
"BIOCHEMISTRY","Enzyme Inhibition (2×)\nMinerals (2×)\nFamilial hypercholest. RR\nHomocystinuria RR",C_BIO,
"Pharm 30Q\n+ Biochem 25Q",
"Antibiotic spectrum\ntable + mineral\ndeficiency chart",
"Mini test: 20Q\nPharm + Biochem\n+ Discuss drug classes",
"Redo all wrong Qs\nfrom QP + Test\n(both subjects)"),
(12,"Fri Jul 24",
"PATHOLOGY","Multiple Myeloma &\nAmyloid (3×)\nCoagulation dis. RR\nInflammation RR",C_PATH,
"MEDICINE CVS","Electrolyte dis. (3×)\nCirrhosis + SBP (3×)\nHeart Failure RR\nCAD RR",C_MED,
"Path 35Q\n+ Med CVS 35Q",
"Myeloma criteria\n+ electrolyte\ndisorder review",
"★ WEEKLY TEST 40Q\nAll Week 2 topics\n+ Group Discussion",
"Redo all wrong Qs\nWeek 2 compilation\n(all subjects)"),
(13,"Sat Jul 25",
"PHARM R1","Antihypertensives +\nAntiarrhythmic +\nAnticoagulants\nTop 3 by frequency",C_PHARM,
"MED CVS R1","ECG + Valvular HD +\nHF + CAD\nIntegrated revision\nAll patterns",C_MED,
"Pharm 50Q mixed\n(all 12 topics)",
"Pharm weak drug\nmechanisms\n+ ECG drug link",
"Mini test: 25Q\nPharm + Med CVS\n+ Discuss ECG-drug",
"Redo all wrong Qs\nfrom QP + Test\n(Pharm + Med)"),
(14,"Sun Jul 26",
"PATH R1","Genetics + Leukaemia\n+ Lymphoma + Myeloma\nHaematology block\nAll markers",C_PATH,
"BIOCHEM R1","Vitamins + Lysosomal\n+ Glycogen +\nAll storage disorders\nFull revision",C_BIO,
"Path 50Q mixed\n(all 14 topics)",
"Haematology\nmarkers table\n+ vitamin chart",
"Mini test: 25Q\nPath + Biochem\n+ Discuss markers",
"Redo all wrong Qs\nfrom QP + Test\n(Path + Biochem)"),
(15,"Mon Jul 27",
"SURGERY R1","Cancer group:\nBreast + Hernia +\nBladder + Oral +\nPenile + Rectal Ca",C_SURG,
"SURGERY R1","Emergency group:\nTrauma + GCS + SAH +\nAortic + HV Perf +\nVarices + Leriche's",C_SURG,
"Surgery 60Q\nAll 16 topics",
"Staging systems\n+ surgical\nindications review",
"Mini test: 25Q\nAll 16 Surg topics\n+ Discuss decisions",
"Redo all wrong Qs\nfrom QP + Test\n(Surgery all 16)"),
(16,"Tue Jul 28",
"PHARM R2","Anti-TB + NSAIDs +\nPK/PD + Antifungal +\nAntimalarials +\nAntimicrobials",C_PHARM,
"MED RS R1","Pleural disease +\nABG + Malabsorption\n+ JVP\nFull revision",C_MED,
"Pharm 40Q\n+ Med RS 30Q",
"Drug side-effect\nclusters table\n+ ABG steps",
"★ WEEKLY TEST 40Q\nAll Block 3 topics\n+ Group Discussion",
"Redo all wrong Qs\nWeek 3 compilation\n(all subjects)"),
(17,"Wed Jul 29",
"PATH R2 + BIOCHEM R2","Path: all 14 topics\nbuzzwords + morphology\nBiochem: all 9 topics\ntables + enzyme charts",C_PATH,
"PHARM R3 + SURG R2","Pharm: DOC table +\nside-effects master list\nSurg: all 16 topics\nrapid fire key facts",C_PHARM,
"Starred hard Qs\nfrom all weeks\n60Q total",
"All remaining\nweak areas\nfinal deep read",
"Grand Test: 50Q\nAll subjects mixed\n+ Full Discussion",
"Redo all ★ starred\ndoubly-wrong Qs\n(all subjects)"),
(18,"Thu Jul 30",
"MOCK TEST Part 1","100 MCQs timed\nExam conditions\nDr. Ganga predicted\ntopics strictly",C_QP,
"MOCK TEST Part 2","100 MCQs timed\nFull test analysis\nSubject-wise score\nWeak spot ID",C_QP,
"200 MCQ Grand\nMock Test\n(timed, exam cond.)",
"Re-read ALL\nmock wrong answers\nfrom source",
"Full Mock Analysis\nSubject-wise score\n+ Final Discussion",
"Redo all wrong Qs\nfrom Grand Mock\n(final revision)"),
]
# ── Build table ──────────────────────────────────────────────────────────────
elements = []
# Title
elements.append(Paragraph("NEET PG / INI-CET — 18-DAY STUDY SCHEDULE", TITLE))
elements.append(Paragraph(
"Jul 13 – Jul 30, 2026 | 2 Subjects / Day | 12 hrs / day | "
"Dr. Ganga's 180 Topics Prediction | Theory → Q Practice → BTDR → Test+Discussion → Wrong Qs",
SUB))
elements.append(HRFlowable(width="100%", thickness=2, color=colors.HexColor('#e94560')))
elements.append(Spacer(1, 3*mm))
HEADERS = [
"DAY",
"SUBJECT 1\nTheory (2.5 h)",
"SUBJECT 2\nTheory (2.5 h)",
"QUESTION\nPRACTICE (1.5 h)",
"BTDR\n(1 h)",
"TEST +\nDISCUSSION (1.5 h)",
"WRONG Qs\nPRACTICE (1 h)",
]
hdr_row = [P(f"<b>{h}</b>", HDR) for h in HEADERS]
table_data = [hdr_row]
row_meta = {}
for row_tuple in DAYS:
day, date, s1, t1, c1, s2, t2, c2, qp, btdr, test, wq = row_tuple
if day in BLK_L:
sep = [P(f"<b>{BLK_L[day]}</b>", BLK)] + [P("")]*6
table_data.append(sep)
row_meta[len(table_data)-1] = ("blk", BLK_C[day])
row = [
P(f"<b>Day {day}</b><br/>{date}", DAY),
P(f"<b>{s1}</b><br/>{t1.replace(chr(10),'<br/>')}", CELL),
P(f"<b>{s2}</b><br/>{t2.replace(chr(10),'<br/>')}", CELL),
P(qp.replace(chr(10),'<br/>'), CELL),
P(btdr.replace(chr(10),'<br/>'), CELL),
P(test.replace(chr(10),'<br/>'), CELL),
P(wq.replace(chr(10),'<br/>'), CELL),
]
table_data.append(row)
row_meta[len(table_data)-1] = ("data", c1, c2)
# Col widths — A3 landscape ~405 mm usable
CW = [20*mm, 72*mm, 72*mm, 48*mm, 44*mm, 52*mm, 44*mm]
tbl = Table(table_data, colWidths=CW, repeatRows=1)
ts = TableStyle([
('BACKGROUND', (0,0),(-1,0), C_HDR),
('TEXTCOLOR', (0,0),(-1,0), colors.white),
('FONTNAME', (0,0),(-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0),(-1,0), 8),
('ALIGN', (0,0),(-1,0), 'CENTER'),
('VALIGN', (0,0),(-1,-1),'TOP'),
('GRID', (0,0),(-1,-1), 0.35, colors.HexColor('#cccccc')),
('TOPPADDING', (0,0),(-1,-1), 3),
('BOTTOMPADDING', (0,0),(-1,-1), 3),
('LEFTPADDING', (0,0),(-1,-1), 3),
('RIGHTPADDING', (0,0),(-1,-1), 3),
])
for i in range(1, len(table_data)):
if i not in row_meta:
continue
meta = row_meta[i]
if meta[0] == "blk":
bc = meta[1]
ts.add('BACKGROUND', (0,i),(-1,i), bc)
ts.add('TEXTCOLOR', (0,i),(-1,i), colors.white)
ts.add('SPAN', (0,i),(-1,i))
ts.add('ALIGN', (0,i),(-1,i), 'CENTER')
ts.add('FONTNAME', (0,i),(-1,i), 'Helvetica-Bold')
ts.add('FONTSIZE', (0,i),(-1,i), 8.5)
ts.add('TOPPADDING', (0,i),(-1,i), 5)
ts.add('BOTTOMPADDING', (0,i),(-1,i), 5)
else:
_, c1, c2 = meta
ts.add('BACKGROUND', (0,i),(0,i), C_DAY)
ts.add('TEXTCOLOR', (0,i),(0,i), colors.white)
ts.add('ALIGN', (0,i),(0,i), 'CENTER')
ts.add('BACKGROUND', (1,i),(1,i), c1)
ts.add('BACKGROUND', (2,i),(2,i), c2)
ts.add('BACKGROUND', (3,i),(3,i), C_QP)
ts.add('BACKGROUND', (4,i),(4,i), C_BTDR)
ts.add('BACKGROUND', (5,i),(5,i), C_TEST)
ts.add('BACKGROUND', (6,i),(6,i), C_WQ)
tbl.setStyle(ts)
elements.append(tbl)
# ── PAGE 2 — Daily Timetable + Rules ────────────────────────────────────────
elements.append(PageBreak())
elements.append(Paragraph("DAILY TIMETABLE + STUDY RULES", TITLE))
elements.append(HRFlowable(width="100%", thickness=2, color=colors.HexColor('#e94560')))
elements.append(Spacer(1, 4*mm))
dt_data = [
[P("<b>TIME</b>",HDR), P("<b>SLOT</b>",HDR), P("<b>DURATION</b>",HDR), P("<b>ACTIVITY</b>",HDR)],
[P("6:00 AM",CELLB), P("<b>Subject 1 — Theory</b>",CELLB), P("2.5 h",CELL),
P("Deep reading of Subject 1 topics. Make short notes + mnemonics + tables.",CELL)],
[P("8:30 AM",CELLB), P("Break",CELL), P("30 min",CELL), P("Breakfast + short walk.",CELL)],
[P("9:00 AM",CELLB), P("<b>Subject 2 — Theory</b>",CELLB), P("2.5 h",CELL),
P("Deep reading of Subject 2 topics. Make short notes + mnemonics + tables.",CELL)],
[P("11:30 AM",CELLB), P("Break",CELL), P("30 min",CELL), P("Rest. Hydrate. Lunch prep.",CELL)],
[P("12:00 PM",CELLB), P("<b>★ Question Practice</b>",CELLB), P("1.5 h",CELL),
P("30–40 PYQs from Sub 1 + 30–40 PYQs from Sub 2. TIMED. Circle every guessed answer.",CELL)],
[P("1:30 PM",CELLB), P("Lunch Break",CELL), P("1 h",CELL), P("Proper meal. No studying.",CELL)],
[P("2:30 PM",CELLB), P("<b>★ BTDR — Back To Deep Reading</b>",CELLB), P("1 h",CELL),
P("Re-read source/notes for EVERY wrong + guessed answer. Write 1 corrected fact per wrong Q.",CELL)],
[P("3:30 PM",CELLB), P("Short Break",CELL), P("30 min",CELL), P("Walk. Step away.",CELL)],
[P("4:00 PM",CELLB), P("<b>★ Test + Discussion</b>",CELLB), P("1.5 h",CELL),
P("Mini test 20Q (fresh mixed Qs from today's topics). Then discuss all tough Qs out loud / with peer.",CELL)],
[P("5:30 PM",CELLB), P("Break",CELL), P("30 min",CELL), P("Snack. Refresh.",CELL)],
[P("6:00 PM",CELLB), P("<b>★ Wrong Qs Practice</b>",CELLB), P("1 h",CELL),
P("Re-attempt ONLY the wrong Qs from QP block + Mini Test. No new questions. Fix the gaps.",CELL)],
[P("7:00 PM",CELLB), P("Wind Down / Revision",CELL), P("1 h",CELL),
P("Flashcard review, quick notes glance, mental recap of the day.",CELL)],
[P("",CELLB), P("<b>TOTAL STUDY TIME</b>",CELLB), P("<b>10 h</b>",CELLB),
P("Theory 5h + Q Practice 1.5h + BTDR 1h + Test+Discussion 1.5h + Wrong Qs 1h = 10h",CELL)],
]
dt_cw = [22*mm, 68*mm, 24*mm, 218*mm]
dt_tbl = Table(dt_data, colWidths=dt_cw)
dt_ts = TableStyle([
('BACKGROUND', (0,0),(-1,0), C_HDR),
('TEXTCOLOR', (0,0),(-1,0), colors.white),
('FONTNAME', (0,0),(-1,0), 'Helvetica-Bold'),
('ALIGN', (0,0),(-1,0), 'CENTER'),
('GRID', (0,0),(-1,-1), 0.4, colors.HexColor('#aaaaaa')),
('VALIGN', (0,0),(-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0),(-1,-1), 4),
('BOTTOMPADDING', (0,0),(-1,-1), 4),
('LEFTPADDING', (0,0),(-1,-1), 5),
('ROWBACKGROUNDS',(0,1),(-1,-2), [colors.white, colors.HexColor('#f8f9fa')]),
('BACKGROUND', (0,-1),(-1,-1), colors.HexColor('#fff3cd')),
('FONTNAME', (0,-1),(-1,-1), 'Helvetica-Bold'),
])
# Colour the key slots
for row_i, col in [(1,C_BIO),(3,C_MED),(5,C_QP),(7,C_BTDR),(9,C_TEST),(11,C_WQ)]:
dt_ts.add('BACKGROUND',(0,row_i),(1,row_i),col)
dt_tbl.setStyle(dt_ts)
elements.append(dt_tbl)
elements.append(Spacer(1, 5*mm))
# ── Rules ───────────────────────────────────────────────────────────────────
elements.append(Paragraph("<b>KEY RULES</b>",
ParagraphStyle('rt', fontSize=11, fontName='Helvetica-Bold',
textColor=colors.HexColor('#e94560'))))
elements.append(Spacer(1, 2*mm))
rules = [
("<b>Theory Rule</b>",
"Read only Dr. Ganga predicted topics. Do NOT go off-list. Make a 1-page handwritten note per topic."),
("<b>Q Practice Rule</b>",
"PYQs ONLY from today's topics. Timed. Circle every guessed answer — treat it the same as a wrong answer."),
("<b>BTDR Rule</b>",
"BTDR = Back To Deep Reading. For every wrong/guessed Q, go back to the exact source line and re-read it. Write ONE corrected fact."),
("<b>Test Rule</b>",
"Mini test = 20 fresh Qs (not the same PYQs). Then explain every wrong answer out loud to yourself or a peer."),
("<b>Wrong Qs Rule</b>",
"Re-attempt ONLY wrong Qs — no new questions in this slot. The goal is to get them right the second time."),
("<b>★ Star Rule</b>",
"If you get the same question wrong TWICE, mark it with ★. All starred questions go into Day 17 morning revision."),
("<b>Weekly Test</b>",
"Days 6, 12, 16: 40Q weekly test from ALL subjects covered that week. Score yourself honestly."),
]
r_data = [[P(a, CELLB), P(b, CELL)] for a, b in rules]
r_tbl = Table(r_data, colWidths=[32*mm, 300*mm])
r_tbl.setStyle(TableStyle([
('GRID', (0,0),(-1,-1), 0.4, colors.HexColor('#cccccc')),
('BACKGROUND', (0,0),(0,-1), colors.HexColor('#fff3cd')),
('ROWBACKGROUNDS',(1,0),(1,-1), [colors.white, colors.HexColor('#f0f7ff')]),
('VALIGN', (0,0),(-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0),(-1,-1), 4),
('BOTTOMPADDING', (0,0),(-1,-1), 4),
('LEFTPADDING', (0,0),(-1,-1), 5),
]))
elements.append(r_tbl)
elements.append(Spacer(1, 5*mm))
# ── Colour Legend ────────────────────────────────────────────────────────────
elements.append(Paragraph("<b>COLOUR LEGEND</b>",
ParagraphStyle('lt', fontSize=10, fontName='Helvetica-Bold',
textColor=colors.HexColor('#1a1a2e'))))
elements.append(Spacer(1, 2*mm))
legend = [
(C_PHARM,"PHARMACOLOGY"),(C_PATH,"PATHOLOGY"),(C_BIO,"BIOCHEMISTRY"),
(C_SURG,"SURGERY"),(C_MED,"MEDICINE CVS/RS"),
(C_QP,"QUESTION PRACTICE"),(C_BTDR,"BTDR"),(C_TEST,"TEST + DISCUSSION"),(C_WQ,"WRONG Qs"),
]
leg_row = [[P(f"<b>{lbl}</b>", CELL) for _,lbl in legend]]
leg_tbl = Table(leg_row, colWidths=[37*mm]*9)
leg_ts = TableStyle([
('GRID',(0,0),(-1,-1),0.4,colors.HexColor('#cccccc')),
('TOPPADDING',(0,0),(-1,-1),5),('BOTTOMPADDING',(0,0),(-1,-1),5),
('LEFTPADDING',(0,0),(-1,-1),4),
])
for i,(c,_) in enumerate(legend):
leg_ts.add('BACKGROUND',(i,0),(i,0),c)
leg_tbl.setStyle(leg_ts)
elements.append(leg_tbl)
elements.append(Spacer(1, 6*mm))
elements.append(Paragraph(
"<b>2 subjects. Every day. Theory → Practice → BTDR → Test → Fix wrongs. Repeat 18 days. NEET PG is yours. ★</b>",
FOOT))
doc.build(elements)
print(f"Done → {OUTPUT}")
cd /home/daytona/workspace/neet-schedule && python generate_v3.py 2>&1
ls -lh /home/daytona/workspace/neet-schedule/NEET_PG_18Day_v3.pdf
NEET PG 18Day v3
PDF Document · PDF
6:00 AM → Subject 1 Theory 2.5h
9:00 AM → Subject 2 Theory 2.5h
12:00 PM → Question Practice 1.5h
2:30 PM → BTDR 1h
4:00 PM → Test + Discussion 1.5h
6:00 PM → Wrong Qs Practice 1h
─────────────────────────────────────
Total Study = 10h