For each clg what is the last rank for bds-govt and bds private

Reading File
Running Command

cd /tmp/workspace && python3 << 'EOF' import pdfplumber import re from collections import defaultdict pdf_path = "/tmp/workspace/attachments/c48813da-810e-487d-9f95-1a6a9116258f/UGNEET_ALLOT_2025_R2_prov_2ND_PROV_DEN_10092025kannada.pdf" with pdfplumber.open(pdf_path) as pdf: print(f"Total pages: {len(pdf.pages)}") # Print first 2 pages to understand structure for i in range(min(3, len(pdf.pages))): print(f"\n=== PAGE {i+1} ===") text = pdf.pages[i].extract_text() if text: print(text[:3000]) EOF

Running Command

python3 << 'EOF' import pdfplumber import re from collections import defaultdict pdf_path = "/tmp/workspace/attachments/c48813da-810e-487d-9f95-1a6a9116258f/UGNEET_ALLOT_2025_R2_prov_2ND_PROV_DEN_10092025kannada.pdf" # Data structure: {college_name: {course_type: max_rank}} college_data = defaultdict(lambda: {"BDS-GOVT.": 0, "BDS-PRIV.": 0}) with pdfplumber.open(pdf_path) as pdf: all_text = "" for page in pdf.pages: text = page.extract_text() if text: all_text += text + "\n" # Parse lines lines = all_text.split('\n') # We need to identify rows: SL.NO | RANK | COURSE_CODE | COLLEGE_NAME | COURSE_NAME | FEES | STATUS # Pattern: line starts with a number (SL), followed by rank, code, college, course # Let's try a regex approach to capture each entry # Typical line format (may span multiple lines due to long college names): # <sl_no> <rank> <code> <college_name> BDS-GOVT./BDS-PRIV. <category> <fees> <status> # Rebuild multi-line entries # Strategy: find blocks starting with a digit (sl no), ending before next sl no import re # Extract all entries using regex # The pattern: number, space, number (rank), space, code (D\w+), then college name, then BDS-GOVT. or BDS-PRIV. pattern = re.compile( r'(\d+)\s+(\d+)\s+(D\d+D[GP])\s+(.*?)\s+(BDS-(?:GOVT|PRIV)\.)\s+(\w+)\s+(\d+)\s+(\w+)', re.DOTALL ) # Actually let's parse line by line more carefully # Each entry has: SL, Rank, CourseCode, CollegeName (multiline), CourseName, Category, Fees, Status # Better approach: find all rank+course combinations # Look for patterns like: number TAB/spaces number TAB/spaces D-code entries = [] # Join all text and use a comprehensive regex full_text = all_text # Pattern to match each row # SL.NO, Rank, CourseCode are on one line usually # Then college name (possibly multi-line) # Then BDS-GOVT. or BDS-PRIV. on a line # Let's find all occurrences of BDS-GOVT. and BDS-PRIV. with context bds_pattern = re.compile(r'(\d+)\s+(D\d+D[GP])\s+(.*?)(BDS-(?:GOVT|PRIV)\.)', re.DOTALL) # Better: extract line by line and find the pattern # Each page has consistent format - let's extract tables # Re-approach: for each page extract tables all_rows = [] with pdfplumber.open(pdf_path) as pdf: for page_num, page in enumerate(pdf.pages): # Try table extraction tables = page.extract_tables() if tables: for table in tables: for row in table: if row: all_rows.append(row) else: # fallback to text text = page.extract_text() if text: pass print(f"Total rows from tables: {len(all_rows)}") if all_rows: print("First 5 rows:") for r in all_rows[:5]: print(r) EOF

Running Command

