LAS 2.0 well-log integrity, gap-aware resampling and provenance-preserving multi-run assembly
moon new consumer
cd consumer
moon add 2200732518gjy/moonwell@0.3.2import { "2200732518gjy/moonwell" @well }let log = @well.make_log(
[{name:"DEPT",unit:"M",api_code:"",description:"depth"},
{name:"GR",unit:"GAPI",api_code:"45 310 01 00",description:"gamma ray"}],
[[Some(0.0),Some(10.0)], [Some(2.0),Some(30.0)]],
)
let table = @well.resample(log, @well.depth_grid(0.0,2.0,0.5), 2.0)
let assembled = @well.assemble([log,table], ["original","resampled"],
[0.0,1.0,2.0], 2.0, Reject)
let report = @well.assembly_report(assembled)moon build --target js --release --deny-warn
node tools/moonwell.mjs fixtures/qa.json
node tools/moonwell.mjs fixtures/assemble.json result.json
node tools/test-cli.mjsmoon info
moon fmt
moon fmt --check
moon check --target wasm-gc --deny-warn
moon test --target wasm-gc --deny-warn
moon build --target wasm-gc --release --deny-warn
moon run examples --target wasm-gc --deny-warn
python tools/audit.pypython -m pip install lasio==0.32 numpy==2.3.5
python tools/differential.pymoon run examples/compliance --target wasm-gc --deny-warn
node tools/moonwell.mjs fixtures/las2-api-codes.json
python tools/verify-las2.py # optional lasio 0.32 metadata oraclelet document = @well.read_las_document(source)
let diagnostics = @well.check_las2(document)
// Empty diagnostics means the declared 2014 baseline passes within budgets.
let original = @well.document_text(document) // exact source String, never regenerated
let log = @well.document_to_log(document) // can raise model: for valid documents
let output = @well.write_las_strict(log, wrapped=true)moon run examples/strict --target wasm-gc --deny-warn
moon build --target js --release --deny-warn
python tools/make-conformance-corpus.py
python tools/verify-conformance.pypub(all) suberror WellError {
WellError(String)
}pub struct Conflict {
row : Int
curve : String
depth : Double
kept_run : Int
incoming_run : Int
kept_value : Double
incoming_value : Double
}pub(all) struct Curve {
api_code : String
name : String
unit : String
description : String
}pub(all) struct Header {
name : String
unit : String
value : String
description : String
}pub struct IntervalSummary {
start : Double
stop : Double
covered : Double
coverage : Double
integral : Double
weighted_mean : Double?
segments : Int
}pub struct Issue {
code : String
curve : String
row : Int
depth : Double
message : String
}pub(all) struct LasDiagnostic {
kind : String
clause : String
section : String
line : Int
field : String
message : String
}pub struct LasDocument {
source : String
}pub struct MissingSpan {
first_row : Int
last_row : Int
start_depth : Double
stop_depth : Double
count : Int
bounded : Bool
}pub(all) struct QcRule {
curve : String
minimum : Double?
maximum : Double?
max_gradient : Double?
constant_run : Int
}pub struct Summary {
present : Int
missing : Int
coverage : Double
minimum : Double?
maximum : Double?
mean : Double?
variance : Double?
median : Double?
}fn execute(text : String) -> Stringfn summarize_interval(log : Log, name : String, start : Double, stop : Double, max_gap : Double) -> IntervalSummary raise WellErrorInstall
Download zipLAS 2.0 well-log integrity, gap-aware resampling and provenance-preserving multi-run assembly