Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -37,7 +37,7 @@ def init_app():
|
|
| 37 |
|
| 38 |
|
| 39 |
|
| 40 |
-
def predict_roi(machine_price, machine_hashrate, machine_power, machine_efficiency, electricity_rate):
|
| 41 |
"""
|
| 42 |
Real-time prediction:
|
| 43 |
- Uses latest 90 days from blockchain.com
|
|
@@ -57,6 +57,28 @@ def predict_roi(machine_price, machine_hashrate, machine_power, machine_efficien
|
|
| 57 |
machine_efficiency = float(machine_efficiency)
|
| 58 |
electricity_rate = float(electricity_rate)
|
| 59 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
print("User machine specs:")
|
| 61 |
print(f" Price: {miner_price}")
|
| 62 |
print(f" Hashrate (TH/s): {miner_hashrate}")
|
|
@@ -115,6 +137,7 @@ def predict_roi(machine_price, machine_hashrate, machine_power, machine_efficien
|
|
| 115 |
power=machine_power,
|
| 116 |
efficiency=machine_efficiency,
|
| 117 |
electricity_rate=electricity_rate,
|
|
|
|
| 118 |
)
|
| 119 |
print(f"✅ Sequence prepared: {sequence.shape}")
|
| 120 |
|
|
@@ -289,6 +312,11 @@ def create_interface():
|
|
| 289 |
value=30.0,
|
| 290 |
precision=2,
|
| 291 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 292 |
electricity_rate = gr.Number(
|
| 293 |
label="Electricity rate (USD/kWh)",
|
| 294 |
value=0.07, # neutral default
|
|
@@ -328,6 +356,7 @@ def create_interface():
|
|
| 328 |
machine_power,
|
| 329 |
machine_efficiency,
|
| 330 |
electricity_rate,
|
|
|
|
| 331 |
],
|
| 332 |
outputs=[miner_info, prediction, conf_plot, price_plot],
|
| 333 |
)
|
|
|
|
| 37 |
|
| 38 |
|
| 39 |
|
| 40 |
+
def predict_roi(machine_price, machine_hashrate, machine_power, machine_efficiency, electricity_rate,machine_release_date):
|
| 41 |
"""
|
| 42 |
Real-time prediction:
|
| 43 |
- Uses latest 90 days from blockchain.com
|
|
|
|
| 57 |
machine_efficiency = float(machine_efficiency)
|
| 58 |
electricity_rate = float(electricity_rate)
|
| 59 |
|
| 60 |
+
# ----- parse release date -----
|
| 61 |
+
release_str = None
|
| 62 |
+
if machine_release_date is not None:
|
| 63 |
+
release_str = str(machine_release_date).strip()
|
| 64 |
+
if release_str:
|
| 65 |
+
try:
|
| 66 |
+
# validate format YYYY-MM-DD
|
| 67 |
+
datetime.strptime(release_str, "%Y-%m-%d")
|
| 68 |
+
except ValueError:
|
| 69 |
+
error_msg = """
|
| 70 |
+
<div style='background: #e74c3c; color: white; padding: 20px; border-radius: 10px;'>
|
| 71 |
+
<h3 style='margin: 0;'>❌ Invalid release date</h3>
|
| 72 |
+
<p style='margin: 10px 0 0 0;'>
|
| 73 |
+
Please enter the machine release date in the format <b>YYYY-MM-DD</b>,
|
| 74 |
+
for example <code>2020-05-01</code>.
|
| 75 |
+
</p>
|
| 76 |
+
</div>
|
| 77 |
+
"""
|
| 78 |
+
return error_msg, error_msg, None, None
|
| 79 |
+
else:
|
| 80 |
+
release_str = None # empty box -> fall back to S19 Pro default
|
| 81 |
+
|
| 82 |
print("User machine specs:")
|
| 83 |
print(f" Price: {miner_price}")
|
| 84 |
print(f" Hashrate (TH/s): {miner_hashrate}")
|
|
|
|
| 137 |
power=machine_power,
|
| 138 |
efficiency=machine_efficiency,
|
| 139 |
electricity_rate=electricity_rate,
|
| 140 |
+
release_date=release_str
|
| 141 |
)
|
| 142 |
print(f"✅ Sequence prepared: {sequence.shape}")
|
| 143 |
|
|
|
|
| 312 |
value=30.0,
|
| 313 |
precision=2,
|
| 314 |
)
|
| 315 |
+
machine_release_date = gr.Textbox(
|
| 316 |
+
label="Machine release date (YYYY-MM-DD)",
|
| 317 |
+
value="2020-05-01", # sensible default
|
| 318 |
+
placeholder="e.g. 2020-05-01",
|
| 319 |
+
)
|
| 320 |
electricity_rate = gr.Number(
|
| 321 |
label="Electricity rate (USD/kWh)",
|
| 322 |
value=0.07, # neutral default
|
|
|
|
| 356 |
machine_power,
|
| 357 |
machine_efficiency,
|
| 358 |
electricity_rate,
|
| 359 |
+
machine_release_date
|
| 360 |
],
|
| 361 |
outputs=[miner_info, prediction, conf_plot, price_plot],
|
| 362 |
)
|