This commit is contained in:
softlandia 2020-04-10 01:55:08 +04:00
Родитель fead132e7c
Коммит 6c0e43bfcf
67 изменённых файлов: 34437 добавлений и 265 удалений

Просмотреть файл

@ -1,4 +1,11 @@

## ver 0.1.5 // 2020.04.10 ##
- мелкие улучшения
## ver 0.1.4 // 2020.03.13 ##
- сохранение переведено на буфер, конвертацию кодировки и сохранение в файл
## ver 0.1.3 // 2020.03.13 ##
- обновлены тесты

126
data/1001178549.las Normal file
Просмотреть файл

@ -0,0 +1,126 @@
# 03/04/1999 13:21:59 Updated by the Kansas Geological Survey
# #KGS#ID: 30S39W/1001178549
# Additions: 1001178549.add
# New: UWI . 15-187-20743: Unique Well Id
# New: PM . 6: Principal Meridian
# Old: STAT . KANSAS: STATE
# New: STAT . Kansas: State
# New: SECT . 28: Section
# New: TOWN . 30S: Township
# New: RANG . 39W: Range
# Old: WELL . COLLINGWOOD 1-28: WELL NAME
# New: WELL . 1-28: Well Name
# New: LEAS . COLLINGWOOD: Lease Name
#
# 02/24/1999 15:12:43 Updated by the Kansas Geological Survey
# #KGS#INPUT_FILE: /home/crude2_3/WellLogs/Guy/100-Amoco/disc09/18720743.las.las
~Version : LASO vs 4.1 - DATA COPYRIGHT - RILEYS DATASHARE INTERNATIONAL
VERS . 2.0: CWLS Log ASCII Standard -VERSION 2.0
WRAP . YES: Multiple lines per depth step
~Well Information Block
#MNEM.UNIT Data Description of Mnemonic
#----.---- -------------------------- : -----------------------------
UWI . 15-187-20743: Unique Well Id
PM . 6: Principal Meridian
STAT . Kansas: State
SECT . 28: Section
TOWN . 30S: Township
RANG . 39W: Range
COUN . STANTON: County Name
COMP . AMOCO PROD: Company
WELL . 1-28: Well Name
LEAS . COLLINGWOOD: Lease Name
FLD . NICHOLAS: Field
STRT .FT 1783.5000: Start Depth
STOP .FT 1784.5000: End Depth
STEP .FT 0.2500: Depth Increment
NULL . -999.25: NULL Value
LOC . C,NW,NE, 28-30S-39W: WELL LOCATION
CTRY . UNITED STATES: COUNTRY
SRVC . HAL: LOGGING SERVICE COMPANY
DATE . 31-MAY-94: DATE LOGGED
API . 151872074300: API NUMBER
LIC . 2074300: ERCB LICENSE NUMBER
~Curve Information Block
#MNEM.UNIT API CODE Curve Description
#----.---- LG--CV-CL--M : -----------------
DEPT .FT 0 1 0 0: 1 DEPTH
GSGR .API 31 310 0 0: 2 GAMMA RAY
GSTK .API 31 797 0 0: 3 ????????
GST .API 99 999 99 0: 4 ????????
GSK .PERCNT 31 721 1 0: 5 ????????
GSTH .PPM 31 790 0 0: 6 THORIUM
GSUR .PPM 31 792 0 0: 7 URANIUM
NCNPL.PERCNT 42 890 1 0: 8 NEUTRON POROSITY (LIMESTONE)
DLDPL.PERCNT 43 890 10 0: 9 DENSITY POROSITY (LIMESTONE)
DLDC .GM/CC 43 356 0 0: 10 DENSITY CORRECTION
DLPE .B/E 43 358 0 0: 11 PHOTO-ELECTRIC EFFECT
DLDN .GM/CC 43 350 0 0: 12 BULK DENSITY
DLCL .INCHES 43 280 0 0: 13 CALIPER
DLTN .LBS 43 635 0 0: 14 ????????
IDGR .API 7 310 0 0: 15 GAMMA RAY
ACCL1.INCHES 60 280 1 0: 16 DENSITY CALIPER
ACCL2.INCHES 60 280 2 0: 17 NEUTRON CALIPER
ACTC .US/FT 60 520 0 0: 18 SONIC INTERVAL TRANSIT TIME (COMPENSATED)
ACAPL.PERCNT 60 890 20 0: 19 POROSITY
IDIM .OHMM 7 120 44 0: 20 MEDIUM INDUCTION
IDID .OHMM 7 120 46 0: 21 DEEP INDUCTION
IDIDC.MMHOS 7 110 46 0: 22 INDUCTION (CONDUCTIVITY UNITS)
IDL3 .OHMM 7 220 3 0: 23 FOCUSSED RESISTIVITY
IDTN .LBS 7 635 0 0: 24 ????????
IDSP .MVOLT 7 10 0 0: 25 SPONTANEOUS POTENTIAL
MEL1 .OHMM 15 250 2 0: 26 MICRO INVERSE 1"
ME .OHMM 15 252 2 0: 27 MICRO NORMAL 2"
~Parameter Information Block
#MNEM.UNIT Data Description of Mnemonic
#----.---- -------------------------- : -----------------------------
RUN . 99: Run Number
GL .FT 3190.0000: Ground Level Elevation
DREF . KB: Depth Reference
EREF .FT 3210.0000: Elevation of Depth Reference
CSGL .FT 1791.0000: Casing Bottom Logger
CSGD .FT 0.0000: Casing Bottom Driller
CSGS .IN 8.6250: Casing Size
CSGW .LBS 0.0000: Casing Weight
BHT .DEGF 125.0000: Bottom Hole Temperature
BS .IN 7.8750: Bit Size
RM .OHMM 2.1100: Mud Resistivity
RMT .DEGF 80.0000: Mud Resistivity Temperature
RMF .OHMM 1.5800: Mud Filtrate Resistivity
RMFT .DEGF 80.0000: RMF Temperature
RMC .OHMM 2.7400: Mud Cake Resistivity
RMCT .DEGF 80.0000: RMC Temperature
LAT . 37.41565: Latitude
LONG . -101.58701: Longitude
# DEPTH
# GSGR GSTK GST GSK GSTH GSUR NCNPL
# DLDPL DLDC DLPE DLDN DLCL DLTN IDGR
# ACCL1 ACCL2 ACTC ACAPL IDIM IDID IDIDC
# IDL3 IDTN IDSP MEL1 ME
~Asc DEPTH
1783.5000
-999.2500 -999.2500 -999.2500 -999.2500 -999.2500 -999.2500 -999.2500
-999.2500 -999.2500 -999.2500 -999.2500 -999.2500 -999.2500 50.6465
8.3871 8.4396 55.1000 0.0569 560.0000 175.0000 0.0500
0.4533 1893.0420 92.6050 -999.2500 -999.2500
1783.7500
-999.2500 -999.2500 -999.2500 -999.2500 -999.2500 -999.2500 -999.2500
-999.2500 -999.2500 -999.2500 -999.2500 -999.2500 -999.2500 49.6767
8.3951 8.4460 54.3555 0.0590 560.0000 175.0000 0.0500
0.4534 1852.3320 92.7780 -999.2500 -999.2500
1784.0000
-999.2500 -999.2500 -999.2500 -999.2500 -999.2500 -999.2500 -999.2500
-999.2500 -999.2500 -999.2500 -999.2500 -999.2500 -999.2500 48.6313
8.4052 8.4460 54.4444 0.0581 560.0000 175.0000 0.0500
0.4537 1831.9766 92.9482 -999.2500 -999.2500
1784.2500
-999.2500 -999.2500 -999.2500 -999.2500 -999.2500 -999.2500 -999.2500
-999.2500 -999.2500 -999.2500 -999.2500 -999.2500 -999.2500 47.7717
8.4173 8.4438 55.3111 0.0577 560.0000 175.0000 0.0500
0.4538 1831.9766 93.1103 -999.2500 -999.2500
1784.5000
-999.2500 -999.2500 -999.2500 -999.2500 -999.2500 -999.2500 -999.2500
-999.2500 -999.2500 -999.2500 -999.2500 -999.2500 -999.2500 48.1149
8.4253 8.4460 56.3222 0.0585 560.0000 175.0000 0.0500
0.4539 1811.6211 93.2671 -999.2500 -999.2500

Просмотреть файл

@ -0,0 +1,35 @@
~v
VERS. 2.0 : CWLS LOG ASCII STANDARD -VERSION 2.0
WRAP. NO : ONE LINE PER TIME STEP
#
~w
STRT .S 0.0000 :START TIME
STOP .S 39.9000 :STOP TIME
STEP .S 0.3000 :STEP
NULL . -999.25 :NULL VALUE
COMP . ANY OIL COMPANY INC. :COMPANY
WELL . Ïðèìåðíàÿ-1 / áèñ(¸) :WELL
FLD . WILDCAT :FIELD
LOC . 12-34-12-34W5 :LOCATION
PROV . ALBERTA :PROVINCE
SRVC . ANY LOGGING COMPANY INC. :SERVICE COMPANY
DATE . 13-DEC-86 :LOG DATE
UWI . 100123401234W500 :UNIQUE WELL ID
#
~c
ETIM .S : 1 ELAPSED TIME
BFR1 .OHMM : 2 SINGLE PROBE 1 RESISTIVITY
BSG1 .PSIG : 3 SINGLE PROBE 1 STRAIN GAUGE PRESSURE
#
~p
MRT .DEGC 67.0 : BOTTOM HOLE TEMPERATURE
GDEPT .M 3456.5 : GAUGE DEPTH
DFD .KG/M3 1000.0 : MUD WEIGHT
#
~a
0.0000 0.2125 16564.1445
0.3000 0.2125 16564.1445
0.6000 0.2125 16564.2421
0.9000 0.2125 16564.0434
1.2000 0.2125 16564.0430
1.5000 0.2125 16564.0435

2792
data/6038187_v1.2.las Normal file

Разница между файлами не показана из-за своего большого размера Загрузить разницу

181
data/6038187_v1.2_short.las Normal file
Просмотреть файл

