DashboardProjectsMy drillholesManualWhitepaper

Manual

How to navigate the application, upload core photos, review the displayed results, and work with the interactive tools. For how the automatic detection and every computed number actually work under the hood, see the Whitepaper.

The views

DashboardEvery drill you have access to, with its progress, fracture count, FF and RQD badge. Sortable table or cards.
ProjectsGroups any number of drillholes under one client/site/campaign. A project's overview lists its drillholes with the same stats as the dashboard, plus SME QC activity totals summed across the whole project; its ▦ Strip view lays every drillhole out as one bar per hole on a shared RQD/TCR/FF axis, for comparing drills at a glance — click a bar to jump straight to that drill's core workspace.
Box viewOne drill as horizontal strips, one row per channel length of core (usually 1 m, but can vary by box), grouped by box — closest to how the core physically lies in the boxes. Each box links to its box report.
Core workspaceThe whole drill joined into one core, depth axis running to ground. Columns: core with marks · untouched original · RQD per 1 m · fractures per 1 m, plus sliding-window profile curves. Two zoom modes (see Controls) — vertical true-aspect core at higher zoom, horizontal one-row-per-channel at lower zoom for scanning a whole drill quickly.
➡ Strip diagramThe whole drill rotated 90° into one continuous horizontal strip — depth runs left→right, with RQD / TCR / fracture-count bars and their sliding-window curves underneath, all sharing the same depth scale. Built for scanning long stretches of a single drill at once. Click any bar to open the box report for the depth under it.
Box reportEverything about one box: all computed parameters, the interactive strip, fracture/rubble/missing-zone tables, SME QC activity totals for that box, and every related image needed for review against the original photo. This is also where rubble and missing-core zones are added/edited/resized — the core workspace and strip diagram show them but are read-only for zones.

Uploading photos

Under My drillholes, register a hole (just a hole ID is required — everything else can be filled in later) and upload its box photos. Each upload is staged for a per-photo decision before it enters the pipeline:

upload as-isThe photo already shows exactly one box, straight-on — send it straight to processing.
cropOpens the crop editor for photos that show multiple boxes in one frame, or a box shot at an angle. Click the four corners of one box (in order); the editor applies a full perspective correction so that box becomes a proper straight rectangle, not just a rotation — this also corrects real keystone distortion (the box looking wider on the near side than the far side), not only in-plane tilt. Repeat for each box visible in the same source photo, then finish to upload all the resulting straightened crops together. One unavoidable side effect: whichever side of the box was farther from the camera ends up mildly softer/less sharp in the result, since correcting real perspective stretches that side from fewer original pixels.
dry / wetRecorded per photo for reference; applies to every crop that comes from the same source image.

Workflow v2: prepare, review, process

New drillholes use workflow v2. It separates preparation(Steps 1-3 and SME mask/depth review) from final processing(Steps 4-6 and the reportable fracture, rubble, recovery and colour results). Do not expect final report figures to change until final processing has run over an approved preparation.

  1. Intake: upload/crop photos, then verify every box's depth from/to. Set channel length before preparation if it differs from the usual 1 m.
  2. Run preparation: on the intake page, use run preparation for new boxes (steps 1-3). This makes an editable preparation revision for each box. Use re-run preparation all (debug)only when intentionally creating fresh automatic revisions for all boxes; it is not the normal way to refresh a reviewed box.
  3. Open preparation: use the box's Preparation link from Box Report, or open preparation from Box view. Review masks, tray geometry and depth markers for that one box.
  4. Save and reprocess: save every mask layer you changed, then choose Reprocess steps 1-3. It reruns automatic detection while preserving saved user masks, tray geometry and depth markers. It cannot run while an unsaved mask is open.
  5. Approve: when the preparation is correct, chooseApprove box. This locks the revision. Use Reopen preparation if it needs another correction.
  6. Final processing: in Box Report choose Run final processing, or Re-run final processing when an older final run already exists. It runs Steps 3-6 using the approved masks. The page refreshes when its job finishes.

