las2witsml 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 09ea75f49badbc88280d2f30fead9d79f72608ba
4
+ data.tar.gz: 82fb0037e00a6eba96c42e7527c2ebe08d34f2a9
5
+ SHA512:
6
+ metadata.gz: 7e6d047acca3261b8f80f435d4121569c91814aa2105b85adb503f7206250d4189f272d4fc9a9b2b5f71bf8745f3957129559698bd2b5c23f24bd15781c3b8ef
7
+ data.tar.gz: ba07877b74d7fafd512e1e75544ae662e19ff086b5025946f73e4fe78dbc18772c8609b3aa136362d2375aaf8e433b0eeb118c7739d4b161209cf6250f565737
data/README CHANGED
@@ -15,6 +15,7 @@ Usage: las2witsml [-n name] [-u uid] [-b uid] [-l uid] [-x version] [-h] [-v] la
15
15
  Example:
16
16
  las2witsml -x 1.3.1 -u W1 -b B1 -l L1 -n Unnamed lasfile.las
17
17
 
18
+ las2witsml files: Copyright 2012 Wellstorm Development LLC
18
19
  License: Apache 2.0
19
20
 
20
21
  History:
data/bin/las2witsml CHANGED
@@ -72,8 +72,8 @@ ARGV.each do|a|
72
72
  version = 1410
73
73
  end
74
74
  begin
75
- l2w.run infile, outfile, options[:uw] || "", options[:uwb] || "", options[:ul] || "", options[:name] || 'Untitled', version, options[:v] != false
76
- 0
75
+ succeed = l2w.run infile, outfile, options[:uw] || "", options[:uwb] || "", options[:ul] || "", options[:name] || 'Untitled', version, options[:v] != false
76
+ succeed ? 0 : 1
77
77
  rescue => e
78
78
  $stderr.puts e.backtrace
79
79
  1
data/lib/las2witsml.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #require 'java'
2
- #require 'las_file'
3
- #require 'witsml_file'
2
+ require 'las_file'
3
+ require 'witsml_file'
4
4
  class Las2Witsml
5
5
  def run in_stream, out_stream, uid_well, uid_wellbore, uid_log, name_log, version = 1411, verbose=false
6
6
  begin
data/lib/witsml_file.rb CHANGED
@@ -3,6 +3,8 @@ require 'time'
3
3
  require 'tempfile'
4
4
 
5
5
  class WitsmlFile
6
+ class UnrecognizedUnitException < Exception
7
+ end
6
8
 