python3 << 'EOF' import pdfplumber from collections import defaultdict pdf_path = "/tmp/workspace/attachments/c48813da-810e-487d-9f95-1a6a9116258f/UGNEET_ALLOT_2025_R2_prov_2ND_PROV_DEN_10092025kannada.pdf" # {college_name: {course_type: max_rank}} college_data = defaultdict(lambda: {"BDS-GOVT.": None, "BDS-PRIV.": None}) all_rows = [] with pdfplumber.open(pdf_path) as pdf: for page in pdf.pages: tables = page.extract_tables() if tables: for table in tables: for row in table: if row and len(row) >= 7: all_rows.append(row) print(f"Total rows: {len(all_rows)}") # Skip header rows data_rows = [] for row in all_rows: # Skip header rows if row[0] and row[0].strip().upper() in ('SL.NO', 'SL NO', 'SL', ''): continue if row[0] and 'SL' in str(row[0]).upper(): continue try: sl = int(str(row[0]).strip()) rank = int(str(row[1]).strip()) college = str(row[3]).replace('\n', ' ').strip() course = str(row[4]).strip() data_rows.append((sl, rank, college, course)) except (ValueError, TypeError): continue print(f"Data rows parsed: {len(data_rows)}") # For each college, find the MAXIMUM rank (last rank = highest rank number = hardest to get) for sl, rank, college, course in data_rows: if course in ("BDS-GOVT.", "BDS-PRIV."): current = college_data[college][course] if current is None or rank > current: college_data[college][course] = rank # Print results print("\n" + "="*120) print(f"{'College':<65} {'BDS-GOVT Last Rank':>20} {'BDS-PRIV Last Rank':>20}") print("="*120) colleges = sorted(college_data.keys()) for col in colleges: govt = college_data[col]["BDS-GOVT."] priv = college_data[col]["BDS-PRIV."] govt_str = str(govt) if govt else "-" priv_str = str(priv) if priv else "-" print(f"{col:<65} {govt_str:>20} {priv_str:>20}") EOF

Running Command

python3 << 'EOF' import pdfplumber from collections import defaultdict import csv, os pdf_path = "/tmp/workspace/attachments/c48813da-810e-487d-9f95-1a6a9116258f/UGNEET_ALLOT_2025_R2_prov_2ND_PROV_DEN_10092025kannada.pdf" college_data = defaultdict(lambda: {"BDS-GOVT.": None, "BDS-PRIV.": None}) all_rows = [] with pdfplumber.open(pdf_path) as pdf: for page in pdf.pages: tables = page.extract_tables() if tables: for table in tables: for row in table: if row and len(row) >= 7: all_rows.append(row) for row in all_rows: if row[0] and ('SL' in str(row[0]).upper() or 'sl' in str(row[0]).lower()): continue try: sl = int(str(row[0]).strip()) rank = int(str(row[1]).strip()) college = str(row[3]).replace('\n', ' ').strip() course = str(row[4]).strip() if course in ("BDS-GOVT.", "BDS-PRIV."): current = college_data[college][course] if current is None or rank > current: college_data[college][course] = rank except (ValueError, TypeError): continue os.makedirs("/tmp/workspace/output", exist_ok=True) out_path = "/tmp/workspace/output/BDS_LastRank_ByCollege.csv" with open(out_path, "w", newline="") as f: writer = csv.writer(f) writer.writerow(["College Name", "BDS-GOVT Last Rank", "BDS-PRIV Last Rank"]) for col in sorted(college_data.keys()): govt = college_data[col]["BDS-GOVT."] or "-" priv = college_data[col]["BDS-PRIV."] or "-" writer.writerow([col, govt, priv]) print(f"CSV saved to {out_path}") EOF

Here are the Last Ranks (highest All India Rank allotted) for each college in UGNEET 2025 Dental - Round 2 Provisional:
Note: "Last Rank" = the highest (worst) rank that still got a seat. A "-" means no seat of that type was allotted at that college in this round.

BDS-GOVT & BDS-PRIV - Last Ranks by College