@ -0,0 +1,181 @@
#------------------------------------------------------------
~VERSION INFORMATION
VERS. 2.0 :CWLS LOG ASCII STANDARD - VERSION 2.0
WRAP. NO :ONE LINE PER DEPTH STEP
#------------------------------------------------------------
~WELL INFORMATION
STRT.M 0.0500000 :FIRST INDEX VALUE
STOP.M 136.600 :LAST INDEX VALUE
STEP.M 0.0500000 :STEP
NULL. -99999 :NULL VALUE
COMP. :COMP
WELL. Scorpio E1 :WELL
FLD. :
LOC. Mt Eba :LOC
SRVC. :
CTRY. :
STAT. SA :STAT
CNTY. :
DATE. 15/03/2015 :DATE
UWI. 6038-187 :WUNT
#------------------------------------------------------------
~CURVE INFORMATION
DEPT.M :DEPTH
CALI.MM :CALI
DFAR.G/CM3 :DFAR
DNEAR.G/CM3 :DNEAR
GAMN.GAPI :GAMN
NEUT.CPS :NEUT
PR.OHM/M :PR
SP.MV :SP
COND.MS/M :COND
#------------------------------------------------------------
~PARAMETER INFORMATION
BS. 216 mm :BS
JOBN. :JOBN
WPMT. :WPMT
AGL. :AGL
PURP. Cased hole stratigraphy :PURP
X. 0560160 :X
CSGL. 0 m - 135 m :CSGL
UNIT. :UNIT
Y. 6686430 :Y
TDL. 135.2 m :TDL
PROD. :PROD
MUD. Water :MUD
CSGS. 100 mm :CSGS
ENG. :ENG
STEP. 5 cm :STEP
FluidLevel. 54 m :FluidLevel
CSGT. PVC :CSGT
WIT. :WIT
EREF. :EREF
PROJ. :PROJ
ZONE. 53J :ZONE
DREF. GL :DREF
TDD. 136 m :TDD
#------------------------------------------------------------
~OTHER
#------------------------------------------------------------
~A DEPT[M] CALI DFAR DNEAR GAMN NEUT PR SP COND
12.0000 101.780 0.883000 0.814000 65.0846 1152.01 50499.9 100.592 822.680
12.0500 101.738 0.883000 0.843000 65.0800 1233.99 50499.9 100.510 810.824
12.1000 101.738 0.873000 0.808001 53.4612 1212.00 50499.9 100.580 801.439
12.1500 101.858 0.878000 0.813000 79.0231 1161.01 50499.9 100.555 796.745
12.2000 101.798 0.878000 0.787000 41.8448 1080.02 50499.9 100.552 785.137
12.2500 101.756 0.869000 0.765000 81.3450 1188.98 50499.9 100.537 772.293
12.3000 101.804 0.882000 0.811000 67.4063 1164.00 50499.9 100.580 757.966
12.3500 101.798 0.880000 0.823000 74.3767 1169.00 50499.9 100.543 757.965
12.4000 101.852 0.877000 0.823000 62.7573 1202.00 50499.9 100.543 735.738
12.4500 101.870 0.878000 0.826000 58.1080 1168.01 50499.9 100.586 716.967
12.5000 101.906 0.870000 0.850000 60.4316 1179.00 50499.9 100.540 715.481
12.5500 101.816 0.883000 0.862000 69.7281 1146.00 50499.9 100.510 713.999
12.6000 101.714 0.864001 0.815002 53.4621 1169.00 50499.9 100.549 730.545
12.6500 101.768 0.863000 0.802000 81.3478 1182.00 50499.9 100.519 738.698
12.7000 101.816 0.869000 0.808000 51.1413 1156.01 50499.9 100.537 757.467
12.7500 101.828 0.875000 0.797000 83.6700 1154.00 50499.9 100.540 775.746
12.8000 101.696 0.865000 0.907000 58.1094 1142.00 50499.9 100.543 790.321
12.8500 101.690 0.867000 0.808004 65.0787 1146.00 50499.9 100.516 790.322
12.9000 101.744 0.851000 0.826000 72.0522 1171.00 50499.9 100.494 806.869
12.9500 101.660 0.851000 0.796000 53.4629 1119.01 50499.9 100.528 816.749
13.0000 101.600 0.837000 0.815000 67.4029 1070.01 50499.9 100.531 826.383
13.0500 101.708 0.839000 0.813000 74.3773 1150.99 50499.9 100.519 835.522
13.1000 101.780 0.838000 0.827999 81.3497 1256.98 50499.9 100.531 848.858
13.1500 101.792 0.837000 0.809000 79.0263 1291.00 50499.9 100.513 861.210
13.2000 101.618 0.847000 0.761000 97.6171 1301.00 50499.9 100.531 861.211
13.2500 101.576 0.846000 0.797000 65.0850 1371.99 50499.9 100.543 881.462
13.3000 101.606 0.845000 0.767000 85.9970 1358.00 50499.9 100.528 885.417
13.3500 101.504 0.822001 0.838997 65.0840 1368.00 50499.9 100.482 885.911
13.4000 101.516 0.793000 0.876000 85.9966 1482.99 50499.9 100.540 889.616
13.4500 101.540 0.726000 0.896000 65.0844 1423.01 50499.9 100.519 895.296
13.5000 101.546 0.725000 0.897000 111.559 1350.01 50499.9 100.510 900.730
13.5500 101.450 0.725000 0.894000 74.3815 1156.02 50499.9 100.543 905.671
13.6000 101.612 0.762999 0.899000 90.6449 1013.03 50499.9 100.485 906.659
13.6500 101.744 0.755000 0.835000 81.3521 876.016 50499.9 100.473 894.804
13.7000 101.762 0.793000 0.809000 58.1119 798.016 50499.9 100.497 883.196
13.7500 101.762 0.836000 0.783000 62.7553 629.026 50499.9 100.476 915.546
13.8000 101.792 0.959000 0.683000 69.7283 618.001 50499.9 100.476 945.188
13.8500 101.816 1.04500 0.657001 76.7007 659.992 50499.9 100.470 945.932
13.9000 101.696 1.13300 0.800000 58.1091 689.997 50499.9 100.476 922.717
13.9500 101.696 1.23100 1.11100 79.0216 765.984 50499.9 100.491 757.012
14.0000 101.666 1.34000 1.43400 60.4348 753.002 50499.9 100.433 941.705
14.0500 101.690 1.38600 1.46300 67.4043 741.001 50499.9 100.424 1071.64
14.1000 101.858 1.35800 1.46200 74.3767 734.001 50499.9 100.400 1215.13
14.1500 101.810 1.35700 1.47100 53.4614 767.996 50499.9 100.381 863.968
14.2000 101.792 1.35400 1.55800 55.7825 730.008 50499.9 100.342 699.707
14.2500 101.828 1.37800 1.66600 67.4032 747.997 50499.9 100.360 333.181
14.3000 101.810 1.37200 1.74200 62.7564 762.999 50499.9 100.296 36.2593
14.3500 101.540 1.42300 1.77800 62.7560 793.994 50499.9 100.314 26.8468
14.4000 101.540 1.42500 1.66700 53.4601 776.002 50499.9 100.275 24.3753
14.4500 101.516 1.41700 1.60800 74.3736 854.983 50499.9 100.299 89.3224
14.5000 101.516 1.41600 1.54200 46.4903 827.004 50499.9 100.214 479.289
14.5500 101.498 1.41200 1.55700 60.4307 886.994 50499.9 100.214 282.756
14.6000 101.504 1.44800 1.67200 60.4320 869.003 50499.9 100.375 398.805
14.6500 101.540 1.43000 1.59000 69.7279 863.001 50499.9 100.555 411.670
14.7000 101.348 1.41300 1.57800 32.5478 869.999 50499.9 100.607 697.637
14.7500 101.366 1.43600 1.58100 88.3145 884.998 50499.9 100.610 1003.44
14.8000 101.420 1.38200 1.51400 85.9992 919.997 50499.9 100.598 1050.16
14.8500 101.408 1.39100 1.54300 92.9707 879.008 50499.9 100.601 944.470
14.9000 101.360 1.40900 1.50600 81.3523 909.996 50499.9 100.562 819.729
14.9500 101.318 1.38400 1.51600 60.4364 931.995 50499.9 100.562 805.886
15.0000 101.324 1.38200 1.43900 72.0512 954.996 50499.9 100.568 758.219
15.0500 101.348 1.39000 1.51000 76.7016 986.997 50499.9 100.562 733.761
15.1000 101.307 1.39800 1.50000 123.179 970.003 50499.9 100.574 685.356
15.1500 101.283 1.42300 1.52900 60.4392 953.002 50499.9 100.549 647.066
15.2000 101.378 1.42700 1.53800 67.4035 925.006 50499.9 100.592 631.504
15.2500 101.295 1.41800 1.54000 106.912 899.004 50499.9 100.574 613.226
15.3000 101.283 1.40900 1.46800 83.6772 952.995 50499.9 100.562 589.513
15.3500 101.396 1.39800 1.47900 85.9986 967.997 50499.9 100.662 570.743
15.4000 101.360 1.43800 1.47100 74.3793 926.005 50499.9 100.604 560.366
15.4500 101.372 1.43700 1.55000 58.1104 924.000 50499.9 100.616 544.560
15.5000 101.348 1.42900 1.54300 95.2903 936.998 50499.9 100.610 528.504
15.5500 101.408 1.42000 1.53700 69.7314 968.997 50499.9 100.632 525.291
15.6000 101.402 1.43700 1.55300 76.7007 922.009 50499.9 100.601 510.721
15.6500 101.498 1.44800 1.51100 97.6186 934.999 50499.9 100.586 505.038
15.7000 101.432 1.46600 1.55000 81.3544 931.001 50499.9 100.595 504.049
15.7500 101.516 1.43700 1.48500 72.0544 945.998 50499.9 100.598 495.405
15.8000 101.594 1.43700 1.48100 69.7292 913.003 50499.9 100.613 492.193
15.8500 101.528 1.43100 1.50900 76.7007 903.002 50499.9 100.571 481.327
15.9000 101.534 1.45200 1.52400 72.0535 964.993 50499.9 100.586 478.855
15.9500 101.528 1.44000 1.53900 67.4060 937.006 50499.9 100.607 471.940
16.0000 101.528 1.46300 1.56800 69.7286 925.002 50499.9 100.601 466.259
16.0500 101.528 1.47800 1.55900 65.0804 909.001 50499.9 100.616 465.023
16.1000 101.660 1.49200 1.55600 69.7281 920.998 50499.9 100.629 453.663
16.1500 101.732 1.48700 1.56800 85.9971 924.000 50499.9 100.629 449.709
16.2000 101.696 1.47100 1.60600 95.2939 906.004 50499.9 100.641 448.968
16.2500 101.714 1.49700 1.58000 113.888 980.989 50499.9 100.632 448.968
16.3000 101.696 1.48700 1.60000 74.3810 949.002 50499.9 100.632 444.275
16.3500 101.660 1.47800 1.58700 90.6449 908.008 50499.9 100.613 437.854
16.4000 101.666 1.50300 1.58500 88.3233 899.001 50499.9 100.616 433.901
16.4500 101.780 1.48700 1.55700 83.6761 934.992 50499.9 100.616 432.913
16.5000 101.720 1.48800 1.56800 60.4355 956.997 50499.9 100.604 423.528
16.5500 101.624 1.49100 1.57600 104.590 969.999 50499.9 100.629 413.648
16.6000 101.696 1.48600 1.57200 123.184 954.003 50499.9 100.653 399.571
16.6500 101.696 1.50100 1.59800 88.3270 933.002 50499.9 100.641 386.478
16.7000 101.684 1.49500 1.54700 51.1435 1023.98 50499.9 100.598 381.538
16.7500 101.708 1.49300 1.58200 79.0217 950.011 50499.9 100.632 374.128
16.8000 101.690 1.48300 1.53000 58.1086 1002.00 50499.9 100.626 362.766
16.8500 101.690 1.49000 1.53400 74.3749 1030.99 50499.9 100.601 349.430
16.9000 101.762 1.47400 1.52500 67.4058 1074.00 50499.9 100.595 345.475
16.9500 101.840 1.50500 1.54300 120.852 1161.98 50499.9 100.616 334.609
17.0000 101.636 1.48200 1.56200 69.7368 1113.01 50499.9 100.604 328.927
17.0500 101.612 1.48900 1.52700 69.7290 1051.00 50499.9 100.629 303.487
17.1000 101.576 1.47600 1.52400 99.9392 1067.00 50499.9 100.620 270.887
17.1500 101.618 1.45500 1.52200 55.7881 1167.99 50499.9 100.607 256.557
17.2000 101.492 1.48200 1.53200 83.6686 1312.97 50499.9 100.595 221.489
17.2500 102.715 1.48700 1.49900 109.238 1478.97 50499.9 100.531 227.902
17.3000 101.157 1.47700 1.45600 76.7045 1536.00 50499.9 100.555 199.253
17.3500 101.432 1.45500 1.54800 83.6737 1584.99 50499.9 100.531 168.876
17.4000 101.636 1.44400 1.53000 69.7306 1592.00 50499.9 100.519 128.614
17.4500 101.594 1.45500 1.48000 62.7576 1483.02 50499.9 100.562 125.646
17.5000 101.474 1.46000 1.46000 76.6999 1557.99 50499.9 100.519 108.852
17.5500 101.546 1.41800 1.48700 76.7020 1546.00 50499.9 100.543 101.934
17.6000 101.366 1.42900 1.48900 81.3501 1604.99 50499.9 100.549 98.2287
17.6500 101.318 1.37400 1.49000 85.9985 1546.01 50499.9 100.537 85.1385
17.7000 101.384 1.40100 1.47700 90.6469 1518.01 50499.9 100.549 76.2470
17.7500 101.384 1.39100 1.46600 81.3524 1469.01 50499.9 100.565 78.4677
17.8000 101.295 1.37400 1.49000 104.591 1438.00 50499.9 100.555 65.1310
17.8500 101.223 1.38200 1.46500 88.3261 1403.01 50499.9 100.555 66.1178
17.9000 101.241 1.41700 1.48200 90.6477 1413.00 50499.9 100.537 68.8347
17.9500 101.235 1.37800 1.45100 95.2949 1316.02 50499.9 100.558 69.3289
18.0000 101.259 1.38100 1.42600 88.3241 1347.00 50499.9 100.562 65.3776

Просмотреть файл

@ -0,0 +1,46 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 05123370660000
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M : 1 DEPTH
DT .US/M : 2 SONIC TRANSIT TIME
RHOB.K/M3 : 3 BULK DENSITY
NPHI.V/V : 4 NEUTRON POROSITY
SFLU.OHMM : 5 RXO RESISTIVITY
SFLA.OHMM : 6 SHALLOW RESISTIVITY
ILM .OHMM : 7 MEDIUM RESISTIVITY
ILD .OHMM : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600

71
data/alog.las Normal file
Просмотреть файл

@ -0,0 +1,71 @@
~V
VERS. 1.20:CWLS LOG ASCII STANDARD - VERSION 1.2
WRAP. NO:One line per depth step.
~W
STRT.m 0.00:
STOP.m 0.00:
STEP.m 0.05:
NULL. -999.25:
## Unique Well Identification ##
HOLE NUMBER :hole
## Header Information ##
COMPANY :
AREA :
PROSPECT :
OPERATOR :
## Drilling Information ##
DRILLED :
PERM DAT :TOP CONCRETE
ELEV :
AZIMUTH :
INCLIN :
NORTHING :
EASTING :
HOLE DIA :
DEPTH :
## Casing Data ##
CAS1_TYP :
CAS1_DTH :
CAS1_DIA :
CAS2_TYP :
CAS2_DTH :
CAS2_DIA :
## Fluid Data ##
FLUID_TYP :WATER
FLUID_LEV :
LOGTYPE :TT5.00
~C
DEPT.m : 1 DEPTH
CCL .% : 2 CCL
GAMM.cps : 3 GAMMA
K .cps : 4 K
U .cps : 5 U
Th .% : 6 Th
Dead.ns : 7 Deadtime
TEMP.degC : 8 TEMP
HV .V : 9 HV
~A
0.00 0.00 3944.73 14.35 10.19 0.10 383.80 22.75 886.00
0.00 0.00 3946.45 13.74 10.45 0.18 380.79 22.75 885.90
0.00 0.00 3941.41 13.93 10.13 0.27 371.05 22.75 885.91
0.00 0.00 3924.17 14.02 10.11 0.26 370.41 22.75 885.96
0.00 0.00 3891.29 13.90 10.09 0.25 361.17 22.75 886.01
0.00 0.00 3886.26 14.35 9.78 0.33 361.31 22.75 886.06
0.00 0.00 3857.47 14.65 9.44 0.31 351.04 22.75 886.17
0.00 0.00 3856.12 14.62 9.30 0.30 347.04 22.75 886.09
0.00 0.00 3842.78 14.22 9.10 0.28 342.38 22.75 885.97
0.00 0.00 3849.65 14.33 9.12 0.27 340.05 22.75 885.93
0.00 0.00 3845.83 14.29 9.04 0.25 346.92 22.75 885.93
0.00 0.00 3880.30 14.43 9.07 0.32 343.08 22.75 885.97
0.00 0.00 3851.86 14.04 8.89 0.30 344.53 22.75 886.09
0.00 0.00 3864.45 13.94 8.84 0.29 342.39 22.75 886.21
0.00 0.00 3839.85 13.92 8.33 0.50 333.46 22.75 886.19
0.00 0.00 3833.82 13.52 8.31 0.48 332.70 22.75 886.19
0.00 0.00 3856.02 13.88 8.51 0.45 328.99 22.75 886.18
0.00 0.00 3857.86 14.24 8.40 0.51 329.07 22.75 886.17
0.00 0.00 3866.14 13.97 8.36 0.48 328.95 22.75 886.16
0.00 0.00 3882.91 14.11 8.49 0.61 330.64 22.75 886.19
0.00 0.00 3853.16 13.86 8.23 0.58 324.31 22.75 886.36
0.00 0.00 3850.61 13.92 8.21 0.70 325.51 22.75 886.38
0.00 0.00 3830.71 13.57 7.96 0.78 321.99 22.75 886.30
0.00 0.00 3826.76 13.56 8.10 0.75 324.58 22.75 886.21

138
data/autodepthindex_F.las Normal file
Просмотреть файл

@ -0,0 +1,138 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.F 0:
STOP.F 100:
STEP.F 1:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.F : 1 DEPTH
DD .US/M : dummy data
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
0 0.730568506467
1 0.460370664201
2 0.683856189202
3 0.873191224346
4 0.86827067744
5 0.0286797232282
6 0.0661994774171
7 0.427135990934
8 0.823809845746
9 0.974479316377
10 0.075844901647
11 0.824713011884
12 0.305459613949
13 0.623753879222
14 0.362665895199
15 0.895900612221
16 0.151131780519
17 0.963155398531
18 0.54499202407
19 0.250094526781
20 0.258041227857
21 0.515280589115
22 0.876555381232
23 0.781804973379
24 0.947247734528
25 0.552410574991
26 0.205645932284
27 0.126124074599
28 0.252094475744
29 0.0919528585187
30 0.366690838471
31 0.0283458387072
32 0.279939480925
33 0.734215189485
34 0.450752235194
35 0.330485188189
36 0.32146337995
37 0.534552976944
38 0.0255645631629
39 0.651178019733
40 0.546429453831
41 0.424941346606
42 0.0829004611638
43 0.386965784701
44 0.500523684078
45 0.0773007423597
46 0.690013645212
47 0.872215510311
48 0.78221969977
49 0.16509089125
50 0.410520260115
51 0.142038258942
52 0.0243632595338
53 0.728465190202
54 0.418764641624
55 0.853841370395
56 0.59650930496
57 0.134473517226
58 0.26377968892
59 0.241097230553
60 0.873574054223
61 0.0051049375256
62 0.0134621504133
63 0.430021670382
64 0.723480645287
65 0.543616840501
66 0.626150746695
67 0.0580702790248
68 0.615292183695
69 0.896582090574
70 0.150674823135
71 0.715821389077
72 0.398672973208
73 0.415979908809
74 0.5891741102
75 0.995056199196
76 0.64737571682
77 0.678256157476
78 0.213698608755
79 0.667979003825
80 0.0780073784561
81 0.165803283547
82 0.528599378251
83 0.265416464354
84 0.015100027327
85 0.26605450411
86 0.731257330044
87 0.33847733271
88 0.132862423527
89 0.293318306099
90 0.143090952428
91 0.709905034381
92 0.201340423953
93 0.968310983947
94 0.887003979848
95 0.507567993716
96 0.887112974218
97 0.277258308823
98 0.851338303289
99 0.252917899265
100 0.959183036405

