Well tops, trajectories and horizon grids
Besides LAS well logs you can upload three more kinds of scientific data. Each keeps its exact original bytes, becomes an exact version you can share and revoke like a LAS original, and reads the same way in Workspace, in Python and offline.
| Type | File | What is kept |
|---|---|---|
| Well tops | CSV with columns name, md and optionally tvd, source |
names, measured depths, provided vertical depths, pick sources, file order (repeated names allowed) |
| Deviation survey | CSV with columns md, inclination, azimuth and optionally tvd; measured depth must increase |
every station; empty angles stay missing |
| Triangulated surface | Ophiolite mesh text: # ophiolite-mesh 1, optional attributes a b, vertices rows x y z [values] (- for missing) and triangles rows of three vertex numbers from 0 |
every vertex and triangle in file order; missing values stay missing; only triangle references are checked (coincident or thin triangles are kept) |
| Point set | CSV with x, y, optionally z, and up to 16 numeric columns |
every point in file order; empty cells stay missing |
| Horizon grid | ESRI ASCII grid (ncols, nrows, corner or centre origin, cellsize, optional NODATA_value) up to 512 × 512 cells |
every cell in file order, first row north; NODATA cells stay missing; zero stays zero |
Nothing is converted, sorted, filled or interpolated. A file that cannot be read exactly is refused with the reason.
Upload and declare what you know
Section titled “Upload and declare what you know”In Workspace open Connect → Add a data source → Upload, choose the Type of data and the file, then declare what the file itself does not say: depth unit, whether the tops use the same depth reference as their well log, the azimuth reference of a survey, and for a grid its coordinate system (an EPSG code), value meaning, unit, positive direction and vertical datum. Anything you leave empty stays Not stated; nothing is guessed.
Tops and surveys can belong to a well log: choose one of the uploaded LAS logs you can open. The link is to that exact log version and is never inferred from a well name. A colleague who can open the tops but not the log sees “A well log you cannot open” and no identifier.
Inspect
Section titled “Inspect”- Tops show as a table. When you open the associated well log, Show tops draws them on the log tracks — only if the uploader stated the same depth reference and the depth units match. Otherwise the reason is shown and nothing is drawn.
- Surveys show every station. Calculate vertical depth (minimum curvature) adds clearly labelled calculated columns: change in vertical depth, north and east from the first station, along the declared azimuth reference. A station without angles refuses the calculation. A vertical depth provided in the file is never replaced.
- Horizon grids show as a map (north up, missing cells grey) with the value, cell centre and row/column under the pointer or the arrow keys.
Read in Python
Section titled “Read in Python”from ophiolite import Clientclient = Client.from_configuration("configuration.json")tops = client.read_data(asset_id, revision) # WellTops, Trajectory or GridSurfacetops.to_frame() # pandas extra; missing values stay missinggrid = client.read_data(grid_id, grid_revision)grid.to_numpy() # NaN only where the file had NODATAgrid.cell_center(row, column) # row 0 is the northmost rowsurvey.minimum_curvature() # explicit calculation, relative to the first stationophiolite read-data --asset … --revision … --output folder saves the exact original,
data.json and descriptor.json.
Take it offline
Section titled “Take it offline”client.export([(log_id, log_rev, ["GR"]), (tops_id, tops_rev, None), …], "folder") writes a
portable bundle. With any tops, survey or grid in it the bundle is version 2.0; a curve-only
export stays 1.0 so earlier readers keep working. Readers from before this release refuse a
2.0 bundle rather than misreading it. See Take exact curves with you.
Surfaces and point sets
Section titled “Surfaces and point sets”Triangulated surfaces and point sets are drawn in plan view with north at the top. A
surface’s vertex readout moves with the arrow keys; point sets show a table. Extra value
columns keep the names you wrote; their units are not declared yet and are shown as such.
Everything stays within the deployment’s upload limit (8 MiB by default), which usually
binds before the 200,000-vertex or 100,000-point limits. In Python, read_data returns
TriangulatedSurface (to_numpy() gives vertices and triangles) or PointSet; bundles
that contain them are version 2.2 (older readers refuse them rather than misread them).
Limits of this checkpoint
Section titled “Limits of this checkpoint”No OpendTect marker or horizon files, shapefiles, GeoTIFF horizons, coordinate
transformation, TVD-indexed log tracks or calculations on these types. OSDU/Energistics
names are declared for orientation only (contracts typed-standards.json); no import or
export to those standards exists. Public NLOG tops and surveys are not bundled: their
redistribution rights were not established.
