Can you teach dental topics also for neet mds
NEET MDS dental subjects syllabus topics 2025
| NEET MDS Subject | What I Have |
|---|---|
| General Anatomy (incl. embryology & histology) | Extensive - Gray's, Netter's, Color Atlas, embryology books |
| General Human Physiology & Biochemistry | Full coverage - Harper's, Lippincott Biochemistry, physiology texts |
| General Pathology & Microbiology | Strong - pathology and microbiology textbooks available |
| General & Dental Pharmacology | Full pharmacology library available |
| General Medicine | Comprehensive - Harrison's-level internal medicine books |
| General Surgery | Full surgical textbooks available |
Make a comparison chart of NEET MDS exam pattern
NEET MDS 2026 new exam pattern old pattern comparison Part A Part B questions marking scheme
mkdir -p /tmp/workspace/neet-mds-chart && ls /tmp/workspace/neet-mds-chart/
~/neet-mds-chart/generate_chart.py
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from matplotlib.patches import FancyBboxPatch
import numpy as np
fig = plt.figure(figsize=(22, 30), facecolor='#0d1b2a')
# ─── Title ───────────────────────────────────────────────────────────────────
fig.text(0.5, 0.975, 'NEET MDS — Complete Exam Pattern Comparison',
ha='center', va='top', fontsize=26, fontweight='bold',
color='white', fontfamily='DejaVu Sans')
fig.text(0.5, 0.962, 'Part A vs Part B | Old vs New Pattern | NEET MDS vs NEET PG',
ha='center', va='top', fontsize=14, color='#aac4e0')
# ═══════════════════════════════════════════════════════════════════════════════
# SECTION 1: Old vs New Pattern Overview
# ═══════════════════════════════════════════════════════════════════════════════
ax1 = fig.add_axes([0.04, 0.82, 0.92, 0.125])
ax1.set_facecolor('#0d1b2a')
ax1.axis('off')
ax1.text(0.5, 1.02, '① OLD vs NEW NEET MDS Pattern',
ha='center', va='bottom', fontsize=16, fontweight='bold',
color='#f9c74f', transform=ax1.transAxes)
headers = ['Feature', 'Old Pattern (Pre-2024)', 'New Pattern (2025 onwards)']
rows = [
['Total Questions', '100', '240'],
['Total Marks', '400', '960'],
['Duration', '1.5 hours', '3 hours'],
['Parts', 'Single (no division)', 'Part A (100 Qs) + Part B (140 Qs)'],
['Correct Answer', '+4 marks', '+4 marks'],
['Wrong Answer', '-1 mark', '-1 mark'],
['Unattempted', '0 marks', '0 marks'],
['Mode', 'Pen & Paper (OMR)', 'Computer Based Test (CBT)'],
['Review & Mark Option', 'Not available', 'Available'],
]
col_widths = [0.22, 0.34, 0.44]
col_x = [0.0, 0.22, 0.56]
row_h = 0.105
y_start = 0.92
# Header row
for j, (hdr, x, w) in enumerate(zip(headers, col_x, col_widths)):
bg = '#1a3a5c' if j == 0 else ('#143d6b' if j == 1 else '#0f3d2e')
rect = FancyBboxPatch((x + 0.002, y_start - row_h + 0.005), w - 0.004, row_h - 0.005,
boxstyle="round,pad=0.005", linewidth=0,
facecolor=bg, transform=ax1.transAxes, clip_on=False)
ax1.add_patch(rect)
ax1.text(x + w/2, y_start - row_h/2, hdr,
ha='center', va='center', fontsize=11, fontweight='bold',
color='#ffffff', transform=ax1.transAxes)
for i, row in enumerate(rows):
y = y_start - (i + 1) * row_h
for j, (cell, x, w) in enumerate(zip(row, col_x, col_widths)):
bg = '#0d1b2a' if i % 2 == 0 else '#111f30'
if j == 0:
bg = '#12243a'
rect = FancyBboxPatch((x + 0.002, y + 0.003), w - 0.004, row_h - 0.006,
boxstyle="round,pad=0.003", linewidth=0,
facecolor=bg, transform=ax1.transAxes, clip_on=False)
ax1.add_patch(rect)
color = '#f9c74f' if j == 0 else ('#90caf9' if j == 1 else '#a5d6a7')
ax1.text(x + w/2, y + row_h/2, cell,
ha='center', va='center', fontsize=9.5,
color=color, transform=ax1.transAxes)
# ═══════════════════════════════════════════════════════════════════════════════
# SECTION 2: Part A and Part B side by side
# ═══════════════════════════════════════════════════════════════════════════════
# --- Part A ---
ax2 = fig.add_axes([0.04, 0.555, 0.44, 0.245])
ax2.set_facecolor('#0d1b2a')
ax2.axis('off')
ax2.text(0.5, 1.02, '② PART A — Basic Sciences (100 Questions • 400 Marks)',
ha='center', va='bottom', fontsize=13, fontweight='bold',
color='#90caf9', transform=ax2.transAxes)
part_a = [
('General Anatomy\n(incl. Embryology & Histology)', 14),
('General Human Physiology\n& Biochemistry', 14),
('Dental Anatomy, Embryology\n& Oral Histology', 14),
('General Pathology\n& Microbiology', 14),
('General & Dental Pharmacology\n& Therapeutics', 14),
('General Medicine', 15),
('General Surgery', 15),
]
total_a = 100
colors_a = ['#1565c0','#1976d2','#1e88e5','#42a5f5','#64b5f6','#0277bd','#0288d1']
subjects_a = [s for s, q in part_a]
qs_a = [q for s, q in part_a]
y_pos = np.arange(len(subjects_a))
bars = ax2.barh(y_pos, qs_a, color=colors_a, height=0.7, edgecolor='none')
for bar, q in zip(bars, qs_a):
ax2.text(bar.get_width() + 0.2, bar.get_y() + bar.get_height()/2,
f'{q} Qs', va='center', fontsize=10, fontweight='bold', color='white')
pct = q / total_a * 100
ax2.text(bar.get_width() / 2, bar.get_y() + bar.get_height()/2,
f'{pct:.0f}%', va='center', ha='center', fontsize=8.5, color='white', fontweight='bold')
ax2.set_yticks(y_pos)
ax2.set_yticklabels(subjects_a, fontsize=8.5, color='#e0e0e0')
ax2.set_xlim(0, 22)
ax2.tick_params(axis='x', colors='#aaaaaa', labelsize=8)
ax2.spines['top'].set_visible(False)
ax2.spines['right'].set_visible(False)
ax2.spines['left'].set_visible(False)
ax2.spines['bottom'].set_color('#334455')
ax2.set_facecolor('#0d1b2a')
ax2.tick_params(axis='y', length=0)
ax2.xaxis.label.set_color('#aaaaaa')
ax2.set_xlabel('Number of Questions', color='#aaaaaa', fontsize=9)
# --- Part B ---
ax3 = fig.add_axes([0.52, 0.47, 0.44, 0.32])
ax3.set_facecolor('#0d1b2a')
ax3.axis('off')
ax3.text(0.5, 1.015, '③ PART B — Dental Specialties (140 Questions • 560 Marks)',
ha='center', va='bottom', fontsize=13, fontweight='bold',
color='#a5d6a7', transform=ax3.transAxes)
part_b = [
('Dental Materials', 14),
('Oral Pathology & Oral Microbiology', 14),
('Oral Medicine & Radiology', 14),
('Pedodontics & Preventive Dentistry', 14),
('Orthodontics & Dentofacial Orthopedics', 14),
('Periodontology', 14),
('Prosthodontics & Crown & Bridge', 14),
('Conservative Dentistry & Endodontics', 14),
('Oral & Maxillofacial Surgery', 14),
('Public Health Dentistry', 14),
]
total_b = 140
colors_b = ['#2e7d32','#388e3c','#43a047','#4caf50','#66bb6a',
'#1b5e20','#558b2f','#33691e','#827717','#f57f17']
subjects_b = [s for s, q in part_b]
qs_b = [q for s, q in part_b]
y_pos_b = np.arange(len(subjects_b))
ax3.axis('on')
ax3.set_facecolor('#0d1b2a')
bars_b = ax3.barh(y_pos_b, qs_b, color=colors_b, height=0.7, edgecolor='none')
for bar, q in zip(bars_b, qs_b):
ax3.text(bar.get_width() + 0.2, bar.get_y() + bar.get_height()/2,
f'{q} Qs', va='center', fontsize=10, fontweight='bold', color='white')
ax3.text(bar.get_width() / 2, bar.get_y() + bar.get_height()/2,
'10%', va='center', ha='center', fontsize=8.5, color='white', fontweight='bold')
ax3.set_yticks(y_pos_b)
ax3.set_yticklabels(subjects_b, fontsize=8.5, color='#e0e0e0')
ax3.set_xlim(0, 22)
ax3.tick_params(axis='x', colors='#aaaaaa', labelsize=8)
ax3.spines['top'].set_visible(False)
ax3.spines['right'].set_visible(False)
ax3.spines['left'].set_visible(False)
ax3.spines['bottom'].set_color('#334455')
ax3.tick_params(axis='y', length=0)
ax3.set_xlabel('Number of Questions', color='#aaaaaa', fontsize=9)
# ═══════════════════════════════════════════════════════════════════════════════
# SECTION 3: NEET MDS vs NEET PG
# ═══════════════════════════════════════════════════════════════════════════════
ax4 = fig.add_axes([0.04, 0.28, 0.92, 0.16])
ax4.set_facecolor('#0d1b2a')
ax4.axis('off')
ax4.text(0.5, 1.02, '④ NEET MDS vs NEET PG — Head-to-Head Comparison',
ha='center', va='bottom', fontsize=16, fontweight='bold',
color='#f9c74f', transform=ax4.transAxes)
headers2 = ['Feature', 'NEET MDS', 'NEET PG (Medical)']
rows2 = [
['Full Form', 'Natl. Eligibility cum Entrance Test\n(Master of Dental Surgery)',
'Natl. Eligibility cum Entrance Test\n(Postgraduate Medical)'],
['Conducting Body', 'NBE (National Board of Examinations)', 'NBE'],
['Eligibility', 'BDS (5.5 yr degree + 1 yr internship)', 'MBBS (5.5 yr + 1 yr internship)'],
['Total Questions', '240 MCQs', '200 MCQs'],
['Total Marks', '960', '800'],
['Marking Scheme', '+4 / -1 / 0', '+4 / -1 / 0'],
['Duration', '3 hours', '3.5 hours'],
['Mode', 'CBT (Computer Based)', 'CBT (Computer Based)'],
['Exam Structure', 'Part A (Basic) + Part B (Dental)', 'Single Paper (All Subjects)'],
['Admission to', 'MDS / PG Dental Courses', 'MD / MS / PG Medical Courses'],
]
col_widths2 = [0.22, 0.39, 0.39]
col_x2 = [0.0, 0.22, 0.61]
row_h2 = 0.093
y_start2 = 0.93
for j, (hdr, x, w) in enumerate(zip(headers2, col_x2, col_widths2)):
bg = '#1a3a5c' if j == 0 else ('#5d1a1a' if j == 1 else '#1a3d28')
rect = FancyBboxPatch((x + 0.002, y_start2 - row_h2 + 0.005), w - 0.004, row_h2 - 0.005,
boxstyle="round,pad=0.005", linewidth=0,
facecolor=bg, transform=ax4.transAxes, clip_on=False)
ax4.add_patch(rect)
ax4.text(x + w/2, y_start2 - row_h2/2, hdr,
ha='center', va='center', fontsize=11, fontweight='bold',
color='#ffffff', transform=ax4.transAxes)
for i, row in enumerate(rows2):
y = y_start2 - (i + 1) * row_h2
for j, (cell, x, w) in enumerate(zip(row, col_x2, col_widths2)):
bg = '#0d1b2a' if i % 2 == 0 else '#111f30'
if j == 0:
bg = '#12243a'
rect = FancyBboxPatch((x + 0.002, y + 0.003), w - 0.004, row_h2 - 0.006,
boxstyle="round,pad=0.003", linewidth=0,
facecolor=bg, transform=ax4.transAxes, clip_on=False)
ax4.add_patch(rect)
color = '#f9c74f' if j == 0 else ('#ff8a80' if j == 1 else '#b9f6ca')
ax4.text(x + w/2, y + row_h2/2, cell,
ha='center', va='center', fontsize=8.8,
color=color, transform=ax4.transAxes, multialignment='center')
# ═══════════════════════════════════════════════════════════════════════════════
# SECTION 4: Pie charts — Part A vs Part B weightage + Quick Stats
# ═══════════════════════════════════════════════════════════════════════════════
# Pie: Part A vs Part B
ax5 = fig.add_axes([0.05, 0.10, 0.25, 0.16])
ax5.set_facecolor('#0d1b2a')
sizes = [100, 140]
labels = ['Part A\n100 Qs\n(41.7%)', 'Part B\n140 Qs\n(58.3%)']
colors_pie = ['#1e88e5', '#43a047']
wedges, texts = ax5.pie(sizes, labels=labels, colors=colors_pie,
startangle=90, textprops={'color': 'white', 'fontsize': 10},
wedgeprops={'edgecolor': '#0d1b2a', 'linewidth': 2})
ax5.set_title('Part A vs Part B\nQuestion Split', color='#f9c74f', fontsize=11, fontweight='bold', pad=8)
# Pie: Marks distribution
ax6 = fig.add_axes([0.36, 0.10, 0.25, 0.16])
ax6.set_facecolor('#0d1b2a')
sizes2 = [400, 560]
labels2 = ['Part A\n400 Marks\n(41.7%)', 'Part B\n560 Marks\n(58.3%)']
wedges2, texts2 = ax6.pie(sizes2, labels=labels2, colors=['#1e88e5', '#43a047'],
startangle=90, textprops={'color': 'white', 'fontsize': 10},
wedgeprops={'edgecolor': '#0d1b2a', 'linewidth': 2})
ax6.set_title('Marks Distribution', color='#f9c74f', fontsize=11, fontweight='bold', pad=8)
# Quick facts box
ax7 = fig.add_axes([0.66, 0.09, 0.30, 0.18])
ax7.set_facecolor('#12243a')
ax7.axis('off')
facts = [
('⚡', 'Quick Stats — NEET MDS 2026'),
('📋', '240 Total Questions'),
('🎯', '960 Total Marks'),
('⏱', '3 Hours Duration'),
('✅', '+4 for Correct Answer'),
('❌', '-1 for Wrong Answer'),
('🖥', 'Computer Based Test'),
('📅', 'Conducted by NBE'),
]
ax7.text(0.5, 0.95, '⚡ Quick Stats — NEET MDS 2026',
ha='center', va='top', fontsize=11, fontweight='bold',
color='#f9c74f', transform=ax7.transAxes)
stat_items = [
('Total Questions', '240'),
('Total Marks', '960'),
('Duration', '3 Hours'),
('Correct Answer', '+4 Marks'),
('Wrong Answer', '-1 Mark'),
('Mode', 'CBT'),
('Conducted by', 'NBE'),
]
for i, (label, val) in enumerate(stat_items):
y = 0.82 - i * 0.115
ax7.text(0.05, y, label + ':', ha='left', va='center', fontsize=9.5,
color='#90caf9', transform=ax7.transAxes)
ax7.text(0.95, y, val, ha='right', va='center', fontsize=9.5,
color='#ffffff', fontweight='bold', transform=ax7.transAxes)
for i in range(len(stat_items)):
y = 0.74 - i * 0.115
ax7.axhline(y=y, xmin=0.03, xmax=0.97, color='#1e3a5f', linewidth=0.5,
transform=ax7.transAxes)
# Footer
fig.text(0.5, 0.025, 'Source: NBE Official Syllabus | NEET MDS 2026 — New Pattern (effective 2025 onwards)',
ha='center', va='bottom', fontsize=9, color='#556677', style='italic')
plt.savefig('/tmp/workspace/neet-mds-chart/neet_mds_comparison.png',
dpi=150, bbox_inches='tight', facecolor='#0d1b2a', edgecolor='none')
print("Chart saved successfully!")
cd /tmp/workspace/neet-mds-chart && python generate_chart.py 2>&1
~/neet-mds-chart/generate_chart.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/neet-mds-chart/generate_chart.py'
cd /tmp/workspace/neet-mds-chart && python generate_chart.py 2>&1

neet mds comparison
Image · PNG