Preparation editor

The top photo is for depth markers and tray geometry. Select add depth marker, click the photo and enter the depth at that position. Markers are red. The right column saves depth range, tray bounds and marker changes separately. Clear user tray geometry restores automatic trays while retaining markers by their position in the photo.

Step 1 - box maskOriginal photo with the box/wood mask drawn over it. Useadd box mask for pixels that should be removed as tray, wood or other box material. Use remove box mask to put a falsely removed pixel back into material. The editing colours are distinct from the final mask display. Clear user maskremoves only your additions/removals, not the automatic mask.
Step 3 - core/materialGreen mask. Use it to add material/core missed by automatic detection or remove material that is not core. A core addition can reclaim a false box/wood pixel.
Step 3 - sandy/rubbleYellow mask, independent from the green core mask. Use it to add or remove sandy/rubble evidence. After approval and final processing it is consumed by Step 5 rubble-zone detection. An explicit sandy correction can reclaim a pixel automatic Step 1 classified as wood/box.

Each mask editor has its own add, remove, brush size,Save mask and clear user mask controls. Save before selecting another mask type. The mask is painted in original-photo pixel coordinates, so it remains aligned through reprocesses.

What appears where

During review, Box Report Step 1 and Step 3 images can show the current preparation output, which is newer than any old final run. After successful final processing over that same approved preparation, those images switch to the authoritative final-run artifacts. The Fracture Candidates Assessment, fracture tables and rubble zones are final-run outputs; rerun final processing after changing approved masks to update them.

Controls by page

Controls are context-specific. The preparation editor controls masks, trays and markers; Box Report controls final geological QA/QC; the workspace and strip pages are for navigation and review across a drillhole.

IntakeUse upload as-is/crop, set wet/dry, correct depth intervals, set channel length, and start preparation. These actions define the input and must be correct before final processing.
Box viewShows each box's preparation state: needs preparation,needs preparation review or ready for final processing. It offers prepare/open preparation/finish processing actions when applicable.
Preparation editorDepth-marker tool on the top photo; mask tools and brush controls beneath their own Step 1/3 images; save/reprocess/ approve actions in the right column. See Workflow v2 above for the required order.
Box ReportPreparation opens the current preparation revision.Run/Re-run final processing appears only after it is approved. Fracture, rubble and missing-zone QA/QC controls edit final results, not preparation masks.
min confidenceHides fractures below the threshold and recomputes RQD/FF live. Lowering it shows more automatically detected candidates. Your own confirmations always stay visible.
show rejectedDisplays grey dashed candidates that were not accepted as fractures in the automatic pass. This is useful when checking questionable or heavily broken sections.
zoom (core workspace)Pixels per metre, 20–3000, with presets. Rendering is depth-true and aspect-true; zooming keeps the depth you are looking at. Higher zoom automatically loads sharper imagery. Up to 80 px/m the core shows as horizontal rows, one channel length wide (usually 1 m, but can vary by box) — each row running left→right at a fixed scale, the next starting where the previous ended — while the depth axis and the RQD / fractures-per-metre columns keep their vertical, depth-aligned positions next to them. From 500 px/m up it is the vertical true-aspect core; the 80–500 px/m mid-range (where the vertical core would be only a few px wide) is skipped automatically when zooming.
mouse wheel (core workspace)Scrolling the wheel over the core zooms in/out, anchored at the cursor — the depth under the pointer stays in place. The slider and presets stay in sync.
drag to depth (core workspace)Hold any mouse button and drag up/down over the core to move through depth, grab-and-drag like a map. A plain left click (without dragging) still opens the box report or fracture inspector, and a plain right-click still opens the normal context menu.
go to / depth chip / cursor readoutJump to any depth; the floating chip shows where you are while scrolling, and hovering the core shows the exact depth under your cursor (precise even in the horizontal, one-row-per-channel zoom mode — the row tells you which channel, your cursor position within it gives the exact depth).
alt+F5 (core workspace)Manually re-fetches fractures, rubble/missing zones, colors and RQD/FF/TCR without reloading the page — useful right after editing something on a box report open in another tab/window. The workspace also does this automatically whenever you switch back to its tab.
clicksFracture mark → inspector panel. Core (core workspace) or a bar (strip diagram, project strip view) → box report / that drill's workspace. Table row status → inspector. Step images → full resolution.
⬇ CSVDownloads all fractures (or rubble zones, or missing zones) of the drill with parameters, automatic status and your review verdicts under SME-terminology column names.

