11"""
2- segy(cmd0::String="", arg1=nothing ; kwargs...)
2+ segy(cmd0::String=""; kwargs...)
33
44Plot a SEGY file as a seismic data image.
55"""
6- segy (cmd0:: String = " " ; kwargs... ) = segy_helper (cmd0, nothing ; kwargs... )
7- segy (arg1; kwargs... ) = segy_helper (" " , arg1; kwargs... )
6+ segy! (cmd0:: String ; kwargs... ) = segy_helper (cmd0; first= false , kwargs... )
7+ function segy (cmd0:: String ; first= true , kw... )
8+ # (cmd0 === "") && error("Missing input segY file name to run this module.")
9+ d, K, O = init_module (first== 1 , kw... ) # Also checks if the user wants ONLY the HELP mode
10+ segy_helper (cmd0, O, K, d)
11+ end
812
913# ---------------------------------------------------------------------------------------------------
10- function segy_helper (cmd0:: String , arg1; first= true , kwargs... )
11- d, K, O = init_module (first, kwargs... )
14+ function segy_helper (cmd0:: String , O:: Bool , K:: Bool , d:: Dict{Symbol, Any} )
1215
13- cmd, _, _, opt_R = parse_BJR (d, " " , " " , O, " " )
14- cmd, = parse_common_opts (d, cmd, [:V_params :UVXY :p :t :params ], first)
16+ cmd = ((IamModern[]) ? " segy " : " pssegy " ) * cmd0
17+ cmd = parse_BJR (d, cmd, " " , O, " " )[1 ]
18+ cmd = parse_common_opts (d, cmd, [:V_params :UVXY :p :t :params ]; first= ! O)[1 ]
1519 cmd = segy_common (d, cmd)
1620
1721 # -E error tolerance (segy only)
@@ -34,27 +38,30 @@ function segy_helper(cmd0::String, arg1; first=true, kwargs...)
3438 # -T trace list file (segy only)
3539 cmd = add_opt (d, cmd, " T" , [:T :tracelist :tracefile ])
3640
37- (cmd0 != " " ) && (cmd *= " " * cmd0)
38-
39- cmd = " segy " * cmd
41+ ((r = check_dbg_print_cmd (d, cmd)) != = nothing ) && return r
42+ ! isfile (cmd0) && error (" segY file $cmd0 does not exist." ) # Testing here only allows pass a Vd=2 for test parsing
4043 finish_PS_module (d, cmd, " " , K, O, true )
4144end
4245
4346# ---------------------------------------------------------------------------------------------------
4447"""
45- segyz(cmd0::String="", arg1=nothing ; kwargs...)
48+ segyz(cmd0::String=""; kwargs...)
4649
4750Plot a SEGY file in 3-D as a seismic data image.
4851"""
49- segyz (cmd0:: String = " " ; kwargs... ) = segyz_helper (cmd0, nothing ; kwargs... )
50- segyz (arg1; kwargs... ) = segyz_helper (" " , arg1; kwargs... )
52+ segyz! (cmd0:: String ; kwargs... ) = segyz_helper (cmd0; first= false , kwargs... )
53+ function segyz (cmd0:: String ; first= true , kw... )
54+ d, K, O = init_module (first== 1 , kw... ) # Also checks if the user wants ONLY the HELP mode
55+ segyz_helper (cmd0, O, K, d)
56+ end
5157
5258# ---------------------------------------------------------------------------------------------------
53- function segyz_helper (cmd0:: String , arg1; first= true , kwargs... )
54- d, K, O = init_module (first, kwargs... )
59+ function segyz_helper (cmd0:: String , O:: Bool , K:: Bool , d:: Dict{Symbol, Any} )
5560
56- cmd, _, _, opt_R = parse_BJR (d, " " , " " , O, " " )
57- cmd = parse_common_opts (d, cmd, [:Jz :V_params :UVXY :p :t :params ], first)[1 ]
61+ cmd = ((IamModern[]) ? " segyz " : " pssegyz " ) * cmd0
62+ cmd = parse_BJR (d, " " , " " , O, " " )[1 ]
63+ cmd = parse_common_opts (d, cmd, [:V_params :UVXY :p :t :params ], first= ! O)[1 ]
64+ cmd, opt_JZ = parse_JZ (d, cmd, O= O, is3D= true )
5865 cmd = segy_common (d, cmd)
5966
6067 # -S trace location header (segyz: header_x/header_y)
@@ -80,68 +87,35 @@ function segyz_helper(cmd0::String, arg1; first=true, kwargs...)
8087 end
8188 end
8289
83- (cmd0 != " " ) && (cmd *= " " * cmd0)
84-
85- cmd = " segyz " * cmd
90+ ((r = check_dbg_print_cmd (d, cmd)) != = nothing ) && return r
91+ ! isfile (cmd0) && error (" segY file $cmd0 does not exist." ) # Testing here only allows pass a Vd=2 for test parsing
8692 finish_PS_module (d, cmd, " " , K, O, true )
8793end
8894
8995# ---------------------------------------------------------------------------------------------------
9096# Shared options between segy and segyz
9197function segy_common (d:: Dict , cmd:: String )
92- # -D deviation (required)
93- cmd = add_opt (d, cmd, " D" , [:D :dev :deviation ])
94-
95- # -F fill color
96- if ((val = find_in_dict (d, [:F :fill :color ])[1 ]) != = nothing )
97- if isa (val, Bool) && val
98- cmd *= " -F"
99- else
100- cmd *= " -F" * arg2str (val)
101- end
102- end
10398
104- # -W wiggle trace
105- cmd = parse_these_opts (cmd, d, [[:W :wiggle ]])
99+ ((s = hlp_desnany_str (d, [:F :fill :color ])) != = " " ) && (cmd *= " -F" * s) # -F fill color
106100
107- # -A byte swap
108- cmd = parse_these_opts (cmd, d, [[:A :byteswap :swap ]])
101+ cmd = parse_these_opts (cmd, d, [[:A :byteswap :swap ], [:C :clip ], [:D :dev :deviation ], [:I :negative :fillneg ],
102+ [:L :nsamp :nsamples ], [:M :ntraces ], [:N :normalize :norm ], [:W :wiggle ], [:Z :skipzero :nozero ]])
103+ ! contains (cmd, " -D" ) && error (" Option 'D' or 'dev' or 'deviation' is required" )
104+ ! contains (cmd, " -F" ) && ! contains (cmd, " -W" ) && (cmd *= " -W" )
109105
110- # -C clip
111- cmd = add_opt (d, cmd, " C" , [:C :clip ])
112-
113- # -I fill negative
114- cmd = parse_these_opts (cmd, d, [[:I :negative :fillneg ]])
115-
116- # -L samples per trace
117- cmd = add_opt (d, cmd, " L" , [:L :nsamp :nsamples ])
118-
119- # -M number of traces
120- cmd = add_opt (d, cmd, " M" , [:M :ntraces ])
121-
122- # -N normalize
123- cmd = parse_these_opts (cmd, d, [[:N :normalize :norm ]])
124-
125- # -Q adjustments
126- if ((val = find_in_dict (d, [:Q :adjust ])[1 ]) != = nothing )
106+ if ((val = find_in_dict (d, [:Q :adjust ])[1 ]) != = nothing ) # -Q adjustments
127107 if isa (val, NamedTuple)
128- haskey (val, :bias ) && (cmd *= " -Qb" * string (val. bias))
129- haskey (val, :b ) && (cmd *= " -Qb" * string (val. b))
130- haskey (val, :dpi ) && (cmd *= " -Qi" * string (val. dpi))
131- haskey (val, :i ) && (cmd *= " -Qi" * string (val. i))
132- haskey (val, :redvel ) && (cmd *= " -Qu" * string (val. redvel))
133- haskey (val, :u ) && (cmd *= " -Qu" * string (val. u))
134- haskey (val, :xmult ) && (cmd *= " -Qx" * string (val. xmult))
135- haskey (val, :x ) && (cmd *= " -Qx" * string (val. x))
136- haskey (val, :dy ) && (cmd *= " -Qy" * string (val. dy))
137- haskey (val, :y ) && (cmd *= " -Qy" * string (val. y))
108+ for key = keys (val)
109+ key in (:b , :bias ) && (cmd *= " -Qb" * string (val[key]))
110+ key in (:i , :dpi ) && (cmd *= " -Qi" * string (val[key]))
111+ key in (:u , :redvel ) && (cmd *= " -Qu" * string (val[key]))
112+ key in (:x , :xmult ) && (cmd *= " -Qx" * string (val[key]))
113+ key in (:y , :dy ) && (cmd *= " -Qy" * string (val[key]))
114+ end
138115 else
139116 cmd *= " -Q" * arg2str (val)
140117 end
141118 end
142119
143- # -Z skip zero rms
144- cmd = parse_these_opts (cmd, d, [[:Z :skipzero :nozero ]])
145-
146120 return cmd
147121end
0 commit comments