MODULE GUIDES
Data
Import production data from CSV or XLSX with unit and date detection, validate it, check allocation, export it and send it to other modules.
Overview
Data is the project's production and well store. You import daily or monthly rates, pressures, choke and hours on from CSV files or spreadsheet workbooks, check them in a validation report with one-click fixes, compare well volumes with facility meters, and send a clean well history to Decline & RTA or Material balance. Every change, from an import to a single edited cell, is written to the Audit trail with who made it and when.
Inside the store everything is held in field units on calendar-day rates: STB/d, Mscf/d, psia, 1/64 in and hours.
Inputs
What you can import
Choose under 1. What are you importing?:
| Destination | What it holds |
|---|---|
| Production | Daily or monthly rates, pressures, choke and hours. Long tables (well, date, values), single-well tables, or wide tables (date plus one column per well for one channel). |
| Well headers | One row per well: name, type, latitude, longitude, datum and elevation, spud, completion and first-production dates, initial pressure, bubble point, skin, lift, aliases. |
| Facility totals | Measured field or facility oil, gas and water, as monthly volumes or daily rates, for the allocation check. |
You can paste from a spreadsheet or upload .csv, .tsv, .txt, .xlsx, .xls, .xlsm, .xlsb or .ods. For a workbook, pick the Sheet. Workbook dates are read from their serial number (1900 or 1904 system), so no time-zone shift can move a production day.
Channels and units
| Channel | Units accepted |
|---|---|
| Oil, water, water injection rate | STB/d, bbl/d, MSTB/d, m³/d, Sm³/d |
| Gas, gas injection rate | scf/d, Mscf/d, MMscf/d, Sm³/d, kSm³/d, 10³m³/d, MSm³/d |
| Oil, gas, water volume per period | STB, bbl, MSTB, m³, Sm³; scf, Mscf, MMscf, Bscf, Sm³, kSm³, 10³m³, MSm³ |
| Tubing head, bottomhole, casing, static reservoir pressure | psia, psig, bara, barg, kPa(a), kPa(g), MPa(a), MPa(g), atm, kgf/cm²(g) |
| Choke | 1/64 in, in, mm |
| Hours on | hours, days on, % uptime, uptime fraction |
Conversions use exact defining factors: 1 bbl = 0.158987294928 m³, 1 ft³ = 0.028316846592 m³, 1 psi = 6,894.757 Pa. Monthly volumes become calendar-day rates by dividing by the days in that month, leap years included.
Import settings
| Setting | Default | Notes |
|---|---|---|
| Date order | Detected | Day first, month first or year first. |
| Frequency | Auto | Daily or monthly. |
| Atmosphere | 14.696 psia | Added to gauge readings (psig, barg, kPa(g)) to give absolute pressure. |
| Gas standard conditions | Same reference | Converts ft³ to m³ only. The alternative moves Sm³ at 15 °C to scf at 60 °F (x 0.99808). |
| Well name (no well column) | Selected well | For single-well tables. |
| Start date (day 0) | None | For an elapsed-days column. |
Methods
Column detection
The importer finds the header row (and a units row under it, if there is one), then classifies every column by its header. For each column the mapping table shows Maps to, Unit, Confidence (high, medium, low) and Why. Nothing is committed until you import, and you can change any mapping first.
A few columns are skipped on purpose, with the reason shown:
- Cumulatives: rates are imported and cumulatives recomputed, so one typo cannot spread.
- Ratios (GOR, water cut): recomputed from the rates.
- Gas-lift gas: injected, not produced, so it is never mixed into the gas rate.
- Total liquid or gross: import oil and water separately, or water cut is lost.
- A bare "Pressure" column: you choose tubing head, bottomhole, casing or static.
- Choke in % opening: it cannot be turned into a size without the valve curve.
Header units
The unit written in a header is used as written: bbl/d stays bbl/d, Sm3 stays Sm³ and m3 stays m³. When a header names no unit, the importer falls back as follows and marks the column medium or low confidence:
| Header has no unit | Read as |
|---|---|
| Liquid or gas rate in a daily table, or a header that says rate, per day or daily | STB/d or Mscf/d |
| Liquid or gas column in a monthly table | STB or Mscf per month (low confidence) |
| Wellhead pressure (tubing head, casing) | Gauge: psig |
| Downhole pressure (bottomhole, static) | Absolute: psia |
| Choke | 64ths of an inch |
| Hours on | Hours |
A bare psi, bar, kPa or MPa follows the same rule: gauge on wellhead pressures, absolute downhole.
If the gas column has no unit and reading it as Mscf would give a median GOR below 5 scf/STB, the importer reads it as MMscf instead and says so.
Preview checks
Before you import, the preview lists problems with line numbers:
- Negative values in rates, volumes, choke, hours or absolute pressures (high severity).
- Implausible single-well values, above any producing well on record and almost always a unit slip (high severity), and unusual ones worth a check (medium). Facility totals are exempt.
- Mixed date formats in one column (medium).
- Ambiguous dates: every a/b/yyyy date has day and month at or below 12, so the order cannot be told from the data (medium).
| Channel | Unusual above | Implausible above |
|---|---|---|
| Oil | 30,000 STB/d | 100,000 STB/d |
| Water | 50,000 STB/d | 150,000 STB/d |
| Gas | 150,000 Mscf/d | 500,000 Mscf/d |
| Water injection | 60,000 STB/d | 200,000 STB/d |
| Gas injection | 150,000 Mscf/d | 500,000 Mscf/d |
| Tubing head, casing pressure | 15,000 psia | 30,000 psia |
| Bottomhole, static pressure | 20,000 psia | 30,000 psia |
High-severity problems block the import until you fix the mapping or tick the confirmation that the values are right. Confirmed values also appear in Validation.
Well matching and merging
Imported well names are matched to existing wells exactly, after normalisation, or by alias. Fuzzy matches default to a new well; you choose under Goes to. When wells already hold data, Overlapping dates sets how dates that exist on both sides are handled: Merge (update cells) (default), Append (keep both) or Replace date range.
Validation
Validation checks every record that is not excluded and reports each issue with a severity, the affected dates and, where a safe one exists, a one-click fix. You can also exclude the records or mark the issue reviewed.
Checks: future dates, duplicate dates, negative values, impossible values, pressures below atmospheric, tubing head pressure above bottomhole, hours over the period, rate with no hours, pressure above initial, injectors producing, producing records before the first-production (or completion) date, gaps, unit slips, spikes, GOR jumps, water-cut jumps and flat-lined values.
- Spikes use a Hampel identifier (Pearson 2002) on log rates: z = (x - rolling median) / (1.4826 x MAD). Rates are converted to producing-day rates first, so a short day is not reported as a spike. The default threshold is z = 6.
- Unit slips are runs of values a factor of 1,000 (scf, Mscf, MMscf) or 6.2898 (m³ and bbl) away from the rest of the series.
Fixes include blanking a value, capping hours at the period length, scaling a channel (for unit slips), adding atmospheric pressure (gauge to absolute), deleting duplicate rows and filling gaps as shut-in. Duplicates that disagree have no automatic fix: you pick Keep row n for each date, and the choice is audited.
Allocation
Allocation compares well volumes with a measured facility total, per fluid and per period:
allocation factor F = facility volume / sum of well volumes
F below 1 means the well estimates are high. A period is flagged when F is outside 1 ± tolerance (default 0.05) or when well data is incomplete. Choose how theoretical well volumes are built:
- Recorded rates (pro-rata): the stored rate x days.
- Well test x hours on: each well's latest test on or before the date, times its producing hours (API MPMS ch. 20.1). Paste tests under Paste well tests (well, date, oil, gas, water) and click Save well tests.
Optional corrections for a stock-tank meter: BS&W in well oil and Oil shrinkage, both fractions. Net oil = gross x (1 - BS&W) x (1 - shrinkage); the BS&W water is added to the well's water. Prorate wells to facility multiplies every well's volume in the period by F, for the fluids you choose. The check and the change are both audited.
Workflow
- Open Data and click Import data (or Load demo data to explore the demo field read-only).
- Under 1. What are you importing?, pick Production, Well headers or Facility totals.
- Under 2. Paste or upload, paste a table or upload a file.
- Under 3. Settings, confirm date order, frequency, atmosphere and gas standard conditions.
- Check every row of the mapping table, especially Unit and Confidence. Fix anything marked low.
- Read the preview problems and the first converted rows. Choose how overlapping dates are handled, then click Import n records.
- Open Validation, work through the issues, and apply fixes or exclude records.
- On Wells, set initial pressure and other header data.
- On Time series, review the plots, click points to exclude or re-include them, then send the well to another module.
- If you have facility totals, run Allocation.
Interpreting results
On Time series, Rate basis switches between calendar-day rates (volume / days in period: volumes add up, downtime shows as dips) and producing-day rates (volume / time on production: true deliverability, but overstates volumes if summed).
The Validation tab label shows the count of open issues. Work high severity first: they are usually unit or sign errors that would corrupt every downstream analysis.
ML tools run anomaly detection, virtual flow metering, a short-term forecast and candidate ranking on the store. Their results come from methods tested on synthetic data only; recall and precision on real wells are not yet measured.
Common pitfalls
Exports
Under Export (re-imports identically) on Import:
- Production CSV (field): STB/d, Mscf/d, psia, 1/64 in, h.
- Production CSV (metric): Sm³/d, kSm³/d, bara, mm, h.
- Workbook (XLSX): sheets Production (field units), Wells and Audit.
- Full store (JSON): the whole store, including the audit trail.
Numbers are written at full precision, so exporting and re-importing gives identical field-unit values.
Hand-off to other modules
On Time series, for a producer:
- Send to Decline & RTA writes the well's oil (or gas, for a gas producer) rates and bottomhole pressure, on the chosen rate basis. Excluded records, zero-rate and zero-hour records are left out; for a duplicate date the last record is sent. At least 3 usable rates are needed.
- Send to Material balance builds a tank history from all producers of the same type: cumulative oil, gas, water and injection at every date with a static pressure, starting from the initial pressure set on Wells. Pressures from several wells on one date are averaged arithmetically, not by pore volume.
If the target module already holds a history, or the well has open high-severity issues, you are asked to confirm. A version is saved first, so you can restore the previous analysis.