12
data/barebones.las Normal file
Просмотреть файл

@ -0,0 +1,12 @@
#-----------------------------------------------------------------------------
~CURVE INFORMATION
#MNEM.UNIT API CODE DESCRIPTION
#---- ----- -------- -----------------------
DEPT .F :DEPTH (BOREHOLE) {F10.1}
#-----------------------------------------------------------------------------
#
# DEPT
#
~A
200.0
201.0

4
data/barebones2.las Normal file
Просмотреть файл

@ -0,0 +1,4 @@
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600

21
data/blank_line.las Normal file
Просмотреть файл

@ -0,0 +1,21 @@
~VERSION INFORMATION
VERS . 2.0 :CWLS Log ASCII Standard - VERSION 2.0
WRAP . NO :One Line per Depth step
~WELL INFORMATION
#MNEM .UNIT DATA :DESCRIPTION
#---- ------ -------------- -----------------------------
STRT .ft -999.25 :START DEPTH
STOP .ft -999.25 :STOP DEPTH
STEP .ft 0.0833333333333333 :STEP
#--------------------------------------------------
~CURVE INFORMATION
#MNEM .UNIT API CODE :DESCRIPTION
#---- ------ -------------- -----------------------------
DEPT .ft : Depth Index
#-------------------------------------------------------------
# DEPT
#
#
#
~ASCII

Просмотреть файл

@ -0,0 +1,46 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M : 1 DEPTH
DT .US/M : 2 SONIC TRANSIT TIME
RHOB.K/M3 : 3 BULK DENSITY
NPHI.V/V : 4 NEUTRON POROSITY
SFLU.OHMM : 5 RXO RESISTIVITY
SFLU.OHMM : 6 SHALLOW RESISTIVITY
ILM .OHMM : 7 MEDIUM RESISTIVITY
ILD .OHMM : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600

Просмотреть файл

@ -0,0 +1,44 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
DEPT.M : 1 DEPTH
DT .US/M : 2 SONIC TRANSIT TIME
RHOB.K/M3 : 3 BULK DENSITY
NPHI.V/V : 4 NEUTRON POROSITY
RXO.OHMM : 5 RXO RESISTIVITY
RES.OHMM : 6 SHALLOW RESISTIVITY
RES.OHMM : 7 MEDIUM RESISTIVITY
RES.OHMM : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600

Просмотреть файл

@ -0,0 +1,46 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M : 1 DEPTH
DT .US/M : 2 SONIC TRANSIT TIME
RHOB.K/M3 : 3 BULK DENSITY
NPHI.V/V : 4 NEUTRON POROSITY
SFLU.OHMM : 5 RXO RESISTIVITY
SFLA.OHMM : 6 SHALLOW RESISTIVITY
ILM .OHMM : 7 MEDIUM RESISTIVITY
ILD .OHMM : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600

Просмотреть файл

@ -0,0 +1,46 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M : 1 DEPTH
DT .US/M : 2 SONIC TRANSIT TIME
RHOB.K/M3 : 3 BULK DENSITY
NPHI.V/V : 4 NEUTRON POROSITY
SFLU.OHMM : 5 RXO RESISTIVITY
SFLA.OHMM : 6 SHALLOW RESISTIVITY
.ILM .OHMM : 7 MEDIUM RESISTIVITY
ILD .OHMM : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600

Просмотреть файл

@ -0,0 +1,46 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M : 1 DEPTH
DT .US/M : 2 SONIC TRANSIT TIME
RHOB.K/M3 : 3 BULK DENSITY
NPHI.V/V : 4 NEUTRON POROSITY
.OHMM : 5 RXO RESISTIVITY
SFLA.OHMM : 6 SHALLOW RESISTIVITY
ILM .OHMM : 7 MEDIUM RESISTIVITY
ILD .OHMM : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600

Просмотреть файл

@ -0,0 +1,46 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M : 1 DEPTH
DT .US/M : 2 SONIC TRANSIT TIME
RHOB.K/M3 : 3 BULK DENSITY
NPHI.V/V : 4 NEUTRON POROSITY
.OHMM : 5 RXO RESISTIVITY
.OHMM : 6 SHALLOW RESISTIVITY
ILM .OHMM : 7 MEDIUM RESISTIVITY
ILD .OHMM : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600

Просмотреть файл

@ -0,0 +1,43 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M : 1 DEPTH
.ohmm : curve 1,2,3
.ohmm : curve 10,20,30
.ohmm : curve 100,200,300
PHI . : porosity
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH
1670.000 1 10 100 0.1
1669.875 2 20 200 0.2
1669.750 3 30 300 0.3

Просмотреть файл

@ -0,0 +1,47 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M : 1 DEPTH
GR.gAPI: mean gamma ray value
GR.gAPI: corrected gamma ray value
GR[0].gAPI: gamma ray image at angle 0 dega
GR[1].gAPI: gamma ray image at angle 60 dega
GR[2].gAPI: gamma ray image at angle 120 dega
GR[3].gAPI: gamma ray image at angle 180 dega
GR[4].gAPI: gamma ray image at angle 240 dega
GR[5].gAPI: gamma ray image at angle 300 dega
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH
1670.000 1 10 100 0.1 1 2 3 4
1669.875 2 20 200 0.2 1 2 3 4
1669.750 3 30 300 0.3 1 2 3 4

Просмотреть файл

@ -0,0 +1,47 @@
~VERSION INFORMATION
VERS. 2.0 : CWLS LOG ASCII STANDARD -VERSION 2.0
WRAP. NO : ONE LINE PER DEPTH STEP
~WELL INFORMATION
#MNEM.UNIT DATA DESCRIPTION
#----- ----- ---------- -------------------------
STRT .M 1670.0000 :START DEPTH
STOP .M 1660.0000 :STOP DEPTH
STEP .M -0.1250 :STEP
NULL . -999.25 :NULL VALUE
COMP . ANY OIL COMPANY INC. :COMPANY
WELL . AAAAA_2 :WELL
FLD . WILDCAT :FIELD
LOC . 12-34-12-34W5M :LOCATION
PROV . ALBERTA :PROVINCE
SRVC . The company that did this logging has a very very long name....:SERVICE COMPANY
DATE . 13-DEC-86 :LOG DATE
UWI . 100123401234W500 :UNIQUE WELL ID
~CURVE INFORMATION
#MNEM.UNIT API CODES CURVE DESCRIPTION
#------------------ ------------ -------------------------
DEPT .M : 1 DEPTH
DT .US/M 60 520 32 00 : 2 SONIC TRANSIT TIME
RHOB .K/M3 45 350 01 00 : 3 BULK DENSITY
NPHI .V/V 42 890 00 00 : 4 NEUTRON POROSITY
SFLU .OHMM 07 220 04 00 : 5 SHALLOW RESISTIVITY
SFLA .OHMM 07 222 01 00 : 6 SHALLOW RESISTIVITY
ILM .OHMM 07 120 44 00 : 7 MEDIUM RESISTIVITY
ILD .OHMM 07 120 46 00 : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#-------------- ---------------- -----------------------------------------------
MUD . GEL CHEM : MUD TYPE
BHT .DEGC 35.5000 : BOTTOM HOLE TEMPERATURE
BS .MM 200.0000 : BIT SIZE
FD .K/M3 1000.0000 : FLUID DENSITY
MATR . SAND : NEUTRON MATRIX
MDEN . 2710.0000 : LOGGING MATRIX DENSITY
RMF .OHMM 0.2160 : MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000 : DRILL FLUID DENSITY
~OTHER
Note: The logging tools became stuck at 625 metres causing the data
between 625 metres and 615 metres to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600

Просмотреть файл

@ -0,0 +1,46 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M
DT .US/M
RHOB.K/M3
NPHI.V/V
SFLU.OHMM
SFLA.OHMM
ILM .OHMM
ILD .OHMM
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600

42
data/data_characters.las Normal file
Просмотреть файл

@ -0,0 +1,42 @@
~Version Information
VERS. 2.0 : CWLS log ASCII standard - Version 2.0
WRAP. NO : One line per depth step
#
~Well Information Block
#MNEM.UNIT Data Type:Information
#__________________________________________________________
STRT. 01-JAN-2020 00:00:00 : START INDEX
STOP. 01-JAN-2020 00:00:01 : STOP INDEX
STEP.SEC 10.0000 : STEP
NULL. -999.25 : NULL VALUE
COMP. : COMPANY
WELL. : WELL
FLD. : FIELD
LOC. : LOCATION
PROV. : PROVINCE
CNTY. : COUNTY
STAT. : STATE
CTRY. : COUNTRY
SRVC. : SERVICE COMPANY
DATE. : LOG DATE
UWI. : UNIQUE WELL ID
API. : API NUMBER
#
~Curve Information Block
#MNEM.UNIT : Curve Description
#--------- --------------------
TIME .HHMMSS :
DATE .D :
DEPT .M : Bit Depth 2hz
ARC_GR_UNC_RT.GAPI : ARC Raw Gamma Ray, Real-Time
#
~Parameter Information Block
#MNEM.UNIT Value:Description
#__________________________________________________________
#
~Other Information Block
#
~A TIME DATE DEPT ARC_GR_UNC_RT
00:00:00 01-Jan-20 1500.2435 126.56
00:00:01 01-Jan-20 1500.3519 126.56

Двоичные данные
data/encodings_utf16be.las

Двоичный файл не отображается.

Двоичные данные
data/encodings_utf16bebom.las

Двоичный файл не отображается.

Двоичные данные
data/encodings_utf16le.las

Двоичный файл не отображается.

Двоичные данные
data/encodings_utf16lebom.las

Двоичный файл не отображается.

Просмотреть файл

@ -9,7 +9,7 @@
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ºᶟᵌᴬń OIL WELL #12
WELL. WELL: Скв #12Ω
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
@ -21,7 +21,7 @@
#--------- ------------- ------------------------------
DEPT.M : 1 ºᶟᵌᴬń
DT .US/M : 2 SONIC TRANSIT TIME
ºᶟᵌᴬń.K/M3 : 3 BULK DENSITY
σ.K/M3 : 3 BULK DENSITY
NPHI.V/V : 4 NEUTRON POROSITY
SFLU.OHMM : 5 RXO RESISTIVITY
SFLA.OHMM : 6 SHALLOW RESISTIVITY

Просмотреть файл

@ -0,0 +1,46 @@
~VERSION INFORMATION
VERS. 2.0: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL ºᶟᵌᴬń BLOCK
#MNEM.ºᶟᵌᴬń DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. Скв #12Ω: well
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M : 1 ºᶟᵌᴬń
DT .US/M : 2 SONIC TRANSIT TIME
σ.K/M3 : 3 BULK DENSITY
NPHI.V/V : 4 NEUTRON POROSITY
SFLU.OHMM : 5 RXO RESISTIVITY
SFLA.OHMM : 6 SHALLOW RESISTIVITY
ILM .OHMM : 7 MEDIUM RESISTIVITY
ILD .OHMM : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .ºᶟᵌᴬń 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The ºᶟᵌᴬń tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600

Просмотреть файл

@ -9,7 +9,7 @@
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: Скважина ºᶟᵌᴬń #12
WELL. WELL: Скважина #12Ω
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN

Просмотреть файл

@ -0,0 +1,46 @@
~VERSION INFORMATION
VERS. 2.0: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL ºᶟᵌᴬń BLOCK
#MNEM.ºᶟᵌᴬń DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. Скважина #12Ω: WELL
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M : 1 ºᶟᵌᴬń
DT .US/M : 2 SONIC TRANSIT TIME
ºᶟᵌᴬń.K/M3 : 3 BULK DENSITY
NPHI.V/V : 4 NEUTRON POROSITY
SFLU.OHMM : 5 RXO RESISTIVITY
SFLA.OHMM : 6 SHALLOW RESISTIVITY
ILM .OHMM : 7 MEDIUM RESISTIVITY
ILD .OHMM : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .ºᶟᵌᴬń 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The ºᶟᵌᴬń tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600

Просмотреть файл

@ -4,7 +4,7 @@
#
~Version Information
VERS. 1.20: cp_866 CWLS log ASCII Standard - VERSION 1.20
VERS. 1.20: CP866 CWLS log ASCII Standard - VERSION 1.20
WRAP. NO : One line per depth step
~Well Information
STRT .M 1.0 : Start depth
@ -14,9 +14,9 @@ NULL . -9999.00 : Null value
WELL . WELL : 12-‘¯«®è­ ï
~Curve Information
DEPT .M : 1 DEPTH
 <EFBFBD> .¤.¥¤. :
 <EFBFBD>.ãá«.¥¤. : et
 <EFBFBD> . :
 <EFBFBD> .¤.¥¤. : 2
 <EFBFBD>.ãá«.¥¤. : 3et
 <EFBFBD> . : 4
~Parameter Information
EKB .M 72.7 : Elevation,Kelly Bushing
~ASCII Log Data

29139
data/logging_levels.las Normal file

Разница между файлами не показана из-за своего большого размера Загрузить разницу

45
data/missing_null.las Normal file
Просмотреть файл

@ -0,0 +1,45 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M : 1 DEPTH
DT .US/M : 2 SONIC TRANSIT TIME
RHOB.K/M3 : 3 BULK DENSITY
NPHI.V/V : 4 NEUTRON POROSITY
SFLU.OHMM : 5 RXO RESISTIVITY
SFLA.OHMM : 6 SHALLOW RESISTIVITY
ILM .OHMM : 7 MEDIUM RESISTIVITY
ILD .OHMM : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 -999.25 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 -999.25 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600

45
data/missing_vers.las Normal file
Просмотреть файл

@ -0,0 +1,45 @@
~VERSION INFORMATION
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M : 1 DEPTH
DT .US/M : 2 SONIC TRANSIT TIME
RHOB.K/M3 : 3 BULK DENSITY
NPHI.V/V : 4 NEUTRON POROSITY
SFLU.OHMM : 5 RXO RESISTIVITY
SFLA.OHMM : 6 SHALLOW RESISTIVITY
ILM .OHMM : 7 MEDIUM RESISTIVITY
ILD .OHMM : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600

45
data/missing_wrap.las Normal file
Просмотреть файл

@ -0,0 +1,45 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M : 1 DEPTH
DT .US/M : 2 SONIC TRANSIT TIME
RHOB.K/M3 : 3 BULK DENSITY
NPHI.V/V : 4 NEUTRON POROSITY
SFLU.OHMM : 5 RXO RESISTIVITY
SFLA.OHMM : 6 SHALLOW RESISTIVITY
ILM .OHMM : 7 MEDIUM RESISTIVITY
ILD .OHMM : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600

Просмотреть файл

@ -0,0 +1,46 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M : 1 DEPTH
DT .US/M : 2 SONIC TRANSIT TIME
RHOB.K/M3 : 3 BULK DENSITY
NPHI.V/V : 4 NEUTRON POROSITY
SFLU.OHMM : 5 RXO RESISTIVITY
SFLA.OHMM : 6 SHALLOW RESISTIVITY
ILM .OHMM : 7 MEDIUM RESISTIVITY
ILD .OHMM : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 9998 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 9999 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 10000 (null) 0.450 123.450 -999.25 110.200 105.600

Просмотреть файл

@ -0,0 +1,46 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M : 1 DEPTH
DT .US/M : 2 SONIC TRANSIT TIME
RHOB.K/M3 : 3 BULK DENSITY
NPHI.V/V : 4 NEUTRON POROSITY
SFLU.OHMM : 5 RXO RESISTIVITY
SFLA.OHMM : 6 SHALLOW RESISTIVITY
ILM .OHMM : 7 MEDIUM RESISTIVITY
ILD .OHMM : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 -999.25 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 -999.25 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 123.450 2550.000 0.450 123.450 -999.25 110.200 105.600