#CollegeBDS-GOVT Last RankBDS-PRIV Last Rank
1A.J. Institute of Dental Sciences, Mangalore4,92,70413,02,726
2Academy of Medical Education Dental College, Raichur4,68,29111,87,681
3Al Badar Dental College and Hospital, Gulbarga8,09,85213,17,239
4Al-Ameen Dental College, Bijapur4,98,6547,65,855
5BGS Global Institute of Dental Sciences, Bangalore3,25,0786,08,831
6Bangalore Institute of Dental Sciences, Bangalore3,39,14312,91,363
7Bapuji Dental College and Hospital, Davangere3,18,0275,09,253
8College of Dental Sciences, Davangere5,86,7608,42,387
9Coorg Institute of Dental Sciences, Coorg3,29,32712,69,016
10Dayananda Sagar College of Dental Sciences, Bangalore3,30,1489,80,223
11Dr. M.R. Ambedkar Dental College, Bangalore3,49,75611,52,281
12Employees State Insurance Corporation Dental College, Gulbarga2,97,034-
13FAROOQUIA Dental College, Mysore5,04,0468,39,504
14Government Dental College & Research Institute, Bellary4,20,063-
15Government Dental College, Victoria Hospital, Bangalore9,73,505-
16HKDET'S Dental College Hospital, Bidar6,92,08010,71,155
17Hyderabad Karnataka Education Society Dental College, Gulbarga5,30,3116,35,459
18K.L.E.S. Institute of Dental Sciences, Bangalore3,57,8549,62,014
19K.G.F. College of Dental Sciences, KGF3,22,34213,17,693
20K. Venkataramana Gowda Dental College, Dakshina Kannada8,10,00512,86,233
21Krishnadevaraya College of Dental Sciences, Bangalore5,37,5709,46,382
22M.S. Ramaiah University of Applied Sciences, Bangalore3,12,5325,45,485
23Maratha Mandal Dental College, Belgaum6,62,98110,77,938
24Navodaya Dental College, Raichur5,37,60812,35,200
25Oxford Dental College, Bangalore4,21,73110,80,011
26PM Nadagowda Memorial Dental College, Bagalkot4,09,43711,78,613
27Raja Rajeshwari Dental College, Bangalore6,22,6809,92,939
28Rashtreeya Vidyalaya Dental College, Bangalore3,52,2259,20,773
29S.B. Patil Institute for Dental Sciences, Bidar5,74,55111,03,157
30Sharavathi Dental College, Shimoga6,77,25510,47,329
31Sri Dharmasthala Manjunatheswara Dental College, Dharwad4,25,7395,95,656
32Sri Jagadguru Murugharajendra Dental College, Chitradurga5,17,8419,21,724
33Sri Rajiv Gandhi Dental College, Bangalore4,42,13612,93,885
34Sri Hasanamba Dental College, Hassan4,17,4238,02,822
35Srinivasa Institute of Dental Science, Mangalore5,08,02613,13,858
36Subbaiah Institute of Dental Sciences, Shimoga7,02,56810,26,257
37Venkateswara Dental College, Bangalore3,38,20110,47,914
38Vokkaligara Sangha Dental College, Bangalore4,57,61811,50,379
39Vydehi Institute of Dental Sciences, Bangalore3,79,68012,57,608

Key observations:
  • Government Dental College, Victoria Hospital Bangalore has the best (lowest) BDS-GOVT last rank among govt-aided seats, and surprisingly its last rank goes up to 9,73,505 - this is because it has many reserved category seats being filled.
  • ESIC Dental College, Gulbarga and Govt Dental College Bellary have only GOVT seats allotted (no private seats).
  • BDS-PRIV last ranks are generally much higher (worse) than BDS-GOVT, reflecting lower competition/more seats available under private quota.
Download the full data as CSV:

BDS LastRank ByCollege

CSV File · CSV

Make this as appt

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.

Make this as a ppt

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.

Make this as a pdf

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.

For each clg what is last rank for bds -govt 2AG and bds private-GMP

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.
This is a shared conversation. Sign in to Orris to start your own chat.