dindizz commited on
Commit
2f115f4
·
verified ·
1 Parent(s): accd898

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +65 -27
app.py CHANGED
@@ -1,53 +1,91 @@
1
  import gradio as gr
 
2
 
3
- def cmda_redevelopment_calculator(uds, num_owners, guideline_value, construction_cost, current_area):
4
- # Calculations
5
- normal_fsi_area = 2.0 * uds
6
- premium_fsi_area = 2.8 * uds
7
- extra_area = 0.8 * uds # This is the part that needs premium FSI
 
 
 
 
8
 
9
- # Premium FSI charges
10
- premium_fsi_charge = 0.4 * guideline_value * extra_area
 
 
11
 
12
- # Total construction cost (for full 2.8x UDS build)
13
- total_construction_cost = premium_fsi_area * construction_cost
14
 
15
- # Area per owner (equal split)
16
- area_per_owner = premium_fsi_area / num_owners
17
- uds_per_owner = uds / num_owners
 
 
 
 
 
18
  current_area_per_owner = current_area / num_owners
 
 
19
 
20
- # Benefit per owner
21
- area_gain_per_owner = area_per_owner - current_area_per_owner
 
 
 
 
 
 
22
 
23
  return {
24
- "Normal FSI Buildable Area (2.0 x UDS)": f"{normal_fsi_area:.2f} sq.ft",
25
- "Max Buildable Area with Premium FSI (2.8 x UDS)": f"{premium_fsi_area:.2f} sq.ft",
26
- "Extra Area via Premium FSI (0.8 x UDS)": f"{extra_area:.2f} sq.ft",
 
27
  "Premium FSI Charges": f"₹ {premium_fsi_charge:,.2f}",
28
- "Total Construction Cost (at 2.8 x UDS)": f"₹ {total_construction_cost:,.2f}",
29
- "Built-up Area per Owner": f"{area_per_owner:.2f} sq.ft",
 
 
 
 
 
 
30
  "Current Area per Owner": f"{current_area_per_owner:.2f} sq.ft",
31
- "Net Area Gain per Owner": f"{area_gain_per_owner:.2f} sq.ft"
32
- }
 
 
33
 
34
- # Gradio interface
35
  inputs = [
36
  gr.Number(label="Current UDS (in sq.ft)", value=450),
37
  gr.Number(label="Number of Owners", value=4),
 
 
38
  gr.Number(label="Guideline Value (₹/sq.ft)", value=5000),
39
  gr.Number(label="Construction Cost (₹/sq.ft)", value=3500),
40
- gr.Number(label="Current Total Area (in sq.ft)", value=1800)
 
41
  ]
42
 
43
- outputs = gr.JSON(label="CMDA Redevelopment Report")
 
 
 
44
 
45
  app = gr.Interface(
46
- fn=cmda_redevelopment_calculator,
47
  inputs=inputs,
48
  outputs=outputs,
49
- title="CMDA Redevelopment Calculator (Equal Share Model)",
50
- description="This calculator estimates redevelopment potential based on UDS, FSI rules, and premium FSI charges. Assumes equal area distribution among owners."
 
 
 
51
  )
52
 
53
  if __name__ == "__main__":
 
1
  import gradio as gr
2
+ import matplotlib.pyplot as plt
3
 
4
+ def cmda_redevelopment_fsi_calculator(
5
+ uds, num_owners, old_fsi, new_fsi,
6
+ guideline_value, construction_cost, current_area,
7
+ builder_share_percent
8
+ ):
9
+ # Step 1: Calculate built-up areas
10
+ old_area = old_fsi * uds
11
+ new_area = new_fsi * uds
12
+ area_gain = new_area - old_area
13
 
14
+ # Step 2: Premium FSI
15
+ premium_fsi_factor = max(0, new_fsi - 2.0)
16
+ premium_area = premium_fsi_factor * uds
17
+ premium_fsi_charge = 0.4 * guideline_value * premium_area
18
 
19
+ # Step 3: Construction Cost
20
+ total_construction_cost = new_area * construction_cost
21
 
