Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,53 +1,91 @@
|
|
1 |
import gradio as gr
|
|
|
2 |
|
3 |
-
def
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
|
|
|
|
|
|
|
|
8 |
|
9 |
-
# Premium FSI
|
10 |
-
|
|
|
|
|
11 |
|
12 |
-
#
|
13 |
-
total_construction_cost =
|
14 |
|
15 |
-
#
|
16 |
-
|
17 |
-
|
|
|
|
|
|
|
|
|
|
|
18 |
current_area_per_owner = current_area / num_owners
|
|
|
|
|
19 |
|
20 |
-
#
|
21 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
|
23 |
return {
|
24 |
-
"
|
25 |
-
"
|
26 |
-
"
|
|
|
27 |
"Premium FSI Charges": f"₹ {premium_fsi_charge:,.2f}",
|
28 |
-
"Total Construction Cost (
|
29 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
"Current Area per Owner": f"{current_area_per_owner:.2f} sq.ft",
|
31 |
-
"
|
32 |
-
|
|
|
|
|
33 |
|
34 |
-
# Gradio
|
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 =
|
|
|
|
|
|
|
44 |
|
45 |
app = gr.Interface(
|
46 |
-
fn=
|
47 |
inputs=inputs,
|
48 |
outputs=outputs,
|
49 |
-
title="CMDA Redevelopment Calculator
|
50 |
-
description=
|
|
|
|
|
|
|
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__":
|