Просмотреть файл

@ -0,0 +1,46 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M : 1 DEPTH
DT .US/M : 2 SONIC TRANSIT TIME
RHOB.K/M3 : 3 BULK DENSITY
NPHI.V/V : 4 NEUTRON POROSITY
SFLU.OHMM : 5 RXO RESISTIVITY
SFLA.OHMM : 6 SHALLOW RESISTIVITY
ILM .OHMM : 7 MEDIUM RESISTIVITY
ILD .OHMM : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 9998 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 9999 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 10000 2550.000 0.450 123.450 -999.25 110.200 105.600

Просмотреть файл

@ -0,0 +1,46 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M : 1 DEPTH
DT .US/M : 2 SONIC TRANSIT TIME
RHOB.K/M3 : 3 BULK DENSITY
NPHI.V/V : 4 NEUTRON POROSITY
SFLU.OHMM : 5 RXO RESISTIVITY
SFLA.OHMM : 6 SHALLOW RESISTIVITY
ILM .OHMM : 7 MEDIUM RESISTIVITY
ILD .OHMM : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 9998 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 9999 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 10000 ERR 0.450 123.450 -999.25 110.200 105.600

Просмотреть файл

@ -0,0 +1,46 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M : 1 DEPTH
DT .US/M : 2 SONIC TRANSIT TIME
RHOB.K/M3 : 3 BULK DENSITY
NPHI.V/V : 4 NEUTRON POROSITY
SFLU.OHMM : 5 RXO RESISTIVITY
SFLA.OHMM : 6 SHALLOW RESISTIVITY
ILM .OHMM : 7 MEDIUM RESISTIVITY
ILD .OHMM : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 9998 - 0.450 123.450 123.450 110.200 105.600
1669.875 9999 -2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 10000 -- 0.450 123.450 -999.25 110.200 105.600

Просмотреть файл

@ -0,0 +1,30 @@
~Version Information Block
VERS. 2.00: CWLS LOG ASCII STANDARD - VERSION 2.000000
WRAP. NO: One Line Per Depth Step
#
~Well Information Block
#MNEM.UNIT Data Information
#---------- ------------------------------------------ ----------------
STRT.FT 2450.0000: START DEPTH
STOP.FT 2550.0000: STOP DEPTH
STEP.FT 0.5000: STEP LENGTH
NULL. -999.2500: NULL VALUE
COMP. Drillers & Producers, Inc.: COMPANY
LEAS. Berry: LEASE NAME
WELL. 2: WELL NUM
~Curve Information Block
DEPT.FT : Depth in Feet
GR .GAPI : Gamma Ray
CN .PU : Compensated Neutron
CD .PU : Compensated Density
~A DEPTH GR CN CD
2450.000 141.53386454 -1.#IND0000 -1.#IND0000
2450.500 141.53386454 -1.#IND0000 -1.#IND0000
2451.000 140.92327541 -1.#IND0000 -1.#IND0000
2451.500 138.84323879 -1.#IND0000 -1.#IND0000
2452.000 135.69677278 -1.#IND0000 -1.#IND0000
2452.500 132.29497308 -1.#IND0000 -1.#IND0000
2453.000 131.95062005 -1.#IND0000 -1.#IND0000
2453.500 134.61177433 -1.#IND0000 -1.#IND0000
2454.000 135.16463889 -1.#IND0000 -1.#IND0000
2454.500 131.08716622 -1.#IND0000 -1.#IND0000

Просмотреть файл

@ -0,0 +1,36 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 7690.000:
STOP.M 7683.500:
STEP.M -0.5000:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD:
LOC . LOCATION:
PROV. PROVINCE: ANY PROVINCE
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1900
UWI . UNIQUE WELL ID:
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.FT :
C01. :
C02. :
C03. :
C04. :
C05. :
C06. :
~P
~O
~A
7686.000 67.354 0.140 0.415 9.207 4648.011 10.609
7685.500 69.004 0.151 0.412 7.020101130.188 10.560
7685.000 68.809 0.150 0.411 7.330-19508.961 10.424
7684.500 68.633 0.149 0.402 7.345116238.453 10.515
7684.000 68.008 0.144 0.386 7.682 4182.679 10.515

Просмотреть файл

@ -0,0 +1,46 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.[M] : 1 DEPTH
DT .[US/M] : 2 SONIC TRANSIT TIME
RHOB.[K/M3] : 3 BULK DENSITY
NPHI.[V/V] : 4 NEUTRON POROSITY
SFLU.[OHMM] : 5 RXO RESISTIVITY
SFLA.[OHMM] : 6 SHALLOW RESISTIVITY
ILM .[OHMM] : 7 MEDIUM RESISTIVITY
ILD .[OHMM] : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0000: LOGGING MATRIX DENSITY
RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0000: DRILL FLUID DENSITY
~Other
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD
1670.000 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.875 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600

Просмотреть файл

@ -0,0 +1,40 @@
~Version ---------------------------------------------------
VERS. 1.2 : CWLS LOG ASCII STANDARD - VERSION 1.2
WRAP. NO : ONE LINE PER DEPTH STEP
~Well ------------------------------------------------------
STRT .M 1670.0 :
STOP .M 1669.75 :
STEP .M -0.125 :
NULL . -999.25 :
COMPANY. COMPANY : # ANY OIL COMPANY LTD.
WELL . WELL : ANY ET AL OIL WELL #12
FLD . FIELD : EDAM
LOC . LOCATION : A9-16-49-20W3M
PROV . PROVINCE : SASKATCHEWAN
SRVC . SERVICE : The company that did this logging has a very very long name....
DATE . LOG DATE : 25-DEC-1988
UWI . WELL ID : 100091604920W300
~Curve Information -----------------------------------------
D.M : 1 DEPTH
A.US/M : 2 SONIC TRANSIT TIME
B.K/M3 : 3 BULK DENSITY
C.V/V : 4 NEUTRON POROSITY
-EL- . :
-EL-1.m :
-EL-2.v/v :
-EL-3. :
~Params ----------------------------------------------------
BHT .DEGC 35.5 : BOTTOM HOLE TEMPERATURE
BS .MM 200.0 : BIT SIZE
FD .K/M3 1000.0 : FLUID DENSITY
MATR. 0.0 : NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0 : LOGGING MATRIX DENSITY
RMF .OHMM 0.216 : MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0 : DRILL FLUID DENSITY
~Other -----------------------------------------------------
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~ASCII -----------------------------------------------------
1670.00000 123.45000 2550.00000 0.45000 123.45000 123.45000 110.20000 105.60000
1669.87500 123.45000 2550.00000 0.45000 123.45000 123.45000 110.20000 105.60000
1669.75000 123.45000 2550.00000 0.45000 123.45000 123.45000 110.20000 105.60000

Просмотреть файл

@ -0,0 +1,40 @@
~Version ---------------------------------------------------
VERS. 1.2 : CWLS LOG ASCII STANDARD - VERSION 1.2
WRAP. NO : ONE LINE PER DEPTH STEP
~Well ------------------------------------------------------
STRT .M 1670.0 :
STOP .M 1669.75 :
STEP .M -0.125 :
NULL . -999.25 :
COMPANY. COMPANY : # ANY OIL COMPANY LTD.
WELL . WELL : ANY ET AL OIL WELL #12
FLD . FIELD : EDAM
LOC . LOCATION : A9-16-49-20W3M
PROV . PROVINCE : SASKATCHEWAN
SRVC . SERVICE : The company that did this logging has a very very long name....
DATE . LOG DATE : 25-DEC-1988
UWI . WELL ID : 100091604920W300
~Curve Information -----------------------------------------
D.M : 1 DEPTH
A.US/M : 2 SONIC TRANSIT TIME
B.K/M3 : 3 BULK DENSITY
C.V/V : 4 NEUTRON POROSITY
. :
.m :
.v/v :
.m V :
~Params ----------------------------------------------------
BHT .DEGC 35.5 : BOTTOM HOLE TEMPERATURE
BS .MM 200.0 : BIT SIZE
FD .K/M3 1000.0 : FLUID DENSITY
MATR. 0.0 : NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
MDEN. 2710.0 : LOGGING MATRIX DENSITY
RMF .OHMM 0.216 : MUD FILTRATE RESISTIVITY
DFD .K/M3 1525.0 : DRILL FLUID DENSITY
~Other -----------------------------------------------------
Note: The logging tools became stuck at 625 meters causing the data
between 625 meters and 615 meters to be invalid.
~ASCII -----------------------------------------------------
1670.00000 123.45000 2550.00000 0.45000 123.45000 123.45000 110.20000 105.60000
1669.87500 123.45000 2550.00000 0.45000 123.45000 123.45000 110.20000 105.60000
1669.75000 123.45000 2550.00000 0.45000 123.45000 123.45000 110.20000 105.60000

Двоичные данные
debug.test Normal file

Двоичный файл не отображается.

Просмотреть файл

@ -1,7 +1,6 @@
~VERSION INFORMATION
VERS. 1.2 :glas (c) softlandia@gmail.com
WRAP. NO : ONE LINE PER DEPTH STEP
CPAGE. 1251: code page
~WELL INFORMATION
STRT.M 1.000 :START DEPTH
STOP.M 1.000 :STOP DEPTH

Просмотреть файл

@ -1,5 +1,4 @@
**file: expand_points_01.las**
**file: 1.warning.md **
0, line: -1, desc: invalid STRT: 1.000 or STOP: 1.000, will be replace to actually
1, line: 25, desc: actual number of data lines more than expected, check: STRT, STOP, STEP
2, line: 25, desc: expand number of points

Просмотреть файл

@ -1,13 +1,12 @@
~VERSION INFORMATION
VERS. 2.0 :glas (c) softlandia@gmail.com
WRAP. NO : ONE LINE PER DEPTH STEP
CPAGE. 1251: code page
~WELL INFORMATION
STRT.M 0.201 :START DEPTH
STOP.M 10.010 :STOP DEPTH
STEP.M 0.010 :STEP
NULL. -99.990 :NULL VALUE
WELL. <20>ਬ¥à­ ï-101/¡¨á :WELL
WELL. <20>ਬ¥à­ ï-101/¡¨á :WELL
~Curve Information Section
DEPT.M :
~ASCII Log Data

Просмотреть файл