7
9
  UNITS = {'ft'=>'ft',
8
10
  'klbs'=>'klbf',
@@ -24,7 +26,147 @@ class WitsmlFile
24
26
  'ksi'=>'kpsi',
25
27
  'cm'=>'cm',
26
28
  'ft per hour'=>'ftPh',
27
- 'min/ft'=>'minPft'}
29
+ 'min/ft'=>'minPft',
30
+
31
+ 'KG' => 'kg',
32
+ 'M' => 'm',
33
+ 'F' => 'ft',
34
+ 'FT' => 'ft',
35
+ 'f' => 'ft',
36
+ 'GAPI' => 'gAPI',
37
+ 'GAPI' => 'gAPI',
38
+ 'ohmm' => 'ohm.m',
39
+ 'OHMM' => 'ohm.m',
40
+ 'API' => 'gAPI',
41
+ 'api' => 'gAPI',
42
+ 'DEGC' => 'degC',
43
+ 'M3' => 'm3',
44
+ 'PERC' => '%',
45
+ 'MV' => 'mV',
46
+ 'US' => 'us',
47
+ 'US/M' => 'us/m',
48
+ 'us/f' => 'us/ft',
49
+ 'US/F' => 'us/ft',
50
+ 'S/F' => 's/ft',
51
+ 'IN' => 'in',
52
+ 'B/E' => 'b/elec',
53
+ 'LBF' => 'lbf',
54
+ 'G/C3' => 'g/cm3',
55
+ 'G/CM3' => 'g/cm3',
56
+ 'NAPI' => 'nAPI',
57
+ 'F3' => 'ft3',
58
+ 'BARN' => 'b',
59
+ 'F/S' => 'ft/s',
60
+ 'DEC' => 'Euc',
61
+ 'LBS' => 'lbf',
62
+ 'lbs' => 'lbf',
63
+ 'None' => 'Euc',
64
+ 'PU' => '%',
65
+ 'MM' => 'mm',
66
+ 'LB' => 'lbf',
67
+ 'KGM3' => 'kg/m3',
68
+ 'K/M3' => 'kg/m3',
69
+ 'KG/M3' => 'kg/m3',
70
+ 'MS/M' => 'ms/m',
71
+ 'FT/SEC.' => 'ft/s',
72
+ 'FT/SEC' => 'ft/s',
73
+ 'V/V' => 'Euc',
74
+ 'CFCF' => 'Euc',
75
+ 'ohm-m' => 'ohm.m',
76
+ 'ohm.' => 'ohm.m',
77
+ 'OHMS' => 'ohm.m',
78
+ 'OHM-' => 'ohm.m',
79
+ 'Ohmm' => 'ohm.m',
80
+ 'F/HR' => 'ft/h',
81
+ 'g/cc' => 'g/cm3',
82
+ 'G/CC' => 'g/cm3',
83
+ 'MD' => 'mD.ft',
84
+ 'MMHO' => 'mmho/m',
85
+ 'usec/ft' => 'us/ft',
86
+ 'B/CC' => 'b/cm3',
87
+ 'F/MN' => 'ft3/min.ft2',
88
+ 'PSI' => 'psi',
89
+ 'MSEC' => 'ms',
90
+ 'Ft/s' => 'ft/s',
91
+ 'ft/hr' => 'ft/h',
92
+ 'MM/M' => 'mmho/m',
93
+ 'gm/cc' => 'g/cm3',
94
+ 'INCH' => 'in',
95
+ 'USEC/M' => 'us/m',
96
+ 'Inches' => 'in',
97
+ 'F/M' => 'ft/min',
98
+ 'Api' => 'gAPI',
99
+ 'APi' => 'gAPI',
100
+ 'Deci' => 'Euc',
101
+ 'DECP' => 'Euc',
102
+ 'decp' => 'Euc',
103
+ 'percent' => '%',
104
+ 'PERCENT' => '%',
105
+ 'hrs' => 'h',
106
+ 'RPM' => 'rpm',
107
+ 'GPM' => 'galUS/min',
108
+ 'amps' => 'A',
109
+ 'BN/E' => 'b/elec',
110
+ 'barrels' => 'bbl',
111
+ 'APSI' => 'psia',
112
+ 'PA' => 'Pa',
113
+ 'PPM' => 'ppm',
114
+ 'USEC/FT' => 'us/ft',
115
+ 'USEC' => 'us',
116
+ 'msec' => 'ms',
117
+ 'GPA' => 'GPa',
118
+ 'Ft' => 'ft',
119
+ 'fT' => 'ft',
120
+ 'KGM/M3S' => 'kg/m2.s',
121
+ 'FRAC' => '%',
122
+ 'FRACTION' => '%',
123
+ 'fraction' => '%',
124
+ 'v/v' => 'Euc',
125
+ 'uspf' => 'us/ft',
126
+ 'USFT' => 'us/ft',
127
+ 'US/FT' => 'us/ft',
128
+ 'FT/HR' => 'ft/h',
129
+ 'FT/H' => 'ft/h',
130
+ 'fph' => 'ft/h',
131
+ 'FPM' => 'ft/m',
132
+ 'FT3/FT3' => 'ft3/ft3',
133
+ 'sec' => 's',
134
+ 'usec' => 'us',
135
+ 'INCHES' => 'in',
136
+ 'inch' => 'in',
137
+ 'HR' => 'h',
138
+ 'DEGF' => 'degF',
139
+ 'HZ' => 'Hz',
140
+ 'KHZ' => 'kHz',
141
+ 'none' => 'Euc',
142
+ 'NONE' => 'Euc',
143
+ 'unitless' => 'Euc',
144
+ 'unitle' => 'Euc',
145
+ 'dec' => 'Euc',
146
+ 'PPK' => 'ppk',
147
+ '1/FT' => '1/ft',
148
+ 'ft/sec' => 'ft/s',
149
+ 'F/S2' => 'ft/s2',
150
+ 'M/S2' => 'm/s2',
151
+ 'OER' => 'Oe',
152
+ 'MS' => 'ms',
153
+ 'MMHO/M' => 'mmho/m',
154
+ 'mmo/m' => 'mmho/m',
155
+ 'MO/M' => 'mho/m',
156
+ 'FT3' => 'ft3',
157
+ 'AAPI' => 'gAPI',
158
+ 'aapi' => 'gAPI',
159
+ 'db/ft' => 'dB/ft',
160
+ 'Gm/cc' => 'g/cm3',
161
+ 'UA' => 'uA',
162
+ 'MA' => 'mA',
163
+ 'mv' => 'mV',
164
+ 'LB/LB' => 'wtpercent',
165
+ 'lbf/lbf' => 'wtpercent',
166
+ 'gft/cm3s' => 'g.ft/cm3.s',
167
+ 'usec/m' => 'us/m'
168
+
169
+ }
28
170
 
29
171
  def initialize(out, witsml_version = 1410)
30
172
  @indent = 0
@@ -95,7 +237,9 @@ class WitsmlFile
95
237
  end
96
238
 
97
239
 
98
-
240
+ def not_empty s
241
+ s && s.length > 0
242
+ end
99
243
 
