├── .gitattribute ├── .gitignore ├── LICENSE ├── README ├── autotest.py ├── big_test.py ├── dev_test.py ├── las_test.py ├── mnem_base.py ├── pickled_test_data ├── petrel2.0.las.pickle ├── sample.dev.pickle ├── sample.las.pickle ├── sample_2.0.las.pickle ├── sample_2.0_based.las.pickle ├── sample_2.0_minimal.las.pickle ├── sample_2.0_wrapped.las.pickle ├── sample_curve_api.las.pickle ├── sample_minimal.las.pickle └── sample_wrapped.las.pickle ├── pylasdev ├── __init__.py ├── dev_reader.py ├── las_compare.py ├── las_lex_pars2.py ├── las_lex_pars3.py ├── las_line_reader.py ├── las_reader.py └── las_writer.py ├── setup.py └── test_data ├── 1475IBK3.las ├── 4ALS.las ├── 5_1.las ├── comment_test.las ├── petrel2.0.las ├── petrel2.0.las.writed ├── sample.dev ├── sample.las ├── sample.las.writed ├── sample_2.0.las ├── sample_2.0.las.writed ├── sample_2.0_based.las ├── sample_2.0_based.las.writed ├── sample_2.0_minimal.las ├── sample_2.0_minimal.las.writed ├── sample_2.0_wrapped.las ├── sample_2.0_wrapped.las.writed ├── sample_3.0.las ├── sample_big.las ├── sample_curve_api.las ├── sample_curve_api.las.writed ├── sample_las3.0_spec.las ├── sample_minimal.las ├── sample_minimal.las.writed ├── sample_very_big.las ├── sample_wrapped.las └── sample_wrapped.las.writed /.gitattribute: -------------------------------------------------------------------------------- 1 | test_data/* binary 2 | pickled_test_data/* binary 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # package stuff 3 | build/* 4 | dist/* 5 | *.egg-info/* 6 | 7 | # misc 8 | *.pyc 9 | 10 | # ply generated stuff 11 | parser.out 12 | parsetab.py 13 | 14 | 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2009, PyLasDev Team 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 5 | 6 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 7 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 8 | * Neither the name of the HPGL nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 9 | 10 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | 1. Description 2 | 3 | pyLASDev is a small Python package which provides reading and writing of LAS (Log ASCII Standart) 1.2 and 2.0 files. Also it can be used for reading Dev (deviation) files, which are common in geoscience to store deviations and paths (for example, for wells in oil industry). 4 | 5 | pyLASDev is written according to LAS 1.2 and 2.0 specifications. 6 | 7 | 2. Requierements 8 | 9 | - PLY (Python Lex-Yacc) package (used for parsing). 10 | - NumPy package (numpy arrays used to store log data). 11 | - SetupTools package (optional, for egg file easy installation). 12 | 13 | pyLASDev is distributed under BSD license. -------------------------------------------------------------------------------- /autotest.py: -------------------------------------------------------------------------------- 1 | from pylasdev import * 2 | import pickle 3 | 4 | # Autotest for Wells module 5 | 6 | las_test_files = [ 7 | 8 | # LAS 1.2 9 | 10 | "test_data/sample.las", # OK 11 | "test_data/sample_minimal.las", # OK 12 | "test_data/sample_wrapped.las", # OK 13 | "test_data/sample_curve_api.las", # OK 14 | # "test_data/sample_big.las", # 2 Mb - OK -- no pickle test 15 | # "test_data/sample_very_big.las", # 12 Mb - OK -- no pickle test 16 | 17 | # LAS 2.0 18 | 19 | "test_data/sample_2.0.las", # OK 20 | "test_data/sample_2.0_minimal.las", # OK 21 | "test_data/sample_2.0_wrapped.las", # OK 22 | "test_data/sample_2.0_based.las", # OK 23 | 24 | "test_data/petrel2.0.las", # OK 25 | ] 26 | 27 | dev_test_files = [ 28 | 29 | "test_data/sample.dev" 30 | ] 31 | 32 | 33 | # Write new pickle files (uncomment to make new pickled files) 34 | 35 | """ 36 | print "Writing .pickle files..." 37 | 38 | # LAS 39 | 40 | for file in las_test_files: 41 | las_info = read_las_file(file) 42 | output_file = open('pickled_' + file + '.pickle', 'wb') 43 | pickle.dump(las_info, output_file) 44 | output_file.close() 45 | 46 | # DEV 47 | 48 | for file in dev_test_files: 49 | dev_info = read_dev_file(file) 50 | output_file = open('pickled_' + file + '.pickle', 'wb') 51 | pickle.dump(dev_info, output_file) 52 | output_file.close() 53 | """ 54 | 55 | # Load and test with pickled data 56 | 57 | # LAS 58 | 59 | for file in las_test_files: 60 | print "Testing", file, "..." 61 | las_info = read_las_file(file) 62 | pkl_file = open('pickled_' + file + '.pickle', 'rb') 63 | las_info_pkl = pickle.load(pkl_file) 64 | pkl_file.close() 65 | 66 | if (compare_las_dicts(las_info_pkl, las_info)): 67 | print "OK." 68 | else: 69 | print "ERROR!" 70 | 71 | # DEV 72 | 73 | for file in dev_test_files: 74 | print "Testing", file, "..." 75 | dev_info = read_dev_file(file) 76 | pkl_file = open('pickled_' + file + '.pickle', 'rb') 77 | dev_info_pkl = pickle.load(pkl_file) 78 | pkl_file.close() 79 | 80 | if (compare_las_dicts(dev_info_pkl, dev_info)): 81 | print "OK." 82 | else: 83 | print "ERROR!" 84 | 85 | # LAS Writer Test 86 | 87 | for file in las_test_files: 88 | print "Testing writing for ", file, "..." 89 | 90 | las_info = read_las_file(file) 91 | write_las_file(file + ".writed", las_info) 92 | las_info_writed = read_las_file(file + ".writed") 93 | 94 | # print las_info 95 | # print las_info_writed 96 | 97 | if (compare_las_dicts(las_info_writed, las_info)): 98 | print "OK." 99 | else: 100 | print "ERROR!" 101 | 102 | -------------------------------------------------------------------------------- /big_test.py: -------------------------------------------------------------------------------- 1 | from pylasdev import * 2 | from mnem_base import mnem_base 3 | import os 4 | import time 5 | import scipy.io as io 6 | 7 | rootdir = 'test_data' 8 | outdir = 'mat_files' 9 | 10 | dev_files = [] 11 | las_files = [] 12 | 13 | counter = 0 14 | full_size = 0 15 | 16 | time_begin = time.time() 17 | 18 | for dirpath, dirnames, files in os.walk(rootdir): 19 | for file in files: 20 | 21 | fullpath = os.path.join(dirpath, file) 22 | 23 | file_size = os.path.getsize(fullpath) / 1024 24 | 25 | if fullpath.split('.')[1] == 'las': 26 | 27 | print "Reading", file, "...", "[", file_size, " Kb]" 28 | 29 | las_readed = read_las_file(fullpath, mnem_base) 30 | las_files.append(las_readed) 31 | 32 | las_prepared = {} 33 | 34 | print " Saving as MATLAB file..." 35 | 36 | for key_ordered in las_readed['curves_order']: 37 | las_prepared[key_ordered] = las_readed['logs'][key_ordered] 38 | 39 | io.savemat(os.path.join(outdir, file + ".mat"), las_prepared) 40 | 41 | print " Done." 42 | 43 | full_size += file_size 44 | counter +=1 45 | 46 | time_end = time.time() 47 | 48 | print counter, "files [", full_size / 1024 ,"Mb ] readed in", time_end - time_begin, "seconds" 49 | 50 | -------------------------------------------------------------------------------- /dev_test.py: -------------------------------------------------------------------------------- 1 | from pylasdev import * 2 | from mnem_base import * 3 | 4 | # Simple test for Wells Path/Dev file reader 5 | 6 | test_files = [ 7 | 8 | "test_data/sample.dev", 9 | ] 10 | 11 | file = test_files[0] 12 | 13 | print "Reading file ", file, " ..." 14 | 15 | dev_info = read_dev_file(file) 16 | 17 | print "Done." 18 | 19 | if(dev_info is None): 20 | print "Error, file not readed!" 21 | else: 22 | for key in dev_info.keys(): 23 | print " ", [key], [dev_info[key]] 24 | 25 | -------------------------------------------------------------------------------- /las_test.py: -------------------------------------------------------------------------------- 1 | from pylasdev import * 2 | #from mnem_base import * 3 | 4 | # Simple test with full LAS output for LAS reader 5 | 6 | test_files = [ 7 | 8 | # LAS 1.2 9 | 10 | "test_data/sample.las", # 0 - OK 11 | "test_data/sample_minimal.las", # 1 - OK 12 | "test_data/sample_wrapped.las", # 2 - OK 13 | "test_data/sample_curve_api.las", # 3 - OK 14 | 15 | # "test_data/sample_big.las", # 2 Mb - OK -- no pickle test 16 | # "test_data/sample_very_big.las", # 12 Mb - OK -- no pickle test 17 | 18 | # LAS 2.0 19 | 20 | "test_data/sample_2.0.las", # 4 - OK 21 | "test_data/sample_2.0_minimal.las", # 5 - OK 22 | "test_data/sample_2.0_wrapped.las", # 6 - OK 23 | "test_data/sample_2.0_based.las", # 7 - OK 24 | 25 | "test_data/petrel2.0.las", # 8 -OK 26 | 27 | "test_data/5_1.las", # andrey converter # 9 - OK 28 | "test_data/4ALS.las", # nadezhdin's output # 10 - OK 29 | "test_data/1475IBK3.las" # bashneft cp866 # 11 30 | 31 | # "test_data/comment_test.las", 32 | 33 | # LAS 3.0 # not implemented 34 | 35 | # "test_data/sample_3.0.las", # 36 | 37 | ] 38 | 39 | file = test_files[4] 40 | 41 | print "Reading file ", file, " ..." 42 | 43 | #las_info = read_las_file(file, mnem_base) 44 | las_info = read_las_file(file) 45 | 46 | print "Done." 47 | 48 | if(las_info is None): 49 | print "Error, file not readed!" 50 | else: 51 | print "=== Version: " 52 | for key in las_info['version'].keys(): 53 | print " ", [key], [las_info['version'][key]] 54 | 55 | print "=== Well:" 56 | for key in las_info['well'].keys(): 57 | print " ", [key], [las_info['well'][key]] 58 | 59 | print "=== Parameters:" 60 | for key in las_info['parameters'].keys(): 61 | print " ", [key], [las_info['parameters'][key]] 62 | 63 | print "=== Curves:" 64 | for k in xrange(len(las_info['curves_order'])): 65 | print " ", k, las_info['curves_order'][k] 66 | 67 | print "=== Logs:" 68 | for key_ordered in las_info['curves_order']: 69 | print " ", [key_ordered], [las_info['logs'][key_ordered]] 70 | 71 | 72 | # writing test 73 | 74 | #filename = "write_test.las" 75 | #write_las_file(filename, las_info) 76 | 77 | -------------------------------------------------------------------------------- /pickled_test_data/sample.dev.pickle: -------------------------------------------------------------------------------- 1 | (dp0 2 | S'MD' 3 | p1 4 | cnumpy.core.multiarray 5 | _reconstruct 6 | p2 7 | (cnumpy 8 | ndarray 9 | p3 10 | (I0 11 | tp4 12 | S'b' 13 | p5 14 | tp6 15 | Rp7 16 | (I1 17 | (I149 18 | tp8 19 | cnumpy 20 | dtype 21 | p9 22 | (S'f8' 23 | p10 24 | I0 25 | I1 26 | tp11 27 | Rp12 28 | (I3 29 | S'<' 30 | p13 31 | NNNI-1 32 | I-1 33 | I0 34 | tp14 35 | bI00 36 | S'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x004@\x00\x00\x00\x00\x00\x00D@\x00\x00\x00\x00\x00\x00N@\x00\x00\x00\x00\x00\x00T@\x00\x00\x00\x00\x00\x00Y@\x00\x00\x00\x00\x00\x00^@\x00\x00\x00\x00\x00\x80a@\x00\x00\x00\x00\x00\x00d@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x00i@\x00\x00\x00\x00\x00\x80k@\x00\x00\x00\x00\x00\x00n@\x00\x00\x00\x00\x00@p@\x00\x00\x00\x00\x00\x80q@\x00\x00\x00\x00\x00\xc0r@\x00\x00\x00\x00\x00\x00t@\x00\x00\x00\x00\x00@u@\x00\x00\x00\x00\x00\x80v@\x00\x00\x00\x00\x00\xc0w@\x00\x00\x00\x00\x00\x00y@\x00\x00\x00\x00\x00@z@\x00\x00\x00\x00\x00\x80{@\x00\x00\x00\x00\x00\xc0|@\x00\x00\x00\x00\x00\x00~@\x00\x00\x00\x00\x00@\x7f@\x00\x00\x00\x00\x00@\x80@\x00\x00\x00\x00\x00\xe0\x80@\x00\x00\x00\x00\x00\x80\x81@\x00\x00\x00\x00\x00 \x82@\x00\x00\x00\x00\x00\xc0\x82@\x00\x00\x00\x00\x00`\x83@\x00\x00\x00\x00\x00\x00\x84@\x00\x00\x00\x00\x00\xa0\x84@\x00\x00\x00\x00\x00@\x85@\x00\x00\x00\x00\x00\xe0\x85@\x00\x00\x00\x00\x00\x80\x86@\x00\x00\x00\x00\x00 \x87@\x00\x00\x00\x00\x00\xc0\x87@\x00\x00\x00\x00\x00`\x88@\x00\x00\x00\x00\x00\x00\x89@\x00\x00\x00\x00\x00\xa0\x89@\x00\x00\x00\x00\x00@\x8a@\x00\x00\x00\x00\x00\xe0\x8a@\x00\x00\x00\x00\x00\x80\x8b@\x00\x00\x00\x00\x00 \x8c@\x00\x00\x00\x00\x00\xc0\x8c@\x00\x00\x00\x00\x00`\x8d@\x00\x00\x00\x00\x00\x00\x8e@\x00\x00\x00\x00\x00\xa0\x8e@\x00\x00\x00\x00\x00@\x8f@\x00\x00\x00\x00\x00\xe0\x8f@\x00\x00\x00\x00\x00@\x90@\x00\x00\x00\x00\x00\x90\x90@\x00\x00\x00\x00\x00\xe0\x90@\x00\x00\x00\x00\x000\x91@\x00\x00\x00\x00\x00\x80\x91@\x00\x00\x00\x00\x00\xd0\x91@\x00\x00\x00\x00\x00 \x92@\x00\x00\x00\x00\x00p\x92@\x00\x00\x00\x00\x00\xc0\x92@\x00\x00\x00\x00\x00\x10\x93@\x00\x00\x00\x00\x00`\x93@\x00\x00\x00\x00\x00\xb0\x93@\x00\x00\x00\x00\x00\x00\x94@\x00\x00\x00\x00\x00P\x94@\x00\x00\x00\x00\x00\xa0\x94@\x00\x00\x00\x00\x00\xf0\x94@\x00\x00\x00\x00\x00@\x95@\x00\x00\x00\x00\x00\x90\x95@\x00\x00\x00\x00\x00\xe0\x95@\x00\x00\x00\x00\x000\x96@\x00\x00\x00\x00\x00\x80\x96@\x00\x00\x00\x00\x00\xd0\x96@\x00\x00\x00\x00\x00 \x97@\x00\x00\x00\x00\x00p\x97@\x00\x00\x00\x00\x00\xc0\x97@\x00\x00\x00\x00\x00\x10\x98@\x00\x00\x00\x00\x00`\x98@\x00\x00\x00\x00\x00\xb0\x98@\x00\x00\x00\x00\x00\x00\x99@\x00\x00\x00\x00\x00P\x99@\x00\x00\x00\x00\x00\xa0\x99@\x00\x00\x00\x00\x00\xf0\x99@\x00\x00\x00\x00\x00@\x9a@\x00\x00\x00\x00\x00\x90\x9a@\x00\x00\x00\x00\x00\xe0\x9a@\x00\x00\x00\x00\x000\x9b@\x00\x00\x00\x00\x00\x80\x9b@\x00\x00\x00\x00\x00\xd0\x9b@\x00\x00\x00\x00\x00 \x9c@\x00\x00\x00\x00\x00p\x9c@\x00\x00\x00\x00\x00\xc0\x9c@\x00\x00\x00\x00\x00\x10\x9d@\x00\x00\x00\x00\x00`\x9d@\x00\x00\x00\x00\x00\xb0\x9d@\x00\x00\x00\x00\x00\x00\x9e@\x00\x00\x00\x00\x00P\x9e@\x00\x00\x00\x00\x00\xa0\x9e@\x00\x00\x00\x00\x00\xf0\x9e@\x00\x00\x00\x00\x00@\x9f@\x00\x00\x00\x00\x00\x90\x9f@\x00\x00\x00\x00\x00\xe0\x9f@\x00\x00\x00\x00\x00\x18\xa0@\x00\x00\x00\x00\x00@\xa0@\x00\x00\x00\x00\x00h\xa0@\x00\x00\x00\x00\x00\x90\xa0@\x00\x00\x00\x00\x00\xb8\xa0@\x00\x00\x00\x00\x00\xe0\xa0@\x00\x00\x00\x00\x00\x08\xa1@\x00\x00\x00\x00\x000\xa1@\x00\x00\x00\x00\x00X\xa1@\x00\x00\x00\x00\x00\x80\xa1@\x00\x00\x00\x00\x00\xa8\xa1@\x00\x00\x00\x00\x00\xd0\xa1@\x00\x00\x00\x00\x00\xf8\xa1@\x00\x00\x00\x00\x00 \xa2@\x00\x00\x00\x00\x00H\xa2@\x00\x00\x00\x00\x00p\xa2@\x00\x00\x00\x00\x00\x98\xa2@\x00\x00\x00\x00\x00\xc0\xa2@\x00\x00\x00\x00\x00\xe8\xa2@\x00\x00\x00\x00\x00\x10\xa3@\x00\x00\x00\x00\x008\xa3@\x00\x00\x00\x00\x00`\xa3@\x00\x00\x00\x00\x00\x88\xa3@\x00\x00\x00\x00\x00\xb0\xa3@\x00\x00\x00\x00\x00\xd8\xa3@\x00\x00\x00\x00\x00\x00\xa4@\x00\x00\x00\x00\x00(\xa4@\x00\x00\x00\x00\x00P\xa4@\x00\x00\x00\x00\x00x\xa4@\x00\x00\x00\x00\x00\xa0\xa4@\x00\x00\x00\x00\x00\xc8\xa4@\x00\x00\x00\x00\x00\xf0\xa4@\x00\x00\x00\x00\x00\x18\xa5@\x00\x00\x00\x00\x00@\xa5@\x00\x00\x00\x00\x00h\xa5@\x00\x00\x00\x00\x00\x90\xa5@\x00\x00\x00\x00\x00\xb8\xa5@\x00\x00\x00\x00\x00\xe0\xa5@\x00\x00\x00\x00\x00\x08\xa6@\x00\x00\x00\x00\x000\xa6@\x00\x00\x00\x00\x00X\xa6@\x00\x00\x00\x00\x00\x80\xa6@\x00\x00\x00\x00\x00\xa8\xa6@33333\xb1\xa6@\x00\x00\x00\x00\x00\xd0\xa6@\x00\x00\x00\x00\x00\xe4\xa6@' 37 | p15 38 | tp16 39 | bsS'DY' 40 | p17 41 | g2 42 | (g3 43 | (I0 44 | tp18 45 | g5 46 | tp19 47 | Rp20 48 | (I1 49 | (I149 50 | tp21 51 | g12 52 | I00 53 | S"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x99\x99\x99\x99\x99\xf1?\xcd\xcc\xcc\xcc\xcc\xcc\x08@ffffff\x18@\x9a\x99\x99\x99\x99\x99#@ffffff,@\x00\x00\x00\x00\x00\x003@fffff\xe67@\x00\x00\x00\x00\x00\x00=@\x00\x00\x00\x00\x00@A@\xcd\xcc\xcc\xcc\xccLD@\x00\x00\x00\x00\x00\x80G@fffff\xa6J@fffff\xa6M@33333SP@\x00\x00\x00\x00\x00\xe0Q@33333sS@\x00\x00\x00\x00\x00 U@\x00\x00\x00\x00\x00\xe0V@\xcd\xcc\xcc\xcc\xcc\xacX@\x00\x00\x00\x00\x00\xa0Z@fffff\xa6\\@\x9a\x99\x99\x99\x99\xb9^@ffffff`@\x9a\x99\x99\x99\x99ya@33333\x93b@fffff\xb6c@\x00\x00\x00\x00\x00\xe0d@\x9a\x99\x99\x99\x99\tf@\x9a\x99\x99\x99\x999g@\xcd\xcc\xcc\xcc\xcclh@\x00\x00\x00\x00\x00\xa0i@\x9a\x99\x99\x99\x99\xd9j@\x9a\x99\x99\x99\x99\x19l@\xcd\xcc\xcc\xcc\xcc\\m@fffff\xa6n@\x00\x00\x00\x00\x00\xf0o@\x00\x00\x00\x00\x00\xa0p@\x9a\x99\x99\x99\x99Iq@\xcd\xcc\xcc\xcc\xcc\xf4q@\x00\x00\x00\x00\x00\xa0r@33333Ks@fffff\xf6s@\x9a\x99\x99\x99\x99\xa1t@\xcd\xcc\xcc\xcc\xccLu@\x9a\x99\x99\x99\x99\xf9u@\x00\x00\x00\x00\x00\xa8v@fffffVw@\x00\x00\x00\x00\x00\x08x@\x9a\x99\x99\x99\x99\xb9x@\xcd\xcc\xcc\xcc\xccly@\x00\x00\x00\x00\x00 z@33333\xd3z@fffff\x86{@33333;|@fffff\xee|@33333\xa3}@\x00\x00\x00\x00\x00X~@fffff\x0e\x7f@\xcd\xcc\xcc\xcc\xcc\xc4\x7f@\x00\x00\x00\x00\x00@\x80@fffff\x9e\x80@33333\xff\x80@\x9a\x99\x99\x99\x99a\x81@\x00\x00\x00\x00\x00\xc4\x81@33333'\x82@33333\x8b\x82@\xcd\xcc\xcc\xcc\xcc\xf0\x82@\x00\x00\x00\x00\x00X\x83@\x00\x00\x00\x00\x00\xc0\x83@\x00\x00\x00\x00\x00(\x84@\x00\x00\x00\x00\x00\x90\x84@\xcd\xcc\xcc\xcc\xcc\xf8\x84@33333c\x85@\x9a\x99\x99\x99\x99\xcd\x85@\x00\x00\x00\x00\x008\x86@fffff\xa2\x86@\x00\x00\x00\x00\x00\x0c\x87@\xcd\xcc\xcc\xcc\xcct\x87@fffff\xde\x87@\x00\x00\x00\x00\x00H\x88@\x00\x00\x00\x00\x00\xb4\x88@\x00\x00\x00\x00\x00 \x89@\x9a\x99\x99\x99\x99\x8d\x89@\x00\x00\x00\x00\x00\xfc\x89@33333k\x8a@33333\xdb\x8a@33333K\x8b@\x00\x00\x00\x00\x00\xbc\x8b@\xcd\xcc\xcc\xcc\xcc,\x8c@\x9a\x99\x99\x99\x99\x9d\x8c@fffff\x0e\x8d@33333\x7f\x8d@33333\xef\x8d@\x00\x00\x00\x00\x00`\x8e@\xcd\xcc\xcc\xcc\xcc\xd0\x8e@\xcd\xcc\xcc\xcc\xcc@\x8f@\x9a\x99\x99\x99\x99\xb1\x8f@\xcd\xcc\xcc\xcc\xcc\x10\x90@\x9a\x99\x99\x99\x99G\x90@33333}\x90@\xcd\xcc\xcc\xcc\xcc\xb0\x90@fffff\xe2\x90@\x00\x00\x00\x00\x00\x12\x91@33333?\x91@\x00\x00\x00\x00\x00j\x91@\xcd\xcc\xcc\xcc\xcc\x92\x91@\x00\x00\x00\x00\x00\xba\x91@\x9a\x99\x99\x99\x99\xdf\x91@\x00\x00\x00\x00\x00\x04\x92@\xcd\xcc\xcc\xcc\xcc&\x92@fffffH\x92@\x9a\x99\x99\x99\x99g\x92@\x9a\x99\x99\x99\x99\x85\x92@\x00\x00\x00\x00\x00\xa2\x92@\xcd\xcc\xcc\xcc\xcc\xbc\x92@\x9a\x99\x99\x99\x99\xd5\x92@\xcd\xcc\xcc\xcc\xcc\xec\x92@fffff\x02\x93@\xcd\xcc\xcc\xcc\xcc\x16\x93@\xcd\xcc\xcc\xcc\xcc*\x93@\x9a\x99\x99\x99\x99=\x93@\x9a\x99\x99\x99\x99O\x93@\xcd\xcc\xcc\xcc\xcc`\x93@\xcd\xcc\xcc\xcc\xccp\x93@\x9a\x99\x99\x99\x99\x7f\x93@\x9a\x99\x99\x99\x99\x8d\x93@\xcd\xcc\xcc\xcc\xcc\x9a\x93@fffff\xa6\x93@33333\xb1\x93@\x9a\x99\x99\x99\x99\xbb\x93@33333\xc5\x93@fffff\xce\x93@33333\xd7\x93@\x9a\x99\x99\x99\x99\xdf\x93@33333\xe7\x93@\x00\x00\x00\x00\x00\xee\x93@fffff\xf4\x93@fffff\xfa\x93@\x00\x00\x00\x00\x00\x00\x94@33333\x05\x94@fffff\n\x94@\xcd\xcc\xcc\xcc\xcc\x0e\x94@33333\x13\x94@\x00\x00\x00\x00\x00\x14\x94@33333\x17\x94@33333\x17\x94@" 54 | p22 55 | tp23 56 | bsS'AZIM' 57 | p24 58 | g2 59 | (g3 60 | (I0 61 | tp25 62 | g5 63 | tp26 64 | Rp27 65 | (I1 66 | (I149 67 | tp28 68 | g12 69 | I00 70 | S'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x006\xd4\xde\x96^\x0bt@\x93/\rh\x0e\xefs@ T\xf3f\xde\xf4s@&\n\xe3]\xc4\x01t@i\xca\xa9\xf8\xfa\x13t@Q*\x86P\xca+t@]\xe1\xb8\xe7\x940t@\xb3\xb4Ss\x192t@\xa6\xa4=\x14\xdb4t@B\xc8\x1eFmAt@c\xc4O-\xacMt@\xd6\xd5.\xb7\xa5Ot@\x81\xeb\x8a\x19\xa1Pt@>\xc4P\x98AUt@\xc82\xb3\x856Wt@\x80$\x91"\x97Rt@y\xf3\n\xfa!Pt@\xdf\xbdH\r2Tt@\xf4\xe8\xfc\xca9Vt@%B~\x91\x8b\\t@M\x81\xcc\xce\x02mt@\xd5L\xad\xad\xeeut@\xfbF*B st@\x00\xdc\xd1\xa4\xb9vt@\xb3\x8e\xf4\xb3\xc2\x82t@R\xb3\xac\xa0N\x8et@\xa7\xaau\x87\xb9\x95t@H\xe8\x1d]\xbb\x92t@\x18qK\xf5n\x93t@\xd4u\xf23?\x96t@fx\xfd\x93I\x91t@-&6\x1fw\x95t@\x9c_\xde-\x1a\xa8t@\xad\x88\x9a\xe8s\xb1t@\x12L5\xb3\xb6\xb3t@\x97uZ\x12{\xb7t@V\x8fE\xe4\x05\xc2t@\xc9\xdd1\x86\xc3\xd8t@`\xa9\xd3&\x93\xedt@\x8d\xf7\x99iQ\xf6t@\x8d\xf7\x99iQ\xf6t@\xca\xa3\xc0\xa7\xde\xf9t@\xc9\xe9\xeb\xf9\xda\xf9t@\xde\x93\xe2>\xcd\xf2t@\xb0\x04Rb\xf7\xf7t@\x82\x1b)[\xa4\xfet@\xfdp\xeb\xc97\xf9t@\xd8\xd2H\xf0\xcb\xfft@\x9f[C\x04W\x06u@\x9d\t\xf2X\xd8\x07u@B\x93\xc4\x92\xd2\x0cu@B<\xb7u\\\tu@\xe2\xe4#\xce\xcf\x0cu@\xd7\x92D\xe55\x15u@\xfb@M\x88\xb4\x18u@\x93\x7f\x1c\x83\xa4\x1fu@\x89\xe0\xc9\xb8\x93$u@\xc5"\xe1\xd6x)u@\x03\x08\x1fJT5u@\x18\xda\xef?\xc8Cu@\xffh\xee\xd7\xb3Vu@\x91\xee\xe7\x14Dpu@\x9by\xcd\x06T\x83u@\xca\x8c\xb7\x95\xbe\x8fu@\x17\x0cS\x001\x8du@\xd1\x07\xcb\xd80\x88u@5Od\x9c\x95\x98u@\x15\x99o3+\xa6u@\xa5\x9c\xd4-@\x08\xc9eP+\x82.@\xa3t\xe9_\x92\xc20@_\x85k #O1@\xa2N\xed\xca6\xb61@\xd49/\xe3\xe0p3@\xe5\t)\xe4\xef\x883@+"\x16s\x08\xbe2@\xeev\xbd4E\xc22@}y\x01\xf6\xd1\xcb3@f\xc4\xa2u\x96\xe13@\x965=jD\x923@6-\x88\xb3\xe8:3@2M\xe0\xefzJ3@@E\xbc\x12\xd4\xda3@/\x98l\xfa\xbb\xfb3@>\xe6f,X)5@w\x9e\xba\xea\xe8y6@\x08a\x87\x94\x13)6@\xd8V\xdcM*\xec6@m\r\xd70d\x9f8@\xbc\x00=\x05\xa7q8@\xa92\xeb\xff\xfb\x8f\x00@"(m`a\x0f\x03@\xf6\xd2\x14\x01N\x1f\xf7?-\xd3i\xbc\xf8\x0b\xd2?\x99\xbd*\x1f\x9b\xe7\xf1?\x96l\xc8\x81O\x1a\xd3?H\xc41\x1e\xe7\x8e\xe9?\xffo\x91 \x01\x18\xf4?0\x1f\xbd\x9f"0\xfa?\xa2\x7f\x1faZ\x0c\xfa?P:\x91`\xaa\t\xfc?K\x01i\xff\x03T\x01@D\x0b\\`\x87(\xfc?\x1e\xf6\x84\x1d\xad\x87\xed?0\xcd| \xdc\x91\xe6?\xb3\xe7\x95_\xc4F\xf0?r\xed\xb8\x9f[1\xf3?e3\xc9\xc0\xe8o\xf2?|\xb9.\x80\x19a\xef?D\x9d=\xc0(\xbb\xe7?\xf3a\xeeA\xa5\x1d\xe5?\x14\x06#\xfez(\xe2?@0&\x81\xf68\xdc?1A\r\xdf\xc2:\xe9?2\xac\xc1\x7f\xe3\xc0\xee?\xb7\xefQ\x7f\xbd\xc2\xe8?\x01\xb7Y\x82\xadN\xe4?\xa8tn\xe2\xfd\x1b\xdf?\xdc\xaeD^\xde\xd5\xed?\x8a\x83\xf8~r=\xf3?\xd2\xfc\x10\x9fd@\xea?%\x11\xf1A\x95\xbb\xcf?N\xc4\xf0K\xdc\xae\xba?\xe5J\xb9\xd2\x9d\xed\xb9?M\xdd\xcf\x08\xbaf\xce?\x04\xdf\x97\xa71)\xc0?c1\xc1\xdbI%\xdc?\r~\x0b\x80+\xb8\xdd?#\n5\\G\x89\xd5?-N\x08_\x90\xdb\xe0?\\\r\x1e\xe0(=\xdd?i\x87\xa6\x89\xcaH\xcc?\x99vZL\xa6\xe9\xb6?\xeb\x80\xb9P\xd8\xc9\xb0?\xd1\n\x88 9_\xd6?\xf2\xe6x\x1e?\xc8\xd5?\x97\xd8\xa5\xdbL$\xd3?\xdd\x17Db\x8aK\xd6?\xbao\xad\xdd\x13\xf7\xd2?r\x87Md\xe6B\xdf?\xc51y\xa0\xa1\x01\xe9?\xdf\x01\xd8_\xfa\xc7\xf1?\x96\xa7\xde\xe0,\x11\xf7?\x10\\\x82\xdf\xc8\x14\xf8?\xc8\xc8\xfe\x1ea\xbd\xf1?4\x94\xe2\xfc\xb0\xd2\xdf?;\x18\xd2]\xe9\xe7\xe3?\x9cv\xe7?Z\x12\xe7?\x99\xb1\r\x81\xc8W\xf2?\xe8U\xd7\x80\x8c\xe9\xee?\xbd\x8b9\x00\xc9\x91\xe4?\xef\xf6\x8b\x9f\xe7\xcb\xce?\x0b2\xb8\x9c\x01$\xd0?\x84\x96\\b\xb8|\xe1?T\x13+@g\x14\xe7?wG\x8c\xbfi\xd1\xd8?sM`\xbe\xe5\x7f\xbe?\x8b\x1c\xbfC\x93\xbc\xd4?\x9a\xba\xa7\x82\xbc$\xe2?\x0e\xea\xcf<\x88\xb6\xd7?\xa7\xf3\x1b\x05\x0c\xbb\xd0?\xd5\x01s\xa1\xb03\xe8?\xed\xdf\x8a\xfe\xaf~\xec?\x047\xb5\xe0\x03c\xea?n\xc9\x05\xc2\xa9J\xea?\xe8R\x96\x00\x80L\xea?\xa1M\x0e\x9ft\x02\xe6?S\xf6\x8e\x01v\x01\xe1?\x90\xe0\xe3\x9f[`\xd3?g\xc9\xeb\xdaA\x99\xd9?\x8a\x81\x85\xfe\xcf\x82\xc3?)60\x03\xdf~\xd4?\xf3\xf0u\x84\x99W\xcb?\xfd\xc0\x13\x82n\x92\xe1?\xc0:u\x82\x89\xc1\xd5?W`e\xc0\x9bf\xe8?X\xbd\xcb^\x19(\xf1?W\xd9\x90\xe2\x90+\xe9?oj^\xdd\xca\x95\xea?\xb0\x81\xbe>\x84\x02\xef?\xaf\xb3!\xff\xcc\x10\xf8?\x02(\xa9\xc0\x87\xe2\x02@\x7f\x99\x18`Y\xd8\x06@A\x93\x0e \x8d\x8c\x08@8F6\x80L\x8d\n@\xe9\xc9g?sb\n@\x1b\xf9\xd5\x7fJ\xfb\x07@\xa8||\x00Z\x14\x04@\x18\xece_\xa2\x9f\x00@\xb8/\xf3_\x18G\xfd?B\xd8c\x01\x970\xfc?o\x11\xb5\xc0`\x7f\xfc?\xd9\x1b\xa5\xe0c/\xff?\x8a_\x0c@\xfe\xad\x00@\xbd\x84\x12\x7fw\x7f\xfd?\xb4\x9f\xd6~|C\xfc?\xb9\xe9\xa6\xffrn\xff?mjE@*\x82\x00@\xb3o\xf6 g\xae\xff?\x13V\xd7_~\xa0\xfb?>\xd7\x10\x7f\xc1|\xf3?\xd5\xd6\xa1\xfd\xbc\xa7\xeb?\xcf\xce\xf5\xbfT\xba\xef?X\xeb\x1f\x9f\xeb\xb6\xef?\xa6\xee\xa9 /I\xf0?\x9b\x02W\x81s\x99\xf3?t\xd6e\x00\xc1\x7f\xf3?\xa7\xf4D\xbe\xe8\x9e\xef?\x19\xb4g\x01\xa0[\xf1?ei+\x1f\x17O\xf6?\x17$"\xa1\xd2=\xf1?\x1exJA\x96\xa9\xe5?\xe6\x89\xad\xc1w2\xe5?Ox\xe8?\x94]\xe2?\x00Ao\xe0\xc4F\xdf?J0\x8b?@\xcd\xe2?X^\xc9\xc0\xc7\xe1\xe8?\x9a\x8b\xc7^R\xe9\xe8?I\x02`~\x9fx\xe1?\x89B\xcb\xba\x7f\xec\xdb?\x81\xc8*\xbe\x04\xdb\xdc?U\x81 a\x94\xb7\xd5?J\xef\xd9B\xa9\xa0\xd4?\xc4k\xa8btJ\xdc?\xd3\x8b\x98\xe1X\x1a\xe5?=\x8bR\x00\x94\xa8\xfa?\x9e\x1b\xe4?\xeeD\x07@\x9e\x1b\xe4?\xeeD\x07@\x9e\x1b\xe4?\xeeD\x07@' 88 | p36 89 | tp37 90 | bsS'DX' 91 | p38 92 | g2 93 | (g3 94 | (I0 95 | tp39 96 | g5 97 | tp40 98 | Rp41 99 | (I1 100 | (I149 101 | tp42 102 | g12 103 | I00 104 | S"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xcc\xcc\xcc\xcc\xcc\xec\xbf\x9a\x99\x99\x99\x99\x99\x05\xc0\xcd\xcc\xcc\xcc\xcc\xcc\x14\xc0\x9a\x99\x99\x99\x99\x99 \xc0ffffff'\xc0\x9a\x99\x99\x99\x99\x99.\xc0\x00\x00\x00\x00\x00\x003\xc0\xcd\xcc\xcc\xcc\xcc\xcc6\xc0fffff\xe6:\xc0333333?\xc0\x9a\x99\x99\x99\x99\xd9A\xc0\xcd\xcc\xcc\xcc\xcc\x0cD\xc0fffff&F\xc0333333H\xc0\x9a\x99\x99\x99\x99YJ\xc0\xcd\xcc\xcc\xcc\xcc\x8cL\xc0fffff\xe6N\xc0fffff\xa6P\xc0fffff\xe6Q\xc0333333S\xc0\x00\x00\x00\x00\x00\x80T\xc033333\xd3U\xc0\xcd\xcc\xcc\xcc\xcc,W\xc0fffff\x86X\xc0\x00\x00\x00\x00\x00\xe0Y\xc0\x9a\x99\x99\x99\x999[\xc0\x9a\x99\x99\x99\x99\x99\\\xc0\x00\x00\x00\x00\x00\x00^\xc0ffffff_\xc0\x9a\x99\x99\x99\x99i`\xc033333#a\xc0\x9a\x99\x99\x99\x99\xd9a\xc0\x9a\x99\x99\x99\x99\x89b\xc0\xcd\xcc\xcc\xcc\xcc\xe7@\x9a\x99\x99\x99\xd1=\xe7@\x9a\x99\x99\x99!=\xe7@ffffn<\xe7@3333\xbb;\xe7@\xcd\xcc\xcc\xcc\x04;\xe7@3333K:\xe7@\xcd\xcc\xcc\xcc\x949\xe7@\xcd\xcc\xcc\xcc\xe48\xe7@\x9a\x99\x99\x9918\xe7@ffff~7\xe7@3333\xcb6\xe7@ffff\x1e6\xe7@3333{5\xe7@ffff\xde4\xe7@\x9a\x99\x99\x99A4\xe7@\xcd\xcc\xcc\xcc\xa43\xe7@3333\x0b3\xe7@ffffn2\xe7@ffff\xce1\xe7@\xcd\xcc\xcc\xcc41\xe7@\x00\x00\x00\x00\x980\xe7@\x00\x00\x00\x00\xf8/\xe7@ffff^/\xe7@\x9a\x99\x99\x99\xc1.\xe7@\x00\x00\x00\x00(.\xe7@ffff\x8e-\xe7@\x9a\x99\x99\x99\xf1,\xe7@3333[,\xe7@\xcd\xcc\xcc\xcc\xc4+\xe7@\x9a\x99\x99\x991+\xe7@\x9a\x99\x99\x99\xa1*\xe7@\x9a\x99\x99\x99\x11*\xe7@\xcd\xcc\xcc\xcc\x84)\xe7@ffff\xfe(\xe7@3333{(\xe7@\x9a\x99\x99\x99\x01(\xe7@\x9a\x99\x99\x99\x91\'\xe7@\xcd\xcc\xcc\xcc$\'\xe7@ffff\xbe&\xe7@ffffN&\xe7@\x9a\x99\x99\x99\xe1%\xe7@ffff~%\xe7@3333\x1b%\xe7@ffff\xbe$\xe7@\x9a\x99\x99\x99a$\xe7@\x9a\x99\x99\x99\x01$\xe7@\xcd\xcc\xcc\xcc\xa4#\xe7@\x00\x00\x00\x00H#\xe7@ffff\xee"\xe7@\x9a\x99\x99\x99\x91"\xe7@\xcd\xcc\xcc\xcc4"\xe7@ffff\xde!\xe7@\x00\x00\x00\x00\x88!\xe7@\x9a\x99\x99\x991!\xe7@\x9a\x99\x99\x99\xe1 \xe7@\xcd\xcc\xcc\xcc\x94 \xe7@3333K \xe7@\x9a\x99\x99\x99\x01 \xe7@ffff\xbe\x1f\xe7@ffff~\x1f\xe7@ffff>\x1f\xe7@3333\xfb\x1e\xe7@ffff\xbe\x1e\xe7@\x9a\x99\x99\x99\x81\x1e\xe7@ffff>\x1e\xe7@ffff\xfe\x1d\xe7@\x00\x00\x00\x00\xb8\x1d\xe7@3333k\x1d\xe7@\x00\x00\x00\x00(\x1d\xe7@ffff\xee\x1c\xe7@\x00\x00\x00\x00\xb8\x1c\xe7@\x00\x00\x00\x00\x88\x1c\xe7@ffff^\x1c\xe7@\x00\x00\x00\x008\x1c\xe7@\x00\x00\x00\x00\x18\x1c\xe7@\x9a\x99\x99\x99\x01\x1c\xe7@\xcd\xcc\xcc\xcc\xf4\x1b\xe7@\x00\x00\x00\x00\xf8\x1b\xe7@\x9a\x99\x99\x99\x01\x1c\xe7@\x9a\x99\x99\x99\x11\x1c\xe7@ffff\x1e\x1c\xe7@\x00\x00\x00\x00(\x1c\xe7@\xcd\xcc\xcc\xcc4\x1c\xe7@\x9a\x99\x99\x99A\x1c\xe7@\xcd\xcc\xcc\xccT\x1c\xe7@\x00\x00\x00\x00h\x1c\xe7@ffff~\x1c\xe7@\xcd\xcc\xcc\xcc\x94\x1c\xe7@ffff\xae\x1c\xe7@3333\xcb\x1c\xe7@\x00\x00\x00\x00\xe8\x1c\xe7@3333\x0b\x1d\xe7@ffff.\x1d\xe7@\xcd\xcc\xcc\xccT\x1d\xe7@3333{\x1d\xe7@\x9a\x99\x99\x99\xa1\x1d\xe7@\x00\x00\x00\x00\xc8\x1d\xe7@ffff\xee\x1d\xe7@\x00\x00\x00\x00\x18\x1e\xe7@3333;\x1e\xe7@\x9a\x99\x99\x99a\x1e\xe7@\x00\x00\x00\x00\x88\x1e\xe7@\x00\x00\x00\x00\xa8\x1e\xe7@\xcd\xcc\xcc\xcc\xc4\x1e\xe7@\x9a\x99\x99\x99\xe1\x1e\xe7@ffff\xfe\x1e\xe7@\x00\x00\x00\x00\x18\x1f\xe7@\x9a\x99\x99\x991\x1f\xe7@\x00\x00\x00\x00H\x1f\xe7@ffff^\x1f\xe7@\x9a\x99\x99\x99q\x1f\xe7@\xcd\xcc\xcc\xcc\x84\x1f\xe7@\x00\x00\x00\x00\x98\x1f\xe7@3333\xab\x1f\xe7@3333\xbb\x1f\xe7@ffff\xce\x1f\xe7@ffff\xde\x1f\xe7@ffff\xee\x1f\xe7@\x9a\x99\x99\x99\xf1\x1f\xe7@3333\xfb\x1f\xe7@3333\xfb\x1f\xe7@' 122 | p50 123 | tp51 124 | bsS'Y' 125 | p52 126 | g2 127 | (g3 128 | (I0 129 | tp53 130 | g5 131 | tp54 132 | Rp55 133 | (I1 134 | (I149 135 | tp56 136 | g12 137 | I00 138 | S'ffff\x06\x18\xe4@ffff\x06\x18\xe4@ffff\x06\x18\xe4@\x9a\x99\x99\x99)\x18\xe4@\x9a\x99\x99\x99i\x18\xe4@\x9a\x99\x99\x99\xc9\x18\xe4@\x00\x00\x00\x00@\x19\xe4@\xcd\xcc\xcc\xcc\xcc\x19\xe4@fffff\x1a\xe4@3333\x03\x1b\xe4@ffff\xa6\x1b\xe4@ffffV\x1c\xe4@\x9a\x99\x99\x99\x19\x1d\xe4@ffff\xe6\x1d\xe4@\x00\x00\x00\x00\xb0\x1e\xe4@\x00\x00\x00\x00p\x1f\xe4@\x00\x00\x00\x000 \xe4@ffff\xf6 \xe4@\x00\x00\x00\x00\xc0!\xe4@ffff\x96"\xe4@ffffv#\xe4@\xcd\xcc\xcc\xcc\\$\xe4@ffffV%\xe4@\x9a\x99\x99\x99Y&\xe4@3333c\'\xe4@\xcd\xcc\xcc\xccl(\xe4@\x00\x00\x00\x00\x80)\xe4@\x9a\x99\x99\x99\x99*\xe4@\xcd\xcc\xcc\xcc\xbc+\xe4@ffff\xe6,\xe4@\x00\x00\x00\x00\x10.\xe4@\x00\x00\x00\x00@/\xe4@3333s0\xe4@ffff\xa61\xe4@\x00\x00\x00\x00\xe02\xe4@\x00\x00\x00\x00 4\xe4@3333c5\xe4@\xcd\xcc\xcc\xcc\xac6\xe4@ffff\xf67\xe4@ffffF9\xe4@\x9a\x99\x99\x99\x99:\xe4@\x00\x00\x00\x00\xf0;\xe4@ffffF=\xe4@\xcd\xcc\xcc\xcc\x9c>\xe4@3333\xf3?\xe4@\x9a\x99\x99\x99IA\xe4@\x00\x00\x00\x00\xa0B\xe4@\x9a\x99\x99\x99\xf9C\xe4@ffffVE\xe4@3333\xb3F\xe4@ffff\x16H\xe4@\x9a\x99\x99\x99yI\xe4@\x00\x00\x00\x00\xe0J\xe4@ffffFL\xe4@\xcd\xcc\xcc\xcc\xacM\xe4@3333\x13O\xe4@\xcd\xcc\xcc\xcc|P\xe4@3333\xe3Q\xe4@\xcd\xcc\xcc\xccLS\xe4@ffff\xb6T\xe4@3333#V\xe4@\x00\x00\x00\x00\x90W\xe4@ffff\x06Y\xe4@\x00\x00\x00\x00\x80Z\xe4@3333\x03\\\xe4@\xcd\xcc\xcc\xcc\x8c]\xe4@ffff\x16_\xe4@3333\xa3`\xe4@33333b\xe4@\x9a\x99\x99\x99\xc9c\xe4@fffffe\xe4@ffff\x06g\xe4@ffff\xa6h\xe4@ffffFj\xe4@\x9a\x99\x99\x99\xe9k\xe4@3333\x93m\xe4@\xcd\xcc\xcc\xccs@\x00\x00\x00\x00\x00`t@\x00\x00\x00\x00\x00\x80u@33333\x9bv@33333\xb3w@\x9a\x99\x99\x99\x99\xc9x@\x00\x00\x00\x00\x00\xe0y@33333\xf3z@\xcd\xcc\xcc\xcc\xcc\x04|@\xcd\xcc\xcc\xcc\xcc\x14}@33333#~@fffff.\x7f@\xcd\xcc\xcc\xcc\xcc\x1c\x80@\x9a\x99\x99\x99\x99\xa1\x80@fffff&\x81@fffff\xaa\x81@\x9a\x99\x99\x99\x99-\x82@\x00\x00\x00\x00\x00\xb0\x82@\x9a\x99\x99\x99\x991\x83@33333\xb3\x83@\xcd\xcc\xcc\xcc\xcc4\x84@\x9a\x99\x99\x99\x99\xb5\x84@333337\x85@\xcd\xcc\xcc\xcc\xcc\xb8\x85@fffff:\x86@\x00\x00\x00\x00\x00\xbc\x86@\xcd\xcc\xcc\xcc\xcc<\x87@fffff\xbe\x87@33333?\x88@33333\xbf\x88@33333?\x89@33333\xbf\x89@\x9a\x99\x99\x99\x99=\x8a@\xcd\xcc\xcc\xcc\xcc\xbc\x8a@\x00\x00\x00\x00\x00<\x8b@fffff\xba\x8b@\x9a\x99\x99\x99\x999\x8c@\xcd\xcc\xcc\xcc\xcc\xb8\x8c@333337\x8d@fffff\xb6\x8d@\x9a\x99\x99\x99\x995\x8e@\x00\x00\x00\x00\x00\xb4\x8e@333333\x8f@\xcd\xcc\xcc\xcc\xcc\xb0\x8f@33333\x17\x90@33333U\x90@33333\x93\x90@\xcd\xcc\xcc\xcc\xcc\xd0\x90@\x00\x00\x00\x00\x00\x0e\x91@\xcd\xcc\xcc\xcc\xccJ\x91@33333\x87\x91@33333\xc3\x91@33333\xff\x91@\xcd\xcc\xcc\xcc\xcc:\x92@fffffv\x92@\x9a\x99\x99\x99\x99\xb1\x92@fffff\xec\x92@\xcd\xcc\xcc\xcc\xcc&\x93@33333a\x93@fffff\x9c\x93@33333\xd7\x93@\xcd\xcc\xcc\xcc\xcc\x12\x94@\x00\x00\x00\x00\x00N\x94@\xcd\xcc\xcc\xcc\xcc\x88\x94@\x9a\x99\x99\x99\x99\xc3\x94@\x9a\x99\x99\x99\x99\xfd\x94@333337\x95@fffffp\x95@\x9a\x99\x99\x99\x99\xa9\x95@\x00\x00\x00\x00\x00\xe2\x95@fffff\x1a\x96@\xcd\xcc\xcc\xcc\xccR\x96@\xcd\xcc\xcc\xcc\xcc\x8a\x96@33333\xc3\x96@33333\xfb\x96@\x9a\x99\x99\x99\x993\x97@\x9a\x99\x99\x99\x99k\x97@\x00\x00\x00\x00\x00\xa4\x97@\x00\x00\x00\x00\x00\xdc\x97@fffff\x14\x98@33333M\x98@fffff\x86\x98@\x00\x00\x00\x00\x00\xc0\x98@\x9a\x99\x99\x99\x99\xfb\x98@\xcd\xcc\xcc\xcc\xcc8\x99@33333w\x99@\x9a\x99\x99\x99\x99\xb7\x99@\x9a\x99\x99\x99\x99\xf9\x99@33333=\x9a@\x00\x00\x00\x00\x00\x82\x9a@\x9a\x99\x99\x99\x99\xc7\x9a@\x00\x00\x00\x00\x00\x0e\x9b@33333U\x9b@33333\x9d\x9b@\x00\x00\x00\x00\x00\xe6\x9b@\x9a\x99\x99\x99\x99/\x9c@\x9a\x99\x99\x99\x99y\x9c@fffff\xc4\x9c@\x9a\x99\x99\x99\x99\x0f\x9d@\x9a\x99\x99\x99\x99[\x9d@\x00\x00\x00\x00\x00\xa8\x9d@33333\xf5\x9d@fffffB\x9e@\x9a\x99\x99\x99\x99\x8f\x9e@33333\xdd\x9e@\xcd\xcc\xcc\xcc\xcc*\x9f@\xcd\xcc\xcc\xcc\xccx\x9f@33333\xc7\x9f@\xcd\xcc\xcc\xcc\xcc\n\xa0@333332\xa0@\x9a\x99\x99\x99\x99Y\xa0@\x00\x00\x00\x00\x00\x81\xa0@\x9a\x99\x99\x99\x99\xa8\xa0@33333\xd0\xa0@\x00\x00\x00\x00\x00\xf8\xa0@\x9a\x99\x99\x99\x99\x1f\xa1@fffffG\xa1@33333o\xa1@\x00\x00\x00\x00\x00\x97\xa1@\xcd\xcc\xcc\xcc\xcc\xbe\xa1@\x9a\x99\x99\x99\x99\xe6\xa1@fffff\x0e\xa2@fffff6\xa2@33333^\xa2@33333\x86\xa2@\x00\x00\x00\x00\x00\xae\xa2@\x00\x00\x00\x00\x00\xd6\xa2@33333\xdf\xa2@\x00\x00\x00\x00\x00\xfe\xa2@\x00\x00\x00\x00\x00\x12\xa3@' 156 | p64 157 | tp65 158 | bsS'Z' 159 | p66 160 | g2 161 | (g3 162 | (I0 163 | tp67 164 | g5 165 | tp68 166 | Rp69 167 | (I1 168 | (I149 169 | tp70 170 | g12 171 | I00 172 | S'33333\xf3J@33333\xf3@@\xcd\xcc\xcc\xcc\xcc\xcc+@ffffff\x18\xc0fffff\xe69\xc0\x00\x00\x00\x00\x00\xc0F\xc0\x9a\x99\x99\x99\x999P\xc0\xcd\xcc\xcc\xcc\xcc\x0cU\xc0\xcd\xcc\xcc\xcc\xcc\xccY\xc033333\x93^\xc0fffff\xa6a\xc0\x00\x00\x00\x00\x00\x00d\xc033333Sf\xc0\x00\x00\x00\x00\x00\xa0h\xc0\xcd\xcc\xcc\xcc\xcc\xecj\xc0\x00\x00\x00\x00\x00@m\xc0fffff\x96o\xc033333\xf3p\xc0\x9a\x99\x99\x99\x99\x19r\xc0fffff>s\xc0\x00\x00\x00\x00\x00`t\xc0\x00\x00\x00\x00\x00\x80u\xc033333\x9bv\xc033333\xb3w\xc0\x9a\x99\x99\x99\x99\xc9x\xc0\x00\x00\x00\x00\x00\xe0y\xc033333\xf3z\xc0\xcd\xcc\xcc\xcc\xcc\x04|\xc0\xcd\xcc\xcc\xcc\xcc\x14}\xc033333#~\xc0fffff.\x7f\xc0\xcd\xcc\xcc\xcc\xcc\x1c\x80\xc0\x9a\x99\x99\x99\x99\xa1\x80\xc0fffff&\x81\xc0fffff\xaa\x81\xc0\x9a\x99\x99\x99\x99-\x82\xc0\x00\x00\x00\x00\x00\xb0\x82\xc0\x9a\x99\x99\x99\x991\x83\xc033333\xb3\x83\xc0\xcd\xcc\xcc\xcc\xcc4\x84\xc0\x9a\x99\x99\x99\x99\xb5\x84\xc0333337\x85\xc0\xcd\xcc\xcc\xcc\xcc\xb8\x85\xc0fffff:\x86\xc0\x00\x00\x00\x00\x00\xbc\x86\xc0\xcd\xcc\xcc\xcc\xcc<\x87\xc0fffff\xbe\x87\xc033333?\x88\xc033333\xbf\x88\xc033333?\x89\xc033333\xbf\x89\xc0\x9a\x99\x99\x99\x99=\x8a\xc0\xcd\xcc\xcc\xcc\xcc\xbc\x8a\xc0\x00\x00\x00\x00\x00<\x8b\xc0fffff\xba\x8b\xc0\x9a\x99\x99\x99\x999\x8c\xc0\xcd\xcc\xcc\xcc\xcc\xb8\x8c\xc0333337\x8d\xc0fffff\xb6\x8d\xc0\x9a\x99\x99\x99\x995\x8e\xc0\x00\x00\x00\x00\x00\xb4\x8e\xc0333333\x8f\xc0\xcd\xcc\xcc\xcc\xcc\xb0\x8f\xc033333\x17\x90\xc033333U\x90\xc033333\x93\x90\xc0\xcd\xcc\xcc\xcc\xcc\xd0\x90\xc0\x00\x00\x00\x00\x00\x0e\x91\xc0\xcd\xcc\xcc\xcc\xccJ\x91\xc033333\x87\x91\xc033333\xc3\x91\xc033333\xff\x91\xc0\xcd\xcc\xcc\xcc\xcc:\x92\xc0fffffv\x92\xc0\x9a\x99\x99\x99\x99\xb1\x92\xc0fffff\xec\x92\xc0\xcd\xcc\xcc\xcc\xcc&\x93\xc033333a\x93\xc0fffff\x9c\x93\xc033333\xd7\x93\xc0\xcd\xcc\xcc\xcc\xcc\x12\x94\xc0\x00\x00\x00\x00\x00N\x94\xc0\xcd\xcc\xcc\xcc\xcc\x88\x94\xc0\x9a\x99\x99\x99\x99\xc3\x94\xc0\x9a\x99\x99\x99\x99\xfd\x94\xc0333337\x95\xc0fffffp\x95\xc0\x9a\x99\x99\x99\x99\xa9\x95\xc0\x00\x00\x00\x00\x00\xe2\x95\xc0fffff\x1a\x96\xc0\xcd\xcc\xcc\xcc\xccR\x96\xc0\xcd\xcc\xcc\xcc\xcc\x8a\x96\xc033333\xc3\x96\xc033333\xfb\x96\xc0\x9a\x99\x99\x99\x993\x97\xc0\x9a\x99\x99\x99\x99k\x97\xc0\x00\x00\x00\x00\x00\xa4\x97\xc0\x00\x00\x00\x00\x00\xdc\x97\xc0fffff\x14\x98\xc033333M\x98\xc0fffff\x86\x98\xc0\x00\x00\x00\x00\x00\xc0\x98\xc0\x9a\x99\x99\x99\x99\xfb\x98\xc0\xcd\xcc\xcc\xcc\xcc8\x99\xc033333w\x99\xc0\x9a\x99\x99\x99\x99\xb7\x99\xc0\x9a\x99\x99\x99\x99\xf9\x99\xc033333=\x9a\xc0\x00\x00\x00\x00\x00\x82\x9a\xc0\x9a\x99\x99\x99\x99\xc7\x9a\xc0\x00\x00\x00\x00\x00\x0e\x9b\xc033333U\x9b\xc033333\x9d\x9b\xc0\x00\x00\x00\x00\x00\xe6\x9b\xc0\x9a\x99\x99\x99\x99/\x9c\xc0\x9a\x99\x99\x99\x99y\x9c\xc0fffff\xc4\x9c\xc0\x9a\x99\x99\x99\x99\x0f\x9d\xc0\x9a\x99\x99\x99\x99[\x9d\xc0\x00\x00\x00\x00\x00\xa8\x9d\xc033333\xf5\x9d\xc0fffffB\x9e\xc0\x9a\x99\x99\x99\x99\x8f\x9e\xc033333\xdd\x9e\xc0\xcd\xcc\xcc\xcc\xcc*\x9f\xc0\xcd\xcc\xcc\xcc\xccx\x9f\xc033333\xc7\x9f\xc0\xcd\xcc\xcc\xcc\xcc\n\xa0\xc0333332\xa0\xc0\x9a\x99\x99\x99\x99Y\xa0\xc0\x00\x00\x00\x00\x00\x81\xa0\xc0\x9a\x99\x99\x99\x99\xa8\xa0\xc033333\xd0\xa0\xc0\x00\x00\x00\x00\x00\xf8\xa0\xc0\x9a\x99\x99\x99\x99\x1f\xa1\xc0fffffG\xa1\xc033333o\xa1\xc0\x00\x00\x00\x00\x00\x97\xa1\xc0\xcd\xcc\xcc\xcc\xcc\xbe\xa1\xc0\x9a\x99\x99\x99\x99\xe6\xa1\xc0fffff\x0e\xa2\xc0fffff6\xa2\xc033333^\xa2\xc033333\x86\xa2\xc0\x00\x00\x00\x00\x00\xae\xa2\xc0\x00\x00\x00\x00\x00\xd6\xa2\xc033333\xdf\xa2\xc0\x00\x00\x00\x00\x00\xfe\xa2\xc0\x00\x00\x00\x00\x00\x12\xa3\xc0' 173 | p71 174 | tp72 175 | bsS'INCL' 176 | p73 177 | g2 178 | (g3 179 | (I0 180 | tp74 181 | g5 182 | tp75 183 | Rp76 184 | (I1 185 | (I149 186 | tp77 187 | g12 188 | I00 189 | S'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfeo\xdb\xad\x1b=\x00@ C\xc7\x0e*\x9d\x17@\x95 m-\xdd\x00#@\x02\x0c\xcb\x9fo=)@\x14\xb0>\x9a\xc1\x08.@H0\x17\xe9,\xcd0@\x021\xa6\xec6\xac1@\xa4\x0b^\xb2\xf952@\xa0\xf9\xbd\xc9FR3@\x95\x02\x7f\xb6\xdd\xf34@\x92l\xe0\xd4(s6@\xfd\x1e\x0eu\xcc\xd96@\xc4r\x11\x00\x98\x146@\xe7r wS]5@\x18\xb1\x91\x1c\x97\xb65@,\xac\xa7\x98{m6@p\x92j\xc8\ra7@\xbcY\xe6!\x11\x9c8@v\xaa|\xcfH\x8b9@!\xbe~Nb\xef:@\xec\xa9\xee\xf4\xf7[<@3\x80}\x95\xf8(=@\xf3o\x1b6_\x93=@6\x05\x11-\xa2\x19>@\x9b\x96\xb3\xd2\xff\xd6>@v\xd8\n\xbb\xa4\x82?@\x84n\xe5\xdbq\x1f@@\xc7\n\xe1E\x9dg@@ \xbc\xf20\x9f\x9d@@\x1f\xc7\xc5\x07,\xd7@@\xa1\xfe\xabu\xff\xfd@@\x97\xa6\xef\xd2Y"A@FK\xd4\xc1\xb0TA@\x98\xa0\xc8\x8b\xb3\x89A@\xe3T\xe7(r\xcdA@\xff\xfdR\xd4S\xf2A@Q\xefo\xf1l\xfeA@\xc0\xe0\x05\xd7\xfd\x0eB@OCm~p\tB@0\x97;\xd0\x96\xffA@0\x97;\xd0\x96\xffA@ \xe4\xa3bo\xf9A@\xad\x1c\x94\x0fE\x04B@\xb2\x00;q\x98\x10B@\xb5\'\xd4\x15\xe4\x17B@\xe9\xc8\xbaMrBB@X\xf6M/\xebfB@\xc2*\xc5+\x9c{B@B\xbb\x1a\x0b\xd0\xa6B@\xb13\xe8\xf8&\xbfB@\\\xe6\x11/\x91\xbbB@\x8c\xde\xe3+\x85\xccB@U\xd9\xb9a\xc2\xc6B@\xef\xfe\xdb\xd9\x95\xbdB@\xfa{\x8cf#\xc3B@j\xc5\x92\xcd0\xb8B@\x9d\xcd\xb2@\x1e\xb5B@H\n\xd97\x7f\xc8B@`}v\x9fg\xc6B@\xae\xb9\xa3\xffe\xebB@\x0b}\xb0\x8c\x8d%C@\xce\xa1\x90\x8d\xd5XC@\xf9\x83`\xd9\xf5\xa3C@\xf2\xfb\'M\xbd\xbfC@\xba\xfa-\x11Z\xe8C@C\xa0e\xa3\x94"D@l\x96\xcbFgTD@\x9a]\x18e\r\x98D@\xe9]\xfe;\t\xc6D@J\xa1f\'\x87\xd9D@dkd\xf4\xaf\xe8D@\x8e\xba\xef{H\x02E@Gl\x7f\x80\x98?E@|\x15S\xc8\x19pE@\xe0\xe8S\\\x8f|E@s\xe0\xcd\x01\x9ffE@\xe4\x0c(H*GE@n\xb9#1\xfb\x1aE@\xf6(\xf9d\x87\x0eE@\xb46SB,/E@S\xf44\x1et[E@\xed\xe3Wb\xd4\x97E@\xec<\xe0pU\xd5E@$\xb0\xff[\xc5\x11F@\xb2e\x1a\xc9u2F@\x96l\xc8\x81OdF@\x98\xea\xb8\xd0\xcb\x8cF@\x0bu\xdc\x19\xbb\x97F@\xb0\xd4H\x85\x10\xaeF@\x9b\xf2\xb6\x0c\x97\xb1F@\xe1\x13F\x0el\xb3F@\xda(\xe3\xc6J\xb5F@\xbd.\xcb\xf0\x82\xb0F@\x8e\xef\xa4\xe8u\xaeF@\x7f\xa9\x97\xc6\xcc\xafF@\x14}\xfc\xad6\x9cF@\xd6\x0c\xfc\xea\xa2}F@\x84\xf4\x149D^F@\xab\x9b\xc5jw\x0cF@4Bh\xd2\xe0nE@<\\@\xa2\xe8\x8dD@\x0f\x9b\xc8\xcc\x85\xaaC@\x1f\x91\xa5\xc5O\xbdB@4@\x8aiS3s\xc3<@\xa24\'qN\x9d;@\n\xbe\'\xde\x1ay:@b\x01\xe1}4W9@d\xc4\xaa\xe6\xde\xf07@\x97\xcdwK\xcd\x9a6@\xb7N\xf1\xf2S\x885@\xe18[\x06\xbdW4@\x85|\x8e\x97\x87\x033@\x9f9N~I\xb51@\x92\xdd\xf5gy\x8e0@M\xd4\x981\x81\x1e/@\xcb\xc7\x83g!\x1b.@1\xecQ4\xe6\xf4,@\x04\x9f0r`\x89+@\xa4\x9a\xc4\xe6\x04e*@()\xf2\x1cx\x00)@b\xe4~\xea\xcc?\'@\xd6\xac\xf1\xa1]\xc6%@v\x19\xfe\xd3\r\xbe$@(\xc9\xc6\xc5I\xf4"@H\x98X\xcf\xff\x07!@r`\x83\xcf \x17 @\xb1r\x05g2\x80\x1e@\x81\x15\x96.\xb3\xb2\x1c@$\x9b\xcc\xf4"q\x1b@\x13H\x05%7\x1c\x1a@C\x12\xe6\x0b\x94O\x18@\xee#\xf9B\xaf\xf8\x15@2xw\xe8\xe4*\x14@X\x8a\xcb\x8e\xe0\x18\x13@W^\xb0#\'\xfe\x11@i\xb8\x12\xcbw\xb6\x10@X\x858\x9c\x1a0\x10@\xd9\xb8\x17\xfb?E\x0e@\xb8d,\x05j\xba\x0b@\xe5\xb7\x85:\xeeD\x07@f\x1f\xd8\xafC\xf6\x06@@R'\xa0\x89\xb0\xc12@" 763 | p329 764 | tp330 765 | bsS'NPHI' 766 | p331 767 | g78 768 | (g79 769 | (I0 770 | tp332 771 | g81 772 | tp333 773 | Rp334 774 | (I1 775 | (I2 776 | tp335 777 | g88 778 | I00 779 | S'\x7fj\xbct\x93\x18\xd4?\xd5\th"lx\xd2?' 780 | p336 781 | tp337 782 | bssS'parameters' 783 | p338 784 | (dp339 785 | s. -------------------------------------------------------------------------------- /pickled_test_data/sample_curve_api.las.pickle: -------------------------------------------------------------------------------- 1 | (dp0 2 | S'curves_order' 3 | p1 4 | (lp2 5 | VDEPTH 6 | p3 7 | aVRHOB 8 | p4 9 | aVNPHI 10 | p5 11 | aVMSFL 12 | p6 13 | aVSFLA 14 | p7 15 | aVILM 16 | p8 17 | aVILD 18 | p9 19 | aVSP 20 | p10 21 | asS'version' 22 | p11 23 | (dp12 24 | S'WRAP' 25 | p13 26 | S'NO' 27 | p14 28 | sS'VERS' 29 | p15 30 | S'1.2' 31 | p16 32 | sS'last_caption' 33 | p17 34 | S'~P' 35 | p18 36 | ssS'well' 37 | p19 38 | (dp20 39 | S'LOC' 40 | p21 41 | S'LOCATION' 42 | p22 43 | sS'SRVC' 44 | p23 45 | S'SERVICE COMPANY' 46 | p24 47 | sS'COMP' 48 | p25 49 | S'COMPANY' 50 | p26 51 | sS'WELL' 52 | p27 53 | S'WELL' 54 | p28 55 | sS'STOP' 56 | p29 57 | S'1660.000000' 58 | p30 59 | sS'UWI' 60 | p31 61 | S'UNIQUE WELL ID' 62 | p32 63 | sS'STRT' 64 | p33 65 | S'1670.000000' 66 | p34 67 | sS'STEP' 68 | p35 69 | S'-0.1250' 70 | p36 71 | sS'PROV' 72 | p37 73 | S'PROVINCE' 74 | p38 75 | sS'DATE' 76 | p39 77 | S'LOG DATE' 78 | p40 79 | sS'NULL' 80 | p41 81 | S'-999.2500' 82 | p42 83 | sS'FLD' 84 | p43 85 | S'FIELD' 86 | p44 87 | ssS'logs' 88 | p45 89 | (dp46 90 | S'ILD' 91 | p47 92 | cnumpy.core.multiarray 93 | _reconstruct 94 | p48 95 | (cnumpy 96 | ndarray 97 | p49 98 | (I0 99 | tp50 100 | S'b' 101 | p51 102 | tp52 103 | Rp53 104 | (I1 105 | (I3 106 | tp54 107 | cnumpy 108 | dtype 109 | p55 110 | (S'f8' 111 | p56 112 | I0 113 | I1 114 | tp57 115 | Rp58 116 | (I3 117 | S'<' 118 | p59 119 | NNNI-1 120 | I-1 121 | I0 122 | tp60 123 | bI00 124 | S'\xcd\xcc\xcc\xcc\xcc\x8c[@\xcd\xcc\xcc\xcc\xcc\x8c[@\xcd\xcc\xcc\xcc\xcc\x8c[@' 125 | p61 126 | tp62 127 | bsS'SP' 128 | p63 129 | g48 130 | (g49 131 | (I0 132 | tp64 133 | g51 134 | tp65 135 | Rp66 136 | (I1 137 | (I3 138 | tp67 139 | g58 140 | I00 141 | S'ffffffZ@ffffffZ@ffffffZ@' 142 | p68 143 | tp69 144 | bsS'MSFL' 145 | p70 146 | g48 147 | (g49 148 | (I0 149 | tp71 150 | g51 151 | tp72 152 | Rp73 153 | (I1 154 | (I3 155 | tp74 156 | g58 157 | I00 158 | S'\xcd\xcc\xcc\xcc\xcc\xcc\xdc?\xcd\xcc\xcc\xcc\xcc\xcc\xdc?\xcd\xcc\xcc\xcc\xcc\xcc\xdc?' 159 | p75 160 | tp76 161 | bsS'ILM' 162 | p77 163 | g48 164 | (g49 165 | (I0 166 | tp78 167 | g51 168 | tp79 169 | Rp80 170 | (I1 171 | (I3 172 | tp81 173 | g58 174 | I00 175 | S'\xcd\xcc\xcc\xcc\xcc\xdc^@\xcd\xcc\xcc\xcc\xcc\xdc^@\xcd\xcc\xcc\xcc\xcc\xdc^@' 176 | p82 177 | tp83 178 | bsS'DEPTH' 179 | p84 180 | g48 181 | (g49 182 | (I0 183 | tp85 184 | g51 185 | tp86 186 | Rp87 187 | (I1 188 | (I3 189 | tp88 190 | g58 191 | I00 192 | S'\x00\x00\x00\x00\x00\x18\x9a@\x00\x00\x00\x00\x80\x17\x9a@\x00\x00\x00\x00\x00\x17\x9a@' 193 | p89 194 | tp90 195 | bsS'SFLA' 196 | p91 197 | g48 198 | (g49 199 | (I0 200 | tp92 201 | g51 202 | tp93 203 | Rp94 204 | (I1 205 | (I3 206 | tp95 207 | g58 208 | I00 209 | S'\xcd\xcc\xcc\xcc\xcc\xdc^@\xcd\xcc\xcc\xcc\xcc\xdc^@\xcd\xcc\xcc\xcc\xcc\xdc^@' 210 | p96 211 | tp97 212 | bsS'RHOB' 213 | p98 214 | g48 215 | (g49 216 | (I0 217 | tp99 218 | g51 219 | tp100 220 | Rp101 221 | (I1 222 | (I3 223 | tp102 224 | g58 225 | I00 226 | S'\xcd\xcc\xcc\xcc\xcc\xdc^@\xcd\xcc\xcc\xcc\xcc\xdc^@\xcd\xcc\xcc\xcc\xcc\xdc^@' 227 | p103 228 | tp104 229 | bsS'NPHI' 230 | p105 231 | g48 232 | (g49 233 | (I0 234 | tp106 235 | g51 236 | tp107 237 | Rp108 238 | (I1 239 | (I3 240 | tp109 241 | g58 242 | I00 243 | S'\x00\x00\x00\x00\x00\xec\xa3@\x00\x00\x00\x00\x00\xec\xa3@\x00\x00\x00\x00\x00\xec\xa3@' 244 | p110 245 | tp111 246 | bssS'parameters' 247 | p112 248 | (dp113 249 | VMATR 250 | p114 251 | S'0.0000' 252 | p115 253 | sVMDEN 254 | p116 255 | S'2710.0000' 256 | p117 257 | sVRMF 258 | p118 259 | S'0.2160' 260 | p119 261 | sVBS 262 | p120 263 | S'200.0000' 264 | p121 265 | sVFD 266 | p122 267 | S'1000.0000' 268 | p123 269 | sVBHT 270 | p124 271 | S'35.5000' 272 | p125 273 | sVDFD 274 | p126 275 | S'1525.0000' 276 | p127 277 | ss. -------------------------------------------------------------------------------- /pickled_test_data/sample_minimal.las.pickle: -------------------------------------------------------------------------------- 1 | (dp0 2 | S'curves_order' 3 | p1 4 | (lp2 5 | VDEPT 6 | p3 7 | aVRHOB 8 | p4 9 | aVNPHI 10 | p5 11 | aVMSFL 12 | p6 13 | aVSFLA 14 | p7 15 | aVILM 16 | p8 17 | aVILD 18 | p9 19 | aVSP 20 | p10 21 | asS'version' 22 | p11 23 | (dp12 24 | S'WRAP' 25 | p13 26 | S'NO' 27 | p14 28 | sS'VERS' 29 | p15 30 | S'1.2' 31 | p16 32 | sS'last_caption' 33 | p17 34 | S'~C' 35 | p18 36 | ssS'well' 37 | p19 38 | (dp20 39 | S'LOC' 40 | p21 41 | S'LOCATION' 42 | p22 43 | sS'SRVC' 44 | p23 45 | S'SERVICE COMPANY' 46 | p24 47 | sS'COMP' 48 | p25 49 | S'COMPANY' 50 | p26 51 | sS'WELL' 52 | p27 53 | S'WELL' 54 | p28 55 | sS'STOP' 56 | p29 57 | S'400.0000' 58 | p30 59 | sS'UWI' 60 | p31 61 | S'UNIQUE WELL ID' 62 | p32 63 | sS'STRT' 64 | p33 65 | S'635.0000' 66 | p34 67 | sS'STEP' 68 | p35 69 | S'-0.1250' 70 | p36 71 | sS'PROV' 72 | p37 73 | S'PROVINCE' 74 | p38 75 | sS'DATE' 76 | p39 77 | S'LOG DATE' 78 | p40 79 | sS'NULL' 80 | p41 81 | S'-999.25' 82 | p42 83 | sS'FLD' 84 | p43 85 | S'FIELD' 86 | p44 87 | ssS'logs' 88 | p45 89 | (dp46 90 | S'ILD' 91 | p47 92 | cnumpy.core.multiarray 93 | _reconstruct 94 | p48 95 | (cnumpy 96 | ndarray 97 | p49 98 | (I0 99 | tp50 100 | S'b' 101 | p51 102 | tp52 103 | Rp53 104 | (I1 105 | (I2 106 | tp54 107 | cnumpy 108 | dtype 109 | p55 110 | (S'f8' 111 | p56 112 | I0 113 | I1 114 | tp57 115 | Rp58 116 | (I3 117 | S'<' 118 | p59 119 | NNNI-1 120 | I-1 121 | I0 122 | tp60 123 | bI00 124 | S'\x87\x16\xd9\xce\xf7S\r@\x87\x16\xd9\xce\xf7S\r@' 125 | p61 126 | tp62 127 | bsS'SP' 128 | p63 129 | g48 130 | (g49 131 | (I0 132 | tp64 133 | g51 134 | tp65 135 | Rp66 136 | (I1 137 | (I2 138 | tp67 139 | g58 140 | I00 141 | S'\x9a\x99\x99\x99\x99\xd9^@\x9a\x99\x99\x99\x99\xd9^@' 142 | p68 143 | tp69 144 | bsS'MSFL' 145 | p70 146 | g48 147 | (g49 148 | (I0 149 | tp71 150 | g51 151 | tp72 152 | Rp73 153 | (I1 154 | (I2 155 | tp74 156 | g58 157 | I00 158 | S'N\xd1\x91\\\xfe\x136@N\xd1\x91\\\xfe\x136@' 159 | p75 160 | tp76 161 | bsS'ILM' 162 | p77 163 | g48 164 | (g49 165 | (I0 166 | tp78 167 | g51 168 | tp79 169 | Rp80 170 | (I1 171 | (I2 172 | tp81 173 | g58 174 | I00 175 | S'd]\xdcF\x03X4@d]\xdcF\x03X4@' 176 | p82 177 | tp83 178 | bsS'DEPT' 179 | p84 180 | g48 181 | (g49 182 | (I0 183 | tp85 184 | g51 185 | tp86 186 | Rp87 187 | (I1 188 | (I2 189 | tp88 190 | g58 191 | I00 192 | S'\x00\x00\x00\x00\x00\xd8\x83@\x00\x00\x00\x00\x00\xd7\x83@' 193 | p89 194 | tp90 195 | bsS'SFLA' 196 | p91 197 | g48 198 | (g49 199 | (I0 200 | tp92 201 | g51 202 | tp93 203 | Rp94 204 | (I1 205 | (I2 206 | tp95 207 | g58 208 | I00 209 | S'N\xd1\x91\\\xfe\x136@N\xd1\x91\\\xfe\x136@' 210 | p96 211 | tp97 212 | bsS'RHOB' 213 | p98 214 | g48 215 | (g49 216 | (I0 217 | tp99 218 | g51 219 | tp100 220 | Rp101 221 | (I1 222 | (I2 223 | tp102 224 | g58 225 | I00 226 | S'\x00\x00\x00\x00\x00\xa0\xa1@\x00\x00\x00\x00\x00\xa0\xa1@' 227 | p103 228 | tp104 229 | bsS'NPHI' 230 | p105 231 | g48 232 | (g49 233 | (I0 234 | tp106 235 | g51 236 | tp107 237 | Rp108 238 | (I1 239 | (I2 240 | tp109 241 | g58 242 | I00 243 | S'\xe4\x83\x9e\xcd\xaa\xcf\xd9?\xe4\x83\x9e\xcd\xaa\xcf\xd9?' 244 | p110 245 | tp111 246 | bssS'parameters' 247 | p112 248 | (dp113 249 | s. -------------------------------------------------------------------------------- /pickled_test_data/sample_wrapped.las.pickle: -------------------------------------------------------------------------------- 1 | (dp0 2 | S'curves_order' 3 | p1 4 | (lp2 5 | VDEPT 6 | p3 7 | aVDT 8 | p4 9 | aVRHOB 10 | p5 11 | aVNPHI 12 | p6 13 | aVRX0 14 | p7 15 | aVRESS 16 | p8 17 | aVRESM 18 | p9 19 | aVRESD 20 | p10 21 | aVSP 22 | p11 23 | aVGR 24 | p12 25 | aVCALI 26 | p13 27 | aVDRHO 28 | p14 29 | aVEATT 30 | p15 31 | aVTPL 32 | p16 33 | aVPEF 34 | p17 35 | aVFFI 36 | p18 37 | aVDCAL 38 | p19 39 | aVRHGF 40 | p20 41 | aVRHGA 42 | p21 43 | aVSPBL 44 | p22 45 | aVGRC 46 | p23 47 | aVPHIA 48 | p24 49 | aVPHID 50 | p25 51 | aVPHIE 52 | p26 53 | aVPHIN 54 | p27 55 | aVPHIC 56 | p28 57 | aVR0 58 | p29 59 | aVRWA 60 | p30 61 | aVSW 62 | p31 63 | aVMSI 64 | p32 65 | aVBVW 66 | p33 67 | aVFGAS 68 | p34 69 | aVPIDX 70 | p35 71 | aVFBH 72 | p36 73 | aVFHCC 74 | p37 75 | aVLSWB 76 | p38 77 | asS'version' 78 | p39 79 | (dp40 80 | S'WRAP' 81 | p41 82 | S'YES' 83 | p42 84 | sS'VERS' 85 | p43 86 | S'1.20' 87 | p44 88 | sS'last_caption' 89 | p45 90 | S'~C' 91 | p46 92 | ssS'well' 93 | p47 94 | (dp48 95 | S'LOC' 96 | p49 97 | S'LOCATION' 98 | p50 99 | sS'SRVC' 100 | p51 101 | S'SERVICE COMPANY' 102 | p52 103 | sS'COMP' 104 | p53 105 | S'COMPANY' 106 | p54 107 | sS'WELL' 108 | p55 109 | S'WELL' 110 | p56 111 | sS'STOP' 112 | p57 113 | S'901.000' 114 | p58 115 | sS'UWI' 116 | p59 117 | S'UNIQUE WELL ID' 118 | p60 119 | sS'STRT' 120 | p61 121 | S'910.000' 122 | p62 123 | sS'STEP' 124 | p63 125 | S'-0.1250' 126 | p64 127 | sS'SON' 128 | p65 129 | S'SERVICE ORDER' 130 | p66 131 | sS'PROV' 132 | p67 133 | S'PROVINCE' 134 | p68 135 | sS'DATE' 136 | p69 137 | S'LOG DATE' 138 | p70 139 | sS'NULL' 140 | p71 141 | S'-999.2500' 142 | p72 143 | sS'FLD' 144 | p73 145 | S'FIELD' 146 | p74 147 | ssS'logs' 148 | p75 149 | (dp76 150 | S'PIDX' 151 | p77 152 | cnumpy.core.multiarray 153 | _reconstruct 154 | p78 155 | (cnumpy 156 | ndarray 157 | p79 158 | (I0 159 | tp80 160 | S'b' 161 | p81 162 | tp82 163 | Rp83 164 | (I1 165 | (I5 166 | tp84 167 | cnumpy 168 | dtype 169 | p85 170 | (S'f8' 171 | p86 172 | I0 173 | I1 174 | tp87 175 | Rp88 176 | (I3 177 | S'<' 178 | p89 179 | NNNI-1 180 | I-1 181 | I0 182 | tp90 183 | bI00 184 | S'\x9d\x80&\xc2\x86G&@\xd3\xbc\xe3\x14\x1dI,@4\x80\xb7@\x82"-@\xb8\x1e\x85\xebQ\xb8\'@\xf0\x16HP\xfc\xf8 @' 185 | p91 186 | tp92 187 | bsS'MSI' 188 | p93 189 | g78 190 | (g79 191 | (I0 192 | tp94 193 | g81 194 | tp95 195 | Rp96 196 | (I1 197 | (I5 198 | tp97 199 | g88 200 | I00 201 | S'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' 202 | p98 203 | tp99 204 | bsS'PEF' 205 | p100 206 | g78 207 | (g79 208 | (I0 209 | tp101 210 | g81 211 | tp102 212 | Rp103 213 | (I1 214 | (I5 215 | tp104 216 | g88 217 | I00 218 | S'P\x8d\x97n\x12\x03\n@h"lxz\xa5\r@\xe4\x14\x1d\xc9\xe5?\x11@\xf3\x1f\xd2o_\x87\x11@\x83/L\xa6\n\xc6\x0c@' 219 | p105 220 | tp106 221 | bsS'DT' 222 | p107 223 | g78 224 | (g79 225 | (I0 226 | tp108 227 | g81 228 | tp109 229 | Rp110 230 | (I1 231 | (I5 232 | tp111 233 | g88 234 | I00 235 | S'\x00\x00\x00\x00\x00:\x8f\xc0\x00\x00\x00\x00\x00:\x8f\xc0\x00\x00\x00\x00\x00:\x8f\xc0\x00\x00\x00\x00\x00:\x8f\xc0\x00\x00\x00\x00\x00:\x8f\xc0' 236 | p112 237 | tp113 238 | bsS'FHCC' 239 | p114 240 | g78 241 | (g79 242 | (I0 243 | tp115 244 | g81 245 | tp116 246 | Rp117 247 | (I1 248 | (I5 249 | tp118 250 | g88 251 | I00 252 | S'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' 253 | p119 254 | tp120 255 | bsS'PHIE' 256 | p121 257 | g78 258 | (g79 259 | (I0 260 | tp122 261 | g81 262 | tp123 263 | Rp124 264 | (I1 265 | (I5 266 | tp125 267 | g88 268 | I00 269 | S"S\x05\xa3\x92:\x01\xc5?\xc2\x17&S\x05\xa3\xc2?\x91\xed|?5^\xc2?'1\x08\xac\x1cZ\xc4?\xaa\xf1\xd2Mb\x10\xc8?" 270 | p126 271 | tp127 272 | bsS'SPBL' 273 | p128 274 | g78 275 | (g79 276 | (I0 277 | tp129 278 | g81 279 | tp130 280 | Rp131 281 | (I1 282 | (I5 283 | tp132 284 | g88 285 | I00 286 | S'j\xbct\x93\x18\x04\xf8\xbfZd;\xdfO\x8d\xf7\xbfr\xf9\x0f\xe9\xb7\xaf\xf7\xbfj\xbct\x93\x18\x04\xf8\xbf\xe8j+\xf6\x97\xdd\xf7\xbf' 287 | p133 288 | tp134 289 | bsS'PHIC' 290 | p135 291 | g78 292 | (g79 293 | (I0 294 | tp136 295 | g81 296 | tp137 297 | Rp138 298 | (I1 299 | (I5 300 | tp139 301 | g88 302 | I00 303 | S"S\x05\xa3\x92:\x01\xc5?\xc2\x17&S\x05\xa3\xc2?\x91\xed|?5^\xc2?'1\x08\xac\x1cZ\xc4?\xaa\xf1\xd2Mb\x10\xc8?" 304 | p140 305 | tp141 306 | bsS'PHIA' 307 | p142 308 | g78 309 | (g79 310 | (I0 311 | tp143 312 | g81 313 | tp144 314 | Rp145 315 | (I1 316 | (I5 317 | tp146 318 | g88 319 | I00 320 | S"S\x05\xa3\x92:\x01\xc5?\xc2\x17&S\x05\xa3\xc2?\x91\xed|?5^\xc2?'1\x08\xac\x1cZ\xc4?\xaa\xf1\xd2Mb\x10\xc8?" 321 | p147 322 | tp148 323 | bsS'PHIN' 324 | p149 325 | g78 326 | (g79 327 | (I0 328 | tp150 329 | g81 330 | tp151 331 | Rp152 332 | (I1 333 | (I5 334 | tp153 335 | g88 336 | I00 337 | S'\x7fj\xbct\x93\x18\xd4?\xd5\th"lx\xd2?F\xb6\xf3\xfd\xd4x\xd1?\x19\x04V\x0e-\xb2\xd1?"lxz\xa5,\xd3?' 338 | p154 339 | tp155 340 | bsS'DEPT' 341 | p156 342 | g78 343 | (g79 344 | (I0 345 | tp157 346 | g81 347 | tp158 348 | Rp159 349 | (I1 350 | (I5 351 | tp160 352 | g88 353 | I00 354 | S'\x00\x00\x00\x00\x00p\x8c@\x00\x00\x00\x00\x00o\x8c@\x00\x00\x00\x00\x00n\x8c@\x00\x00\x00\x00\x00m\x8c@\x00\x00\x00\x00\x00l\x8c@' 355 | p161 356 | tp162 357 | bsS'RX0' 358 | p163 359 | g78 360 | (g79 361 | (I0 362 | tp164 363 | g81 364 | tp165 365 | Rp166 366 | (I1 367 | (I5 368 | tp167 369 | g88 370 | I00 371 | S'F%u\x02\x9ah3@K\xea\x044\x11f7@\xd74\xef8E\x976@\x96\xb2\x0cq\xac{2@\x9f\xab\xad\xd8_\xd6+@' 372 | p168 373 | tp169 374 | bsS'R0' 375 | p170 376 | g78 377 | (g79 378 | (I0 379 | tp171 380 | g81 381 | tp172 382 | Rp173 383 | (I1 384 | (I5 385 | tp174 386 | g88 387 | I00 388 | S'\x9d\x80&\xc2\x86G&@\xd3\xbc\xe3\x14\x1dI,@4\x80\xb7@\x82"-@\xb8\x1e\x85\xebQ\xb8\'@\xf0\x16HP\xfc\xf8 @' 389 | p175 390 | tp176 391 | bsS'GR' 392 | p177 393 | g78 394 | (g79 395 | (I0 396 | tp178 397 | g81 398 | tp179 399 | Rp180 400 | (I1 401 | (I5 402 | tp181 403 | g88 404 | I00 405 | S'}\xd0\xb3Y\xf5!X@gDio\xf0\x91V@\xd8\xf0\xf4JYvV@\xe8j+\xf6\x97YW@\x00o\x81\x04\xc5\x87X@' 406 | p182 407 | tp183 408 | bsS'RESS' 409 | p184 410 | g78 411 | (g79 412 | (I0 413 | tp185 414 | g81 415 | tp186 416 | Rp187 417 | (I1 418 | (I5 419 | tp188 420 | g88 421 | I00 422 | S'F%u\x02\x9ah3@K\xea\x044\x11f7@\xd74\xef8E\x976@\x96\xb2\x0cq\xac{2@\x9f\xab\xad\xd8_\xd6+@' 423 | p189 424 | tp190 425 | bsS'TPL' 426 | p191 427 | g78 428 | (g79 429 | (I0 430 | tp192 431 | g81 432 | tp193 433 | Rp194 434 | (I1 435 | (I5 436 | tp195 437 | g88 438 | I00 439 | S'\x00\x00\x00\x00\x00:\x8f\xc0\x00\x00\x00\x00\x00:\x8f\xc0\x00\x00\x00\x00\x00:\x8f\xc0\x00\x00\x00\x00\x00:\x8f\xc0\x00\x00\x00\x00\x00:\x8f\xc0' 440 | p196 441 | tp197 442 | bsS'DCAL' 443 | p198 444 | g78 445 | (g79 446 | (I0 447 | tp199 448 | g81 449 | tp200 450 | Rp201 451 | (I1 452 | (I5 453 | tp202 454 | g88 455 | I00 456 | S'W[\xb1\xbf\xec\xde\x12@V\x9f\xab\xad\xd8\xdf\x08@$\xb9\xfc\x87\xf4\xdb\xfe?\xc3d\xaa`TR\xf9?\xd7\x12\xf2A\xcff\xfb?' 457 | p203 458 | tp204 459 | bsS'LSWB' 460 | p205 461 | g78 462 | (g79 463 | (I0 464 | tp206 465 | g81 466 | tp207 467 | Rp208 468 | (I1 469 | (I5 470 | tp209 471 | g88 472 | I00 473 | S'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' 474 | p210 475 | tp211 476 | bsS'PHID' 477 | p212 478 | g78 479 | (g79 480 | (I0 481 | tp213 482 | g81 483 | tp214 484 | Rp215 485 | (I1 486 | (I5 487 | tp216 488 | g88 489 | I00 490 | S'\x01M\x84\rO\xaf\x84?\xfa~j\xbct\x93X\xbf\x01M\x84\rO\xaf\x84?a2U0*\xa9\xa3?n4\x80\xb7@\x82\xb2?' 491 | p217 492 | tp218 493 | bsS'GRC' 494 | p219 495 | g78 496 | (g79 497 | (I0 498 | tp220 499 | g81 500 | tp221 501 | Rp222 502 | (I1 503 | (I5 504 | tp223 505 | g88 506 | I00 507 | S'\xe2X\x17\xb7\xd1HW@\xc3\xd3+e\x19\xbaU@\x19\x04V\x0e-\x96U@h\xb3\xeas\xb5mV@\x0c\x02+\x87\x16\x91W@' 508 | p224 509 | tp225 510 | bsS'RESM' 511 | p226 512 | g78 513 | (g79 514 | (I0 515 | tp227 516 | g81 517 | tp228 518 | Rp229 519 | (I1 520 | (I5 521 | tp230 522 | g88 523 | I00 524 | S'\xd6\xc5m4\x80W*@\xd2o_\x07\xce9+@\x054\x116<]+@\x14\xd0D\xd8\xf0\xd4*@\x10X9\xb4\xc8\xd6)@' 525 | p231 526 | tp232 527 | bsS'RHOB' 528 | p233 529 | g78 530 | (g79 531 | (I0 532 | tp234 533 | g81 534 | tp235 535 | Rp236 536 | (I1 537 | (I5 538 | tp237 539 | g88 540 | I00 541 | S'\xd7\xa3p=j\t\xa5@o\x12\x83\xc0J1\xa5@\x83QI\x9d\xa0\t\xa5@\x14\xaeG\xe1\xba\xa8\xa4@\xdd\xb5\x84|\x904\xa4@' 542 | p238 543 | tp239 544 | bsS'RESD' 545 | p240 546 | g78 547 | (g79 548 | (I0 549 | tp241 550 | g81 551 | tp242 552 | Rp243 553 | (I1 554 | (I5 555 | tp244 556 | g88 557 | I00 558 | S'~\x1d8gD\x89(@\xdeq\x8a\x8e\xe4\xf2(@B>\xe8\xd9\xac:)@\xe1z\x14\xaeGa)@H\xbf}\x1d8g)@' 559 | p245 560 | tp246 561 | bsS'RWA' 562 | p247 563 | g78 564 | (g79 565 | (I0 566 | tp248 567 | g81 568 | tp249 569 | Rp250 570 | (I1 571 | (I5 572 | tp251 573 | g88 574 | I00 575 | S'0L\xa6\nF%\xd5?\xe5a\xa1\xd64\xef\xd0?\x1b\r\xe0-\x90\xa0\xd0?%\x06\x81\x95C\x8b\xd4?#\xdb\xf9~j\xbc\xdc?' 576 | p252 577 | tp253 578 | bsS'BVW' 579 | p254 580 | g78 581 | (g79 582 | (I0 583 | tp255 584 | g81 585 | tp256 586 | Rp257 587 | (I1 588 | (I5 589 | tp258 590 | g88 591 | I00 592 | S'M\x15\x8cJ\xea\x04\xc4?\xc2\x17&S\x05\xa3\xc2?\x91\xed|?5^\xc2?r\xf9\x0f\xe9\xb7\xaf\xc3?\xea\x95\xb2\x0cq\xac\xc3?' 593 | p259 594 | tp260 595 | bsS'EATT' 596 | p261 597 | g78 598 | (g79 599 | (I0 600 | tp262 601 | g81 602 | tp263 603 | Rp264 604 | (I1 605 | (I5 606 | tp265 607 | g88 608 | I00 609 | S'\x00\x00\x00\x00\x00:\x8f\xc0\x00\x00\x00\x00\x00:\x8f\xc0\x00\x00\x00\x00\x00:\x8f\xc0\x00\x00\x00\x00\x00:\x8f\xc0\x00\x00\x00\x00\x00:\x8f\xc0' 610 | p266 611 | tp267 612 | bsS'SP' 613 | p268 614 | g78 615 | (g79 616 | (I0 617 | tp269 618 | g81 619 | tp270 620 | Rp271 621 | (I1 622 | (I5 623 | tp272 624 | g88 625 | I00 626 | S'j\xbct\x93\x18\x04\xf8\xbfZd;\xdfO\x8d\xf7\xbfr\xf9\x0f\xe9\xb7\xaf\xf7\xbfj\xbct\x93\x18\x04\xf8\xbf\xe8j+\xf6\x97\xdd\xf7\xbf' 627 | p273 628 | tp274 629 | bsS'SW' 630 | p275 631 | g78 632 | (g79 633 | (I0 634 | tp276 635 | g81 636 | tp277 637 | Rp278 638 | (I1 639 | (I5 640 | tp279 641 | g88 642 | I00 643 | S'\x03x\x0b$(~\xee?\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?\xe5a\xa1\xd64\xef\xee?G\x03x\x0b$(\xea?' 644 | p280 645 | tp281 646 | bsS'FGAS' 647 | p282 648 | g78 649 | (g79 650 | (I0 651 | tp283 652 | g81 653 | tp284 654 | Rp285 655 | (I1 656 | (I5 657 | tp286 658 | g88 659 | I00 660 | S'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' 661 | p287 662 | tp288 663 | bsS'CALI' 664 | p289 665 | g78 666 | (g79 667 | (I0 668 | tp290 669 | g81 670 | tp291 671 | Rp292 672 | (I1 673 | (I5 674 | tp293 675 | g88 676 | I00 677 | S'\xdb\x8a\xfde\xf7\x96i@}\xae\xb6b\x7fci@r\xf9\x0f\xe9\xb7=i@\xcaT\xc1\xa8\xa42i@&\xe4\x83\x9e\xcd6i@' 678 | p294 679 | tp295 680 | bsS'RHGA' 681 | p296 682 | g78 683 | (g79 684 | (I0 685 | tp297 686 | g81 687 | tp298 688 | Rp299 689 | (I1 690 | (I5 691 | tp300 692 | g88 693 | I00 694 | S';\x01M\x84\r\xa2\xa7@)\\\x8f\xc25y\xa7@\xe6\xae%\xe4\xe3@\xa7@\x0f\x9c3\xa2\xb4\x16\xa7@\xa6\x9b\xc4 0\x13\xa7@' 695 | p301 696 | tp302 697 | bsS'RHGF' 698 | p303 699 | g78 700 | (g79 701 | (I0 702 | tp304 703 | g81 704 | tp305 705 | Rp306 706 | (I1 707 | (I5 708 | tp307 709 | g88 710 | I00 711 | S';\x01M\x84\r\xa2\xa7@)\\\x8f\xc25y\xa7@\xe6\xae%\xe4\xe3@\xa7@\x0f\x9c3\xa2\xb4\x16\xa7@\xa6\x9b\xc4 0\x13\xa7@' 712 | p308 713 | tp309 714 | bsS'FFI' 715 | p310 716 | g78 717 | (g79 718 | (I0 719 | tp311 720 | g81 721 | tp312 722 | Rp313 723 | (I1 724 | (I5 725 | tp314 726 | g88 727 | I00 728 | S'\x00\x00\x00\x00\x00:\x8f\xc0\x00\x00\x00\x00\x00:\x8f\xc0\x00\x00\x00\x00\x00:\x8f\xc0\x00\x00\x00\x00\x00:\x8f\xc0\x00\x00\x00\x00\x00:\x8f\xc0' 729 | p315 730 | tp316 731 | bsS'FBH' 732 | p317 733 | g78 734 | (g79 735 | (I0 736 | tp318 737 | g81 738 | tp319 739 | Rp320 740 | (I1 741 | (I5 742 | tp321 743 | g88 744 | I00 745 | S'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' 746 | p322 747 | tp323 748 | bsS'DRHO' 749 | p324 750 | g78 751 | (g79 752 | (I0 753 | tp325 754 | g81 755 | tp326 756 | Rp327 757 | (I1 758 | (I5 759 | tp328 760 | g88 761 | I00 762 | S"0\xbb'\x0f\x0b\x95>@R'\xa0\x89\xb0\xc12@v\xe0\x9c\x11\xa5=\t@\x0e\xbe0\x99*X\x1a\xc0_)\xcb\x10\xc7:\x12\xc0" 763 | p329 764 | tp330 765 | bsS'NPHI' 766 | p331 767 | g78 768 | (g79 769 | (I0 770 | tp332 771 | g81 772 | tp333 773 | Rp334 774 | (I1 775 | (I5 776 | tp335 777 | g88 778 | I00 779 | S'\x7fj\xbct\x93\x18\xd4?\xd5\th"lx\xd2?F\xb6\xf3\xfd\xd4x\xd1?\x19\x04V\x0e-\xb2\xd1?"lxz\xa5,\xd3?' 780 | p336 781 | tp337 782 | bssS'parameters' 783 | p338 784 | (dp339 785 | s. -------------------------------------------------------------------------------- /pylasdev/__init__.py: -------------------------------------------------------------------------------- 1 | from las_reader import * 2 | from dev_reader import * 3 | from las_compare import * 4 | from las_writer import * 5 | -------------------------------------------------------------------------------- /pylasdev/dev_reader.py: -------------------------------------------------------------------------------- 1 | import re 2 | import numpy 3 | 4 | # Wells Path/Deviation file reader 5 | 6 | def read_dev_file(filename): 7 | 8 | # ----- 9 | 10 | # Pre-calc for lines counting and arrays pre-init 11 | 12 | file = open(filename) 13 | 14 | lines_count = -1 # minus data names line 15 | 16 | while 1: 17 | 18 | lines = file.readlines(100000) 19 | 20 | if not lines: 21 | break 22 | for line in lines: 23 | line = line.lstrip() 24 | if len(line) > 0: # skipping empty line 25 | if line[0] != '#': # skipping comment line 26 | lines_count += 1 27 | file.close() 28 | 29 | # --- 30 | 31 | # Actual reading 32 | 33 | file = open(filename) 34 | header_line_founded = False 35 | 36 | dev_dict = {} 37 | names = [] 38 | 39 | current_data_line = 0 40 | 41 | while 1: 42 | 43 | lines = file.readlines(100000) 44 | 45 | if not lines: 46 | break 47 | for line in lines: 48 | line = line.lstrip() 49 | if len(line) > 0: # skipping empty line 50 | if line[0] != '#': # skipping comment line 51 | line = re.sub(r'\n','',line) # remove \n 52 | line = line.lstrip() # remove whitespaces from the beginning 53 | values = re.split(r'[ \t]+', line) # split line in tokens by spaces and tabs 54 | 55 | if header_line_founded == False: 56 | names = values 57 | for name in values: 58 | # dev_dict[name] = numpy.array([]) 59 | dev_dict[name] = numpy.zeros(lines_count) 60 | header_line_founded = True 61 | else: 62 | for k in xrange(len(values)): 63 | dev_dict [ names[k] ][current_data_line] = float(values[k]) 64 | current_data_line += 1 65 | return dev_dict 66 | 67 | 68 | -------------------------------------------------------------------------------- /pylasdev/las_compare.py: -------------------------------------------------------------------------------- 1 | import numpy 2 | 3 | def compare_las_dicts(old, new): 4 | for key in new.keys(): 5 | 6 | # check that old one have the key 7 | if key not in old: 8 | print "Error! ", key, " key not found in the 2nd dict." 9 | return False 10 | 11 | # parsing internal dict 12 | if(type(new[key]) is dict): 13 | 14 | for in_key in new[key].keys(): 15 | # comparing numpy arrays 16 | if type(new[key][in_key]) is numpy.ndarray: 17 | 18 | # size compare 19 | if old[key][in_key].size != new[key][in_key].size: 20 | print "Error! Numpy arrays sizes in 1st and 2nd dicts are not the same: ", key, in_key 21 | return False 22 | 23 | # values compare 24 | if not all(old[key][in_key] == new[key][in_key]): 25 | print "Error! Numpy arrays values in 1st and 2nd dicts are not the same: ", key, in_key 26 | print "1st dict values: ", [ old[key][in_key] ] 27 | print "2nd dict values: ", [ new[key][in_key] ] 28 | return False 29 | else: 30 | # any other type 31 | if old[key][in_key] != new[key][in_key]: 32 | print "Error! Internal dict ", key, " not the same in 1st and 2nd dicts." 33 | print "1st dict value: ", [ old[key][in_key] ] 34 | print "2nd dict value: ", [ new[key][in_key] ] 35 | return False 36 | # internal non-dicts 37 | else: 38 | if type(new[key]) is numpy.ndarray: 39 | 40 | # size compare 41 | if old[key].size != new[key].size: 42 | print "Error! Numpy arrays sizes in 1st and 2nd dicts are not the same: ", key 43 | return False 44 | 45 | # values compare 46 | if not all(old[key] == new[key]): 47 | print "Error! Numpy arrays values in 1st and 2nd dicts are not the same: ", key 48 | print "1st dict values: ", [ old[key] ] 49 | print "2nd dict values: ", [ new[key] ] 50 | return False 51 | else: 52 | if old[key] != new[key]: 53 | print "Error! Not matched: ", key 54 | print "1st dict value: ", [ old[key] ] 55 | print "2nd dict value: ", [ new[key] ] 56 | return False 57 | 58 | # everything is ok :) 59 | return True 60 | 61 | 62 | 63 | # Test 64 | 65 | """ 66 | dict1 = {} 67 | dict2 = {} 68 | 69 | dict1['A'] = 'A' 70 | dict1['B'] = 'B' 71 | dict1['C'] = 'C' 72 | 73 | dict2['A'] = 'A' 74 | dict2['B'] = 'B' 75 | dict2['C'] = 'C' 76 | 77 | dict1['D1'] = {} 78 | dict2['D1'] = {} 79 | 80 | dict1['D1']['A'] = 'A' 81 | dict2['D1']['A'] = 'B' 82 | 83 | dict1['D1']['AR'] = numpy.array([1,2,3,5]) 84 | dict2['D1']['AR'] = numpy.array([1,2,3,2]) 85 | 86 | print compare_las_dicts(dict1, dict2) 87 | """ 88 | 89 | -------------------------------------------------------------------------------- /pylasdev/las_lex_pars2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import ply.lex as lex 4 | import ply.yacc as yacc 5 | import re 6 | import numpy 7 | 8 | 9 | # This is a Lexer and Parser for LAS 1.2/2.0 files header 10 | 11 | las_info = {} 12 | gmnem_base = None 13 | 14 | las_info['version'] = {} 15 | las_info['well'] = {} 16 | las_info['parameters'] = {} 17 | las_info['logs'] = {} 18 | las_info['curves_order'] = [] 19 | 20 | # -- Lexer 21 | 22 | tokens = ( 23 | 'SYMBOL', 24 | 'DOT', 25 | 'COLON', 26 | 'WS', 27 | 'TILD', 28 | 'SHARP' 29 | ) 30 | 31 | t_SYMBOL = r'(?u)[_А-Яа-яa-zA-Z0-9\-]' 32 | t_DOT = r'\.' 33 | t_COLON = r':' 34 | t_WS = r'[\s\t]+' 35 | t_TILD = r'~' 36 | t_SHARP = r'\#' 37 | 38 | def t_newline(t): 39 | r'\n+' 40 | t.lexer.lineno += len(t.value) 41 | 42 | t_ignore = '' 43 | 44 | def t_error(t): 45 | # print "Illegal character '%s'" % t.value[0] 46 | t.lexer.skip(1) 47 | 48 | # -- Parser 49 | 50 | start = "line" 51 | 52 | def p_line(t): 53 | """line : opt_wss name wss value COLON opt_wss comment 54 | | opt_wss name wss COLON opt_wss comment 55 | | opt_wss name wss value COLON opt_wss 56 | | opt_wss name wss value 57 | | caption 58 | | empty 59 | 60 | """ 61 | 62 | if t[1] == None: # empty line 63 | pass 64 | 65 | if len(t) == 2: # caption of the section 66 | if(t[1][0] == '~'): 67 | las_info['version']['last_caption'] = t[1] 68 | 69 | elif las_info['version']['last_caption'] == '~C': # curve section 70 | t[2] = re.sub("\s+", "", t[2]) 71 | 72 | if gmnem_base is not None: 73 | if(gmnem_base.has_key(t[2])): 74 | # print "Curve name ", t[2], " founded in mnemonics database... Replacing with ", gmnem_base[ t[2] ] 75 | t[2] = gmnem_base[ t[2] ] 76 | 77 | las_info['curves_order'].append( t[2] ) 78 | 79 | 80 | if re.sub(r'\s+','',las_info['version']['WRAP']) == 'NO': 81 | las_info['logs'][ t[2] ] = numpy.zeros(lines_count) 82 | else: 83 | las_info['logs'][ t[2] ] = numpy.array([]) 84 | 85 | 86 | elif las_info['version']['last_caption'] == '~V': # version section 87 | t[2] = re.sub("\s+", "", t[2]) 88 | las_info['version'][t[2]] = t[4].lstrip().rstrip() 89 | 90 | elif las_info['version']['last_caption'] == '~W': # well section 91 | t[2] = re.sub("\s+", "", t[2]) 92 | t[4] = t[4].lstrip().rstrip() 93 | 94 | if t[4] == ':': 95 | # empty value case 96 | las_info['well'][t[2]] = '' 97 | else: 98 | las_info['well'][t[2]] = t[4] 99 | 100 | elif las_info['version']['last_caption'] == '~P': # parameters section 101 | t[2] = re.sub("\s+", "", t[2]) 102 | t[4] = t[4].lstrip().rstrip() 103 | if t[4] == ':': 104 | # empty value case 105 | las_info['parameters'][unicode(t[2])] = '' 106 | else: 107 | las_info['parameters'][unicode(t[2])] = t[4] 108 | 109 | elif las_info['version']['last_caption'] == '~O': # other section 110 | pass 111 | 112 | def p_optional_wss(t): 113 | """opt_wss : wss 114 | | empty""" 115 | t[0] = t[1] 116 | # print "OWSS", t[0] 117 | 118 | 119 | def p_name(t): 120 | """name : first_part DOT second_part 121 | | first_part DOT""" 122 | # if (len(t) == 4): 123 | # t[0] = t[1] + t[2] + t[3] 124 | # else: 125 | # t[0] = t[1] + t[2] 126 | t[0] = t[1] 127 | # print "N", t[0] 128 | 129 | def p_first_part(t): 130 | """first_part : first_part first_part_term 131 | | SYMBOL""" 132 | if len(t) == 3: 133 | t[0] = t[1] + t[2] 134 | else: 135 | t[0] = t[1] 136 | # print "FP", t[0] 137 | 138 | def p_first_part_term(t): 139 | """first_part_term : SYMBOL 140 | | WS""" 141 | t[0] = t[1] 142 | 143 | #def p_line_comment(t): 144 | # """line_comment : anys 145 | # | caption anys""" 146 | # pass 147 | 148 | def p_second_part(t): 149 | """second_part : second_part SYMBOL 150 | | SYMBOL""" 151 | if len(t) == 3: 152 | t[0] = t[1] + t[2] 153 | else: 154 | t[0] = t[1] 155 | # print "SP", t[0] 156 | 157 | def p_wss(t): 158 | """wss : wss WS 159 | | WS""" 160 | if len(t) == 3: 161 | t[0] = t[1] + t[2] 162 | else: 163 | t[0] = t[1] 164 | # print "WSS", t[0] 165 | 166 | 167 | def p_value(t): 168 | """value_1 : SYMBOL 169 | | DOT 170 | | SHARP 171 | value_rest : SYMBOL 172 | | DOT 173 | | WS 174 | | SHARP 175 | value : value value_rest 176 | | value_1""" 177 | if len(t) == 3: 178 | t[0] = t[1] + t[2] 179 | else: 180 | t[0] = t[1] 181 | # print "VL ", t[0] 182 | 183 | def p_comment(t): 184 | """comment_symbol_1 : SYMBOL 185 | | DOT 186 | | SHARP 187 | | empty 188 | comment_symbol : SYMBOL 189 | | DOT 190 | | WS 191 | | COLON 192 | | SHARP 193 | comment : comment comment_symbol 194 | | comment_symbol_1""" 195 | if len(t) == 3: 196 | t[0] = t[1] + t[2] 197 | else: 198 | t[0] = t[1] 199 | # print "COMMENT ", t[0] 200 | 201 | 202 | def p_empty(t): 203 | 'empty :' 204 | pass 205 | 206 | 207 | def p_caption(t): 208 | 'caption : TILD comment' 209 | t[0] = t[1] + t[2][0] 210 | 211 | def p_error(t): 212 | print "Syntax error at '%s'" % t 213 | # print t.lexpos, t.type 214 | 215 | lexer = lex.lex(reflags=re.UNICODE) 216 | yacc.yacc(start="line") 217 | 218 | # We need this function to know the number of lines in file inside of the parser (for ASCII LOGS arrays initialization in !wrapped mode) 219 | 220 | def parse_line(line, l_count, mnem_base): 221 | global lines_count 222 | lines_count = l_count 223 | global gmnem_base 224 | gmnem_base = mnem_base 225 | lexer.input(line) 226 | yacc.parse(line) 227 | -------------------------------------------------------------------------------- /pylasdev/las_lex_pars3.py: -------------------------------------------------------------------------------- 1 | import ply.lex as lex 2 | import ply.yacc as yacc 3 | import re 4 | import numpy 5 | 6 | las_info = {} 7 | 8 | parse_error = True 9 | 10 | las_info['version'] = {} 11 | las_info['well'] = {} 12 | las_info['parameters'] = {} 13 | las_info['logs'] = {} 14 | las_info['curves_order'] = [] 15 | 16 | # Lexer 17 | 18 | tokens = ( 19 | 'SYMBOL', 20 | 'DOT', 21 | 'COLON', 22 | 'WS', 23 | 'TILD', 24 | 'SHARP', 25 | 'BAR' 26 | ) 27 | 28 | t_SYMBOL = r'[a-zA-Z0-9\-\]\[]' 29 | t_DOT = r'\.' 30 | t_COLON = r':' 31 | t_WS = r'[\s\t]+' 32 | t_TILD = r'~' 33 | t_SHARP = r'\#' 34 | t_BAR = r'\|' 35 | 36 | def t_newline(t): 37 | r'\n+' 38 | t.lexer.lineno += len(t.value) 39 | 40 | t_ignore = '' 41 | 42 | def t_error(t): 43 | # print "Illegal character '%s'" % t.value[0] 44 | t.lexer.skip(1) 45 | 46 | # Parser 47 | 48 | start = "line" 49 | 50 | def p_line(t): 51 | """line : opt_wss name wss value COLON opt_wss comment 52 | | opt_wss name wss COLON opt_wss comment 53 | | opt_wss name wss value COLON opt_wss 54 | | opt_wss name wss value 55 | | opt_wss name wss COLON opt_wss comment BAR opt_wss second_part opt_wss 56 | | opt_wss name wss value COLON opt_wss comment BAR opt_wss second_part opt_wss 57 | | opt_wss name wss value COLON opt_wss BAR opt_wss second_part opt_wss 58 | | opt_wss name wss value BAR opt_wss second_part opt_wss 59 | | caption 60 | | empty 61 | 62 | """ 63 | 64 | if t[1] == None: # empty line 65 | pass 66 | 67 | if len(t) == 2: # caption of the section 68 | if(t[1][0] == '~'): 69 | las_info['version']['last_caption'] = t[1] 70 | elif las_info['version']['last_caption'][:2] == '~C': # curve section 71 | t[2] = re.sub("\s+", "", t[2]) 72 | # if re.sub(r'\s+','',las_info['version']['WRAP']) == 'NO': 73 | # las_info['logs'][ t[2] ] = numpy.zeros(lines_count) 74 | # else: 75 | # las_info['logs'][ t[2] ] = numpy.array([]) 76 | las_info['curves_order'].append( t[2] ) 77 | elif las_info['version']['last_caption'][:2] == '~V': # version section 78 | t[2] = re.sub("\s+", "", t[2]) 79 | t[4] = re.sub(' ', '', t[4]) 80 | 81 | las_info['version'][t[2]] = t[4] 82 | 83 | if(t[2] == 'WRAP' and t[4] == 'YES'): 84 | print "Warning! WRAP mode not allowed in LAS 3.0 specification. Reading file as non-WRAPped..." 85 | 86 | if(t[2] == 'DLM'): 87 | if t[4] != 'SPACE' and t[4] != 'COMMA' and t[4] != 'TAB': 88 | print "Error! Unknown DLM value: ", t[4], "(Must be SPACE, COMMA or TAB)" 89 | global parse_error 90 | parse_error = False 91 | 92 | # TODO: find out what DLM format will be used 93 | 94 | # if(t[2] == 'DLM'): 95 | # if(t[4] == 'SPACE'): 96 | # las_info['version']['DLM'] = ' ' 97 | # elif(t[4] == 'COMMA'): 98 | # las_info['version']['DLM'] = '.' 99 | # elif(t[4] == 'TAB'): 100 | # las_info['version']['DLM'] = '.' 101 | 102 | 103 | elif las_info['version']['last_caption'][:2] == '~W': # well section 104 | t[2] = re.sub("\s+", "", t[2]) 105 | t[4] = t[4].lstrip().rstrip() 106 | if(t[4] == ':'): 107 | las_info['well'][t[2]] = '' 108 | else: 109 | las_info['well'][t[2]] = t[4] 110 | elif las_info['version']['last_caption'][:2] == '~P': # parameters section 111 | t[2] = re.sub("\s+", "", t[2]) 112 | t[4] = t[4].lstrip().rstrip() 113 | if len(t) == 8: 114 | for tok in t: print tok 115 | las_info['parameters'][t[6]][t[2]] = t[4] 116 | elif len(t) == 10: 117 | las_info['parameters'][t[8]][t[2]] = t[4] 118 | elif len(t) == 11: 119 | las_info['parameters'][t[9]][t[2]] = t[4] 120 | else: 121 | las_info['parameters'][t[2]] = t[4] 122 | # elif las_info['version']['last_caption'] == '~O': # other section 123 | # pass 124 | 125 | def p_optional_wss(t): 126 | """opt_wss : wss 127 | | empty""" 128 | t[0] = t[1] 129 | # print "OWSS", t[0] 130 | 131 | 132 | def p_name(t): 133 | """name : first_part DOT second_part 134 | | first_part DOT""" 135 | # if (len(t) == 4): 136 | # t[0] = t[1] + t[2] + t[3] 137 | # else: 138 | # t[0] = t[1] + t[2] 139 | t[0] = t[1] 140 | # print "N", t[0] 141 | 142 | def p_first_part(t): 143 | """first_part : first_part first_part_term 144 | | SYMBOL""" 145 | if len(t) == 3: 146 | t[0] = t[1] + t[2] 147 | else: 148 | t[0] = t[1] 149 | # print "FP", t[0] 150 | 151 | def p_first_part_term(t): 152 | """first_part_term : SYMBOL 153 | | WS""" 154 | t[0] = t[1] 155 | 156 | #def p_line_comment(t): 157 | # """line_comment : anys 158 | # | caption anys""" 159 | # pass 160 | 161 | def p_second_part(t): 162 | """second_part : second_part SYMBOL 163 | | SYMBOL""" 164 | if len(t) == 3: 165 | t[0] = t[1] + t[2] 166 | else: 167 | t[0] = t[1] 168 | # print "SP", t[0] 169 | 170 | def p_wss(t): 171 | """wss : wss WS 172 | | WS""" 173 | if len(t) == 3: 174 | t[0] = t[1] + t[2] 175 | else: 176 | t[0] = t[1] 177 | # print "WSS", t[0] 178 | 179 | 180 | def p_value(t): 181 | """value_1 : SYMBOL 182 | | DOT 183 | value_rest : SYMBOL 184 | | DOT 185 | | WS 186 | value : value value_rest 187 | | value_1""" 188 | if len(t) == 3: 189 | t[0] = t[1] + t[2] 190 | else: 191 | t[0] = t[1] 192 | # print "VL ", t[0] 193 | 194 | def p_comment(t): 195 | """comment_symbol_1 : SYMBOL 196 | | DOT 197 | comment_symbol : SYMBOL 198 | | DOT 199 | | WS 200 | | COLON 201 | | SHARP 202 | comment : comment comment_symbol 203 | | comment_symbol_1""" 204 | if len(t) == 3: 205 | t[0] = t[1] + t[2] 206 | else: 207 | t[0] = t[1] 208 | # print "COMMENT ", t[0] 209 | 210 | 211 | def p_empty(t): 212 | 'empty :' 213 | pass 214 | 215 | 216 | def p_caption(t): 217 | 'caption : TILD comment' 218 | t[0] = t[1] + t[2] 219 | 220 | def p_error(t): 221 | print "Syntax error at '%s'" % t 222 | # print t.lexpos, t.type 223 | 224 | lexer = lex.lex() 225 | yacc.yacc(start="line") 226 | 227 | def parse_line(line, l_count): 228 | global lines_count 229 | lines_count = l_count 230 | lexer.input(line) 231 | yacc.parse(line) 232 | return parse_error 233 | -------------------------------------------------------------------------------- /pylasdev/las_line_reader.py: -------------------------------------------------------------------------------- 1 | import numpy 2 | import re 3 | 4 | # This class is a line reader, which is used to parse lines from ~ASCII LOGS section of the LAS file 5 | 6 | class line_reader: 7 | def __init__(self): 8 | self.counter = 0 9 | self.depth_line = True 10 | self.current_line = 0 11 | 12 | def read_line(self, line, las_info): 13 | 14 | # if file is not wrapped, we know the exact number of values and can use pre-initialized arrays 15 | if las_info['version']['WRAP'] == 'NO': 16 | counter = 0 17 | line = line.lstrip() # remove whitespaces from the beginning 18 | values = re.split(r'[ \t\r\n]+', line) # split line in tokens by spaces and tabs 19 | for log_value in values: 20 | if len(log_value) > 0: 21 | las_info['logs'][ las_info['curves_order'][counter] ][self.current_line] = float(log_value) 22 | counter+=1 23 | # print line 24 | # print values 25 | 26 | # if it is wrapped, we need to use append function, because result size is a mistery :) 27 | else: 28 | line = re.sub(r'\n','',line) # remove \n 29 | line = line.lstrip() # remove whitespaces from the beginning 30 | values = re.split(r'[ \t]+', line) # split line in tokens by spaces and tabs 31 | 32 | # in wrapped mode, we need to check out is this a DEPTH line or not - to parse it in a right way 33 | # DEPTH line has one value in wrapped mode 34 | 35 | if self.depth_line == True: 36 | # DEPTH line 37 | las_info['logs'][ las_info['curves_order'][0] ] = numpy.append(las_info['logs'][ las_info['curves_order'][0] ], float(values[0])) 38 | self.depth_line = False 39 | else: 40 | # Line with values 41 | for log_value in values: 42 | self.counter+=1 43 | las_info['logs'][ las_info['curves_order'][self.counter]] = numpy.append(las_info['logs'][ las_info['curves_order'][self.counter]], float(log_value)) 44 | if self.counter >= len(las_info['curves_order'])-1: 45 | self.counter = 0 46 | self.depth_line = True 47 | self.current_line += 1 48 | -------------------------------------------------------------------------------- /pylasdev/las_reader.py: -------------------------------------------------------------------------------- 1 | 2 | # LAS Well Logs ver. 1.2/2.0 files reader 3 | 4 | 5 | # ASCII LOGS section line parser 6 | from las_line_reader import * 7 | 8 | # Lexer and parser for LAS 1.2/2.0 format 9 | import las_lex_pars2 as las2 10 | 11 | #import time 12 | 13 | def read_las_file(filename, mnem_base = None): 14 | 15 | # --- First run 16 | 17 | # We need this to check how many ASCII LOGS lines file has (for array pre-initialization in wrapped mode) 18 | # and to check the LAS version 19 | 20 | las2.las_info['version'] = {} 21 | las2.las_info['version']['last_caption'] = '~V' 22 | las2.las_info['well'] = {} 23 | las2.las_info['parameters'] = {} 24 | las2.las_info['logs'] = {} 25 | las2.las_info['curves_order'] = [] 26 | 27 | file = open(filename) 28 | 29 | # time1 = time.time() 30 | 31 | lines_count = 0 32 | 33 | ascii_logs_section = False 34 | version_section = False 35 | 36 | while 1: 37 | 38 | lines = file.readlines(100000) 39 | 40 | if not lines: 41 | break 42 | for line in lines: 43 | line = line.lstrip() 44 | if len(line) > 0: # skipping empty line 45 | if line[0] != '#': # skipping comment line 46 | if ascii_logs_section == True: # founded ASCII LOGS line 47 | lines_count += 1 48 | elif version_section == True: # we are in VERSION section 49 | if line[0] == '~': 50 | version_section = False # VERSION section ended 51 | else: 52 | las2.lexer.input(line) # checking LAS version 53 | las2.yacc.parse(line) 54 | else: 55 | if line[:2] == '~A': # found the ASCII LOGS section 56 | ascii_logs_section = True 57 | elif line[:2] == '~V': # found the VERSION section 58 | version_section = True 59 | file.close() 60 | 61 | # -- Second run 62 | 63 | # Now we parse and read! 64 | 65 | # time2 = time.time() 66 | # print "Precalc time is: ", time2 - time1 67 | # time1 = time.time() 68 | 69 | # Checking LAS version and choosing the right lexer/parser pair 70 | # for future use, LAS 3.0 not implemented yet 71 | 72 | if float(las2.las_info['version']['VERS']) < 3.0: 73 | import las_lex_pars2 as las_lex_pars 74 | else: 75 | #import las_lex_pars3 as las_lex_pars 76 | print "Sorry, LAS version > 2.0 is not supported." 77 | return None 78 | 79 | # input structure initialization 80 | 81 | las_lex_pars.las_info['version'] = {} 82 | las_lex_pars.las_info['version']['last_caption'] = '~V' 83 | # las_lex_pars.las_info['version']['DLM'] = 'SPACE' 84 | las_lex_pars.las_info['well'] = {} 85 | las_lex_pars.las_info['parameters'] = {} 86 | las_lex_pars.las_info['logs'] = {} 87 | las_lex_pars.las_info['curves_order'] = [] 88 | 89 | 90 | file = open(filename) 91 | 92 | lr_obj = line_reader() # initializing ASCII LOGS lines reader object 93 | other_section = False 94 | ascii_logs_section = False 95 | 96 | while 1: 97 | 98 | lines = file.readlines(100000) 99 | 100 | if not lines: 101 | break 102 | for line in lines: 103 | line = line.lstrip() 104 | if len(line) > 0 : # empty line 105 | if line[0] != '#': # comment line 106 | 107 | # are we in ASCII Logs section? 108 | if ascii_logs_section == True: 109 | pass 110 | # if it is, let's parse the log line 111 | lr_obj.read_line(line, las_lex_pars.las_info) 112 | # if not, let's check out, maybe it had started just now 113 | elif line[:2] == '~A': 114 | ascii_logs_section = True 115 | # all right, that's not an ASCII Logs section, go ahead 116 | else: 117 | # let's check that we are not in Other section 118 | if other_section == True: 119 | # if it is, check - maybe it had ended just now 120 | if line[0] == '~': 121 | other_section = False 122 | else: 123 | # ok, we are not in Other section, let's check - maybe it is ahead 124 | if line[:2] == '~O': 125 | other_section = True 126 | # nope - OK! we are in header, let's parse :) 127 | else: 128 | # Parsing Header 129 | if(las_lex_pars.parse_line(line, lines_count, mnem_base) == False): 130 | return None 131 | 132 | 133 | #time2 = time.time() 134 | 135 | #print "Parsing time is: ", time2 - time1 136 | 137 | return las_lex_pars.las_info 138 | -------------------------------------------------------------------------------- /pylasdev/las_writer.py: -------------------------------------------------------------------------------- 1 | 2 | def write_las_file(filename, las_dict): 3 | 4 | file = open(filename, "w") 5 | 6 | # 1. Version section 7 | 8 | file.write("~VERSION INFORMATION\n") 9 | 10 | file.write(" VERS. " + las_dict['version']['VERS'] + " : X\n") 11 | file.write(" WRAP. " + las_dict['version']['WRAP'] + " : X\n") 12 | 13 | # 2. Well section 14 | 15 | file.write("~WELL INFORMATION\n") 16 | 17 | for key in las_dict['well'].keys(): 18 | file.write(" " + key + ".X " + las_dict['well'][key] + " : X\n") 19 | 20 | # 3. Curve section 21 | 22 | file.write("~CURVE INFORMATION\n") 23 | 24 | for k in xrange(len(las_dict['curves_order'])): 25 | file.write(" " + las_dict['curves_order'][k] + ".X : X \n") 26 | 27 | # 4. Parameters section 28 | 29 | file.write("~PARAMETERS INFORMATION\n") 30 | 31 | for key in las_dict['parameters'].keys(): 32 | file.write(" " + key + ".X " + las_dict['parameters'][key] + " : X\n") 33 | 34 | # 5. Logs 35 | 36 | size = -1 37 | 38 | # Header 39 | 40 | file.write("~A") 41 | 42 | for k in xrange(len(las_dict['curves_order'])): 43 | file.write(" " + las_dict['curves_order'][k]) 44 | if(size == -1): 45 | size = las_dict['logs'][las_dict['curves_order'][k]].size 46 | 47 | file.write("\n") 48 | 49 | # Values 50 | # print size 51 | # for key in las_dict['curves_order']: 52 | # print key, las_dict['logs'][key].size 53 | 54 | for i in xrange(size): 55 | for key_ordered in las_dict['curves_order']: 56 | # print key_ordered 57 | # print las_dict['logs'][key_ordered] 58 | # print i 59 | file.write(" " + str(las_dict['logs'][key_ordered][i])) 60 | file.write("\n") 61 | 62 | file.close() 63 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import * 2 | setup( 3 | name = "pyLASDev", 4 | version = "0.8.1", 5 | #scripts = ['geo.py'], 6 | include_package_data = True, 7 | #package_dir = {'': 'package'}, 8 | packages = ['pylasdev'], 9 | package_data = {'pylasdev': ['*.py']}, 10 | 11 | # metadata for upload to PyPI 12 | author = "Artur Muharlyamov", 13 | author_email = "muharlyamovar@ufanipi.ru", 14 | description = "Python Log ASCII Standart & Deviation files reader/writer", 15 | license = "BSD", 16 | keywords = ["geo, wells, las, dev, well, logs, log"] 17 | #url = "---", # project home page, if any 18 | 19 | # could also include long_description, download_url, classifiers, etc. 20 | ) 21 | -------------------------------------------------------------------------------- /test_data/1475IBK3.las: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itohnobue/pylasdev/483d4b23c13d9ef409b1ccb39cc5355fbb75a4fc/test_data/1475IBK3.las -------------------------------------------------------------------------------- /test_data/4ALS.las: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itohnobue/pylasdev/483d4b23c13d9ef409b1ccb39cc5355fbb75a4fc/test_data/4ALS.las -------------------------------------------------------------------------------- /test_data/sample.dev: -------------------------------------------------------------------------------- 1 | # WELL TRACE FROM PETREL 2 | # WELL NAME: 100 3 | # WELL HEAD X-COORDINATE: 47707.45000000 4 | # WELL HEAD Y-COORDINATE: 41152.20000000 5 | # WELL KB: 0.00000000 6 | # WELL TYPE: UNKNOWN 7 | # MD AND TVD ARE REFERENCED (=0) AT KB AND INCREASE DOWNWARDS 8 | # ANGLES ARE GIVEN IN DEGREES 9 | # ANGLES ARE NOT EXACT (TRACE WAS NOT IMPORTED USING ANGLES) 10 | #====================================================================================================================================== 11 | MD X Y Z TVD DX DY AZIM INCL DLS 12 | #====================================================================================================================================== 13 | 0.00000000 47707.45000000 41152.20000000 53.90000000 -53.90000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 14 | 20.00000000 47707.45000000 41152.20000000 33.90000000 -33.90000000 0.00000000 0.00000000 0.00000000 0.00000000 1.52237845 15 | 40.00000000 47707.45000000 41152.20000000 13.90000000 -13.90000000 0.00000000 0.00000000 320.71059310 2.02983795 4.42761040 16 | 60.00000000 47706.55000000 41153.30000000 -6.10000000 6.10000000 -0.90000000 1.10000000 318.94101720 5.90348075 5.60446930 17 | 80.00000000 47704.75000000 41155.30000000 -25.90000000 25.90000000 -2.70000000 3.10000000 319.30429740 9.50168745 5.03910303 18 | 100.00000000 47702.25000000 41158.30000000 -45.50000000 45.50000000 -5.20000000 6.10000000 320.11044110 12.61999225 4.14755821 19 | 120.00000000 47699.15000000 41162.00000000 -64.90000000 64.90000000 -8.30000000 9.80000000 321.24877230 15.01710207 3.17496324 20 | 140.00000000 47695.75000000 41166.40000000 -84.20000000 84.20000000 -11.70000000 14.20000000 322.73689320 16.80146653 2.02690101 21 | 160.00000000 47692.15000000 41171.20000000 -103.20000000 103.20000000 -15.30000000 19.00000000 323.03635380 17.67271308 1.06076217 22 | 180.00000000 47688.45000000 41176.10000000 -122.30000000 122.30000000 -19.00000000 23.90000000 323.13121350 18.21084132 1.23813915 23 | 200.00000000 47684.65000000 41181.20000000 -141.20000000 141.20000000 -22.80000000 29.00000000 323.30348610 19.32139264 2.07030487 24 | 220.00000000 47680.55000000 41186.70000000 -160.00000000 160.00000000 -26.90000000 34.50000000 324.08917820 20.95260182 2.38250995 25 | 240.00000000 47676.25000000 41192.80000000 -178.60000000 178.60000000 -31.20000000 40.60000000 324.85453540 22.44984179 1.44514275 26 | 260.00000000 47671.75000000 41199.20000000 -197.00000000 197.00000000 -35.70000000 47.00000000 324.97795790 22.85077602 0.28198069 27 | 280.00000000 47667.35000000 41205.50000000 -215.40000000 215.40000000 -40.10000000 53.30000000 325.03933100 22.08044434 1.11904442 28 | 300.00000000 47663.15000000 41211.50000000 -234.00000000 234.00000000 -44.30000000 59.30000000 325.32851440 21.36455483 0.29848087 29 | 320.00000000 47659.05000000 41217.50000000 -252.70000000 252.70000000 -48.40000000 65.30000000 325.45081110 21.71324328 0.79869419 30 | 340.00000000 47654.75000000 41223.70000000 -271.20000000 271.20000000 -52.70000000 71.50000000 325.16189820 22.42766718 1.25586045 31 | 360.00000000 47650.35000000 41230.00000000 -289.60000000 289.60000000 -57.10000000 77.80000000 325.00829510 23.37911656 1.63675177 32 | 380.00000000 47645.65000000 41236.70000000 -307.90000000 307.90000000 -61.80000000 84.50000000 325.26221970 24.60963642 1.62801588 33 | 400.00000000 47640.85000000 41243.70000000 -326.00000000 326.00000000 -66.60000000 91.50000000 325.38910960 25.54407975 1.75235975 34 | 420.00000000 47635.85000000 41250.90000000 -344.00000000 344.00000000 -71.60000000 98.70000000 325.78407430 26.93509379 2.16602325 35 | 440.00000000 47630.65000000 41258.70000000 -361.70000000 361.70000000 -76.80000000 106.50000000 326.81318550 28.35925227 1.75989473 36 | 460.00000000 47625.45000000 41266.80000000 -379.20000000 379.20000000 -82.00000000 114.60000000 327.37077110 29.16004309 0.92281204 37 | 480.00000000 47620.15000000 41275.10000000 -396.60000000 396.60000000 -87.30000000 122.90000000 327.19537560 29.57567156 0.70530516 38 | 500.00000000 47614.75000000 41283.40000000 -414.00000000 414.00000000 -92.70000000 131.20000000 327.42032320 30.10013086 1.01727712 39 | 520.00000000 47609.35000000 41292.00000000 -431.20000000 431.20000000 -98.10000000 139.80000000 328.17253490 30.83984105 1.19955027 40 | 540.00000000 47603.95000000 41300.80000000 -448.30000000 448.30000000 -103.50000000 148.60000000 328.89419620 31.51032609 1.15232158 41 | 560.00000000 47598.55000000 41309.90000000 -465.30000000 465.30000000 -108.90000000 157.70000000 329.35779520 32.24566220 0.98060298 42 | 580.00000000 47593.05000000 41319.20000000 -482.20000000 482.20000000 -114.40000000 167.00000000 329.17074310 32.80948709 0.74159658 43 | 600.00000000 47587.45000000 41328.50000000 -498.90000000 498.90000000 -120.00000000 176.30000000 329.21458940 33.23142063 0.65986884 44 | 620.00000000 47581.85000000 41338.00000000 -515.60000000 515.60000000 -125.60000000 185.80000000 329.39043040 33.68103120 0.56744146 45 | 640.00000000 47576.15000000 41347.60000000 -532.20000000 532.20000000 -131.30000000 195.40000000 329.08046340 33.98435851 0.44097674 46 | 660.00000000 47570.35000000 41357.20000000 -548.80000000 548.80000000 -137.10000000 205.00000000 329.34158250 34.26836621 0.78842300 47 | 680.00000000 47564.65000000 41367.00000000 -565.30000000 565.30000000 -142.80000000 214.80000000 330.50639140 34.66164420 0.96104598 48 | 700.00000000 47559.15000000 41377.00000000 -581.70000000 581.70000000 -148.30000000 224.80000000 331.09079800 35.07579181 0.77377200 49 | 720.00000000 47553.55000000 41387.10000000 -598.00000000 598.00000000 -153.90000000 234.90000000 331.23210450 35.60504638 0.63460422 50 | 740.00000000 47547.95000000 41397.40000000 -614.20000000 614.20000000 -159.50000000 245.20000000 331.46754680 35.89318327 0.48608348 51 | 760.00000000 47542.35000000 41407.70000000 -630.40000000 630.40000000 -165.10000000 255.50000000 332.12643840 35.98769968 0.93235701 52 | 780.00000000 47536.95000000 41418.20000000 -646.60000000 646.60000000 -170.50000000 266.00000000 333.54773540 36.11712158 1.20250177 53 | 800.00000000 47531.85000000 41428.80000000 -662.70000000 662.70000000 -175.60000000 276.60000000 334.84842570 36.07374554 0.82036048 54 | 820.00000000 47526.95000000 41439.50000000 -678.90000000 678.90000000 -180.50000000 287.30000000 335.39487610 35.99678996 0.24791208 55 | 840.00000000 47522.05000000 41450.20000000 -695.10000000 695.10000000 -185.40000000 298.00000000 335.39487610 35.99678996 0.10423066 56 | 860.00000000 47517.15000000 41460.90000000 -711.30000000 711.30000000 -190.30000000 308.70000000 335.61685920 35.94871171 0.10128199 57 | 880.00000000 47512.35000000 41471.60000000 -727.50000000 727.50000000 -195.10000000 319.40000000 335.61596100 36.03335757 0.23750997 58 | 900.00000000 47507.45000000 41482.30000000 -743.60000000 743.60000000 -200.00000000 330.10000000 335.17510880 36.12965217 0.12625714 59 | 920.00000000 47502.45000000 41493.00000000 -759.80000000 759.80000000 -205.00000000 340.80000000 335.49789650 36.18664811 0.43977591 60 | 940.00000000 47497.65000000 41503.80000000 -775.90000000 775.90000000 -209.80000000 351.60000000 335.91512600 36.51911327 0.46436584 61 | 960.00000000 47492.75000000 41514.70000000 -791.90000000 791.90000000 -214.70000000 362.50000000 335.57612030 36.80405227 0.33650383 62 | 980.00000000 47487.75000000 41525.60000000 -807.90000000 807.90000000 -219.70000000 373.40000000 335.98728970 36.96570346 0.52680224 63 | 1000.00000000 47482.95000000 41536.70000000 -823.90000000 823.90000000 -224.50000000 384.50000000 336.39624430 37.30322398 0.45685789 64 | 1020.00000000 47478.05000000 41547.80000000 -839.70000000 839.70000000 -229.40000000 395.60000000 336.49031920 37.49337684 0.22097141 65 | 1040.00000000 47473.25000000 41559.00000000 -855.60000000 855.60000000 -234.20000000 406.80000000 336.80140950 37.46536816 0.08950271 66 | 1060.00000000 47468.45000000 41570.20000000 -871.50000000 871.50000000 -239.00000000 418.00000000 336.58507320 37.59781407 0.06557991 67 | 1080.00000000 47463.55000000 41581.40000000 -887.30000000 887.30000000 -243.90000000 429.20000000 336.80073370 37.55280706 0.34956196 68 | 1100.00000000 47458.85000000 41592.60000000 -903.20000000 903.20000000 -248.60000000 440.40000000 337.32565810 37.48113559 0.34034708 69 | 1120.00000000 47454.15000000 41603.90000000 -919.10000000 919.10000000 -253.30000000 451.70000000 337.54407530 37.52451784 0.29909059 70 | 1140.00000000 47449.55000000 41615.10000000 -934.90000000 934.90000000 -257.90000000 462.90000000 337.97766410 37.43898935 0.34836063 71 | 1160.00000000 47445.05000000 41626.40000000 -950.80000000 950.80000000 -262.40000000 474.20000000 338.28606490 37.41498574 0.29633042 72 | 1180.00000000 47440.55000000 41637.70000000 -966.70000000 966.70000000 -266.90000000 485.50000000 338.59200180 37.56638239 0.48845825 73 | 1200.00000000 47436.15000000 41649.10000000 -982.50000000 982.50000000 -271.30000000 496.90000000 339.33307850 37.55003732 0.78144914 74 | 1220.00000000 47431.95000000 41660.50000000 -998.40000000 998.40000000 -275.50000000 508.30000000 340.23638910 37.83905025 1.11132276 75 | 1240.00000000 47427.85000000 41672.20000000 -1014.10000000 1014.10000000 -279.60000000 520.00000000 341.41890710 38.29338225 1.44169319 76 | 1260.00000000 47424.05000000 41684.00000000 -1029.80000000 1029.80000000 -283.40000000 531.80000000 343.01662150 38.69401712 1.50507438 77 | 1280.00000000 47420.55000000 41696.10000000 -1045.30000000 1045.30000000 -286.90000000 543.90000000 344.20801430 39.28094022 1.10873520 78 | 1300.00000000 47417.15000000 41708.40000000 -1060.80000000 1060.80000000 -290.30000000 556.20000000 344.98402950 39.49796452 0.49723458 79 | 1320.00000000 47413.95000000 41720.70000000 -1076.20000000 1076.20000000 -293.50000000 568.50000000 344.82446320 39.81524863 0.62205952 80 | 1340.00000000 47410.45000000 41733.10000000 -1091.50000000 1091.50000000 -297.00000000 580.90000000 344.51192550 40.27016108 0.72099030 81 | 1360.00000000 47407.05000000 41745.60000000 -1106.70000000 1106.70000000 -300.40000000 593.40000000 345.53652610 40.65940175 1.14643145 82 | 1380.00000000 47403.95000000 41758.30000000 -1121.80000000 1121.80000000 -303.50000000 606.10000000 346.38554710 41.18790878 0.96600938 83 | 1400.00000000 47400.85000000 41771.20000000 -1136.80000000 1136.80000000 -306.60000000 619.00000000 346.95611270 41.54715681 0.64279604 84 | 1420.00000000 47397.95000000 41784.20000000 -1151.80000000 1151.80000000 -309.50000000 632.00000000 347.42453450 41.69943707 0.24059768 85 | 1440.00000000 47395.05000000 41797.20000000 -1166.70000000 1166.70000000 -312.40000000 645.00000000 347.21493960 41.81786971 0.25219765 86 | 1460.00000000 47392.05000000 41810.20000000 -1181.60000000 1181.60000000 -315.40000000 658.00000000 347.26247370 42.01783704 0.54647464 87 | 1480.00000000 47389.15000000 41823.30000000 -1196.40000000 1196.40000000 -318.30000000 671.10000000 347.60887850 42.49684149 0.72124064 88 | 1500.00000000 47386.25000000 41836.60000000 -1211.10000000 1211.10000000 -321.20000000 684.40000000 347.90614470 42.87578682 0.38778156 89 | 1520.00000000 47383.45000000 41849.90000000 -1225.70000000 1225.70000000 -324.00000000 697.70000000 347.90539030 42.97312502 0.11913906 90 | 1540.00000000 47380.55000000 41863.20000000 -1240.30000000 1240.30000000 -326.90000000 711.00000000 347.69946110 42.80172751 0.32400972 91 | 1560.00000000 47377.65000000 41876.50000000 -1255.10000000 1255.10000000 -329.80000000 724.30000000 348.07086500 42.55597784 0.56698442 92 | 1580.00000000 47374.95000000 41889.70000000 -1269.80000000 1269.80000000 -332.50000000 737.50000000 348.39728090 42.21079077 0.37051588 93 | 1600.00000000 47372.25000000 41902.80000000 -1284.70000000 1284.70000000 -335.20000000 750.60000000 348.39712230 42.11350691 0.26141644 94 | 1620.00000000 47369.55000000 41916.00000000 -1299.50000000 1299.50000000 -337.90000000 763.80000000 348.85920160 42.36853818 0.75630981 95 | 1640.00000000 47367.05000000 41929.20000000 -1314.20000000 1314.20000000 -340.40000000 777.00000000 349.59773840 42.71448114 0.89046478 96 | 1660.00000000 47364.65000000 41942.70000000 -1328.90000000 1328.90000000 -342.80000000 790.50000000 350.12685850 43.18616895 0.82458681 97 | 1680.00000000 47362.35000000 41956.20000000 -1343.40000000 1343.40000000 -345.10000000 804.00000000 350.40087560 43.66666995 0.82161415 98 | 1700.00000000 47360.05000000 41969.90000000 -1357.80000000 1357.80000000 -347.40000000 817.70000000 350.91027180 44.13883543 0.82183838 99 | 1720.00000000 47357.95000000 41983.70000000 -1372.10000000 1372.10000000 -349.50000000 831.50000000 351.57984290 44.39421953 0.68779975 100 | 1740.00000000 47355.95000000 41997.60000000 -1386.40000000 1386.40000000 -351.50000000 845.40000000 351.84125330 44.78367636 0.53142834 101 | 1760.00000000 47353.95000000 42011.60000000 -1400.50000000 1400.50000000 -353.50000000 859.40000000 351.66956640 45.09996995 0.30275622 102 | 1780.00000000 47351.85000000 42025.60000000 -1414.60000000 1414.60000000 -355.60000000 873.40000000 351.89737050 45.18539737 0.39997908 103 | 1800.00000000 47349.95000000 42039.70000000 -1428.70000000 1428.70000000 -357.50000000 887.50000000 352.32552050 45.35987917 0.15242958 104 | 1820.00000000 47348.05000000 42053.80000000 -1442.70000000 1442.70000000 -359.40000000 901.60000000 351.92859160 45.38742217 0.32024360 105 | 1840.00000000 47345.95000000 42067.90000000 -1456.80000000 1456.80000000 -361.50000000 915.70000000 351.72852480 45.40173510 0.21361083 106 | 1860.00000000 47343.95000000 42082.00000000 -1470.80000000 1470.80000000 -363.50000000 929.80000000 351.53066630 45.41634451 0.54912496 107 | 1880.00000000 47341.75000000 42096.10000000 -1484.90000000 1484.90000000 -365.70000000 943.90000000 350.70055720 45.37899599 0.33993757 108 | 1900.00000000 47339.35000000 42110.10000000 -1498.90000000 1498.90000000 -368.10000000 957.90000000 350.89841670 45.36297329 0.76252544 109 | 1920.00000000 47337.25000000 42124.20000000 -1513.00000000 1513.00000000 -370.20000000 972.00000000 352.12903710 45.37343676 1.07228982 110 | 1940.00000000 47335.45000000 42138.30000000 -1527.00000000 1527.00000000 -372.00000000 986.10000000 352.90015770 45.22041869 0.78656811 111 | 1960.00000000 47333.75000000 42152.30000000 -1541.10000000 1541.10000000 -373.70000000 1000.10000000 353.50054360 44.98153436 0.83078521 112 | 1980.00000000 47332.25000000 42166.40000000 -1555.30000000 1555.30000000 -375.20000000 1014.20000000 354.30984350 44.73645700 0.96905720 113 | 2000.00000000 47330.95000000 42180.40000000 -1569.60000000 1569.60000000 -376.50000000 1028.20000000 354.84393910 44.09739432 1.50410175 114 | 2020.00000000 47329.75000000 42194.10000000 -1584.00000000 1584.00000000 -377.70000000 1041.90000000 355.35605290 42.86623602 2.36061049 115 | 2040.00000000 47328.75000000 42207.50000000 -1598.90000000 1598.90000000 -378.70000000 1055.30000000 356.30275750 41.10866192 2.85563922 116 | 2060.00000000 47328.05000000 42220.40000000 -1614.20000000 1614.20000000 -379.40000000 1068.20000000 357.51337060 39.33220825 3.06862855 117 | 2080.00000000 47327.65000000 42232.80000000 -1629.80000000 1629.80000000 -379.80000000 1080.60000000 359.28750280 37.47899695 3.31899357 118 | 2100.00000000 47327.75000000 42244.70000000 -1645.90000000 1645.90000000 -379.70000000 1092.50000000 0.98827918 35.44079714 3.29807138 119 | 2120.00000000 47328.05000000 42256.00000000 -1662.40000000 1662.40000000 -379.40000000 1103.80000000 2.08233462 33.39000430 2.99770069 120 | 2140.00000000 47328.55000000 42266.70000000 -1679.30000000 1679.30000000 -378.90000000 1114.50000000 2.46567583 31.52759292 2.50993729 121 | 2160.00000000 47328.95000000 42276.90000000 -1696.50000000 1696.50000000 -378.50000000 1124.70000000 2.00417982 30.04367291 2.07794642 122 | 2180.00000000 47329.25000000 42286.70000000 -1713.90000000 1713.90000000 -378.20000000 1134.50000000 2.08824514 28.76347657 1.82985723 123 | 2200.00000000 47329.65000000 42296.10000000 -1731.50000000 1731.50000000 -377.80000000 1143.90000000 2.47603580 27.61447818 1.76186276 124 | 2220.00000000 47330.05000000 42305.20000000 -1749.30000000 1749.30000000 -377.40000000 1153.00000000 3.21526980 26.47306622 1.78109813 125 | 2240.00000000 47330.65000000 42313.90000000 -1767.30000000 1767.30000000 -376.80000000 1161.70000000 4.01399108 25.34064471 1.94906986 126 | 2260.00000000 47331.25000000 42322.30000000 -1785.50000000 1785.50000000 -376.20000000 1170.10000000 4.58945174 23.94090120 2.08495760 127 | 2280.00000000 47331.95000000 42330.10000000 -1803.90000000 1803.90000000 -375.50000000 1177.90000000 5.22830674 22.60469505 1.84361982 128 | 2300.00000000 47332.65000000 42337.60000000 -1822.40000000 1822.40000000 -374.80000000 1185.40000000 5.86477221 21.53253096 1.76647615 129 | 2320.00000000 47333.45000000 42344.70000000 -1841.10000000 1841.10000000 -374.00000000 1192.50000000 7.02401510 20.34272804 1.96446514 130 | 2340.00000000 47334.35000000 42351.40000000 -1859.90000000 1859.90000000 -373.10000000 1199.20000000 7.94304977 19.01378772 2.06355715 131 | 2360.00000000 47335.25000000 42357.60000000 -1878.90000000 1878.90000000 -372.20000000 1205.40000000 9.46323597 17.70815267 1.98007882 132 | 2380.00000000 47336.35000000 42363.40000000 -1898.00000000 1898.00000000 -371.10000000 1211.20000000 11.11149755 16.55654001 1.72668302 133 | 2400.00000000 47337.45000000 42368.80000000 -1917.30000000 1917.30000000 -370.00000000 1216.60000000 12.35849860 15.55957942 1.21795797 134 | 2420.00000000 47338.65000000 42373.90000000 -1936.60000000 1936.60000000 -368.80000000 1221.70000000 13.36709202 15.05298923 0.86422586 135 | 2440.00000000 47339.85000000 42378.90000000 -1955.90000000 1955.90000000 -367.60000000 1226.70000000 13.89667982 14.47831882 0.99149549 136 | 2460.00000000 47341.05000000 42383.60000000 -1975.30000000 1975.30000000 -366.40000000 1231.40000000 14.62157555 13.76831395 0.99107915 137 | 2480.00000000 47342.25000000 42388.10000000 -1994.70000000 1994.70000000 -365.20000000 1235.90000000 15.25423671 13.19730302 1.01786721 138 | 2500.00000000 47343.45000000 42392.40000000 -2014.20000000 2014.20000000 -364.00000000 1240.20000000 16.76004600 12.50091639 1.22496367 139 | 2520.00000000 47344.75000000 42396.40000000 -2033.80000000 2033.80000000 -362.70000000 1244.20000000 17.30912974 11.62461026 1.21868992 140 | 2540.00000000 47345.85000000 42400.10000000 -2053.40000000 2053.40000000 -361.60000000 1247.90000000 17.71177357 10.88743311 0.98814809 141 | 2560.00000000 47347.05000000 42403.60000000 -2073.10000000 2073.10000000 -360.40000000 1251.40000000 19.44093151 10.37119925 1.08486939 142 | 2580.00000000 47348.25000000 42406.90000000 -2092.80000000 2092.80000000 -359.20000000 1254.70000000 19.53491045 9.47712534 1.39430916 143 | 2600.00000000 47349.25000000 42409.80000000 -2112.50000000 2112.50000000 -358.20000000 1257.60000000 18.74231643 8.51562355 1.07759345 144 | 2620.00000000 47350.15000000 42412.50000000 -2132.30000000 2132.30000000 -357.30000000 1260.30000000 18.75886850 8.04517220 0.67695153 145 | 2640.00000000 47351.05000000 42415.10000000 -2152.10000000 2152.10000000 -356.40000000 1262.90000000 19.79617250 7.62519227 0.66241062 146 | 2660.00000000 47351.95000000 42417.50000000 -2172.00000000 2172.00000000 -355.50000000 1265.30000000 19.88120208 7.17451165 0.57392323 147 | 2680.00000000 47352.75000000 42419.80000000 -2191.80000000 2191.80000000 -354.70000000 1267.60000000 19.57135643 6.86048491 0.48869440 148 | 2700.00000000 47353.55000000 42422.00000000 -2211.70000000 2211.70000000 -353.90000000 1269.80000000 19.23011324 6.52755411 0.58755505 149 | 2720.00000000 47354.25000000 42424.10000000 -2231.60000000 2231.60000000 -353.20000000 1271.90000000 19.29093837 6.07771319 0.77756107 150 | 2740.00000000 47354.95000000 42426.00000000 -2251.50000000 2251.50000000 -352.50000000 1273.80000000 19.85479848 5.49285607 0.77848166 151 | 2760.00000000 47355.55000000 42427.70000000 -2271.40000000 2271.40000000 -351.90000000 1275.50000000 19.98333707 5.04188884 0.54597449 152 | 2780.00000000 47356.15000000 42429.30000000 -2291.30000000 2291.30000000 -351.30000000 1277.10000000 21.16150167 4.77429412 0.43630975 153 | 2800.00000000 47356.75000000 42430.80000000 -2311.20000000 2311.20000000 -350.70000000 1278.60000000 22.47621028 4.49819618 0.45086783 154 | 2820.00000000 47357.35000000 42432.20000000 -2331.20000000 2331.20000000 -350.10000000 1280.00000000 22.16045502 4.17819135 0.33932981 155 | 2840.00000000 47357.85000000 42433.50000000 -2351.10000000 2351.10000000 -349.60000000 1281.30000000 22.92252051 4.04697651 0.32230598 156 | 2860.00000000 47358.45000000 42434.80000000 -2371.10000000 2371.10000000 -349.00000000 1282.60000000 24.62262254 3.78381344 0.44204435 157 | 2880.00000000 47358.95000000 42435.90000000 -2391.00000000 2391.00000000 -348.50000000 1283.70000000 24.44395478 3.46602253 0.65946621 158 | 2900.00000000 47359.45000000 42437.00000000 -2411.00000000 2411.00000000 -348.00000000 1284.80000000 26.09403171 2.90865751 1.66615677 159 | 2904.60000000 47359.55000000 42437.20000000 -2415.60000000 2415.60000000 -347.90000000 1285.00000000 25.03914608 2.87024629 2.90865755 160 | 2920.00000000 47359.85000000 42438.00000000 -2431.00000000 2431.00000000 -347.60000000 1285.80000000 20.55604522 1.24896735 2.90865755 161 | 2930.00000000 47359.85000000 42438.00000000 -2441.00000000 2441.00000000 -347.60000000 1285.80000000 0.00000000 0.00000000 2.90865755 162 | -------------------------------------------------------------------------------- /test_data/sample.las: -------------------------------------------------------------------------------- 1 | ~VERSION INFORMATION 2 | VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2 3 | WRAP. NO: ONE LINE PER DEPTH STEP 4 | ~WELL INFORMATION BLOCK 5 | #MNEM.UNIT DATA TYPE INFORMATION 6 | #--------- ------------- ------------------------------ 7 | STRT.M 1670.000000: 8 | STOP.M 1660.000000: 9 | STEP.M -0.1250: 10 | NULL. -999.2500: 11 | COMP. COMPANY: # ANY OIL COMPANY LTD. 12 | WELL. WELL: ANY ET AL OIL WELL #12 13 | FLD . FIELD: EDAM 14 | LOC . LOCATION: A9-16-49-20W3M 15 | PROV. PROVINCE: SASKATCHEWAN 16 | SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD. 17 | DATE. LOG DATE: 25-DEC-1988 18 | UWI . UNIQUE WELL ID: 100091604920W300 19 | ~CURVE INFORMATION 20 | #MNEM.UNIT API CODE CURVE DESCRIPTION 21 | #--------- ------------- ------------------------------ 22 | DEPT.M : 1 DEPTH 23 | DT .US/M : 2 SONIC TRANSIT TIME 24 | RHOB.K/M3 : 3 BULK DENSITY 25 | NPHI.V/V : 4 NEUTRON POROSITY 26 | SFLU.OHMM : 5 RXO RESISTIVITY 27 | SFLA.OHMM : 6 SHALLOW RESISTIVITY 28 | ILM .OHMM : 7 MEDIUM RESISTIVITY 29 | ILD .OHMM : 8 DEEP RESISTIVITY 30 | ~PARAMETER INFORMATION 31 | #MNEM.UNIT VALUE DESCRIPTION 32 | #--------- ------------- ------------------------------ 33 | BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE 34 | BS .MM 200.0000: BIT SIZE 35 | FD .K/M3 1000.0000: FLUID DENSITY 36 | MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO) 37 | MDEN. 2710.0000: LOGGING MATRIX DENSITY 38 | RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY 39 | DFD .K/M3 1525.0000: DRILL FLUID DENSITY 40 | ~Other 41 | Note: The logging tools became stuck at 625 meters causing the data 42 | between 625 meters and 615 meters to be invalid. 43 | ~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD 44 | 1670.000 123.450 2550.000 0.450 123.450 123.450 110.200 105.600 45 | 1669.875 123.450 2550.000 0.450 123.450 123.450 110.200 105.600 46 | 1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600 47 | -------------------------------------------------------------------------------- /test_data/sample.las.writed: -------------------------------------------------------------------------------- 1 | ~VERSION INFORMATION 2 | VERS. 1.2 : X 3 | WRAP. NO : X 4 | ~WELL INFORMATION 5 | LOC.X LOCATION : X 6 | SRVC.X SERVICE COMPANY : X 7 | COMP.X COMPANY : X 8 | WELL.X WELL : X 9 | STOP.X 1660.000000 : X 10 | UWI.X UNIQUE WELL ID : X 11 | STRT.X 1670.000000 : X 12 | STEP.X -0.1250 : X 13 | PROV.X PROVINCE : X 14 | DATE.X LOG DATE : X 15 | NULL.X -999.2500 : X 16 | FLD.X FIELD : X 17 | ~CURVE INFORMATION 18 | DEPT.X : X 19 | DT.X : X 20 | RHOB.X : X 21 | NPHI.X : X 22 | SFLU.X : X 23 | SFLA.X : X 24 | ILM.X : X 25 | ILD.X : X 26 | ~PARAMETERS INFORMATION 27 | MATR.X 0.0000 : X 28 | MDEN.X 2710.0000 : X 29 | RMF.X 0.2160 : X 30 | BS.X 200.0000 : X 31 | FD.X 1000.0000 : X 32 | BHT.X 35.5000 : X 33 | DFD.X 1525.0000 : X 34 | ~A DEPT DT RHOB NPHI SFLU SFLA ILM ILD 35 | 1670.0 123.45 2550.0 0.45 123.45 123.45 110.2 105.6 36 | 1669.875 123.45 2550.0 0.45 123.45 123.45 110.2 105.6 37 | 1669.75 123.45 2550.0 0.45 123.45 123.45 110.2 105.6 38 | -------------------------------------------------------------------------------- /test_data/sample_2.0.las: -------------------------------------------------------------------------------- 1 | ~VERSION INFORMATION 2 | VERS. 2.0 : CWLS LOG ASCII STANDARD -VERSION 2.0 3 | WRAP. NO : ONE LINE PER DEPTH STEP 4 | ~WELL INFORMATION 5 | #MNEM.UNIT DATA DESCRIPTION 6 | #----- ----- ---------- ------------------------- 7 | STRT .M 1670.0000 :START DEPTH 8 | STOP .M 1660.0000 :STOP DEPTH 9 | STEP .M -0.1250 :STEP 10 | NULL . -999.25 :NULL VALUE 11 | COMP . ANY OIL COMPANY INC. :COMPANY 12 | WELL . AAAAA_2 :WELL 13 | FLD . WILDCAT :FIELD 14 | LOC . 12-34-12-34W5M :LOCATION 15 | PROV . ALBERTA :PROVINCE 16 | SRVC . ANY LOGGING COMPANY INC. :SERVICE COMPANY 17 | DATE . 13-DEC-86 :LOG DATE 18 | UWI . 100123401234W500 :UNIQUE WELL ID 19 | ~CURVE INFORMATION 20 | #MNEM.UNIT API CODES CURVE DESCRIPTION 21 | #------------------ ------------ ------------------------- 22 | DEPT .M : 1 DEPTH 23 | DT .US/M 60 520 32 00 : 2 SONIC TRANSIT TIME 24 | RHOB .K/M3 45 350 01 00 : 3 BULK DENSITY 25 | NPHI .V/V 42 890 00 00 : 4 NEUTRON POROSITY 26 | SFLU .OHMM 07 220 04 00 : 5 SHALLOW RESISTIVITY 27 | SFLA .OHMM 07 222 01 00 : 6 SHALLOW RESISTIVITY 28 | ILM .OHMM 07 120 44 00 : 7 MEDIUM RESISTIVITY 29 | ILD .OHMM 07 120 46 00 : 8 DEEP RESISTIVITY 30 | ~PARAMETER INFORMATION 31 | #MNEM.UNIT VALUE DESCRIPTION 32 | #-------------- ---------------- ----------------------------------------------- 33 | MUD . GEL CHEM : MUD TYPE 34 | BHT .DEGC 35.5000 : BOTTOM HOLE TEMPERATURE 35 | BS .MM 200.0000 : BIT SIZE 36 | FD .K/M3 1000.0000 : FLUID DENSITY 37 | MATR . SAND : NEUTRON MATRIX 38 | MDEN . 2710.0000 : LOGGING MATRIX DENSITY 39 | RMF .OHMM 0.2160 : MUD FILTRATE RESISTIVITY 40 | DFD .K/M3 1525.0000 : DRILL FLUID DENSITY 41 | ~OTHER 42 | Note: The logging tools became stuck at 625 metres causing the data 43 | between 625 metres and 615 metres to be invalid. 44 | ~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD 45 | 1670.000 123.450 2550.000 0.450 123.450 123.450 110.200 105.600 46 | 1669.875 123.450 2550.000 0.450 123.450 123.450 110.200 105.600 47 | 1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600 48 | -------------------------------------------------------------------------------- /test_data/sample_2.0.las.writed: -------------------------------------------------------------------------------- 1 | ~VERSION INFORMATION 2 | VERS. 2.0 : X 3 | WRAP. NO : X 4 | ~WELL INFORMATION 5 | LOC.X 12-34-12-34W5M : X 6 | SRVC.X ANY LOGGING COMPANY INC. : X 7 | COMP.X ANY OIL COMPANY INC. : X 8 | WELL.X ANY ET AL 12-34-12-34 : X 9 | STOP.X 1660.0000 : X 10 | UWI.X 100123401234W500 : X 11 | STRT.X 1670.0000 : X 12 | STEP.X -0.1250 : X 13 | PROV.X ALBERTA : X 14 | DATE.X 13-DEC-86 : X 15 | NULL.X -999.25 : X 16 | FLD.X WILDCAT : X 17 | ~CURVE INFORMATION 18 | DEPT.X : X 19 | DT.X : X 20 | RHOB.X : X 21 | NPHI.X : X 22 | SFLU.X : X 23 | SFLA.X : X 24 | ILM.X : X 25 | ILD.X : X 26 | ~PARAMETERS INFORMATION 27 | MATR.X SAND : X 28 | MDEN.X 2710.0000 : X 29 | MUD.X GEL CHEM : X 30 | FD.X 1000.0000 : X 31 | BS.X 200.0000 : X 32 | RMF.X 0.2160 : X 33 | BHT.X 35.5000 : X 34 | DFD.X 1525.0000 : X 35 | ~A DEPT DT RHOB NPHI SFLU SFLA ILM ILD 36 | 1670.0 123.45 2550.0 0.45 123.45 123.45 110.2 105.6 37 | 1669.875 123.45 2550.0 0.45 123.45 123.45 110.2 105.6 38 | 1669.75 123.45 2550.0 0.45 123.45 123.45 110.2 105.6 39 | -------------------------------------------------------------------------------- /test_data/sample_2.0_based.las: -------------------------------------------------------------------------------- 1 | ~VERSION INFORMATION 2 | VERS. 2.0 : CWLS LOG ASCII STANDARD -VERSION 2.0 3 | WRAP. NO : ONE LINE PER TIME STEP 4 | # 5 | ~WELL INFORMATION 6 | STRT .S 0.0000 :START TIME 7 | STOP .S 39.9000 :STOP TIME 8 | STEP .S 0.3000 :STEP 9 | NULL . -999.25 :NULL VALUE 10 | COMP . ANY OIL COMPANY INC. :COMPANY 11 | WELL . ANY ET 12-34-12-34 :WELL 12 | FLD . WILDCAT :FIELD 13 | LOC . 12-34-12-34W5 :LOCATION 14 | PROV . ALBERTA :PROVINCE 15 | SRVC . ANY LOGGING COMPANY INC. :SERVICE COMPANY 16 | DATE . 13-DEC-86 :LOG DATE 17 | UWI . 100123401234W500 :UNIQUE WELL ID 18 | # 19 | ~CURVE INFORMATION 20 | ETIM .S : 1 ELAPSED TIME 21 | BFR1 .OHMM : 2 SINGLE PROBE 1 RESISTIVITY 22 | BSG1 .PSIG : 3 SINGLE PROBE 1 STRAIN GAUGE PRESSURE 23 | # 24 | ~PARAMETER INFORMATION 25 | MRT .DEGC 67.0 : BOTTOM HOLE TEMPERATURE 26 | GDEPT .M 3456.5 : GAUGE DEPTH 27 | DFD .KG/M3 1000.0 : MUD WEIGHT 28 | # 29 | ~A 30 | 0.0000 0.2125 16564.1445 31 | 0.3000 0.2125 16564.1445 32 | 0.6000 0.2125 16564.2421 33 | 0.9000 0.2125 16564.0434 34 | 1.2000 0.2125 16564.0430 35 | 1.5000 0.2125 16564.0435 36 | -------------------------------------------------------------------------------- /test_data/sample_2.0_based.las.writed: -------------------------------------------------------------------------------- 1 | ~VERSION INFORMATION 2 | VERS. 2.0 : X 3 | WRAP. NO : X 4 | ~WELL INFORMATION 5 | LOC.X 12-34-12-34W5 : X 6 | SRVC.X ANY LOGGING COMPANY INC. : X 7 | COMP.X ANY OIL COMPANY INC. : X 8 | WELL.X ANY ET 12-34-12-34 : X 9 | STOP.X 39.9000 : X 10 | UWI.X 100123401234W500 : X 11 | STRT.X 0.0000 : X 12 | STEP.X 0.3000 : X 13 | PROV.X ALBERTA : X 14 | DATE.X 13-DEC-86 : X 15 | NULL.X -999.25 : X 16 | FLD.X WILDCAT : X 17 | ~CURVE INFORMATION 18 | ETIM.X : X 19 | BFR1.X : X 20 | BSG1.X : X 21 | ~PARAMETERS INFORMATION 22 | MRT.X 67.0 : X 23 | DFD.X 1000.0 : X 24 | GDEPT.X 3456.5 : X 25 | ~A ETIM BFR1 BSG1 26 | 0.0 0.2125 16564.1445 27 | 0.3 0.2125 16564.1445 28 | 0.6 0.2125 16564.2421 29 | 0.9 0.2125 16564.0434 30 | 1.2 0.2125 16564.043 31 | 1.5 0.2125 16564.0435 32 | -------------------------------------------------------------------------------- /test_data/sample_2.0_minimal.las: -------------------------------------------------------------------------------- 1 | ~V 2 | VERS. 2.0 : CWLS log ASCII Standard -VERSION 2.0 3 | WRAP. NO : One line per depth step 4 | ~W 5 | STRT.M 635.0000 :START DEPTH 6 | STOP.M 400.0000 :STOP DEPTH 7 | STEP.M -0.1250 :STEP 8 | NULL. -999.25 :NULL VALUE 9 | COMP. ANY OIL COMPANY INC. :COMPANY 10 | WELL. ANY ET AL 12-34-12-34 :WELL 11 | FLD . WILDCAT :FIELD 12 | LOC . 12-34-12-34W5M :LOCATION 13 | PROV. ALBERTA :PROVINCE 14 | SRVC. ANY LOGGING COMPANY INC. :SERVICE COMPANY 15 | DATE. 13-DEC-86 :LOG DATE 16 | UWI . 100123401234W500 :UNIQUE WELL ID 17 | ~C 18 | DEPT .M : DEPTH 19 | RHOB .K/M3 : BULK DENSITY 20 | NPHI .VOL/VOL : NEUTRON POROSITY - SANDSTONE 21 | MSFL .OHMM : Rxo RESISTIVITY 22 | SFLA .OHMM : SHALLOW RESISTIVITY 23 | ILM .OHMM : MEDIUM RESISTIVITY 24 | ILD .OHMM : DEEP RESISTIVITY 25 | SP .MV : SPONTANEOUS POTENTIAL 26 | ~A 27 | 635.0000 2256.0000 0.4033 22.0781 22.0781 20.3438 3.6660 123.4 28 | 634.8750 2256.0000 0.4033 22.0781 22.0781 20.3438 3.6660 123.4 29 | -------------------------------------------------------------------------------- /test_data/sample_2.0_minimal.las.writed: -------------------------------------------------------------------------------- 1 | ~VERSION INFORMATION 2 | VERS. 2.0 : X 3 | WRAP. NO : X 4 | ~WELL INFORMATION 5 | LOC.X 12-34-12-34W5M : X 6 | SRVC.X ANY LOGGING COMPANY INC. : X 7 | COMP.X ANY OIL COMPANY INC. : X 8 | WELL.X ANY ET AL 12-34-12-34 : X 9 | STOP.X 400.0000 : X 10 | UWI.X 100123401234W500 : X 11 | STRT.X 635.0000 : X 12 | STEP.X -0.1250 : X 13 | PROV.X ALBERTA : X 14 | DATE.X 13-DEC-86 : X 15 | NULL.X -999.25 : X 16 | FLD.X WILDCAT : X 17 | ~CURVE INFORMATION 18 | DEPT.X : X 19 | RHOB.X : X 20 | NPHI.X : X 21 | MSFL.X : X 22 | SFLA.X : X 23 | ILM.X : X 24 | ILD.X : X 25 | SP.X : X 26 | ~PARAMETERS INFORMATION 27 | ~A DEPT RHOB NPHI MSFL SFLA ILM ILD SP 28 | 635.0 2256.0 0.4033 22.0781 22.0781 20.3438 3.666 123.4 29 | 634.875 2256.0 0.4033 22.0781 22.0781 20.3438 3.666 123.4 30 | -------------------------------------------------------------------------------- /test_data/sample_2.0_wrapped.las: -------------------------------------------------------------------------------- 1 | ~VERSION INFORMATION 2 | VERS. 2.0 : CWLS log ASCII Standard -VERSION 2.0 3 | WRAP. YES : Multiple lines per depth step 4 | ~WELL INFORMATION 5 | #MNEM.UNIT DATA DESCRIPTION 6 | #----- ----- ---------- ----------------------------- 7 | STRT .M 910.0000 :START DEPTH 8 | STOP .M 909.5000 :STOP DEPTH 9 | STEP .M -0.1250 :STEP 10 | NULL . -999.25 :NULL VALUE 11 | COMP . ANY OIL COMPANY INC. :COMPANY 12 | WELL . ANY ET AL 12-34-12-34 :WELL 13 | FLD . WILDCAT :FIELD 14 | LOC . 12-34-12-34W5M :LOCATION 15 | PROV . ALBERTA :PROVINCE 16 | SRVC . ANY LOGGING COMPANY INC. :SERVICE COMPANY 17 | SON . 142085 :SERVICE ORDER NUMBER 18 | DATE . 13-DEC-86 :LOG DATE 19 | UWI . 100123401234W500 :UNIQUE WELL ID 20 | ~CURVE INFORMATION 21 | #MNEM.UNIT Curve Description 22 | #--------- ------------------------------ 23 | DEPT .M : Depth 24 | DT .US/M : 1 Sonic Travel Time 25 | RHOB .K/M : 2 Density-Bulk Density 26 | NPHI .V/V : 3 Porosity -Neutron 27 | RX0 .OHMM : 4 Resistivity -Rxo 28 | RESS .OHMM : 5 Resistivity -Shallow 29 | RESM .OHMM : 6 Resistivity -Medium 30 | RESD .OHMM : 7 Resistivity -Deep 31 | SP .MV : 8 Spon. Potential 32 | GR .GAPI : 9 Gamma Ray 33 | CALI .MM : 10 Caliper 34 | DRHO .K/M3 : 11 Delta-Rho 35 | EATT .DBM : 12 EPT Attenuation 36 | TPL .NS/M : 13 TP -EPT 37 | PEF . : 14 PhotoElectric Factor 38 | FFI .V/V : 15 Porosity -NML FFI 39 | DCAL .MM : 16 Caliper-Differential 40 | RHGF .K/M3 : 17 Density-Formation 41 | RHGA .K/M3 : 18 Density-Apparent 42 | SPBL .MV : 19 Baselined SP 43 | GRC .GAPI : 20 Gamma Ray BHC 44 | PHIA .V/V : 21 Porosity -Apparent 45 | PHID .V/V : 22 Porosity -Density 46 | PHIE .V/V : 23 Porosity -Effective 47 | PHIN .V/V : 24 Porosity -Neut BHC 48 | PHIC .V/V : 25 Porosity -Total HCC 49 | R0 .OHMM : 26 Ro 50 | RWA .OHMM : 27 Rfa 51 | SW . : 28 Sw -Effective 52 | MSI . : 29 Sh Idx -Min 53 | BVW . : 30 BVW 54 | FGAS . : 31 Flag -Gas Index 55 | PIDX . : 32 Prod Idx 56 | FBH . : 33 Flag -Bad Hole 57 | FHCC . : 34 Flag -HC Correction 58 | LSWB . : 35 Flag -Limit SWB 59 | ~A Log data section 60 | 910.000000 61 | -999.2500 2692.7075 0.3140 19.4086 19.4086 13.1709 12.2681 62 | -1.5010 96.5306 204.7177 30.5822 -999.2500 -999.2500 3.2515 63 | -999.2500 4.7177 3025.0264 3025.0264 -1.5010 93.1378 0.1641 64 | 0.0101 0.1641 0.3140 0.1641 11.1397 0.3304 0.9529 65 | 0.0000 0.1564 0.0000 11.1397 0.0000 0.0000 0.0000 66 | 909.875000 67 | -999.2500 2712.6460 0.2886 23.3987 23.3987 13.6129 12.4744 68 | -1.4720 90.2803 203.1093 18.7566 -999.2500 -999.2500 3.7058 69 | -999.2500 3.1093 3004.6050 3004.6050 -1.4720 86.9078 0.1456 70 | -0.0015 0.1456 0.2886 0.1456 14.1428 0.2646 1.0000 71 | 0.0000 0.1456 0.0000 14.1428 0.0000 0.0000 0.0000 72 | -------------------------------------------------------------------------------- /test_data/sample_2.0_wrapped.las.writed: -------------------------------------------------------------------------------- 1 | ~VERSION INFORMATION 2 | VERS. 2.0 : X 3 | WRAP. YES : X 4 | ~WELL INFORMATION 5 | LOC.X 12-34-12-34W5M : X 6 | SRVC.X ANY LOGGING COMPANY INC. : X 7 | COMP.X ANY OIL COMPANY INC. : X 8 | WELL.X ANY ET AL 12-34-12-34 : X 9 | STOP.X 909.5000 : X 10 | UWI.X 100123401234W500 : X 11 | STRT.X 910.0000 : X 12 | STEP.X -0.1250 : X 13 | SON.X 142085 : X 14 | PROV.X ALBERTA : X 15 | DATE.X 13-DEC-86 : X 16 | NULL.X -999.25 : X 17 | FLD.X WILDCAT : X 18 | ~CURVE INFORMATION 19 | DEPT.X : X 20 | DT.X : X 21 | RHOB.X : X 22 | NPHI.X : X 23 | RX0.X : X 24 | RESS.X : X 25 | RESM.X : X 26 | RESD.X : X 27 | SP.X : X 28 | GR.X : X 29 | CALI.X : X 30 | DRHO.X : X 31 | EATT.X : X 32 | TPL.X : X 33 | PEF.X : X 34 | FFI.X : X 35 | DCAL.X : X 36 | RHGF.X : X 37 | RHGA.X : X 38 | SPBL.X : X 39 | GRC.X : X 40 | PHIA.X : X 41 | PHID.X : X 42 | PHIE.X : X 43 | PHIN.X : X 44 | PHIC.X : X 45 | R0.X : X 46 | RWA.X : X 47 | SW.X : X 48 | MSI.X : X 49 | BVW.X : X 50 | FGAS.X : X 51 | PIDX.X : X 52 | FBH.X : X 53 | FHCC.X : X 54 | LSWB.X : X 55 | ~PARAMETERS INFORMATION 56 | ~A DEPT DT RHOB NPHI RX0 RESS RESM RESD SP GR CALI DRHO EATT TPL PEF FFI DCAL RHGF RHGA SPBL GRC PHIA PHID PHIE PHIN PHIC R0 RWA SW MSI BVW FGAS PIDX FBH FHCC LSWB 57 | 910.0 -999.25 2692.7075 0.314 19.4086 19.4086 13.1709 12.2681 -1.501 96.5306 204.7177 30.5822 -999.25 -999.25 3.2515 -999.25 4.7177 3025.0264 3025.0264 -1.501 93.1378 0.1641 0.0101 0.1641 0.314 0.1641 11.1397 0.3304 0.9529 0.0 0.1564 0.0 11.1397 0.0 0.0 0.0 58 | 909.875 -999.25 2712.646 0.2886 23.3987 23.3987 13.6129 12.4744 -1.472 90.2803 203.1093 18.7566 -999.25 -999.25 3.7058 -999.25 3.1093 3004.605 3004.605 -1.472 86.9078 0.1456 -0.0015 0.1456 0.2886 0.1456 14.1428 0.2646 1.0 0.0 0.1456 0.0 14.1428 0.0 0.0 0.0 59 | -------------------------------------------------------------------------------- /test_data/sample_3.0.las: -------------------------------------------------------------------------------- 1 | ~VERSION INFORMATION 2 | VERS. 3.0 : CWLS LOG ASCII STANDARD -VERSION 3.0 3 | WRAP. NO : ONE LINE PER DEPTH STEP 4 | DLM . COMMA : DELIMITING CHARACTER BETWEEN DATA COLUMNS 5 | # Acceptable delimiting characters: SPACE (default), TAB, OR COMMA. 6 | ~Well Information 7 | #MNEM.UNIT DATA DESCRIPTION 8 | #----- ----- ---------- ------------------------- 9 | STRT .M 1670.0000 : First Index Value 10 | STOP .M 713.2500 : Last Index Value 11 | STEP .M -0.1250 : STEP 12 | NULL . -999.25 : NULL VALUE 13 | COMP . ANY OIL COMPANY INC. : COMPANY 14 | WELL . ANY ET AL 12-34-12-34 : WELL 15 | FLD . WILDCAT : FIELD 16 | LOC . 12-34-12-34W5M : LOCATION 17 | PROV . ALBERTA : PROVINCE 18 | SRVC . ANY LOGGING COMPANY INC. : SERVICE COMPANY 19 | DATE . 13/12/1986 : LOG DATE {DD/MM/YYYY} 20 | UWI . 100123401234W500 : UNIQUE WELL ID 21 | API . 12345678 : API NUMBER 22 | LAT .DEG 34.56789 : Latitude {DEG} 23 | LONG.DEG -102.34567 : Longitude {DEG} 24 | # Lat & Long can also be presented as: 25 | # LAT .DEG 34/34/4.4 : Latitude {DEG/MIN/SEC} 26 | # LONG.DEG -102/20/44.4 : Longitude {DEG/MIN/SEC} 27 | UTM . : UTM LOCATION 28 | ~CURVE INFORMATION 29 | #MNEM.UNIT LOG CODES CURVE DESCRIPTION 30 | #---------------- ----------- ------------------------- 31 | # Format of value in data section F=float, E=0.00E00 S=string 32 | DEPT .M : DEPTH {F} 33 | DT .US/M 123 456 789 : SONIC TRANSIT TIME {F} 34 | RHOB .K/M3 123 456 789 : BULK DENSITY {F} 35 | NPHI .V/V 123 456 789 : NEUTRON POROSITY {F} 36 | SFLU .OHMM 123 456 789 : SHALLOW RESISTIVITY {F} 37 | SFLA .OHMM 123 456 789 : SHALLOW RESISTIVITY {F} 38 | ILM .OHMM 123 456 789 : MEDIUM RESISTIVITY {F} 39 | ILD .OHMM 123 456 789 : DEEP RESISTIVITY {F} 40 | YME .PA 123 456 789 : YOUNGS MODULES {E} 41 | CDES . 123 456 789 : CORE DESCRIPTION {S} 42 | # A 2D array channel begins here. It has 5 elements. 43 | # value after A: is time spacing of this array element from first element. 44 | NMR[1] .ms 123 456 789 : NMR Echo Array {A:0 } 45 | NMR[2] .ms 123 456 789 : NMR Echo Array {A:5 } 46 | NMR[3] .ms 123 456 789 : NMR Echo Array {A:10} 47 | NMR[4] .ms 123 456 789 : NMR Echo Array {A:15} 48 | NMR[5] .ms 123 456 789 : NMR Echo Array {A:20} 49 | ~PARAMETER INFORMATION 50 | #MNEM.UNIT VALUE DESCRIPTION 51 | #-------------- ---------------- --------------------------- 52 | RUNS. 2 : of Runs for this well. 53 | RUN[1]. 1 : Run 1 54 | RUN[2]. 2 : Run 2 55 | 56 | #Parameters that are zoned. 57 | NMAT_Depth[1].M 500,1500 : Neutron Matrix Depth interval {F} 58 | NMAT_Depth[2].M 1500,2500 : Neutron Matrix Depth interval {F} 59 | DMAT_Depth[1].M 500,1510 : Density Matrix Depth interval {F} 60 | DMAT_Depth[2].M 1510,2510 : Density Matrix Depth interval {F} 61 | 62 | #Service Company specific Parameters 63 | MATR . SAND : Neutron Porosity Matrix | NMAT_Depth[1] 64 | MATR . LIME : Neutron Porosity Matrix | NMAT_Depth[2] 65 | MDEN .KG/M3 2650 : Matrix Bulk Density | DMAT_Depth[1] 66 | MDEN .KG/M3 2710 : Matrix Bulk Density | DMAT_Depth[2] 67 | 68 | #Required Parameters 69 | #Run 1 Parameters 70 | RUN_DEPTH.M 0, 1500 : Run 1 Depth Interval {F} | Run[1] 71 | RUN_DATE. 12/09/1998 : Run 1 date {DD/MM/YYYY} | Run[1] 72 | DREF . : Depth Reference (KB,DF,CB) | RUN[1] 73 | EREF .M : Elevation of Depth Reference | RUN[1] 74 | TDL .M : Total Depth Logger | RUN[1] 75 | TDD .M : Total Depth Driller | RUN[1] 76 | CSGL .M : Casing Bottom Logger | RUN[1] 77 | CSGD .M : Casing Bottom Driller | RUN[1] 78 | CSGS .MM : Casing Size | RUN[1] 79 | CSGW .KG/M : Casing Weight | RUN[1] 80 | BS .MM : Bit Size | RUN[1] 81 | MUD . : Mud type | RUN[1] 82 | MUDS . : Mud Source | RUN[1] 83 | MUDD .KG/M3 : Mud Density | RUN[1] 84 | MUDV .S : Mud Viscosity (Funnel) | RUN[1] 85 | FL .CC : Fluid Loss | RUN[1] 86 | PH . : PH | RUN[1] 87 | RM .OHMM : Resistivity of Mud | RUN[1] 88 | RMT .DEGC : Temperature of Mud | RUN[1] 89 | RMF .OHMM : Rest. of Mud Filtrate | RUN[1] 90 | RMFT .DEGC : Temp. of Mud Filtrate | RUN[1] 91 | RMC .OHMM : Rest. of Mud Cake | RUN[1] 92 | RMCT .DEGC : Temp. of Mud Cake | RUN[1] 93 | TMAX .DEGC : Max. Recorded Temp. | RUN[1] 94 | TIMC . : Date/Time Circulation Stopped | RUN[1] 95 | TIML . : Date/Time Logger Tagged Bottom | RUN[1] 96 | UNIT . : Logging Unit Number | RUN[1] 97 | BASE . : Home Base of Logging Unit | RUN[1] 98 | ENG . : Recording Engineer | RUN[1] 99 | WIT . : Witnessed By | RUN[1] 100 | 101 | #Run 2 Parameters 102 | RUN_DEPTH.M 1500,2513 : Run 2 Depth Interval {F} | Run[2] 103 | RUN_DATE. 23/10/1998 : Run 2 date {DD/MM/YYYY} | Run[2] 104 | DREF . : Depth Reference (KB,DF,CB) | RUN[2] 105 | EREF .M : Elevation of Depth Reference | RUN[2] 106 | TDL .M : Total Depth Logger | RUN[2] 107 | TDD .M : Total Depth Driller | RUN[2] 108 | CSGL .M : Casing Bottom Logger | RUN[2] 109 | CSGD .M : Casing Bottom Driller | RUN[2] 110 | CSGS .MM : Casing Size | RUN[2] 111 | CSGW .KG/M : Casing Weight | RUN[2] 112 | BS .MM : Bit Size | RUN[2] 113 | MUD . : Mud type | RUN[2] 114 | MUDS . : Mud Source | RUN[2] 115 | MUDD .KG/M3 : Mud Density | RUN[2] 116 | MUDV .S : Mud Viscosity (Funnel) | RUN[2] 117 | FL .CC : Fluid Loss | RUN[2] 118 | PH . : PH | RUN[2] 119 | RM .OHMM : Resistivity of Mud | RUN[2] 120 | RMT .DEGC : Temperature of Mud | RUN[2] 121 | RMF .OHMM : Rest. of Mud Filtrate | RUN[2] 122 | RMFT .DEGC : Temp. of Mud Filtrate | RUN[2] 123 | RMC .OHMM : Rest. of Mud Cake | RUN[2] 124 | RMCT .DEGC : Temp. of Mud Cake | RUN[2] 125 | TMAX .DEGC : Max. Recorded Temp. | RUN[2] 126 | TIMC . : Date/Time Circulation Stopped | RUN[2] 127 | TIML . : Date/Time Logger Tagged Bottom | RUN[2] 128 | UNIT . : Logging Unit Number | RUN[2] 129 | BASE . : Home Base of Logging Unit | RUN[2] 130 | ENG . : Recording Engineer | RUN[2] 131 | WIT . : Witnessed By | RUN[2] 132 | -------------------------------------------------------------------------------- /test_data/sample_curve_api.las: -------------------------------------------------------------------------------- 1 | ~VERSION INFORMATION 2 | VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2 3 | WRAP. NO: ONE LINE PER DEPTH STEP 4 | ~WELL INFORMATION BLOCK 5 | #MNEM.UNIT DATA TYPE INFORMATION 6 | #--------- ------------- ------------------------------ 7 | STRT.M 1670.000000: 8 | STOP.M 1660.000000: 9 | STEP.M -0.1250: 10 | NULL. -999.2500: 11 | COMP. COMPANY: ANY OIL COMPANY LTD. 12 | WELL. WELL: ANY ET AL OIL WELL #12 13 | FLD . FIELD: EDAM 14 | LOC . LOCATION: A9-16-49-20W3M 15 | PROV. PROVINCE: SASKATCHEWAN 16 | SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD. 17 | DATE. LOG DATE: 25-DEC-1988 18 | UWI . UNIQUE WELL ID: 100091604920W300 19 | ~Curve Information Section 20 | #MNEM.UNIT API CODE Curve Description 21 | #--------- ------------- ------------------------------- 22 | DEPTH.M : 1 DEPTH 23 | RHOB .K/M3 7 350 02 00: 2 BULK DENSITY 24 | NPHI .VOL/VOL 7 890 00 00: 3 NEUTRON POROSITY - SANDSTONE 25 | MSFL .OHMM 7 220 01 00: 4 Rxo RESISTIVITY 26 | SFLA .OHMM 7 222 01 00: 5 SHALLOW RESISTIVITY 27 | ILM .OHMM 7 120 44 00: 6 MEDIUM RESISTIVITY 28 | ILD .OHMM 7 120 46 00: 7 DEEP RESISTIVITY 29 | SP .MV 7 010 01 00: 8 SPONTANEOUS POTENTIAL 30 | ~PARAMETER INFORMATION 31 | #MNEM.UNIT VALUE DESCRIPTION 32 | #--------- ------------- ------------------------------ 33 | BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE 34 | BS .MM 200.0000: BIT SIZE 35 | FD .K/M3 1000.0000: FLUID DENSITY 36 | MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO) 37 | MDEN. 2710.0000: LOGGING MATRIX DENSITY 38 | RMF .OHMM 0.2160: MUD FILTRATE RESISTIVITY 39 | DFD .K/M3 1525.0000: DRILL FLUID DENSITY 40 | ~Other 41 | Note: The logging tools became stuck at 625 meters causing the data 42 | between 625 meters and 615 meters to be invalid. 43 | ~A DEPTH DT RHOB NPHI SFLU SFLA ILM ILD 44 | 1670.000 123.450 2550.000 0.450 123.450 123.450 110.200 105.600 45 | 1669.875 123.450 2550.000 0.450 123.450 123.450 110.200 105.600 46 | 1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600 47 | -------------------------------------------------------------------------------- /test_data/sample_curve_api.las.writed: -------------------------------------------------------------------------------- 1 | ~VERSION INFORMATION 2 | VERS. 1.2 : X 3 | WRAP. NO : X 4 | ~WELL INFORMATION 5 | LOC.X LOCATION : X 6 | SRVC.X SERVICE COMPANY : X 7 | COMP.X COMPANY : X 8 | WELL.X WELL : X 9 | STOP.X 1660.000000 : X 10 | UWI.X UNIQUE WELL ID : X 11 | STRT.X 1670.000000 : X 12 | STEP.X -0.1250 : X 13 | PROV.X PROVINCE : X 14 | DATE.X LOG DATE : X 15 | NULL.X -999.2500 : X 16 | FLD.X FIELD : X 17 | ~CURVE INFORMATION 18 | DEPTH.X : X 19 | RHOB.X : X 20 | NPHI.X : X 21 | MSFL.X : X 22 | SFLA.X : X 23 | ILM.X : X 24 | ILD.X : X 25 | SP.X : X 26 | ~PARAMETERS INFORMATION 27 | MATR.X 0.0000 : X 28 | MDEN.X 2710.0000 : X 29 | RMF.X 0.2160 : X 30 | BS.X 200.0000 : X 31 | FD.X 1000.0000 : X 32 | BHT.X 35.5000 : X 33 | DFD.X 1525.0000 : X 34 | ~A DEPTH RHOB NPHI MSFL SFLA ILM ILD SP 35 | 1670.0 123.45 2550.0 0.45 123.45 123.45 110.2 105.6 36 | 1669.875 123.45 2550.0 0.45 123.45 123.45 110.2 105.6 37 | 1669.75 123.45 2550.0 0.45 123.45 123.45 110.2 105.6 38 | -------------------------------------------------------------------------------- /test_data/sample_las3.0_spec.las: -------------------------------------------------------------------------------- 1 | ~VERSION INFORMATION 2 | VERS. 3.0 : CWLS LOG ASCII STANDARD -VERSION 3.0 3 | WRAP. NO : ONE LINE PER DEPTH STEP 4 | DLM . COMMA : DELIMITING CHARACTER BETWEEN DATA COLUMNS 5 | # Acceptable delimiting characters: SPACE (default), TAB, OR COMMA. 6 | ~Well Information 7 | #MNEM.UNIT DATA DESCRIPTION 8 | #----- ----- ---------- ------------------------- 9 | STRT .M 1670.0000 : First Index Value 10 | STOP .M 713.2500 : Last Index Value 11 | STEP .M -0.1250 : STEP 12 | NULL . -999.25 : NULL VALUE 13 | COMP . ANY OIL COMPANY INC. : COMPANY 14 | WELL . ANY ET AL 12-34-12-34 : WELL 15 | FLD . WILDCAT : FIELD 16 | LOC . 12-34-12-34W5M : LOCATION 17 | PROV . ALBERTA : PROVINCE 18 | SRVC . ANY LOGGING COMPANY INC. : SERVICE COMPANY 19 | DATE . 13/12/1986 : LOG DATE {DD/MM/YYYY} 20 | UWI . 100123401234W500 : UNIQUE WELL ID 21 | API . 12345678 : API NUMBER 22 | LAT .DEG 34.56789 : Latitude {DEG} 23 | LONG.DEG -102.34567 : Longitude {DEG} 24 | # Lat & Long can also be presented as: 25 | # LAT .DEG 34/34/4.4 : Latitude {DEG/MIN/SEC} 26 | # LONG.DEG -102/20/44.4 : Longitude {DEG/MIN/SEC} 27 | UTM . : UTM LOCATION 28 | ~CURVE INFORMATION 29 | #MNEM.UNIT LOG CODES CURVE DESCRIPTION 30 | #---------------- ----------- ------------------------- 31 | # Format of value in data section F=float, E=0.00E00 S=string 32 | DEPT .M : DEPTH {F} 33 | DT .US/M 123 456 789 : SONIC TRANSIT TIME {F} 34 | RHOB .K/M3 123 456 789 : BULK DENSITY {F} 35 | NPHI .V/V 123 456 789 : NEUTRON POROSITY {F} 36 | SFLU .OHMM 123 456 789 : SHALLOW RESISTIVITY {F} 37 | SFLA .OHMM 123 456 789 : SHALLOW RESISTIVITY {F} 38 | ILM .OHMM 123 456 789 : MEDIUM RESISTIVITY {F} 39 | ILD .OHMM 123 456 789 : DEEP RESISTIVITY {F} 40 | YME .PA 123 456 789 : YOUNGS MODULES {E} 41 | CDES . 123 456 789 : CORE DESCRIPTION {S} 42 | # A 2D array channel begins here. It has 5 elements. 43 | # value after A: is time spacing of this array element from first element. 44 | NMR[1] .ms 123 456 789 : NMR Echo Array {A:0 } 45 | NMR[2] .ms 123 456 789 : NMR Echo Array {A:5 } 46 | NMR[3] .ms 123 456 789 : NMR Echo Array {A:10} 47 | NMR[4] .ms 123 456 789 : NMR Echo Array {A:15} 48 | NMR[5] .ms 123 456 789 : NMR Echo Array {A:20} 49 | 50 | 51 | ~PARAMETER INFORMATION 52 | #MNEM.UNIT VALUE DESCRIPTION 53 | #-------------- ---------------- --------------------------- 54 | RUNS. 2 : # of Runs for this well. 55 | RUN[1]. 1 : Run 1 56 | RUN[2]. 2 : Run 2 57 | 58 | #Parameters that are zoned. 59 | NMAT_Depth[1].M 500,1500 : Neutron Matrix Depth interval {F} 60 | NMAT_Depth[2].M 1500,2500 : Neutron Matrix Depth interval {F} 61 | DMAT_Depth[1].M 500,1510 : Density Matrix Depth interval {F} 62 | DMAT_Depth[2].M 1510,2510 : Density Matrix Depth interval {F} 63 | 64 | #Service Company specific Parameters 65 | MATR . SAND : Neutron Porosity Matrix | NMAT_Depth[1] 66 | MATR . LIME : Neutron Porosity Matrix | NMAT_Depth[2] 67 | MDEN .KG/M3 2650 : Matrix Bulk Density | DMAT_Depth[1] 68 | MDEN .KG/M3 2710 : Matrix Bulk Density | DMAT_Depth[2] 69 | 70 | #Required Parameters 71 | #Run 1 Parameters 72 | RUN_DEPTH.M 0, 1500 : Run 1 Depth Interval {F} | Run[1] 73 | RUN_DATE. 12/09/1998 : Run 1 date {DD/MM/YYYY} | Run[1] 74 | DREF . : Depth Reference (KB,DF,CB) | RUN[1] 75 | EREF .M : Elevation of Depth Reference | RUN[1] 76 | TDL .M : Total Depth Logger | RUN[1] 77 | TDD .M : Total Depth Driller | RUN[1] 78 | CSGL .M : Casing Bottom Logger | RUN[1] 79 | CSGD .M : Casing Bottom Driller | RUN[1] 80 | CSGS .MM : Casing Size | RUN[1] 81 | CSGW .KG/M : Casing Weight | RUN[1] 82 | BS .MM : Bit Size | RUN[1] 83 | MUD . : Mud type | RUN[1] 84 | MUDS . : Mud Source | RUN[1] 85 | MUDD .KG/M3 : Mud Density | RUN[1] 86 | MUDV .S : Mud Viscosity (Funnel) | RUN[1] 87 | FL .CC : Fluid Loss | RUN[1] 88 | PH . : PH | RUN[1] 89 | RM .OHMM : Resistivity of Mud | RUN[1] 90 | RMT .DEGC : Temperature of Mud | RUN[1] 91 | RMF .OHMM : Rest. of Mud Filtrate | RUN[1] 92 | RMFT .DEGC : Temp. of Mud Filtrate | RUN[1] 93 | RMC .OHMM : Rest. of Mud Cake | RUN[1] 94 | RMCT .DEGC : Temp. of Mud Cake | RUN[1] 95 | TMAX .DEGC : Max. Recorded Temp. | RUN[1] 96 | TIMC . : Date/Time Circulation Stopped | RUN[1] 97 | TIML . : Date/Time Logger Tagged Bottom | RUN[1] 98 | UNIT . : Logging Unit Number | RUN[1] 99 | BASE . : Home Base of Logging Unit | RUN[1] 100 | ENG . : Recording Engineer | RUN[1] 101 | WIT . : Witnessed By | RUN[1] 102 | 103 | #Run 2 Parameters 104 | RUN_DEPTH.M 1500,2513 : Run 2 Depth Interval {F} | Run[2] 105 | RUN_DATE. 23/10/1998 : Run 2 date {DD/MM/YYYY} | Run[2] 106 | DREF . : Depth Reference (KB,DF,CB) | RUN[2] 107 | EREF .M : Elevation of Depth Reference | RUN[2] 108 | TDL .M : Total Depth Logger | RUN[2] 109 | TDD .M : Total Depth Driller | RUN[2] 110 | CSGL .M : Casing Bottom Logger | RUN[2] 111 | CSGD .M : Casing Bottom Driller | RUN[2] 112 | CSGS .MM : Casing Size | RUN[2] 113 | CSGW .KG/M : Casing Weight | RUN[2] 114 | BS .MM : Bit Size | RUN[2] 115 | MUD . : Mud type | RUN[2] 116 | MUDS . : Mud Source | RUN[2] 117 | MUDD .KG/M3 : Mud Density | RUN[2] 118 | MUDV .S : Mud Viscosity (Funnel) | RUN[2] 119 | FL .CC : Fluid Loss | RUN[2] 120 | PH . : PH | RUN[2] 121 | RM .OHMM : Resistivity of Mud | RUN[2] 122 | RMT .DEGC : Temperature of Mud | RUN[2] 123 | RMF .OHMM : Rest. of Mud Filtrate | RUN[2] 124 | RMFT .DEGC : Temp. of Mud Filtrate | RUN[2] 125 | RMC .OHMM : Rest. of Mud Cake | RUN[2] 126 | RMCT .DEGC : Temp. of Mud Cake | RUN[2] 127 | TMAX .DEGC : Max. Recorded Temp. | RUN[2] 128 | TIMC . : Date/Time Circulation Stopped | RUN[2] 129 | TIML . : Date/Time Logger Tagged Bottom | RUN[2] 130 | UNIT . : Logging Unit Number | RUN[2] 131 | BASE . : Home Base of Logging Unit | RUN[2] 132 | ENG . : Recording Engineer | RUN[2] 133 | WIT . : Witnessed By | RUN[2] 134 | 135 | 136 | ~Drilling_Definition 137 | DEPT .ft : depth {F} 138 | DIST .ft : cummulative increment of drilling. {F} 139 | HRS .hour : Hours of drilling {F} 140 | ROP .ft/hr : Rate of Penetration {F} 141 | WOB .klb : weight on bit {F} 142 | RPM .RPM : rotations per minute {F} 143 | TQ .AMPS : torque on bit in amps {F} 144 | PUMP .psi : Mud pump pressure {F} 145 | TSPM .SPM : total strokes per minute {F} 146 | GPM .gal/min : gallons per minute {F} 147 | ECD .ppg : effective circulation density {F} 148 | TBR . : total barrels returned {F} 149 | 150 | ~Drilling | Drilling_Definition 151 | 322.02,1.02,0.0,24.0,3,59,111,1199,179, 879,8.73,39 152 | 323.05,2.05,0.1,37.5,2,69,118,1182,175, 861,8.73,202 153 | 154 | ~Core_Definition 155 | CORET.M : Core Top Depth {F} 156 | COREB.M : Core Bottom Depth {F} 157 | CDES . : Core Description {S} 158 | 159 | ~Core[1] | Core_Definition 160 | 545.50,550.60,Long cylindrical hunk of rock 161 | 551.20,554.90,Long broken hunk of rock 162 | 575.00,595.00,Debris only 163 | 164 | ~Core[2] | Core_Definition 165 | 655.50,660.60,Long cylindrical hunk of rock 166 | 661.20,664.90,Long broken hunk of rock 167 | 675.00,695.00,Debris only 168 | 169 | ~Inclinometry_Definition 170 | MD. M : Measured Depth {F} 171 | TVD. M : True Vertical Depth {F} 172 | AZIM.DEG : Borehole Azimuth {F} 173 | DEVI.DEG : Borehole Deviation {F} 174 | 175 | ~Inclinometry | Inclinometry_Definition 176 | 0.00,0.00,290.00,0.00 177 | 100.00,100.00,234.00,0.00 178 | 200.00,198.34,284.86,1.43 179 | 300.00,295.44,234.21,2.04 180 | 400.00,390.71,224.04,3.93 181 | 500.00,482.85,224.64,5.88 182 | 600.00,571.90,204.39,7.41 183 | 184 | ~Test_Definition 185 | DST. :DST Number 186 | DTOP.M :DST Top Depth {F} 187 | DBOT.M :DST Bottom Depth {F} 188 | DDES. :DST recovery Description 189 | FSIP.KPAA :Final Shut in pressure {F} 190 | BLOWD. :BLOW DESCRIPTION {S} 191 | 192 | ~TEST | TEST_Definition 193 | 1,1500,1505,TSTM,13243,Weak Blow 194 | 2,2210,2235,Oil to surface,21451,Strong Blow 195 | 3,2575,2589,Packer Failure,0,Blow Out 196 | 197 | 198 | ~TOPS_Definition 199 | TOPT.M : Top Top Depth {F} 200 | TOPB.M : Top Bottom Depth {F} 201 | TOPN. : Top Name {S} 202 | 203 | ~TOPS | TOPS_Definition 204 | 545.50,602.00,Viking 205 | 602.00,615.00,Colony 206 | 615.00,655.00,Basal Quartz 207 | 208 | ~Perforations_Definition 209 | PERFT.M : Perforation Top Depth {F} 210 | PERFB.M : Perforation Bottom Depth {F} 211 | PERFD.SHOTS/M : Shots per meter {F} 212 | PERFT. : Charge Type {S} 213 | 214 | ~Perforations | Perforations_Definition 215 | 545.50,550.60,12,BIG HOLE 216 | 551.20,554.90,12,BIG HOLE 217 | 575.00,595.00,12,BIG HOLE 218 | 219 | ~OTHER 220 | # Note: The logging tools became stuck at 625 meters causing the data 221 | # between 625 meters and 615 meters to be invalid. 222 | 223 | ~ASCII | CURVE 224 | 1670.000,123.450,2550.000,0.450,123.450,123.450,110.200,105.600,1.45E+12,DOLOMITE WI/VUGS,10,12,14,18,13 225 | 1669.875,123.450,2550.000,0.450,123.450,123.450,110.200,105.600,1.47E+12,LIMESTOVE ,12,15,21,35,25 226 | 1669.750,123.450,2550.000,0.450,123.450,123.450,110.200,105.600,2.85E+12,LOST INTERVAL ,18,25,10,8,17 227 | etc... 228 | 229 | -------------------------------------------------------------------------------- /test_data/sample_minimal.las: -------------------------------------------------------------------------------- 1 | ~V 2 | VERS. 1.2: CWLS log ASCII Standard -VERSION 1.2 3 | WRAP. NO: One line per depth step 4 | ~W 5 | STRT.M 635.0000: 6 | STOP.M 400.0000: 7 | STEP.M -0.1250: 8 | NULL. -999.25: 9 | COMP. COMPANY: ANY OIL COMPANY INC. 10 | WELL. WELL: ANY ET AL A9-16-49-20 11 | FLD . FIELD: EDAM 12 | LOC . LOCATION: A9-16-49-20W3M 13 | PROV. PROVINCE: SASKATCHEWAN 14 | SRVC. SERVICE COMPANY: ANY LOGGING COMPANY INC. 15 | DATE. LOG DATE: 13-DEC-86 16 | UWI . UNIQUE WELL ID: 100091604920W300 17 | ~C 18 | DEPT.M : DEPTH 19 | RHOB.K/M3 : BULK DENSITY 20 | NPHI.VOL/VOL : NEUTRON POROSITY - SANDSTONE 21 | MSFL.OHMM : Rxo RESISTIVITY 22 | SFLA.OHMM : SHALLOW RESISTIVITY 23 | ILM .OHMM : MEDIUM RESISTIVITY 24 | ILD .OHMM : DEEP RESISTIVITY 25 | SP .MV : SPONTANEOUS POTENTIAL 26 | ~A 27 | 635.0000 2256.0000 0.4033 22.0781 22.0781 20.3438 3.6660 123.4 28 | 634.8750 2256.0000 0.4033 22.0781 22.0781 20.3438 3.6660 123.4 29 | -------------------------------------------------------------------------------- /test_data/sample_minimal.las.writed: -------------------------------------------------------------------------------- 1 | ~VERSION INFORMATION 2 | VERS. 1.2 : X 3 | WRAP. NO : X 4 | ~WELL INFORMATION 5 | LOC.X LOCATION : X 6 | SRVC.X SERVICE COMPANY : X 7 | COMP.X COMPANY : X 8 | WELL.X WELL : X 9 | STOP.X 400.0000 : X 10 | UWI.X UNIQUE WELL ID : X 11 | STRT.X 635.0000 : X 12 | STEP.X -0.1250 : X 13 | PROV.X PROVINCE : X 14 | DATE.X LOG DATE : X 15 | NULL.X -999.25 : X 16 | FLD.X FIELD : X 17 | ~CURVE INFORMATION 18 | DEPT.X : X 19 | RHOB.X : X 20 | NPHI.X : X 21 | MSFL.X : X 22 | SFLA.X : X 23 | ILM.X : X 24 | ILD.X : X 25 | SP.X : X 26 | ~PARAMETERS INFORMATION 27 | ~A DEPT RHOB NPHI MSFL SFLA ILM ILD SP 28 | 635.0 2256.0 0.4033 22.0781 22.0781 20.3438 3.666 123.4 29 | 634.875 2256.0 0.4033 22.0781 22.0781 20.3438 3.666 123.4 30 | -------------------------------------------------------------------------------- /test_data/sample_wrapped.las: -------------------------------------------------------------------------------- 1 | ~Version Information 2 | VERS. 1.20: CWLS log ASCII Standard -VERSION 1.20 3 | WRAP. YES: Multiple lines per depth step 4 | ~Well Information 5 | #MNEM.UNIT Data Type Information 6 | #--------- ------------- ------------------------------ 7 | STRT.M 910.000: 8 | STOP.M 901.000: 9 | STEP.M -0.1250: 10 | NULL. -999.2500: Null value 11 | COMP. COMPANY: ANY OIL COMPANY INC. 12 | WELL. WELL: ANY ET AL XX-XX-XX-XX 13 | FLD . FIELD: WILDCAT 14 | LOC . LOCATION: XX-XX-XX-XXW3M 15 | PROV. PROVINCE: SASKATCHEWAN 16 | SRVC. SERVICE COMPANY: ANY LOGGING COMPANY INC. 17 | SON . SERVICE ORDER : 142085 18 | DATE. LOG DATE: 13-DEC-86 19 | UWI . UNIQUE WELL ID: 20 | ~Curve Information 21 | #MNEM.UNIT API CODE Curve Description 22 | #--------- ------------- ------------------------------ 23 | DEPT.M : Depth 24 | DT .US/M : 1 Sonic Travel Time 25 | RHOB.K/M : 2 Density-Bulk Density 26 | NPHI.V/V : 3 Porosity -Neutron 27 | RX0 .OHMM : 4 Resistivity -Rxo 28 | RESS.OHMM : 5 Resistivity -Shallow 29 | RESM.OHMM : 6 Resistivity -Medium 30 | RESD.OHMM : 7 Resistivity -Deep 31 | SP .MV : 8 Spon. Potential 32 | GR .GAPI : 9 Gamma Ray 33 | CALI.MM : 10 Caliper 34 | DRHO.K/M3 : 11 Delta-Rho 35 | EATT.DBM : 12 EPT Attenuation 36 | TPL .NS/M : 13 TP -EPT 37 | PEF . : 14 PhotoElectric Factor 38 | FFI .V/V : 15 Porosity -NML FFI 39 | DCAL.MM : 16 Caliper-Differential 40 | RHGF.K/M3 : 17 Density-Formation 41 | RHGA.K/M3 : 18 Density-Apparent 42 | SPBL.MV : 19 Baselined SP 43 | GRC .GAPI : 20 Gamma Ray BHC 44 | PHIA.V/V : 21 Porosity -Apparent 45 | PHID.V/V : 22 Porosity -Density 46 | PHIE.V/V : 23 Porosity -Effective 47 | PHIN.V/V : 24 Porosity -Neut BHC 48 | PHIC.V/V : 25 Porosity -Total HCC 49 | R0 .OHMM : 26 Ro 50 | RWA .OHMM : 27 Rfa 51 | SW . : 28 Sw -Effective 52 | MSI . : 29 Sh Idx -Min 53 | BVW . : 30 BVW 54 | FGAS. : 31 Flag -Gas Index 55 | PIDX. : 32 Prod Idx 56 | FBH . : 33 Flag -Bad Hole 57 | FHCC. : 34 Flag -HC Correction 58 | LSWB. : 35 Flag -Limit SWB 59 | ~A Log data section 60 | 910.000000 61 | -999.2500 2692.7075 0.3140 19.4086 19.4086 13.1709 12.2681 62 | -1.5010 96.5306 204.7177 30.5822 -999.2500 -999.2500 3.2515 63 | -999.2500 4.7177 3025.0264 3025.0264 -1.5010 93.1378 0.1641 64 | 0.0101 0.1641 0.3140 0.1641 11.1397 0.3304 0.9529 65 | 0.0000 0.1564 0.0000 11.1397 0.0000 0.0000 0.0000 66 | 909.875000 67 | -999.2500 2712.6460 0.2886 23.3987 23.3987 13.6129 12.4744 68 | -1.4720 90.2803 203.1093 18.7566 -999.2500 -999.2500 3.7058 69 | -999.2500 3.1093 3004.6050 3004.6050 -1.4720 86.9078 0.1456 70 | -0.0015 0.1456 0.2886 0.1456 14.1428 0.2646 1.0000 71 | 0.0000 0.1456 0.0000 14.1428 0.0000 0.0000 0.0000 72 | 909.750000 73 | -999.2500 2692.8137 0.2730 22.5909 22.5909 13.6821 12.6146 74 | -1.4804 89.8492 201.9287 3.1551 -999.2500 -999.2500 4.3124 75 | -999.2500 1.9287 2976.4451 2976.4451 -1.4804 86.3465 0.1435 76 | 0.0101 0.1435 0.2730 0.1435 14.5674 0.2598 1.0000 77 | 0.0000 0.1435 0.0000 14.5674 0.0000 0.0000 0.0000 78 | 909.625000 79 | -999.2500 2644.3650 0.2765 18.4831 18.4831 13.4159 12.6900 80 | -1.5010 93.3999 201.5826 -6.5861 -999.2500 -999.2500 4.3822 81 | -999.2500 1.5826 2955.3528 2955.3528 -1.5010 89.7142 0.1590 82 | 0.0384 0.1590 0.2765 0.1590 11.8600 0.3210 0.9667 83 | 0.0000 0.1538 0.0000 11.8600 0.0000 0.0000 0.0000 84 | 909.500000 85 | -999.2500 2586.2822 0.2996 13.9187 13.9187 12.9195 12.7016 86 | -1.4916 98.1214 201.7126 -4.5574 -999.2500 -999.2500 3.5967 87 | -999.2500 1.7126 2953.5940 2953.5940 -1.4916 94.2670 0.1880 88 | 0.0723 0.1880 0.2996 0.1880 8.4863 0.4490 0.8174 89 | 0.0000 0.1537 0.0000 8.4863 0.0000 0.0000 0.0000 90 | -------------------------------------------------------------------------------- /test_data/sample_wrapped.las.writed: -------------------------------------------------------------------------------- 1 | ~VERSION INFORMATION 2 | VERS. 1.20 : X 3 | WRAP. YES : X 4 | ~WELL INFORMATION 5 | LOC.X LOCATION : X 6 | SRVC.X SERVICE COMPANY : X 7 | COMP.X COMPANY : X 8 | WELL.X WELL : X 9 | STOP.X 901.000 : X 10 | UWI.X UNIQUE WELL ID : X 11 | STRT.X 910.000 : X 12 | STEP.X -0.1250 : X 13 | SON.X SERVICE ORDER : X 14 | PROV.X PROVINCE : X 15 | DATE.X LOG DATE : X 16 | NULL.X -999.2500 : X 17 | FLD.X FIELD : X 18 | ~CURVE INFORMATION 19 | DEPT.X : X 20 | DT.X : X 21 | RHOB.X : X 22 | NPHI.X : X 23 | RX0.X : X 24 | RESS.X : X 25 | RESM.X : X 26 | RESD.X : X 27 | SP.X : X 28 | GR.X : X 29 | CALI.X : X 30 | DRHO.X : X 31 | EATT.X : X 32 | TPL.X : X 33 | PEF.X : X 34 | FFI.X : X 35 | DCAL.X : X 36 | RHGF.X : X 37 | RHGA.X : X 38 | SPBL.X : X 39 | GRC.X : X 40 | PHIA.X : X 41 | PHID.X : X 42 | PHIE.X : X 43 | PHIN.X : X 44 | PHIC.X : X 45 | R0.X : X 46 | RWA.X : X 47 | SW.X : X 48 | MSI.X : X 49 | BVW.X : X 50 | FGAS.X : X 51 | PIDX.X : X 52 | FBH.X : X 53 | FHCC.X : X 54 | LSWB.X : X 55 | ~PARAMETERS INFORMATION 56 | ~A DEPT DT RHOB NPHI RX0 RESS RESM RESD SP GR CALI DRHO EATT TPL PEF FFI DCAL RHGF RHGA SPBL GRC PHIA PHID PHIE PHIN PHIC R0 RWA SW MSI BVW FGAS PIDX FBH FHCC LSWB 57 | 910.0 -999.25 2692.7075 0.314 19.4086 19.4086 13.1709 12.2681 -1.501 96.5306 204.7177 30.5822 -999.25 -999.25 3.2515 -999.25 4.7177 3025.0264 3025.0264 -1.501 93.1378 0.1641 0.0101 0.1641 0.314 0.1641 11.1397 0.3304 0.9529 0.0 0.1564 0.0 11.1397 0.0 0.0 0.0 58 | 909.875 -999.25 2712.646 0.2886 23.3987 23.3987 13.6129 12.4744 -1.472 90.2803 203.1093 18.7566 -999.25 -999.25 3.7058 -999.25 3.1093 3004.605 3004.605 -1.472 86.9078 0.1456 -0.0015 0.1456 0.2886 0.1456 14.1428 0.2646 1.0 0.0 0.1456 0.0 14.1428 0.0 0.0 0.0 59 | 909.75 -999.25 2692.8137 0.273 22.5909 22.5909 13.6821 12.6146 -1.4804 89.8492 201.9287 3.1551 -999.25 -999.25 4.3124 -999.25 1.9287 2976.4451 2976.4451 -1.4804 86.3465 0.1435 0.0101 0.1435 0.273 0.1435 14.5674 0.2598 1.0 0.0 0.1435 0.0 14.5674 0.0 0.0 0.0 60 | 909.625 -999.25 2644.365 0.2765 18.4831 18.4831 13.4159 12.69 -1.501 93.3999 201.5826 -6.5861 -999.25 -999.25 4.3822 -999.25 1.5826 2955.3528 2955.3528 -1.501 89.7142 0.159 0.0384 0.159 0.2765 0.159 11.86 0.321 0.9667 0.0 0.1538 0.0 11.86 0.0 0.0 0.0 61 | 909.5 -999.25 2586.2822 0.2996 13.9187 13.9187 12.9195 12.7016 -1.4916 98.1214 201.7126 -4.5574 -999.25 -999.25 3.5967 -999.25 1.7126 2953.594 2953.594 -1.4916 94.267 0.188 0.0723 0.188 0.2996 0.188 8.4863 0.449 0.8174 0.0 0.1537 0.0 8.4863 0.0 0.0 0.0 62 | --------------------------------------------------------------------------------