22
+ # Step 4: Builder Share
23
+ builder_share_area = (builder_share_percent / 100) * new_area
24
+ owner_share_area = new_area - builder_share_area
25
+ resale_value_builder = builder_share_area * guideline_value
26
+ construction_cost_builder = builder_share_area * construction_cost
27
+ builder_profit = resale_value_builder - construction_cost_builder - premium_fsi_charge
28
+
29
+ # Step 5: Owner-wise calculations
30
  current_area_per_owner = current_area / num_owners
31
+ owner_area_per_person = owner_share_area / num_owners
32
+ gain_per_owner = owner_area_per_person - current_area_per_owner
33
 
34
+ # Step 6: Plotting
35
+ fig, ax = plt.subplots(figsize=(6, 4))
36
+ labels = ['Old FSI Area', 'New FSI Area', 'Premium FSI Area']
37
+ values = [old_area, new_area, premium_area]
38
+ ax.bar(labels, values, edgecolor='black')
39
+ ax.set_ylabel("Total Area (sq.ft)")
40
+ ax.set_title("FSI Area Comparison")
41
+ plt.tight_layout()
42
 
43
  return {
44
+ "Old FSI Buildable Area": f"{old_area:.2f} sq.ft",
45
+ "New FSI Buildable Area": f"{new_area:.2f} sq.ft",
46
+ "Total Area Gain": f"{area_gain:.2f} sq.ft",
47
+ "Premium FSI Portion": f"{premium_area:.2f} sq.ft",
48
  "Premium FSI Charges": f"₹ {premium_fsi_charge:,.2f}",
49
+ "Total Construction Cost (New FSI)": f"₹ {total_construction_cost:,.2f}",
50
+ "--- Builder Deal Analysis ---": "",
51
+ "Builder Share Area": f"{builder_share_area:.2f} sq.ft",
52
+ "Owner Share Area": f"{owner_share_area:.2f} sq.ft",
53
+ "Resale Value of Builder Area": f"₹ {resale_value_builder:,.2f}",
54
+ "Construction Cost for Builder": f"₹ {construction_cost_builder:,.2f}",
55
+ "Estimated Builder Profit": f"₹ {builder_profit:,.2f}",
56
+ "--- Owner Breakdown ---": "",
57
  "Current Area per Owner": f"{current_area_per_owner:.2f} sq.ft",
58
+ "New Area per Owner": f"{owner_area_per_person:.2f} sq.ft",
59
+ "Net Gain per Owner": f"{gain_per_owner:.2f} sq.ft"
60
+ }, fig
61
+
62
 
63
+ # Gradio UI
64
  inputs = [
65
  gr.Number(label="Current UDS (in sq.ft)", value=450),
66
  gr.Number(label="Number of Owners", value=4),
67
+ gr.Number(label="Old FSI", value=1.5),
68
+ gr.Number(label="New FSI (max 2.8)", value=2.8),
69
  gr.Number(label="Guideline Value (₹/sq.ft)", value=5000),
70
  gr.Number(label="Construction Cost (₹/sq.ft)", value=3500),
71
+ gr.Number(label="Current Total Area (in sq.ft)", value=1800),
72
+ gr.Slider(label="Builder Share (%) of Redeveloped Area", value=40, minimum=0, maximum=80, step=1)
73
  ]
74
 
75
+ outputs = [
76
+ gr.JSON(label="CMDA Redevelopment & Builder Analysis"),
77
+ gr.Plot(label="FSI Area Comparison")
78
+ ]
79
 
80
  app = gr.Interface(
81
+ fn=cmda_redevelopment_fsi_calculator,
82
  inputs=inputs,
83
  outputs=outputs,
84
+ title="CMDA Redevelopment Calculator with Builder Deal Estimator",
85
+ description=(
86
+ "Compare old vs new FSI, calculate premium FSI charges, construction costs, and simulate builder-owner deals. "
87
+ "Premium FSI is charged only beyond 2.0 FSI. Builder profit assumes resale at guideline value."
88
+ )
89
  )
90
 
91
  if __name__ == "__main__":