Reading the numbers

RQD classes: ■ ≥90 Excellent · ■ 75–90 Good · ■ 50–75 Fair · ■ 25–50 Poor · ■ <25 Very Poor. FF is fracture frequency (fractures per metre); mean spacing and the ISRM class derive from the same fracture depths. TCR is total core recovery. Exactly how each of these is computed — including how rubble and missing-core zones factor in — is in the Whitepaper.

Sliding profiles (core workspace, strip diagram): next to the 1 m bin columns/bars, the same metrics are drawn as curves computed on a 1 m window that slides in 10 cm steps — ten times the depth resolution, which reads much better at high zoom or over a long strip. Values react to the confidence slider and to your verdicts like everything else; gaps mean unprocessed core. Hover the curve for exact numbers.

Rubble zones (orange translucent bands) and missing-core zones (green) are geologically distinct from fractures and from each other, and are detected by a separate automatic pass — see the Whitepaper for the algorithm. Both count as 0% RQD over their span and both contribute the same fixed assumed fracture density to FF, and neither shows its own individual "fractures" (any the automatic pass finds inside one are hidden and excluded from every count — they aren't real discrete breaks). They differ only for TCR: rubble still counts as "recovered" (it's present, just broken), while missing-core zones — true absence of material — reduce TCR.

Confidence (0–1) reflects how strong the automatic detection's evidence is for that fracture. Higher means more likely to be real.

Flags: hatched bins = no processed box covers that depth. Orange-edged RQD bins = low reliability: many rejected candidates but few confirmed fractures, typical for crushed core where spacing-based RQD overestimates quality. In the box report, scale confidence indicates how reliable the depth calibration is for that box.

Reviewing & correcting (SME QA/QC)

Everything the pipeline finds — fractures, rubble zones, missing-core zones — starts out auto-detected · pending QC. An SME (Subject Matter Expert) then reviews it: confirm it, reject it, or add something the pipeline missed. That review is QA/QC — it's stored separately from the automatic result, so the original detection and the human correction are both always visible.

  1. Click a fracture mark (or a rubble/missing zone) → the inspector shows the detection's parameters and its current QC status.
  2. ✓ QC confirm or ✗ QC reject. Your verdict is stored next to the automatic result so the review history stays visible. A confirmed-then-rejected fracture mark turns gray — distinct from an unreviewed automatic candidate (orange, dashed).
  3. Missed something? Toggle edit fractures / ▤ edit rubble zones / ▤ edit missing zones (box report only for zones) and click (or drag) on the core at the right depth. Items you add carry source "SME"; rejecting one you added removes it again (with a confirmation, since that's permanent).
  4. All statistics (RQD, TCR, FF, counts, CSV) update immediately. SME-confirmed items ignore the confidence slider.
  5. Anything an SME has touched turns green (fractures) or gets a pink/magenta border (rubble/missing zones); open 🔎 Detailed view to show/hide any combination of SME-QC'd vs. automatic fractures/rubble/missing zones independently — e.g. SME-QC'd only, for reviewing your own edits, or just automatic rubble zones to sanity-check the raw detector. The rubble detection-profile chart (material width vs. core Ø, rubble score) also lives there — hidden by default.
  6. Every box report, and the whole-drill core workspace, show a running SME QC activity total (added · confirmed · rejected, per fracture/rubble/missing zone) — a log of review work done, not just the current state, so it still counts an item even if it was later removed again. Project overviews sum this across every drillhole in the project.

Accounts & sign-in

The app requires sign-in; every verdict and added fracture 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.