Vendor Quirks
RP66 V1 is a flexible specification and different acquisition vendors implement it with varying degrees of conformance. This library detects and handles several known non-standard patterns automatically.
Baker Hughes ATLAS
Baker Hughes ATLAS-family tools produce DLIS files with five documented deviations from the RP66 V1 specification.
1. 1-byte OBNAME copy field
Spec: OBNAME copy is USHORT — 2 bytes, big-endian.
Baker Hughes: copy is encoded as a single unsigned byte (u8).
The library auto-detects which encoding is in use by attempting both and
selecting the one that produces a valid printable ASCII name. This applies
to both BinaryReader.obname() and the scanChannelOBNAMEs fallback
scanner.
2. ASCII repcode with IDENT-encoded data
Spec: LONG-NAME and similar string attributes with repcode 20 (ASCII) should be stored with a 4-byte length prefix.
Baker Hughes: repcode 20 is written in the EFLR template but the value is stored with a 1-byte length prefix (IDENT encoding).
The library’s asciiStr() reader detects this by checking whether the
4-byte prefix produces a plausible string length. If the inferred length
exceeds 65 536 bytes or would read past the end of the record, it falls back
to ident() automatically.
3. CHANNELS attribute on empty-name frame object
Spec: Each FRAME object carries its own CHANNELS attribute listing the channels it records.
Baker Hughes: The channel list is placed on a leading empty-name FRAME
object (name = ""), and the named FRAME objects that correspond to actual
FDATA records carry no CHANNELS attribute of their own.
The parser tracks these “header” objects and carries their channel list
forward to the next named FRAME object automatically (inheritedRefs
logic in processFrames).
4. ORIGIN EFLR not parseable
Baker Hughes ORIGIN EFLRs use a non-standard DEFINING_ORIGIN
encoding that causes standard parsers (including dlisio) to fail with an
argument-type error.
As a fallback, the library reads well metadata from the PARAMETER EFLR using the standard RP66 V1 parameter mnemonics:
WN |
Well name |
FN |
Field name |
CN |
Operating company |
WI |
Well identifier (UWI/API) |
RUN |
Logging run number |
SON |
Service company / producer |
5. SNORM (RC 13) waveform channels
Baker Hughes CBL/VDL channels (and similar acoustic waveforms) use
representation code 13 (SNORM — signed 16-bit integer, 2 bytes per
sample) for multi-sample array channels.
Prior to v1.0.4, the library had an incorrect RC table that mapped code 13
to USHORT (1 byte), causing waveform channels to read only half the bytes
they should. This is fixed in v1.0.4 with the corrected RP66 V1 code table.
Schlumberger
1. VR version byte variant
Spec: The VR header version field is 0xFF 0x01.
Schlumberger: Some tools write 0xFF 0x00 (type byte = 0x00 instead
of 0x01). The parser accepts both.
2. Multiple channel copies
Schlumberger multi-pass files use the OBNAME copy number to distinguish the
same channel name recorded in different frames. For example TDEP may
appear as 1/0/TDEP, 1/1/TDEP, and 1/2/TDEP.
Each copy is registered as a separate entry in the channels Map. The
FRAME EFLR for each pass references the correct copy via its OBNAME, so
frame.channels always resolves to the right copy.
Frame key reconciliation
FDATA IFLR records identify their frame by OBNAME. On some vendor files the OBNAME written in FDATA differs from the OBNAME in the FRAME EFLR (origin or copy mismatch). The parser applies a two-step reconciliation:
Name-suffix match: If no exact key match is found, try matching only the
namecomponent.Single-unmatched-pair fallback: If exactly one unmatched FDATA key and one unmatched FRAME key remain, pair them.
A warnings entry is emitted for each reconciled pair so you can inspect
the mismatch.