Skip to content

Publish new LAS curves from local Python

This bounded pilot lets one scientist publish new curves that a colleague can inspect and reuse in a second local Python calculation. Python runs on your computer; Workspace saves configurations and shows results. It does not launch your code.

The supported input is one retained LAS with an exact revision. Calculations may append curves on the same depth rows, with explicit units. Resampling, changing the axis, replacing existing curves and unrestricted file uploads are outside this profile. This owner-directed NLOG rehearsal supplements M1–M3; it is not independent M4 evidence.

An administrator registers the LAS on the gateway host, approves retention and its distribution audience, captures a retained snapshot, and configures a permitted runner. File registration and its distribution policy currently require administrator CLI/JSON steps; a file path on your laptop is not a path on the gateway. Ordinary scientists need project membership and compute permission, their own browser-authorized Python credentials, and explicit input access. Read permission alone does not grant reuse.

Install a supported Python environment and your calculation’s dependencies. The reference exercise uses lasio 0.32, NumPy 2.4.3 and matplotlib 3.10.8. See browser login and recovery.

  1. In Python access, choose a retained LAS input, a primary curve and Append new derived curves as the output profile. Save the Binding ID. No code runs.
  2. Inspect the complete input and its declared units, depth reference and missing marker. Write your calculation and record your parameters and QAQC decisions.
  3. Authorize Python for your account/project through browser approval.
  4. Resolve a run and obtain its exact original LAS. The primary curve records reader interpretation; parse the same full LAS locally for additional channels.
  5. Run your script locally. Preserve row alignment and original channels. Write finite numbers or JSON null for each new curve; never use NaN in JSON.
  6. Review plots and values before making a separate publication request.
  7. Inspect the published asset under Data. Select any appended curve and use depth limits and the first-row control to reach populated intervals.
  8. Explicitly share read permission and, when intended, reuse permission. A colleague chooses Use as Python input on that exact published asset for their next run.

Download the manual HTTP helper. It imports the browser authorization helper from the same directory. prepare records/downloads input; publish submits your reviewed curves.json. Neither command executes a calculation or shares results. Use --help for arguments. Keep each role’s credentials and each run’s files separate. The helper records a code hash supplied by the client; this is a declaration, not server observation of execution. Keep source code and dependency versions yourself.

For the public NLOG NLW-GT-01 composite LAS, document 3479651032, DTCO and DTSM are in us/ft and RHOB in g/cm3. The original LAS has SHA256 06903ad3b6737573ab36be24eebf22e66955bd60c7d6f85aee01e0f7a3d65923. Retain NLOG attribution and review its disclaimer.

Alice can derive Vp=304800/DTCO and Vs=304800/DTSM in m/s. Review suspicious samples before explicitly masking them in new QAQC channels. Threshold exceedance alone is not proof of a bad measurement. Keep original channels unchanged and gaps missing. Bob can derive acoustic impedance as Vp × (RHOB ×1000), in kg/(m²·s), and Vp/Vs, with explicit dimensionless unit 1. Missing required inputs remain missing. No conversion to true vertical depth or datum inference is performed.

Worked Alice calculation · Worked Bob calculation. These are reference code to inspect/adapt, not an automatic QAQC service. Both use parameters saved by prepare; Alice requires rejected_rows, reason, plot_start and plot_stop, while Bob requires the two plot limits. Start with empty rejected row arrays and make the interpretation explicitly.

Use the existing project application publish endpoint with:

{
"project_id": "your-project",
"id": "resolved-run-id",
"publication_profile": "las-derived-curves/1",
"derived_curves": [{
"mnemonic": "VP_QC",
"unit": "m/s",
"description": "Declared QAQC compressional velocity",
"values": [5000, null, 5100]
}]
}

This three-row illustration requires a three-row input; real arrays must match every input row. Configure the profile before resolving the run. Do not mix changes with derived curves. Mnemonics are unique uppercase ASCII names up to 16 characters. Units must be explicit, up to 32 ASCII characters from letters, digits and _/*()^-. Descriptions are printable ASCII up to 160 characters, excluding : and ~. Boolean values, infinities, NaN and numbers equal to the input LAS NULL marker fail.

Limits apply together:8 appended curves, 64 total curves, 100000 rows, 32 MiB result, 2100000 bytes for the entire JSON request,100 results/project and 512 MiB retained payload. Eight curves is not a promise that eight maximum-length numeric arrays fit. The helper checks request bytes before sending. Scientific compatibility and actual capacity remain bounded qualification claims, not production SLAs.

The ophiolite.derived-curves-result/1 receipt records appended descriptors and readback checks. Original channels, depth and values are preserved; text formatting is regenerated. Publication creates a separate private asset. It does not certify scientific validity or prove external code ran as declared.

Repeat the identical publication after a lost response to recover the same asset. For changed code, parameters or output use a new run folder and run. Renew expired browser authorization without deleting existing run files. A read/reuse/runner revocation or root withdrawal can block access; contact your administrator instead of substituting another revision. Existing curve-edit clients retain their old contract.