100
244
  def from_las_file(las_file, uid_well='$UIDWELL', uid_wellbore='$UIDWELLBORE', uid='$UID', name='$NAME', verbose=false)
101
245
  new_lcis, _, is_index_index, get_index = digest_las(las_file) #unused index_lci
@@ -115,7 +259,7 @@ class WitsmlFile
115
259
  add_text_element 'nameWellbore', name
116
260
  add_text_element 'name', name
117
261
  #add_text_element 'dataRowCount', las_file.curve_values.length
118
- add_text_element 'serviceCompany', las_file.service_company
262
+ add_text_element 'serviceCompany', las_file.service_company if not_empty(las_file.service_company)
119
263
  add_text_element 'description', 'Created by Wellstorm LAS Import'
120
264
 
121
265
  measured_depth_unit = normalize_unit(las_file.measured_depth_unit);
@@ -234,7 +378,7 @@ class WitsmlFile
234
378
  def add_log_curve_info(las_lci, column_index, min_index, max_index, measured_depth_unit)
235
379
  add_element('logCurveInfo', {'uid' => las_lci.mnemonic[0..63]}) do
236
380
  add_text_element 'mnemonic', las_lci.mnemonic[0..31]
237
- add_text_element 'unit', las_lci.unit.downcase if las_lci.unit
381
+ add_text_element 'unit', normalize_unit(las_lci.unit) if las_lci.unit
238
382
 
239
383
  if measured_depth_unit then
240
384
  add_text_element 'minIndex', min_index, {'uom'=>measured_depth_unit} if min_index
@@ -247,6 +391,7 @@ class WitsmlFile
247
391
  add_text_element 'columnIndex', column_index.to_s
248
392
  end
249
393
  add_text_element 'curveDescription',las_lci.description if las_lci.description && las_lci.description.length > 0
394
+ add_text_element 'typeLogData', 'float'
250
395
  end
251
396
  end
252
397
 
@@ -303,12 +448,7 @@ class WitsmlFile
303
448
 
304
449
  return las_unit if !las_unit
305
450
 
306
- map_las_to_witsml_units = {
307
- 'f'=>'ft',
308
- 'feet'=>'ft',
309
- 'foot'=>'ft',
310
- 'meters'=>'m',
311
- 'meter'=>'m'}
451
+ map_las_to_witsml_units = UNITS
312
452
 
313
453
  # just a few random ones from CWLS web site:
314
454
  # RHOB .K/M3 45 350 02 00 : 2 BULK DENSITY
@@ -319,8 +459,11 @@ class WitsmlFile
319
459
  #CALI .MM 45 280 01 00 : 10 CALIPER
320
460
  #DRHO .K/M3 45 356 01 00 : 11 DENSITY CORRECTION
321
461
 
322
- map_las_to_witsml_units[las_unit.downcase] || las_unit.downcase
323
-
462
+ retval = map_las_to_witsml_units[las_unit.downcase]
463
+ if !retval
464
+ raise UnrecognizedUnitException, las_unit
465
+ end
466
+ retval
324
467
  end
325
468
 
326
469
  end
metadata CHANGED
@@ -1,19 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: las2witsml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
5
- prerelease:
4
+ version: 0.1.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Hugh Winkler
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-06-14 00:00:00.000000000 Z
11
+ date: 2013-10-01 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description: A command line tool and a library for converting Log ASCII Standard (LAS)
15
14
  files to WITSML <log> objects.
16
- email: hugh.winkler@wellstorm.com
15
+ email: hugh.winkler@drillinginfo.com
17
16
  executables:
18
17
  - las2witsml
19
18
  extensions: []
@@ -26,27 +25,27 @@ files:
26
25
  - lib/witsml_file.rb
27
26
  - bin/las2witsml
28
27
  homepage: https://github.com/wellstorm/las2witsml/
29
- licenses: []
28
+ licenses:
29
+ - Apache 2.0
30
+ metadata: {}
30
31
  post_install_message:
31
32
  rdoc_options: []
32
33
  require_paths:
33
34
  - lib
34
35
  required_ruby_version: !ruby/object:Gem::Requirement
35
- none: false
36
36
  requirements:
37
- - - ! '>='
37
+ - - '>='
38
38
  - !ruby/object:Gem::Version
39
39
  version: '0'
40
40
  required_rubygems_version: !ruby/object:Gem::Requirement
41
- none: false
42
41
  requirements:
43
- - - ! '>='
42
+ - - '>='
44
43
  - !ruby/object:Gem::Version
45
44
  version: '0'
46
45
  requirements: []
47
46
  rubyforge_project:
48
- rubygems_version: 1.8.10
47
+ rubygems_version: 2.0.0
49
48
  signing_key:
50
- specification_version: 3
49
+ specification_version: 4
51
50
  summary: Converts Log ASCII Standard (LAS) files to WITSML <log> objects.
52
51
  test_files: []