@ -29,7 +29,7 @@ func test2() {
las.Stop = 10.01
las.Step = 0.01
las.Well = "Примерная-101/бис"
curve := glasio.NewLasCurveFromString("SP.mV :spontaniously")
curve := glasio.NewLasCurve("SP.mV :spontaniously")
las.Logs["SP"] = curve
curve.Init(0, "SP", "SP", 5)
err := las.Save("empty.las")

266
las.go
Просмотреть файл

@ -2,6 +2,7 @@ package glasio
import (
"bufio"
"bytes"
"errors"
"fmt"
"io"
@ -57,47 +58,52 @@ const (
lasSecData = 4
)
// LasWellInfo - contain parameters of Well section
type LasWellInfo struct {
ver float64
wrap string
wellName string
null float64
oCodepage cpd.IDCodePage
}
// Las - class to store las file
// input code page autodetect
// at read file always code page converted to UTF
// at save file code page converted to specifyed in Las.toCodePage
//TODO add pointer to cfg
//TODO warnings - need method to flush slice on file, and clear
//TODO expPoints надо превратить в метод
//TODO имена скважин с пробелами читаются неверно
type Las struct {
FileName string //file name from load
File *os.File //the file from which we are reading
Reader io.Reader //reader created from File, provides decode from codepage to UTF-8
scanner *bufio.Scanner //scanner
Ver float64 //version 1.0, 1.2 or 2.0
Wrap string //YES || NO
Strt float64 //start depth
Stop float64 //stop depth
Step float64 //depth step
Null float64 //value interpreted as empty
Well string //well name
Rkb float64 //altitude KB
Logs map[string]LasCurve //store all logs
LogDic *map[string]string //external dictionary of standart log name - mnemonics
VocDic *map[string]string //external vocabulary dictionary of log mnemonic
Warnings TLasWarnings //slice of warnings occure on read or write
expPoints int //expected count (.)
nPoints int //actually count (.)
iCodepage cpd.IDCodePage //codepage input file. autodetect
oCodepage cpd.IDCodePage //codepage to save file, default xlib.CpWindows1251. to special value, specify at make: NewLas(cp...)
iDuplicate int //индекс повторящейся мнемоники, увеличивается на 1 при нахождении дубля, начально 0
currentLine int //index of current line in readed file
maxWarningCount int //default maximum warning count
stdNull float64 //default null value
CodePage string //TODO to delete //пока не читается
FileName string //file name from load
File *os.File //the file from which we are reading
Reader io.Reader //reader created from File, provides decode from codepage to UTF-8
scanner *bufio.Scanner //scanner
Ver float64 //version 1.0, 1.2 or 2.0
Wrap string //YES || NO
Strt float64 //start depth
Stop float64 //stop depth
Step float64 //depth step
Null float64 //value interpreted as empty
Well string //well name
Rkb float64 //altitude KB
Logs LasCurves //store all logs
LogDic *map[string]string //external dictionary of standart log name - mnemonics
VocDic *map[string]string //external vocabulary dictionary of log mnemonic
Warnings TLasWarnings //slice of warnings occure on read or write
ePoints int //expected count (.)
nPoints int //actually count (.)
oCodepage cpd.IDCodePage //codepage to save, default xlib.CpWindows1251. to special value, specify at make: NewLas(cp...)
iDuplicate int //индекс повторящейся мнемоники, увеличивается на 1 при нахождении дубля, начально 0
currentLine int //index of current line in readed file
maxWarningCount int //default maximum warning count
stdNull float64 //default null value
//iCodepage cpd.IDCodePage //codepage input file - autodetected
}
//GetStepFromData - return step from data section
//read 2 line from section ~A and determine step
//close file
//return o.Null if error occure
//если делать функцией, не методом, то придётся NULL передавать. а оно надо вообще
// GetStepFromData - return step from data section
// read 2 line from section ~A and determine step
// close file
// return o.Null if error occure
// если делать функцией, не методом, то придётся NULL передавать. а оно надо вообще
func (o *Las) GetStepFromData(fileName string) float64 {
iFile, err := os.Open(fileName)
if err != nil {
@ -134,6 +140,7 @@ func (o *Las) GetStepFromData(fileName string) float64 {
dept2 = dept1
}
//если мы попали сюда, то всё грусно, в файле после ~A не нашлось двух строчек с данными... или пустые строчки или комменты
// TODO последняя строка "return o.Null" не обрабатывается в тесте
return o.Null
}
@ -150,21 +157,6 @@ func (o *Las) SetNull(aNull float64) error {
return nil
}
func (o *Las) convertStrToOut(s string) string {
r, _ := cpd.NewReaderTo(strings.NewReader(s), o.oCodepage.String())
b, _ := ioutil.ReadAll(r)
return string(b)
/*
switch o.oCodepage {
case cpd.CP866:
s, _, _ = transform.String(charmap.CodePage866.NewEncoder(), s)
case cpd.CP1251:
s, _, _ = transform.String(charmap.Windows1251.NewEncoder(), s)
}
return s
*/
}
//logByIndex - return log from map by Index
func (o *Las) logByIndex(i int) (*LasCurve, error) {
for _, v := range o.Logs {
@ -175,6 +167,15 @@ func (o *Las) logByIndex(i int) (*LasCurve, error) {
return nil, fmt.Errorf("log with index: %v not present", i)
}
var (
// ExpPoints - ожидаемое количество точек данных, до чтения мы не можем знать сколько точек будет фактически прочитано
ExpPoints int = 1000
// StdNull - пустое значение
StdNull float64 = -999.25
// MaxWarningCount - слишком много сообщений писать смысла нет
MaxWarningCount int = 20
)
//NewLas - make new object Las class
//autodetect code page at load file
//code page to save by default is cpd.CP1251
@ -182,10 +183,10 @@ func NewLas(outputCP ...cpd.IDCodePage) *Las {
las := new(Las)
las.Ver = 2.0
las.Wrap = "NO"
las.expPoints = 1000
las.ePoints = 1000
las.Logs = make(map[string]LasCurve)
las.maxWarningCount = 20 //TODO read from Cfg
las.stdNull = -999.25 //TODO read from Cfg
las.maxWarningCount = MaxWarningCount
las.stdNull = -999.25
if len(outputCP) > 0 {
las.oCodepage = outputCP[0]
} else {
@ -200,6 +201,27 @@ func NewLas(outputCP ...cpd.IDCodePage) *Las {
return las
}
// NewLasPar - create new object with parameters
func NewLasPar(lasInfo LasWellInfo) *Las {
las := new(Las)
las.Ver = lasInfo.ver
las.Wrap = lasInfo.wrap
las.Well = lasInfo.wellName
las.stdNull = lasInfo.null
las.oCodepage = lasInfo.oCodepage
las.maxWarningCount = MaxWarningCount
las.ePoints = ExpPoints
las.Logs = make(map[string]LasCurve)
//mnemonic dictionary
las.LogDic = nil
//external log dictionary
las.VocDic = nil
//счётчик повторяющихся мнемоник, увеличивается каждый раз на 1, используется при переименовании мнемоники
las.iDuplicate = 0
return las
}
//analize first char after ~
//~V - section vertion
//~W - well info section
@ -251,7 +273,7 @@ func (o *Las) checkWellInfoSection() error {
// IsWraped - return true if WRAP == YES
func (o *Las) IsWraped() bool {
return (strings.Index(strings.ToUpper(o.Wrap), "Y") >= 0)
return strings.Contains(strings.ToUpper(o.Wrap), "Y") //(strings.Index(strings.ToUpper(o.Wrap), "Y") >= 0)
}
// SaveWarning - save to file all warning
@ -407,7 +429,7 @@ func (o *Las) ReadParameter(s string, secNum int) error {
func (o *Las) readVersionParam(s string) error {
var err error
p := NewLasParamFromString(s)
p := NewLasParam(s)
switch p.Name {
case "VERS":
o.Ver, err = strconv.ParseFloat(p.Val, 64)
@ -420,7 +442,7 @@ func (o *Las) readVersionParam(s string) error {
//ReadWellParam - read parameter from WELL section
func (o *Las) ReadWellParam(s string) error {
var err error
p := NewLasParamFromString(s)
p := NewLasParam(s)
switch p.Name {
case "STRT":
o.Strt, err = strconv.ParseFloat(p.Val, 64)
@ -434,7 +456,8 @@ func (o *Las) ReadWellParam(s string) error {
if o.Ver < 2.0 {
o.Well = p.Desc
} else {
o.Well = p.Val
//o.Well = p.Val
o.Well = wellNameFromParam(p)
}
}
if err != nil {
@ -464,9 +487,9 @@ func (o *Las) ChangeDuplicateLogName(name string) string {
//Name - ключ в map хранилище, повторятся не может. если в исходном есть повторение, то Name строится добавлением к IName индекса
//Mnemonic - мнемоника, берётся из словаря, если в словаре не найдено, то ""
func (o *Las) readCurveParam(s string) error {
l := NewLasCurveFromString(s)
l := NewLasCurve(s)
l.Init(len(o.Logs), o.GetMnemonic(l.Name), o.ChangeDuplicateLogName(l.Name), o.GetExpectedPointsCount())
o.Logs[l.Name] = l //добавление в карту кривой каротажа с колонкой глубин
o.Logs[l.Name] = l //добавление в хранилище кривой каротажа с колонкой глубин
return nil
}
@ -475,7 +498,7 @@ func (o *Las) GetExpectedPointsCount() int {
var m int
//TODO нужно обработать все случаи
if o.Step == 0.0 {
return o.expPoints
return o.ePoints
}
if math.Abs(o.Stop) > math.Abs(o.Strt) {
m = int((o.Stop-o.Strt)/o.Step) + 2
@ -485,6 +508,9 @@ func (o *Las) GetExpectedPointsCount() int {
if m < 0 {
m = -m
}
if m == 0 {
return o.ePoints
}
return m
}
@ -494,13 +520,13 @@ func (o *Las) expandDept(d *LasCurve) {
o.addWarning(TWarning{directOnRead, lasSecData, o.currentLine, "actual number of data lines more than expected, check: STRT, STOP, STEP"})
o.addWarning(TWarning{directOnRead, lasSecData, o.currentLine, "expand number of points"})
//ожидаем удвоения данных
o.expPoints *= 2
o.ePoints *= 2
//expand first log - dept
newDept := make([]float64, o.expPoints, o.expPoints)
newDept := make([]float64, o.ePoints)
copy(newDept, d.dept)
d.dept = newDept
newLog := make([]float64, o.expPoints, o.expPoints)
newLog := make([]float64, o.ePoints)
copy(newLog, d.dept)
d.log = newLog
o.Logs[d.Name] = *d
@ -510,11 +536,11 @@ func (o *Las) expandDept(d *LasCurve) {
var l *LasCurve
for j := 1; j < n; j++ {
l, _ = o.logByIndex(j)
newDept := make([]float64, o.expPoints, o.expPoints)
newDept := make([]float64, o.ePoints)
copy(newDept, l.dept)
l.dept = newDept
newLog := make([]float64, o.expPoints, o.expPoints)
newLog := make([]float64, o.ePoints)
copy(newLog, l.log)
l.log = newLog
o.Logs[l.Name] = *l
@ -533,14 +559,14 @@ func (o *Las) ReadDataSec(fileName string) (int, error) {
)
//исходя из параметров STRT, STOP и STEP определяем ожидаемое количество строк данных
o.expPoints = o.GetExpectedPointsCount()
o.ePoints = o.GetExpectedPointsCount()
//o.currentLine++
n := len(o.Logs) //количество каротажей, столько колонок данных ожидаем
d, _ = o.logByIndex(0) //dept log
s := ""
for i = 0; o.scanner.Scan(); i++ {
o.currentLine++
if i == o.expPoints {
if i == o.ePoints {
o.expandDept(d)
}
s = strings.TrimSpace(o.scanner.Text())
@ -618,7 +644,10 @@ func (o *Las) ReadDataSec(fileName string) (int, error) {
}
//i - actually readed lines and add (.) to data array
//crop logs to actually len
o.setActuallyNumberPoints(i)
err = o.setActuallyNumberPoints(i)
if err != nil {
return 0, err
}
return i, nil
}
@ -652,11 +681,15 @@ func (o *Las) setActuallyNumberPoints(numPoints int) error {
return nil
}
//Save - save to file
//rewrite if file exist
//if useMnemonic == true then on save using std mnemonic on ~Curve section
//TODO las have field filename of readed las file, after save filename must update or not? warning occure on write for what file?
func (o *Las) Save(fileName string, useMnemonic ...bool) error {
/*
func (o *Las) convertStrToOut(s string) string {
r, _ := cpd.NewReaderTo(strings.NewReader(s), o.oCodepage.String())
b, _ := ioutil.ReadAll(r)
return string(b)
}
func (o *Las) SaveToFile(fileName string, useMnemonic ...bool) error {
n := len(o.Logs) //log count
if n <= 0 {
return errors.New("logs not exist")
@ -679,7 +712,6 @@ func (o *Las) Save(fileName string, useMnemonic ...bool) error {
fmt.Fprint(f, _LasFirstLine)
fmt.Fprintf(f, _LasVersion, o.Ver)
fmt.Fprint(f, _LasWrap)
fmt.Fprint(f, _LasCodePage)
fmt.Fprint(f, _LasWellInfoSec)
fmt.Fprintf(f, _LasStrt, o.Strt)
fmt.Fprintf(f, _LasStop, o.Stop)
@ -721,3 +753,93 @@ func (o *Las) Save(fileName string, useMnemonic ...bool) error {
}
return nil
}
*/
//Save - save to file
//rewrite if file exist
//if useMnemonic == true then on save using std mnemonic on ~Curve section
//TODO las have field filename of readed las file, after save filename must update or not? warning occure on write for what file?
func (o *Las) Save(fileName string, useMnemonic ...bool) error {
var (
err error
bufToSave []byte
)
if len(useMnemonic) > 0 {
bufToSave, err = o.SaveToBuf(true)
} else {
bufToSave, err = o.SaveToBuf(false)
}
if err != nil {
return err
}
if !xlib.FileExists(fileName) {
err = os.MkdirAll(filepath.Dir(fileName), os.ModePerm)
if err != nil {
return errors.New("path: '" + filepath.Dir(fileName) + "' can't create >>" + err.Error())
}
}
err = ioutil.WriteFile(fileName, bufToSave, 0644)
if err != nil {
return errors.New("file: '" + fileName + "' can't open to write >>" + err.Error())
}
return nil
}
// SaveToBuf - save to file
// rewrite if file exist
// if useMnemonic == true then on save using std mnemonic on ~Curve section
// ir return err != nil then fatal error, returned slice is not full corrected
func (o *Las) SaveToBuf(useMnemonic bool) ([]byte, error) {
n := len(o.Logs) //log count
if n <= 0 {
return nil, errors.New("logs not exist")
}
var err error
var b bytes.Buffer
fmt.Fprint(&b, _LasFirstLine)
fmt.Fprintf(&b, _LasVersion, o.Ver)
fmt.Fprint(&b, _LasWrap)
fmt.Fprint(&b, _LasWellInfoSec)
fmt.Fprintf(&b, _LasStrt, o.Strt)
fmt.Fprintf(&b, _LasStop, o.Stop)
fmt.Fprintf(&b, _LasStep, o.Step)
fmt.Fprintf(&b, _LasNull, o.Null)
fmt.Fprintf(&b, _LasWell, o.Well)
fmt.Fprint(&b, _LasCurvSec)
fmt.Fprint(&b, _LasCurvDept)
var sb strings.Builder
sb.WriteString("# DEPT |") //готовим строчку с названиями каротажей глубина всегда присутствует
var l *LasCurve
for i := 1; i < n; i++ { //Пишем названия каротажей
l, _ := o.logByIndex(i)
if useMnemonic {
if len(l.Mnemonic) > 0 {
l.Name = l.Mnemonic
}
}
fmt.Fprintf(&b, _LasCurvLine, l.Name, l.Unit) //запись мнемоник в секции ~Curve
sb.WriteString(" ")
fmt.Fprintf(&sb, "%-8s|", l.Name) //Собираем строчку с названиями каротажей
}
fmt.Fprint(&b, _LasDataSec)
//write data
fmt.Fprintf(&b, "%s\n", sb.String())
dept, _ := o.logByIndex(0)
for i := 0; i < o.nPoints; i++ { //loop by dept (.)
fmt.Fprintf(&b, "%-9.3f ", dept.dept[i])
for j := 1; j < n; j++ { //loop by logs
l, err = o.logByIndex(j)
if err != nil {
o.addWarning(TWarning{directOnWrite, lasSecData, i, "logByIndex() return error, log not found, panic"})
return nil, errors.New("logByIndex() return error, log not found, panic")
}
fmt.Fprintf(&b, "%-9.3f ", l.log[i])
}
fmt.Fprintln(&b)
}
r, _ := cpd.NewReaderTo(io.Reader(&b), o.oCodepage.String()) //ошибку не обрабатываем, допустимость oCodepage проверяем раньше, других причин нет
bufToSave, _ := ioutil.ReadAll(r)
return bufToSave, nil
}

1
las_curves.go Normal file
Просмотреть файл

@ -0,0 +1 @@
package glasio

Просмотреть файл

@ -26,7 +26,7 @@ func NewLasLog(las *Las) LasLog {
lasLog.msgOpen = nil
lasLog.msgCheck = make(tCheckMsg, 0, 10)
lasLog.msgCurve = make(tCurvRprt, 0, 10)
lasLog.missMnemonic = make(tMMnemonic, 0)
lasLog.missMnemonic = make(tMMnemonic)
return lasLog
}

Просмотреть файл

@ -1,6 +1,8 @@
package glasio
import (
"fmt"
"sort"
"strings"
"github.com/softlandia/xlib"
@ -64,6 +66,8 @@ func ParseParamStr(s string) (f [4]string) {
return
}
const defCurveName = "-EL-" // curve name for null input
// ParseCurveStr - parse input string to 3 separated string
// " пс повт . мВ : 7 кр сам"
// ^^^^^^^ ^^ ^^^^^^^^
@ -85,24 +89,26 @@ func ParseCurveStr(s string) (f [3]string) {
}
//if comma not found, string not change
//now s contains only name and unit
iDot := strings.Index(s, ".")
//TODO если в строке нет точки, то отделить имя от единицы измерения невозможно. имя может содержать произвольные символы включая пробел
if iDot < 0 { //if dot not found, all string is Curve name
f[0] = strings.TrimSpace(s)
return
}
f[0] = strings.TrimSpace(s[:iDot])
if len(f[0]) == 0 {
// case empty curve name
f[0] = defCurveName
}
s = strings.TrimSpace(s[iDot+1:])
f[1], _ = xlib.StrCopyStop(s, ' ', ':')
f[1] = strings.TrimSpace(f[1])
/* s = strings.TrimSpace(s[iDot+1:])
f[1], _ = xlib.StrCopyStop(s, ' ', ':') */
f[1] = strings.TrimSpace(s[iDot+1:])
return
}
//NewLasParamFromString - create new object LasParam
//NewLasParam - create new object LasParam
//fill fields from s
func NewLasParamFromString(s string) *LasParam {
func NewLasParam(s string) *LasParam {
par := new(LasParam)
paramFields := ParseParamStr(s)
par.Name = paramFields[0]
@ -116,6 +122,23 @@ func NewLasParamFromString(s string) *LasParam {
return par
}
//NULL . -9999.00 : Null value
//WELL . 1 - Вообщевская :
// по умолчанию строка параметра разбирается на 4 составляющие: "имя параметра, ед измерения, значение, коментарий"
// между точкой и двоеточием ожидается единица измерения и значение параметра
// для параметра WELL пробел после точки также разбивает строку на две: ед измерения и значение
// но ТОЛЬКО для этого параметра единица измерения не существет и делать этого не следует
// таким образом собираем обратно в одно значение то, что ВОЗМОЖНО разбилось
func wellNameFromParam(p *LasParam) string {
if len(p.Unit) == 0 {
return p.Val
}
if len(p.Val) == 0 {
return p.Unit
}
return p.Unit + " " + p.Val
}
//LasCurve - class to store one log in Las
type LasCurve struct {
LasParam
@ -124,21 +147,30 @@ type LasCurve struct {
log []float64
}
// Cmp - compare current curve with another
// не сравниваются хранящиеся числовые данные (сам каротаж), только описание кривой, также не сравнивается индекс
// for deep comparison with all data points stored in the container use DeepCmp
func (o *LasCurve) Cmp(curve LasCurve) (res bool) {
res = (o.LasParam == curve.LasParam)
return
}
//SetLen - crop logs to actually len
//new len must be > 0 and < exist length
func (o *LasCurve) SetLen(n int) {
if (n <= 0) || n >= len(o.dept) {
return
}
t := make([]float64, n, n)
t := make([]float64, n)
copy(t, o.dept)
o.dept = t
t = make([]float64, n, n)
t = make([]float64, n)
copy(t, o.log)
o.log = t
}
//Init - initialize LasCurve, set index, name, mnemonic, make slice for store data
// Init - initialize LasCurve, set index, name, mnemonic, make slice for store data
// перенести в NewLasCurve нельзя, в Init передаются обработанные данные кривой (словари, дублирование и т.д.)
func (o *LasCurve) Init(index int, mnemonic, name string, size int) {
o.Index = index
o.Mnemonic = mnemonic
@ -147,8 +179,8 @@ func (o *LasCurve) Init(index int, mnemonic, name string, size int) {
o.log = make([]float64, size)
}
//NewLasCurveFromString - create new object LasCurve
func NewLasCurveFromString(s string) LasCurve {
//NewLasCurve - create new object LasCurve
func NewLasCurve(s string) LasCurve {
lc := LasCurve{}
curveFields := ParseCurveStr(s)
lc.Name = curveFields[0]
@ -158,3 +190,46 @@ func NewLasCurveFromString(s string) LasCurve {
lc.Index = 0
return lc
}
// String - return LasCurve as string
func (o LasCurve) String() string {
return fmt.Sprintf("[\n{\n\"IName\": \"%s\",\n\"Name\": \"%s\",\n\"Mnemonic\": \"%s\",\n\"Unit\": \"%s\",\"Val\": \"%s\",\n\"Desc\": \"%s\"\n}\n]", o.IName, o.Name, o.Mnemonic, o.Unit, o.Val, o.Desc)
}
// LasCurves - container for store all curves of las file
// .Cmp(curves *LasCurves) bool - compare two curves containers
type LasCurves map[string]LasCurve
// Text - return string represent all curves parameters: IName, Name, Unit etc
func (o LasCurves) Text() string {
return "-"
}
// Cmp - compare current curves container with another
func (o LasCurves) Cmp(curves LasCurves) (res bool) {
res = (len(o) == len(curves))
if res {
curvesName := make([]string, 0, len(curves))
for k := range o {
curvesName = append(curvesName, k)
}
sort.Strings(curvesName)
var sb strings.Builder
for _, k := range curvesName {
sb.WriteString(k)
}
h1 := xlib.StrHash(sb.String())
curvesName = curvesName[:0]
for k := range curves {
curvesName = append(curvesName, k)
}
sort.Strings(curvesName)
sb.Reset()
for _, k := range curvesName {
sb.WriteString(k)
}
h2 := xlib.StrHash(sb.String())
res = (h1 == h2)
}
return res
}

Просмотреть файл

@ -5,6 +5,7 @@ package glasio
import (
"fmt"
fp "path/filepath"
"testing"
"github.com/stretchr/testify/assert"
@ -127,7 +128,7 @@ var dWellInfoStr = []tWellInfoStr{
func TestNewLasParamFromString(t *testing.T) {
var lp *LasParam
for _, tmp := range dWellInfoStr {
lp = NewLasParamFromString(tmp.s)
lp = NewLasParam(tmp.s)
assert.Equal(t, tmp.f1, lp.Name)
assert.Equal(t, tmp.f2, lp.Unit)
assert.Equal(t, tmp.f3, lp.Val)
@ -156,6 +157,10 @@ var dParseCurveStr = []tParseCurveStr{
{" ПС . мВ ", "ПС", "мВ", ""}, //9
{" ПС повт ", "ПС повт", "", ""}, //10
{" ПС мВ : 11 кр сам", "ПС мВ", "", "11 кр сам"}, //11
{" . : ", "-EL-", "", ""}, //12
{" .mv : ", "-EL-", "mv", ""}, //13
{" .mv :sp", "-EL-", "mv", "sp"}, //14
{" .m v :sp", "-EL-", "m v", "sp"}, //15
}
func TestParseCurveStr(t *testing.T) {
@ -170,7 +175,7 @@ func TestParseCurveStr(t *testing.T) {
func TestNewLasCurveFromString(t *testing.T) {
var lc LasCurve
for _, tmp := range dParseCurveStr {
lc = NewLasCurveFromString(tmp.s)
lc = NewLasCurve(tmp.s)
assert.Equal(t, tmp.f0, lc.Name)
assert.Equal(t, tmp.f1, lc.Unit)
assert.Equal(t, tmp.f2, lc.Desc)
@ -178,7 +183,7 @@ func TestNewLasCurveFromString(t *testing.T) {
}
func TestLasCurveSetLen(t *testing.T) {
curve := NewLasCurveFromString("SP.mV :self")
curve := NewLasCurve("SP.mV :self")
curve.Init(0, "SP", "SP", 5)
curve.dept[0] = 0.1
curve.dept[1] = 0.2
@ -207,3 +212,15 @@ func TestLasCurveSetLen(t *testing.T) {
assert.Equal(t, 2, len(curve.log))
assert.Equal(t, 0.2, curve.dept[1])
}
func TestLasCurveString(t *testing.T) {
las := makeLasFromFile(fp.Join("data/test-curve-sec-empty-mnemonic.las"))
//D.M : 1 DEPTH
assert.Equal(t, "[\n{\n\"IName\": \"D\",\n\"Name\": \"D\",\n\"Mnemonic\": \"\",\n\"Unit\": \"M\",\"Val\": \"\",\n\"Desc\": \"1 DEPTH\"\n}\n]", las.Logs["D"].String())
//A.US/M : 2 SONIC TRANSIT TIME
assert.Equal(t, "[\n{\n\"IName\": \"A\",\n\"Name\": \"A\",\n\"Mnemonic\": \"\",\n\"Unit\": \"US/M\",\"Val\": \"\",\n\"Desc\": \"2 SONIC TRANSIT TIME\"\n}\n]", las.Logs["A"].String())
//-EL-1. :
assert.Equal(t, "[\n{\n\"IName\": \"-EL-\",\n\"Name\": \"-EL-1\",\n\"Mnemonic\": \"\",\n\"Unit\": \"m\",\"Val\": \"\",\n\"Desc\": \"\"\n}\n]", las.Logs["-EL-1"].String())
assert.Equal(t, "[\n{\n\"IName\": \"-EL-\",\n\"Name\": \"-EL-2\",\n\"Mnemonic\": \"\",\n\"Unit\": \"v/v\",\"Val\": \"\",\n\"Desc\": \"\"\n}\n]", las.Logs["-EL-2"].String())
assert.Equal(t, "[\n{\n\"IName\": \"-EL-\",\n\"Name\": \"-EL-3\",\n\"Mnemonic\": \"\",\n\"Unit\": \"m V\",\"Val\": \"\",\n\"Desc\": \"\"\n}\n]", las.Logs["-EL-3"].String())
}

92
las_summary_test.go Normal file
Просмотреть файл

@ -0,0 +1,92 @@
//(c) softland 2020
//softlandia@gmail.com
package glasio
import (
"testing"
"github.com/stretchr/testify/assert"
fp "path/filepath"
)
type tSummaryCheck struct {
fn string
ver float64
wrap string
strt float64
stop float64
step float64
null float64
well string
curv int //количество кривых в файле
nums int //количество точек в файле
werr bool
}
var dSummaryCheck = []tSummaryCheck{
{fp.Join("data/6038187_v1.2.las"), 2.0, "NO", 0.05, 136.6, 0.05, -99999, "Scorpio E1", 9, 2732, false},
{fp.Join("data/6038187_v1.2_short.las"), 2.0, "NO", 0.05, 136.6, 0.05, -99999, "Scorpio E1", 9, 121, false},
{fp.Join("data/1001178549.las"), 2.0, "YES", 1783.5, 1784.5, 0.25, -999.25, "1-28", 27, 0, true},
{fp.Join("data/alog.las"), 1.20, "NO", 0, 0, 0.05, -999.25, "", 9, 24, false},
{fp.Join("data/autodepthindex_F.las"), 1.20, "NO", 0, 100, 1, -999.25, "ANY ET AL OIL WELL #12", 2, 101, false},
{fp.Join("data/barebones.las"), 2.0, "NO", 0, 0, 0, 0, "", 1, 0, true},
{fp.Join("data/barebones2.las"), 2.0, "NO", 0, 0, -0.1, -999.25, "", 0, 0, true},
{fp.Join("data/blank_line.las"), 2.0, "NO", -999.25, -999.25, 0.0833333333333333, -999.25, "", 1, 0, true},
{fp.Join("data/data_characters.las"), 2.0, "NO", 0, 0, 10, -999.25, "", 4, 0, true},
{fp.Join("data/duplicate_step.las"), 1.2, "NO", 1670, 1660, -0.12, -999.25, "ANY ET AL OIL WELL #12", 8, 3, false},
{fp.Join("data/encodings_utf8.las"), 1.2, "NO", 1670, 1660, -0.125, -999.25, "Скв #12Ω", 8, 3, false},
{fp.Join("data/encodings_utf8_20.las"), 2.0, "NO", 1670, 1660, -0.125, -999.25, "Скв #12Ω", 8, 3, false},
{fp.Join("data/encodings_utf8wbom.las"), 1.2, "NO", 1670, 1660, -0.125, -999.25, "Скважина #12Ω", 8, 3, false},
{fp.Join("data/encodings_utf8wbom_20.las"), 2.0, "NO", 1670, 1660, -0.125, -999.25, "Скважина #12Ω", 8, 3, false},
{fp.Join("data/encodings_utf16be.las"), 1.2, "NO", 1670, 1660, -0.125, -999.25, "Скв #12Ω", 8, 3, false},
{fp.Join("data/encodings_utf16bebom.las"), 1.2, "NO", 1670, 1660, -0.125, -999.25, "Скв #12Ω", 8, 3, false},
{fp.Join("data/encodings_utf16le.las"), 1.2, "NO", 1670, 1660, -0.125, -999.25, "Скв #12Ω", 8, 3, false},
{fp.Join("data/encodings_utf16lebom.las"), 1.2, "NO", 1670, 1660, -0.125, -999.25, "Скв #12Ω", 8, 3, false},
{fp.Join("data/expand_points_01.las"), 1.2, "NO", 1, 1, 0.1, -9999.00, "12-Сплошная", 4, 7, false},
{fp.Join("data/logging_levels.las"), 2.0, "NO", 0, 7273.5, 0.25, -999.25, "TOTEM # 9", 18, 29095, false},
{fp.Join("data/missing_null.las"), 1.2, "NO", 1670, 1660, -0.125, -999.25, "ANY ET AL OIL WELL #12", 8, 3, false},
{fp.Join("data/missing_vers.las"), 2.0, "NO", 1670, 1660, -0.125, -999.25, "WELL", 8, 3, false},
{fp.Join("data/missing_wrap.las"), 1.2, "NO", 1670, 1660, -0.125, -999.25, "ANY ET AL OIL WELL #12", 8, 3, false},
{fp.Join("data/more_20_warnings.las"), 1.2, "NO", 0.0, 0.0, 1.0, -32768.0, "6", 6, 23, true}, //in las file STEP=0.0 but this incorrect, LoadHeader replace STEP to actual from data
{fp.Join("data/no-data-section.las"), 1.2, "NO", 0.0, 0.0, -32768, -32768.0, "6", 31, 0, true},
{fp.Join("data/sample_bracketed_units.las"), 1.2, "NO", 1670, 1660, -0.125, -999.25, "ANY ET AL OIL WELL #12", 8, 3, true},
{fp.Join("data/test-curve-sec-empty-mnemonic.las"), 1.2, "NO", 1670, 1669.75, -0.125, -999.25, "ANY ET AL OIL WELL #12", 8, 3, true},
{fp.Join("data/UWI_API_leading_zero.las"), 1.2, "NO", 1670, 1660, -0.125, -999.25, "ANY ET AL OIL WELL #12", 8, 3, true},
}
// Основной тест по массиву готовых las файлов
func TestSummaryRead(t *testing.T) {
for _, tmp := range dSummaryCheck {
las := NewLas()
n, _ := las.Open(tmp.fn)
assert.Equal(t, tmp.nums, n)
assert.Equal(t, tmp.curv, len(las.Logs))
assert.Equal(t, tmp.ver, las.Ver)
assert.Equal(t, tmp.wrap, las.Wrap)
assert.Equal(t, tmp.strt, las.Strt)
assert.Equal(t, tmp.stop, las.Stop)
assert.Equal(t, tmp.step, las.Step)
assert.Equal(t, tmp.null, las.Null)
assert.Equal(t, tmp.well, las.Well)
}
}
func TestCurveSec1(t *testing.T) {
las := NewLas()
n, err := las.Open(fp.Join("data/test-curve-sec-empty-mnemonic.las"))
assert.Nil(t, err)
assert.Equal(t, 3, n)
assert.Equal(t, "D", las.Logs["D"].Name)
assert.Equal(t, "M", las.Logs["D"].Unit)
}
func TestCurveSec2(t *testing.T) {
correct := makeLasFromFile(fp.Join("data/test-curve-sec-empty-mnemonic+.las"))
las := makeLasFromFile(fp.Join("data/test-curve-sec-empty-mnemonic.las"))
assert.True(t, cmpLas(correct, las))
assert.True(t, correct.Logs.Cmp(las.Logs))
las = makeLasFromFile(fp.Join("data/missing_wrap.las"))
assert.False(t, cmpLas(correct, las))
assert.False(t, correct.Logs.Cmp(las.Logs))
}

Просмотреть файл

@ -80,6 +80,7 @@ type tLoadHeader struct {
}
var dLoadHeader = []tLoadHeader{
{fp.Join("data/2.0/cp1251_2.0_well_name.las"), 2.0, "NO", 0.0, 39.9, 0.3, -999.25, "Примерная-1 / бис(ё)"},
{fp.Join("data/2.0/cp1251_2.0_based.las"), 2.0, "NO", 0.0, 39.9, 0.3, -999.25, "Примерная-1/бис(ё)"},
{fp.Join("data/expand_points_01.las"), 1.2, "NO", 1.0, 1.0, 0.1, -9999.00, "12-Сплошная"},
{fp.Join("data/more_20_warnings.las"), 1.2, "NO", 0.0, 0.0, 0.0, -32768.0, "6"}, //in las file STEP=0.0 but this incorrect, LoadHeader replace STEP to actual from data
@ -87,7 +88,7 @@ var dLoadHeader = []tLoadHeader{
{fp.Join("data/1.2/sample.las"), 1.2, "NO", 1670.0, 1660.0, -0.1250, -999.2500, "ANY ET AL OIL WELL #12"},
{fp.Join("data/2.0/sample_2.0.las"), 2.0, "NO", 1670.0, 1660.0, -0.1250, -999.2500, "AAAAA_2"},
{fp.Join("data/duplicate_step.las"), 1.2, "NO", 1670.0, 1660.0, -0.1200, -999.2500, "ANY ET AL OIL WELL #12"}, //duplicate_step.las contains two line with STEP:: STEP.M -0.1250: STEP.M -0.1200: using LAST parameter
{fp.Join("data/encodings_utf8.las"), 1.2, "NO", 1670.0, 1660.0, -0.1250, -999.2500, "ANY ºᶟᵌᴬń OIL WELL #12"},
{fp.Join("data/encodings_utf8.las"), 1.2, "NO", 1670.0, 1660.0, -0.1250, -999.2500, "Скв #12Ω"},
}
func TestLoadHeader(t *testing.T) {
@ -99,13 +100,13 @@ func TestLoadHeader(t *testing.T) {
las.FileName = tmp.fn
las.scanner = bufio.NewScanner(las.Reader)
las.LoadHeader()
assert.Equal(t, las.Ver, tmp.ver, fmt.Sprintf("<LoadHeader> file '%s' readed VER: %f, expected %f", las.FileName, las.Ver, tmp.ver))
assert.Equal(t, las.Wrap, tmp.wrap, fmt.Sprintf("<LoadHeader> file '%s' readed WRAP: %s, expected %s", las.FileName, las.Wrap, tmp.wrap))
assert.Equal(t, las.Strt, tmp.strt, fmt.Sprintf("<LoadHeader> file '%s' readed STRT: %f, expected %f", las.FileName, las.Strt, tmp.strt))
assert.Equal(t, las.Stop, tmp.stop, fmt.Sprintf("<LoadHeader> file '%s' readed STOP: %f, expected %f", las.FileName, las.Stop, tmp.stop))
assert.Equal(t, tmp.ver, las.Ver, fmt.Sprintf("<LoadHeader> file '%s' readed VER: %f, expected %f", las.FileName, las.Ver, tmp.ver))
assert.Equal(t, tmp.wrap, las.Wrap, fmt.Sprintf("<LoadHeader> file '%s' readed WRAP: %s, expected %s", las.FileName, las.Wrap, tmp.wrap))
assert.Equal(t, tmp.strt, las.Strt, fmt.Sprintf("<LoadHeader> file '%s' readed STRT: %f, expected %f", las.FileName, las.Strt, tmp.strt))
assert.Equal(t, tmp.stop, las.Stop, fmt.Sprintf("<LoadHeader> file '%s' readed STOP: %f, expected %f", las.FileName, las.Stop, tmp.stop))
assert.Equal(t, tmp.step, las.Step, fmt.Sprintf("<LoadHeader> file '%s' readed STEP: %f, expected %f", las.FileName, las.Step, tmp.step))
assert.Equal(t, las.Null, tmp.null, fmt.Sprintf("<LoadHeader> file '%s' readed NULL: %f, expected %f", las.FileName, las.Null, tmp.null))
assert.Equal(t, las.Well, tmp.well, fmt.Sprintf("<LoadHeader> file '%s' readed WELL: %s, expected %s", las.FileName, las.Well, tmp.well))
assert.Equal(t, tmp.null, las.Null, fmt.Sprintf("<LoadHeader> file '%s' readed NULL: %f, expected %f", las.FileName, las.Null, tmp.null))
assert.Equal(t, tmp.well, las.Well, fmt.Sprintf("<LoadHeader> file '%s' readed WELL: %s, expected %s", las.FileName, las.Well, tmp.well))
}
}
@ -113,13 +114,13 @@ func TestLoadLasHeader(t *testing.T) {
for _, tmp := range dLoadHeader {
las, err := LoadLasHeader(tmp.fn)
assert.Nil(t, err)
assert.Equal(t, las.Ver, tmp.ver, fmt.Sprintf("<LoadHeader> file '%s' readed VER: %f, expected %f", las.FileName, las.Ver, tmp.ver))
assert.Equal(t, las.Wrap, tmp.wrap, fmt.Sprintf("<LoadHeader> file '%s' readed WRAP: %s, expected %s", las.FileName, las.Wrap, tmp.wrap))
assert.Equal(t, las.Strt, tmp.strt, fmt.Sprintf("<LoadHeader> file '%s' readed STRT: %f, expected %f", las.FileName, las.Strt, tmp.strt))
assert.Equal(t, las.Stop, tmp.stop, fmt.Sprintf("<LoadHeader> file '%s' readed STOP: %f, expected %f", las.FileName, las.Stop, tmp.stop))
assert.Equal(t, las.Step, tmp.step, fmt.Sprintf("<LoadHeader> file '%s' readed STEP: %f, expected %f", las.FileName, las.Step, tmp.step))
assert.Equal(t, las.Null, tmp.null, fmt.Sprintf("<LoadHeader> file '%s' readed NULL: %f, expected %f", las.FileName, las.Null, tmp.null))
assert.Equal(t, las.Well, tmp.well, fmt.Sprintf("<LoadHeader> file '%s' readed WELL: %s, expected %s", las.FileName, las.Well, tmp.well))
assert.Equal(t, tmp.ver, las.Ver, fmt.Sprintf("<LoadHeader> file '%s' readed VER: %f, expected %f", las.FileName, las.Ver, tmp.ver))
assert.Equal(t, tmp.wrap, las.Wrap, fmt.Sprintf("<LoadHeader> file '%s' readed WRAP: %s, expected %s", las.FileName, las.Wrap, tmp.wrap))
assert.Equal(t, tmp.strt, las.Strt, fmt.Sprintf("<LoadHeader> file '%s' readed STRT: %f, expected %f", las.FileName, las.Strt, tmp.strt))
assert.Equal(t, tmp.stop, las.Stop, fmt.Sprintf("<LoadHeader> file '%s' readed STOP: %f, expected %f", las.FileName, las.Stop, tmp.stop))
assert.Equal(t, tmp.step, las.Step, fmt.Sprintf("<LoadHeader> file '%s' readed STEP: %f, expected %f", las.FileName, las.Step, tmp.step))
assert.Equal(t, tmp.null, las.Null, fmt.Sprintf("<LoadHeader> file '%s' readed NULL: %f, expected %f", las.FileName, las.Null, tmp.null))
assert.Equal(t, tmp.well, las.Well, fmt.Sprintf("<LoadHeader> file '%s' readed WELL: %s, expected %s", las.FileName, las.Well, tmp.well))
}
//test error case
las, err := LoadLasHeader("not_exist_file.las") //file not exist
@ -205,8 +206,9 @@ func TestExpandPoints(t *testing.T) {
las := NewLas()
n, err := las.Open(tmp.fn)
assert.Nil(t, err, fmt.Sprintf("<TestExpandPoints> on '%s' return error: %v\n", tmp.fn, err))
assert.Equal(t, n, tmp.n, fmt.Sprintf("<TestExpandPoints> on '%s' return n: %d expect: %d\n", tmp.fn, n, tmp.n))
assert.Equal(t, las.Warnings.Count(), tmp.nWrn, fmt.Sprintf("<TestExpandPoints> '%s' return warning count %d, expected %d\n", tmp.fn, las.Warnings.Count(), tmp.nWrn))
assert.Equal(t, tmp.n, n, fmt.Sprintf("<TestExpandPoints> on '%s' return n: %d expect: %d\n", tmp.fn, n, tmp.n))
assert.Equal(t, tmp.n, las.NumPoints())
assert.Equal(t, tmp.nWrn, las.Warnings.Count(), fmt.Sprintf("<TestExpandPoints> '%s' return warning count %d, expected %d\n", tmp.fn, las.Warnings.Count(), tmp.nWrn))
assert.Contains(t, las.Warnings[2].String(), "line: 25", fmt.Sprintf("<TestExpandPoints> '%s' return: '%s' wrong warning index 2\n", tmp.fn, las.Warnings[2]))
assert.Contains(t, las.Warnings[4].String(), "line: 27", fmt.Sprintf("<TestExpandPoints> '%s' return: '%s' wrong warning index 4\n", tmp.fn, las.Warnings[4]))
}
@ -229,6 +231,7 @@ func TestLasSetNull(t *testing.T) {
}
type tSaveLas struct {
fn string
cp cpd.IDCodePage
null float64
strt float64
@ -239,42 +242,27 @@ type tSaveLas struct {
}
var dSaveLas = []tSaveLas{
{cpd.CP1251, -99.99, 0.201, 10.01, 0.01, "Примерная-101/бис", -0.1},
//codepage null strt stop step well name new null
{cpd.UTF8, -999.99, 20.21, 1.0, -0.01, "Примерная-101А/бис", -999.25},
{cpd.CP866, -909.0, 2.21, 11.11, -0.1, "Примерная-101/\"бис\"", 5555.55},
{cpd.KOI8R, -99.0, 0.2, 2.0, -0.1, "Примерная-1001/\"бис\"", -55.55},
{fp.Join("test_files/~1251.las"), cpd.CP1251, -99.99, 0.201, 10.01, 0.01, "Примерная-101 / бис", -0.1},
// filename codepage null strt stop step well name new null
{fp.Join("test_files/~koi8.las"), cpd.KOI8R, -99.0, 0.2, 2.0, -0.1, "Примерная-1001 /\"бис\"", -55.55},
{fp.Join("test_files/~866.las"), cpd.CP866, -909.0, 2.21, 12.1, -0.1, "Примерная-101 /\"бис\"", 5555.55},
{fp.Join("test_files/~utf-8.las"), cpd.UTF8, -999.99, 20.21, 1.0, -0.01, "Примерная-101А / бис", -999.25},
{fp.Join("test_files/~utf-16le.las"), cpd.UTF16LE, -999.99, 20.2, 1.0, -0.01, "Примерная-101А /бис", -999.25},
}
// проверяется запись
// первый раз в кодировке 1251
// второй раз в кодировке 866
// третий в UTF-8
// четвертый в KOI8
// дополнительно проверяем функцию SetNull
// дополнительно проверяем функцию SetNull, это позволяет изменить содержимое las
func TestLasSave(t *testing.T) {
var las *Las
for _, tmp := range dSaveLas {
if tmp.cp == cpd.CP1251 {
las = NewLas()
} else {
las = NewLas(tmp.cp)
}
las.Null = tmp.null
las.Strt = tmp.strt
las.Stop = tmp.stop
las.Step = tmp.step
las.Well = tmp.well
curve := NewLasCurveFromString("SP.mV :spontaniously")
las.Logs["SP"] = curve
curve.Init(0, "SP", "SP", 5)
las := makeSampleLas(tmp.cp, tmp.null, tmp.strt, tmp.stop, tmp.step, tmp.well)
las.SetNull(tmp.newNull)
//os.Remove("empty.las")
err := las.Save("~.las")
err := las.Save(tmp.fn)
assert.Nil(t, err)
n, err := las.Open("~.las")
assert.Equal(t, 0, n)
n, err := las.Open(tmp.fn)
//os.Remove(tmp.fn)
assert.Nil(t, err)
assert.Equal(t, 5, n)
assert.Equal(t, tmp.newNull, las.Null)
assert.Equal(t, tmp.strt, las.Strt)
assert.Equal(t, tmp.stop, las.Stop)
@ -282,3 +270,27 @@ func TestLasSave(t *testing.T) {
assert.Equal(t, tmp.well, las.Well)
}
}
func TestSetNullOnEmptyLas(t *testing.T) {
las := NewLas()
las.SetNull(-1000)
assert.Equal(t, -1000.0, las.Null)
}
func BenchmarkSave1(b *testing.B) {
for _, tmp := range dSaveLas {
las := makeSampleLas(tmp.cp, tmp.null, tmp.strt, tmp.stop, tmp.step, tmp.well)
las.SetNull(tmp.newNull)
las.Save(tmp.fn)
}
}
/*
func BenchmarkSave2(b *testing.B) {
for _, tmp := range dSaveLas {
las := makeSampleLas(tmp.cp, tmp.null, tmp.strt, tmp.stop, tmp.step, tmp.well)
las.SetNull(tmp.newNull)
las.SaveToFile(tmp.fn)
}
}
*/

Просмотреть файл

@ -16,6 +16,53 @@ func isIgnoredLine(s string) bool {
return false
}
func cmpLas(correct, las *Las) (res bool) {
res = (correct.Strt == las.Strt)
res = res && (correct.Stop == las.Stop)
res = res && (correct.Step == las.Step)
res = res && (correct.Null == las.Null)
res = res && (correct.nPoints == las.nPoints)
res = res && correct.Logs.Cmp(las.Logs)
res = res && (len(correct.Logs) == len(las.Logs))
return res
}
// подразумевается считывание из совершенно корректного файла
// ошибок при заполнении нет, ничего не проверяем
func makeLasFromFile(fn string) *Las {
las := NewLas()
las.Open(fn)
return las
}
func makeSampleLas(
cp cpd.IDCodePage,
null float64,
strt float64,
stop float64,
step float64,
well string) (las *Las) {
if cp == cpd.CP1251 {
las = NewLas()
} else {
las = NewLas(cp)
}
las.Null = null
las.Strt = strt
las.Stop = stop
las.Step = step
las.Well = well
curve := NewLasCurve("DEPT.m :")
curve.Init(len(las.Logs), "DEPT", "DEPT", las.GetExpectedPointsCount())
las.Logs["DEPT"] = curve
curve = NewLasCurve("BK.ohmm :laterolog")
curve.Init(len(las.Logs), "BK", "LL3", las.GetExpectedPointsCount())
las.Logs["BK"] = curve
las.setActuallyNumberPoints(5)
return las
}
// LoadLasHeader - utility function, if need read only header without data
func LoadLasHeader(fileName string) (*Las, error) {
las := NewLas()

Просмотреть файл

@ -5,6 +5,7 @@ import (
"fmt"
"log"
"os"
"strings"
)
const (
@ -41,7 +42,7 @@ func (o *TWarning) ToCsvString(sep ...string) string {
}
//TLasWarnings - class to store and manipulate warnings
//Count() - return wrnings count
//Count() - return warnings count
//SaveWarning(fileName string) error
//SaveWarningToWriter(writer *bufio.Writer) int
//SaveWarningToFile(oFile *os.File) int
@ -49,6 +50,12 @@ func (o *TWarning) ToCsvString(sep ...string) string {
//for i, w := range obj {w.ToString()} - перебор всех варнингов
type TLasWarnings []TWarning
//separators for output Warnings to string
var (
RecordSeparator = "\n"
FieldSeparator = ","
)
//Count - return number of element
func (o TLasWarnings) Count() int {
return len(o)
@ -64,17 +71,16 @@ func (o *TLasWarnings) ToString(sep ...string) string {
return ""
}
var (
result string
fieldSep string
recSep string
)
switch len(sep) {
case 0:
recSep = "\n"
fieldSep = ";"
recSep = RecordSeparator
fieldSep = FieldSeparator
case 1:
recSep = sep[0]
fieldSep = ";"
fieldSep = FieldSeparator
case 2:
recSep = sep[0]
fieldSep = sep[1]
@ -82,10 +88,12 @@ func (o *TLasWarnings) ToString(sep ...string) string {
recSep = sep[0]
fieldSep = sep[1]
}
var sb strings.Builder
for _, w := range *o {
result += (w.ToCsvString(fieldSep) + recSep)
sb.WriteString(w.ToCsvString(fieldSep))
sb.WriteString(recSep)
}
return result
return sb.String()
}
//SaveWarning - save to file all warning

Просмотреть файл

@ -25,11 +25,11 @@ func TestLasWarningsToString(t *testing.T) {
TWarning{2, 2, 2, "second"},
}
s := warnings.ToString("#")
if s != "1;1;\"first\"#2;2;\"second\"#" {
if s != "1,1,\"first\"#2,2,\"second\"#" {
t.Errorf("<TLasWarnings.ToString> not correct return: %s\n", s)
}
s = warnings.ToString("\n")
if s != "1;1;\"first\"\n2;2;\"second\"\n" {
if s != "1,1,\"first\"\n2,2,\"second\"\n" {
t.Errorf("<TLasWarnings.ToString> not correct return: %s\n", s)
}
}

225
linter.md
Просмотреть файл

@ -1,129 +1,134 @@
las.go:42:2: `_LasDate` is unused (varcheck)
_LasDate = " DATE. %-43.43s:DATE\n"
^
las.go:34:2: `_LasXcoord` is unused (varcheck)
_LasXcoord = " XWELL.M %8.3f :Well head X coordinate\n"
^
las.go:44:2: `_LasUwi` is unused (varcheck)
_LasUwi = " UWI . %-43.43s:UNIVERSAL WELL INDEX\n"
^
las.go:46:2: `_LasCurvFormat` is unused (varcheck)
_LasCurvFormat = "#MNEM.UNIT :DESCRIPTION\n"
^
las.go:39:2: `_LasLoc` is unused (varcheck)
_LasLoc = " LOC . %-43.43s:LOCATION\n"
^
las.go:43:2: `_LasAPI` is unused (varcheck)
_LasAPI = " API . %-43.43s:API NUMBER\n"
^
las.go:35:2: `_LasYcoord` is unused (varcheck)
_LasYcoord = " YWELL.M %8.3f :Well head Y coordinate\n"
^
las.go:40:2: `_LasCountry` is unused (varcheck)
_LasCountry = " CTRY. %-43.43s:COUNTRY\n"
^
las.go:41:2: `_LasServiceComp` is unused (varcheck)
_LasServiceComp = " SRVC. %-43.43s:SERVICE COMPANY\n"
^
las.go:28:2: `_LasMnemonicFormat` is unused (varcheck)
_LasMnemonicFormat = "#MNEM.UNIT DATA :DESCRIPTION\n"
^
las.go:49:2: `_LasCurvLine2` is unused (varcheck)
_LasCurvLine2 = " %s :\n"
^
las.go:51:2: `_LasDataLine` is unused (varcheck)
_LasDataLine = ""
^
las.go:38:2: `_LasField` is unused (varcheck)
_LasField = " FLD . %-43.43s:FIELD\n"
^
las.go:36:2: `_LasOilComp` is unused (varcheck)
_LasOilComp = " COMP. %-43.43s:OIL COMPANY\n"
^
las.go:33:2: `_LasRkb` is unused (varcheck)
_LasRkb = " RKB.M %8.3f :KB or GL\n"
^
example2\main.go:44:2: ineffectual assignment to `err` (ineffassign)
err = las.Save(las.FileName + "-") //сохраняем с символом минус в расширении
^
glasio_test.go:108:5: ineffectual assignment to `err` (ineffassign)
n, err := las.Open("empty.las")
^
glasio_test.go:131:5: ineffectual assignment to `err` (ineffassign)
n, err = las.Open("empty.las")
^
example\main.go:48:17: Error return value of `las.SaveWarning` is not checked (errcheck)
las.SaveWarning("1.warning.md")
^
example2\main.go:44:10: Error return value of `las.Save` is not checked (errcheck)
las.Save(las.FileName + "-") //сохраняем с символом минус в расширении
^
example2\main.go:50:15: Error return value of `filepath.Walk` is not checked (errcheck)
filepath.Walk(path, func(path string, info os.FileInfo, err error) error {
^
glasio_test.go:20:10: Error return value of `las.Open` is not checked (errcheck)
las.Open(fp.Join("data/more_20_warnings.las"))
^
glasio_test.go:45:11: Error return value of `las.Open` is not checked (errcheck)
las.Open(tmp.fn)
^
glasio_test.go:75:10: Error return value of `las.Open` is not checked (errcheck)
las.Open(fp.Join("data/expand_points_01.las"))
^
glasio_test.go:77:13: Error return value of `las.SetNull` is not checked (errcheck)
las.SetNull(-999.25)
^
glasio_test.go:79:10: Error return value of `las.Save` is not checked (errcheck)
las.Save("-tmp.las")
^
glasio_test.go:126:13: Error return value of `las.SetNull` is not checked (errcheck)
las.SetNull(100.001)
^
las.go:285:21: Error return value of `writer.WriteString` is not checked (errcheck)
example\main.go:48:17: Error return value of `las.SaveWarning` is not checked (errcheck)
las.SaveWarning("1.warning.md")
^
las.go:300:21: Error return value of `writer.WriteString` is not checked (errcheck)
writer.WriteString(w.String())
^
las.go:286:21: Error return value of `writer.WriteString` is not checked (errcheck)
las.go:301:21: Error return value of `writer.WriteString` is not checked (errcheck)
writer.WriteString("\n")
^
las.go:299:19: Error return value of `oFile.WriteString` is not checked (errcheck)
las.go:314:19: Error return value of `oFile.WriteString` is not checked (errcheck)
oFile.WriteString("**file: " + o.FileName + "**\n")
^
las.go:301:19: Error return value of `oFile.WriteString` is not checked (errcheck)
las.go:316:19: Error return value of `oFile.WriteString` is not checked (errcheck)
oFile.WriteString("\n")
^
las.go:649:27: Error return value of `o.setActuallyNumberPoints` is not checked (errcheck)
o.setActuallyNumberPoints(i)
^
las_test.go:43:20: Error return value of `las.ReadWellParam` is not checked (errcheck)
las.go:366:14: Error return value of `o.LoadHeader` is not checked (errcheck)
o.LoadHeader()
^
las_logger.go:37:16: Error return value of `f.WriteString` is not checked (errcheck)
f.WriteString(msg)
^
las_logger.go:58:16: Error return value of `f.WriteString` is not checked (errcheck)
f.WriteString(s)
^
las_logger.go:60:15: Error return value of `f.WriteString` is not checked (errcheck)
f.WriteString("\n")
^
las_param_test.go:40:20: Error return value of `las.ReadWellParam` is not checked (errcheck)
las.ReadWellParam(tmp.s)
^
las_test.go:81:18: Error return value of `las.SaveWarning` is not checked (errcheck)
las_test.go:42:10: Error return value of `las.Open` is not checked (errcheck)
las.Open(fp.Join("data/more_20_warnings.las"))
^
las_test.go:48:10: Error return value of `las.Open` is not checked (errcheck)
las.Open(fp.Join("data/more_20_warnings.las"))
^
las_test.go:50:18: Error return value of `las.SaveWarning` is not checked (errcheck)
las.SaveWarning(fp.Join("data/more_20_warnings.wrn"))
^
las_test.go:144:17: Error return value of `las.LoadHeader` is not checked (errcheck)
las_test.go:102:17: Error return value of `las.LoadHeader` is not checked (errcheck)
las.LoadHeader()
^
las_util.go:33:16: Error return value of `las.LoadHeader` is not checked (errcheck)
las_test.go:163:10: Error return value of `las.Open` is not checked (errcheck)
las.Open(fp.Join("data/more_20_warnings.las"))
^
las_test.go:221:13: Error return value of `las.SetNull` is not checked (errcheck)
las.SetNull(-999.25)
^
las_test.go:223:10: Error return value of `las.Save` is not checked (errcheck)
las.Save("-tmp.las")
^
las_test.go:258:14: Error return value of `las.SetNull` is not checked (errcheck)
las.SetNull(tmp.newNull)
^
las_test.go:276:13: Error return value of `las.SetNull` is not checked (errcheck)
las.SetNull(-1000)
^
las_test.go:284:11: Error return value of `las.Save` is not checked (errcheck)
las.Save(tmp.fn)
^
las_util.go:62:29: Error return value of `las.setActuallyNumberPoints` is not checked (errcheck)
las.setActuallyNumberPoints(5)
^
las_util.go:81:16: Error return value of `las.LoadHeader` is not checked (errcheck)
las.LoadHeader()
^
las.go:733:17: SA1006: printf-style function with dynamic format string and no further arguments should use print-style function instead (staticcheck)
fmt.Fprintf(f, _LasDataSec)
^
las.go:736:17: SA1006: printf-style function with dynamic format string and no further arguments should use print-style function instead (staticcheck)
fmt.Fprintf(f, o.convertStrToOut(s))
^
las.go:509:29: S1019: should use make([]float64, o.expPoints) instead (gosimple)
newDept := make([]float64, o.expPoints, o.expPoints)
^
las.go:513:28: S1019: should use make([]float64, o.expPoints) instead (gosimple)
newLog := make([]float64, o.expPoints, o.expPoints)
^
las.go:524:30: S1019: should use make([]float64, o.expPoints) instead (gosimple)
newDept := make([]float64, o.expPoints, o.expPoints)
^
las_param.go:123:23: S1019: should use make([]float64, n) instead (gosimple)
t := make([]float64, n, n)
^
las_param.go:126:22: S1019: should use make([]float64, n) instead (gosimple)
t = make([]float64, n, n)
^
las.go:261:10: S1003: should use strings.Contains(strings.ToUpper(o.Wrap), "Y") instead (gosimple)
return (strings.Index(strings.ToUpper(o.Wrap), "Y") >= 0)
^
las_summary_test.go:24:2: `werr` is unused (structcheck)
werr bool
^
las.go:25:2: `_LasCodePage` is unused (deadcode)
_LasCodePage = "CPAGE. 1251: code page \n"
^
las.go:28:2: `_LasMnemonicFormat` is unused (deadcode)
_LasMnemonicFormat = "#MNEM.UNIT DATA :DESCRIPTION\n"
^
las.go:33:2: `_LasRkb` is unused (deadcode)
_LasRkb = " RKB.M %8.3f :KB or GL\n"
^
las.go:34:2: `_LasXcoord` is unused (deadcode)
_LasXcoord = " XWELL.M %8.3f :Well head X coordinate\n"
^
las.go:35:2: `_LasYcoord` is unused (deadcode)
_LasYcoord = " YWELL.M %8.3f :Well head Y coordinate\n"
^
las.go:36:2: `_LasOilComp` is unused (deadcode)
_LasOilComp = " COMP. %-43.43s:OIL COMPANY\n"
^
las.go:38:2: `_LasField` is unused (deadcode)
_LasField = " FLD . %-43.43s:FIELD\n"
^
las.go:39:2: `_LasLoc` is unused (deadcode)
_LasLoc = " LOC . %-43.43s:LOCATION\n"
^
las.go:40:2: `_LasCountry` is unused (deadcode)
_LasCountry = " CTRY. %-43.43s:COUNTRY\n"
^
las.go:41:2: `_LasServiceComp` is unused (deadcode)
_LasServiceComp = " SRVC. %-43.43s:SERVICE COMPANY\n"
^
las.go:42:2: `_LasDate` is unused (deadcode)
_LasDate = " DATE. %-43.43s:DATE\n"
^
las.go:43:2: `_LasAPI` is unused (deadcode)
_LasAPI = " API . %-43.43s:API NUMBER\n"
^
las.go:44:2: `_LasUwi` is unused (deadcode)
_LasUwi = " UWI . %-43.43s:UNIVERSAL WELL INDEX\n"
^
las.go:46:2: `_LasCurvFormat` is unused (deadcode)
_LasCurvFormat = "#MNEM.UNIT :DESCRIPTION\n"
^
las.go:49:2: `_LasCurvLine2` is unused (deadcode)
_LasCurvLine2 = " %s :\n"
^
las.go:51:2: `_LasDataLine` is unused (deadcode)
_LasDataLine = ""
^
las_util.go:86:6: `lasOpenCheck` is unused (deadcode)
func lasOpenCheck(filename string) LasLog {
^
las_logger.go:35:21: func `(*tCheckMsg).save` is unused (unused)
las_logger.go:55:22: func `(*tCurvRprt).save` is unused (unused)
las_logger.go:65:23: func `(*tMMnemonic).save` is unused (unused)
las_logger.go:14:2: field `errorOnOpen` is unused (unused)
las_logger.go:13:2: field `readedNumPoints` is unused (unused)
las_logger.go:49:21: func `(*tCheckMsg).msgFileOpenWarning` is unused (unused)
las_logger.go:41:21: func `(*tCheckMsg).msgFileIsWraped` is unused (unused)
las_logger.go:45:21: func `(*tCheckMsg).msgFileNoData` is unused (unused)

19
test_files/~1251.las Normal file
Просмотреть файл

@ -0,0 +1,19 @@
~VERSION INFORMATION
VERS. 2.0 :glas (c) softlandia@gmail.com
WRAP. NO : ONE LINE PER DEPTH STEP
~WELL INFORMATION
STRT.M 0.201 :START DEPTH
STOP.M 10.010 :STOP DEPTH
STEP.M 0.010 :STEP
NULL. -0.100 :NULL VALUE
WELL. Ïðèìåðíàÿ-101 / áèñ :WELL
~Curve Information Section
DEPT.M :
LL3.ohmm :
~ASCII Log Data
# DEPT | LL3 |
0.000 0.000
0.000 0.000
0.000 0.000
0.000 0.000
0.000 0.000

19
test_files/~866.las Normal file
Просмотреть файл

@ -0,0 +1,19 @@
~VERSION INFORMATION
VERS. 2.0 :glas (c) softlandia@gmail.com
WRAP. NO : ONE LINE PER DEPTH STEP
~WELL INFORMATION
STRT.M 2.210 :START DEPTH
STOP.M 12.100 :STOP DEPTH
STEP.M -0.100 :STEP
NULL. 5555.550 :NULL VALUE
WELL. <20>ਬ¥à­ ï-101 /"¡¨á" :WELL
~Curve Information Section
DEPT.M :
LL3.ohmm :
~ASCII Log Data
# DEPT | LL3 |
0.000 0.000
0.000 0.000
0.000 0.000
0.000 0.000
0.000 0.000

19
test_files/~koi8.las Normal file
Просмотреть файл

@ -0,0 +1,19 @@
~VERSION INFORMATION
VERS. 2.0 :glas (c) softlandia@gmail.com
WRAP. NO : ONE LINE PER DEPTH STEP
~WELL INFORMATION
STRT.M 0.200 :START DEPTH
STOP.M 2.000 :STOP DEPTH
STEP.M -0.100 :STEP
NULL. -55.550 :NULL VALUE
WELL. ðÒÉÍÅÒÎÁÑ-1001 /"ÂÉÓ" :WELL
~Curve Information Section
DEPT.M :
LL3.ohmm :
~ASCII Log Data
# DEPT | LL3 |
0.000 0.000
0.000 0.000
0.000 0.000
0.000 0.000
0.000 0.000

Двоичные данные
test_files/~utf-16le.las Normal file

Двоичный файл не отображается.

19
test_files/~utf-8.las Normal file
Просмотреть файл

@ -0,0 +1,19 @@
~VERSION INFORMATION
VERS. 2.0 :glas (c) softlandia@gmail.com
WRAP. NO : ONE LINE PER DEPTH STEP
~WELL INFORMATION
STRT.M 20.210 :START DEPTH
STOP.M 1.000 :STOP DEPTH
STEP.M -0.010 :STEP
NULL. -999.250 :NULL VALUE
WELL. Примерная-101А / бис :WELL
~Curve Information Section
DEPT.M :
LL3.ohmm :
~ASCII Log Data
# DEPT | LL3 |
0.000 0.000
0.000 0.000
0.000 0.000
0.000 0.000
0.000 0.000

Просмотреть файл

@ -1 +1 @@
0.1.3
0.1.5