GEO Drill Cores? manual

Manual

What this application shows, how the numbers are computed, and how to review and correct the results.

What happens to a photo (the pipeline)

Every core-box photo goes through four automatic steps:

  1. Wood subtraction — SAM3 (a segmentation AI) finds the wooden box with the prompts “wooden box” / “wooden plank”, guarded by “stone” / “rock” so wood-coloured core is never removed.
  2. Box segmentation — the box geometry is derived from the wood mask; each channel (row) is exactly 1 m of core, which calibrates the mm-per-pixel scale. Channels merge into one depth-true strip; missing rock stays as gaps.
  3. Fracture candidates — a union map of the rock (8 material prompts) plus two candidate layers: direct crack prompts and “multi-mask diff” edges where the prompt masks disagree.
  4. Crack confirmation — a candidate becomes a crack only if it spans ≥ 70 % of the core height, runs 30–90° to the core axis, is ≤ 20 mm thick and ≤ 90 mm along the core, with sufficient confidence. Everything else is kept as a rejected candidate(grey), never deleted.

Depth of a crack: channel_start + x / px_per_m — every channel is 1 m, so worst-case position error is a few mm.

The views

BoreholesCampaign dashboard: every drill with its progress, fracture count, FF and RQD badge. Sortable table or cards. Auto-refreshes while the worker is processing.
Box viewOne drill as horizontal 1 m-ruled strips, one row per box — closest to how the boxes physically look. Each row links to its box report.
Go to groundThe whole drill joined into one vertical core, true aspect ratio, depth axis running to ground. Columns: core with marks · untouched original · RQD per 1 m · fractures per 1 m. Scroll down = deeper.
Box reportEverything about one box: all computed parameters, the interactive strip, fracture and channel tables, and every pipeline step image down to the original photo — the verification trail.

Controls

min confidenceHides cracks below the threshold and recomputes RQD/FF live. The pipeline’s own cut-off is 0.45; lowering below that only adds cracks if “rejected” is shown. Your own confirmations always stay visible.
show rejectedDisplays the grey dashed candidates the pipeline declined — useful for spotting missed cracks in crushed sections.
zoom (ground view)Pixels per metre, 20–3000, with presets. Rendering is depth- and aspect-true; zooming keeps the depth you are looking at. Higher zoom automatically loads sharper imagery.
go to / depth chipJump to any depth; the floating chip shows where you are while scrolling.
clicksCrack mark → inspector panel. Core (ground view) → box report. Table row status → inspector. Step images → full resolution.
⬇ CSVDownloads all fractures of the drill with parameters, pipeline verdicts and your verdicts.

What the numbers mean

RQD (Rock Quality Designation, Deere 1963): the share of intact core pieces longer than 10 cm within an interval. Pieces are the spans between consecutive confirmed cracks. Classes: ■ ≥90 Excellent · ■ 75–90 Good · ■ 50–75 Fair · ■ 25–50 Poor · ■ <25 Very Poor.

FF — fracture frequency, cracks per metre. Mean spacing and the ISRM class derive from the same crack depths.

Confidence (0–1) reflects how a crack was found: both detection layers agreeing scores highest, the direct crack prompt alone slightly lower, the mask-diff layer alone lowest — scaled by how much of the core height the seam covers.

Flags: hatched bins = no processed box covers that depth. Orange-edged RQD bins = low reliability: many rejected candidates but few confirmed cracks, typical for crushed core where spacing-based RQD overestimates quality. In the box report, scale confidence tells whether the 1 m calibration came from a full channel (high) or was corrected from the filename interval (corrected_by_interval).

Reviewing & correcting (your verdicts)

  1. Click a crack mark → the inspector shows a zoomed crop of that exact spot (±5/10/25 cm) with all parameters.
  2. ✓ confirm or ✗ not a crack. Your verdict is stored next to the pipeline’s, never over it — both remain visible.
  3. Missed crack? Toggle ✚ add crack in the ground view and click the core at the right depth. Added cracks carry source “human”; rejecting one removes it again.
  4. All statistics (RQD, FF, counts, CSV) update immediately. Human-confirmed cracks ignore the confidence slider.
  5. Marks you touched turn green; the ✎ human only checkbox filters the view down to them — useful for reviewing your own edits.

Verdicts double as labelled ground truth for tuning the pipeline later — every review makes the automatic detection improvable.

Accounts & sign-in

The app requires sign-in; every verdict and added crack records who made it (shown in the inspector and the CSV). Accounts are created by the administrator: python -m app.users add <name>. Sessions last 30 days; sign out from the top bar.

Processing data

Drills are registered from photo folders (depth intervals are parsed from filenames like Z-843_215,00-220,00.JPG) and processed by a background worker, one box at a time (~40 s each, ~30 min per drill). The chip in the top bar shows the live queue. A “process” button appears for any drill with unprocessed boxes; finished boxes are never recomputed unless forced.

Ingest new folders: python -m app.ingest /path/to/drill/foto (or --scan /path/to/campaign for many at once).

Honest caveats

  • RQD is fracture-spacing based and not yet corrected for core recovery — sections with missing core read better than they are. A recovery-corrected version (from the rock masks) is planned.
  • Crushed/rubble zones are under-marked by design: the crack rules are conservative, so heavily fragmented core shows few confirmed cracks and many grey candidates — watch for the orange low-reliability flag instead of trusting green bins there.
  • Each channel is assumed to hold exactly 1 m, read left-to-right, boxes top-to-bottom. Deviating boxes (rare) show up as warnings on the drill.
  • Only wooden Z-style boxes are supported so far; the J13/J26 box styles need an adapted segmentation step.