deltamind.hf.space / app /seed_data.py
Emeritus-21's picture
Upload 38 files
46e770f verified
Raw
History Blame Contribute Delete
2.02 kB
"""Seed database with sample Niger Delta production data."""
import numpy as np
from datetime import datetime, timedelta
from app.core.database import insert_production
OMLS = ["OML-14","OML-18","OML-22","OML-29","OML-58"]
FIELDS = {"OML-14":["Obagi","Erema"],"OML-18":["Nembe Creek","Cough Creek"],
"OML-22":["Odidi","Batton"],"OML-29":["Agbada","Agbada West"],"OML-58":["Akri","Ogoda"]}
WELL_PREFIX = {"OML-14":"OBG","OML-18":"NCR","OML-22":"ODD","OML-29":"AGB","OML-58":"AKR"}
def seed_production(days: int = 30):
np.random.seed(42)
records = 0
for oml in OMLS:
for field in FIELDS[oml]:
for w in range(4):
wid = f"{WELL_PREFIX[oml]}-{w+1:02d}"
base_oil = np.random.uniform(500, 4000)
base_gas = base_oil * np.random.uniform(0.3, 1.2) / 1000
base_wc = np.random.uniform(20, 80)
for d in range(days):
date = (datetime.now() - timedelta(days=days-d)).strftime("%Y-%m-%d")
decline = 1 - (d * 0.001)
noise = np.random.uniform(0.92, 1.08)
status = np.random.choice(["active","active","active","active","shut-in"], p=[0.9,0.025,0.025,0.025,0.025])
insert_production({
"oml_id": oml, "well_id": wid, "field_name": field,
"oil_rate_bpd": round(base_oil * decline * noise, 1) if status == "active" else 0,
"gas_rate_mmscfd": round(base_gas * decline * noise, 3) if status == "active" else 0,
"water_cut_pct": round(base_wc + d * 0.1 + np.random.uniform(-2, 2), 1),
"wellhead_pressure_psi": round(np.random.uniform(800, 3000), 0),
"temperature_f": round(np.random.uniform(120, 220), 1),
"status": status, "record_date": date
})
records += 1
return records