@@ -2,6 +2,7 @@ verbose = true
22 using Dates
33 if verbose println (now ()) end
44 if verbose && ! isdefined (Main,:RvSpectML ) println (" # Loading RvSpecML" ) end
5+ using PDMats # SOme dependancy needs this explicit first
56 using RvSpectMLBase
67 using EchelleCCFs
78 using EchelleInstruments# , EchelleInstruments.NEID
@@ -59,6 +60,14 @@ println("# Parsing arguments...")
5960 arg_type = String
6061 default = " template"
6162 # default = "gaussian"
63+ " --frac_of_width_to_fit"
64+ help = " Regions of CCF to fit, as fraction of measured width."
65+ arg_type = Float64
66+ default = 0.5
67+ " --measure_width_at_frac_depth"
68+ help = " Measure CCF width at this fractional depth."
69+ arg_type = Float64
70+ default = 0.5
6271 " --template_file"
6372 help = " Filename with CCF template stored as 'order_ccfs' with 'clean_obs_mask' for which observations to include (jld2)."
6473 arg_type = String
@@ -138,8 +147,7 @@ println("# Parsing arguments...")
138147 arg_type = Int
139148 default = 300 # TODO : Increase after finish testing
140149 end
141-
142- return parse_args (s)
150+ return parse_args (s)
143151 end
144152 args = parse_commandline ()
145153 @assert any (map (alg-> occursin (alg,args[" rv_alg" ]), [" template" ," gaussian" ," quadratic" ] ))
@@ -196,21 +204,21 @@ manifest_use = manifest |>
196204 @filter ( args[" max_solar_hour_angle" ] == nothing || abs (_. hour_angle) <= args[" max_solar_hour_angle" ] ) |>
197205 # @filter( args["start_time"] == nothing || Time(julian2datetime(_.bjd)) >= start_time ) |>
198206 # @filter( args["stop_time"] == nothing || Time(julian2datetime(_.bjd)) <= stop_time ) |> # TODO for other instruments may need to deal wtih cross end of 24 UTC
199- @filter ( args[" min_expmeter" ] == nothing || _. expmeter_mean >= args[" min_expmeter" ] ) |>
207+ @filter ( args[" min_expmeter" ] == nothing || _. expmeter_mean >= args[" min_expmeter" ] ) |>
200208 DataFrame
201209
202210if hasproperty (manifest_use,:mean_pyroflux ) && hasproperty (manifest_use,:rms_pyroflux )
203- manifest_use = manifest_use |>
211+ manifest_use = manifest_use |>
204212 @filter ( args[" max_pyrhelio_frac_rms" ] == nothing || _. rms_pyroflux <= args[" max_pyrhelio_frac_rms" ] * _. mean_pyroflux ) |>
205213 DataFrame
206214else
207215 println (" # Warning: mean_pyroflux and rms_pyroflux not found. Reverting to expmeter_mean and expmeter_rms." )
208- manifest_use = manifest_use |>
216+ manifest_use = manifest_use |>
209217 @filter ( args[" max_expmeter_frac_rms" ] == nothing || _. expmeter_rms <= args[" max_expmeter_frac_rms" ] * _. expmeter_mean ) |>
210218 DataFrame
211219end
212220
213- manifest_use = manifest_use |>
221+ manifest_use = manifest_use |>
214222 @take (args[" max_num_spectra" ] ) |> @orderby (_. bjd) |>
215223 DataFrame
216224
222230
223231obs_to_use = map (i-> searchsortedfirst (manifest. bjd,manifest_use. bjd[i]),1 : size (manifest_use,1 ) )
224232(num_vels, num_orders_to_use, num_obs) = size (input_data[" order_ccfs" ])
225-
233+
226234order_ccfs = input_data[" order_ccfs" ]
227235order_ccf_vars = input_data[" order_ccf_vars" ]
228236non_nan_mask = map (i-> (! any (isnan .(view (order_ccfs,:,:,i)))) && (! any (isnan .(view (order_ccf_vars,:,:,i)))), obs_to_use)
@@ -237,9 +245,9 @@ if !(sum(mask) >= 1)
237245end
238246
239247println (" # Found " , length (obs_to_use), " files of " , size (manifest,1 ), " to use for RVs." )
240- # df_out = manifest_use |> @rename(:drp_ccfjdmod=>:jd_drp,:drp_ccfrvmod => :rv_drp,:drp_dvrmsmod => :σrv_drp,
241- df_out = manifest |> @rename (:drp_ccfjdmod => :jd_drp ,:drp_ccfrvmod => :rv_drp ,:drp_dvrmsmod => :σrv_drp ,
242- :mean_pyroflux => :pyrflux_mean , :rms_pyroflux => :pyrflux_rms ) |> DataFrame
248+ # df_out = manifest_use |> @rename(:drp_ccfjdmod=>:jd_drp,:drp_ccfrvmod => :rv_drp,:drp_dvrmsmod => :σrv_drp,
249+ df_out = manifest |> @rename (:drp_ccfjdmod => :jd_drp ,:drp_ccfrvmod => :rv_drp ,:drp_dvrmsmod => :σrv_drp ,
250+ :mean_pyroflux => :pyrflux_mean , :rms_pyroflux => :pyrflux_rms ) |> DataFrame
243251 df_out[! ," mask" ] = mask
244252
245253ccf_sum = reshape (sum (order_ccfs,dims= 2 ),num_vels,num_obs)
@@ -253,7 +261,7 @@ v_grid = collect(input_data["v_grid"])
253261if occursin (" template" ,args[" rv_alg" ])
254262 if isnothing (args[" template_file" ])
255263 template_ccf = view (ccf_sum,:,obs_to_use)
256- template_ccf_var = view (ccf_var_sum,:,obs_to_use)
264+ template_ccf_var = view (ccf_var_sum,:,obs_to_use)
257265 else
258266 template_filename = args[" template_file" ]
259267 @assert isfile (template_filename) || islink (template_filename)
@@ -272,20 +280,20 @@ if occursin("template",args["rv_alg"])
272280 template_ccf_var = reshape (sum (view (template_order_ccf_vars,:,:,template_obs_to_use),dims= 2 ),num_vels,template_num_obs)
273281 end
274282 # ccf_template = EchelleCCFs.calc_ccf_template(view(ccf_sum,:,obs_to_use), view(ccf_var_sum,:,obs_to_use) )
275- ccf_template = EchelleCCFs. calc_ccf_template (template_ccf, template_ccf_var)
283+ ccf_template = EchelleCCFs. calc_ccf_template (template_ccf, template_ccf_var,frac_of_width_to_fit = args[ " frac_of_width_to_fit " ], measure_width_at_frac_depth = args[ " measure_width_at_frac_depth " ] )
276284 alg_template = MeasureRvFromCCFTemplate (v_grid= collect (v_grid),template= ccf_template)
277285 rvs_template = DataFrame (map (i-> any (isnan .(view (ccf_sum,:,i))) ? (rv= NaN , σ_rv= NaN ) : measure_rv_from_ccf (v_grid,view (ccf_sum,:,i),view (ccf_var_sum,:,i),alg= alg_template),1 : num_obs))
278286 df_out[! ,Symbol (" rv_template" )] = rvs_template. rv
279287 df_out[! ,Symbol (" σrv_template" )] = rvs_template. σ_rv
280288end
281289if occursin (" gaussian" ,args[" rv_alg" ])
282- alg_gauss = MeasureRvFromCCFGaussian (frac_of_width_to_fit= 0.25 )
290+ alg_gauss = MeasureRvFromCCFGaussian (frac_of_width_to_fit= args[ " frac_of_width_to_fit " ], measure_width_at_frac_depth = args[ " measure_width_at_frac_depth " ] )
283291 rvs_gauss = DataFrame (map (i-> any (isnan .(view (ccf_sum,:,i))) ? (rv= NaN , σ_rv= NaN ) : measure_rv_from_ccf (v_grid,view (ccf_sum,:,i),view (ccf_var_sum,:,i),alg= alg_gauss),1 : num_obs))
284- df_out[! ,Symbol (" rv_gaussian " )] = rvs_gauss. rv
292+ df_out[! ,Symbol (" rv_template " )]= rvs_gauss. rv
285293 df_out[! ,Symbol (" σrv_gaussian" )] = rvs_gauss. σ_rv
286294end
287295if occursin (" quadratic" ,args[" rv_alg" ])
288- alg_quad = MeasureRvFromCCFQuadratic (frac_of_width_to_fit= 0.25 )
296+ alg_quad = MeasureRvFromCCFQuadratic (frac_of_width_to_fit= args[ " frac_of_width_to_fit " ], measure_width_at_frac_depth = args[ " measure_width_at_frac_depth " ] )
289297 rvs_quad = DataFrame (map (i-> any (isnan .(view (ccf_sum,:,i))) ? (rv= NaN , σ_rv= NaN ) : measure_rv_from_ccf (v_grid,view (ccf_sum,:,i),view (ccf_var_sum,:,i),alg= alg_quad),1 : num_obs))
290298 df_out[! ,Symbol (" rv_quadratic" )] = rvs_quad. rv
291299 df_out[! ,Symbol (" σrv_quadratic" )] = rvs_quad. σ_rv
@@ -299,15 +307,15 @@ for j in 1:num_orders_to_use
299307 # Templated-based
300308 if isnothing (args[" template_file" ])
301309 global template_ccf = view (order_ccfs,:,j,obs_to_use)
302- global template_ccf_var = view (order_ccf_vars,:,j,obs_to_use)
310+ global template_ccf_var = view (order_ccf_vars,:,j,obs_to_use)
303311 else
304312 global template_ccf = view (template_order_ccfs,:,j,template_obs_to_use)
305- global template_ccf_var = view (template_order_ccf_vars,:,j,template_obs_to_use)
313+ global template_ccf_var = view (template_order_ccf_vars,:,j,template_obs_to_use)
306314 end
307315 # local ccf_template = EchelleCCFs.calc_ccf_template(view(order_ccfs,:,j,obs_to_use), view(order_ccf_vars,:,j,obs_to_use) )
308316 local ccf_template = EchelleCCFs. calc_ccf_template (template_ccf, template_ccf_var)
309- local alg_template = MeasureRvFromCCFTemplate (v_grid= collect (v_grid),template= ccf_template)
310- order_rvs_template = DataFrame (map (i-> any (isnan .(view (order_ccfs,:,j,i))) ? (rv= NaN , σ_rv= NaN ) : measure_rv_from_ccf (v_grid,view (order_ccfs,:,j,i),view (order_ccf_vars,:,j,i),alg= alg_template),1 : num_obs))
317+ local alg_template = MeasureRvFromCCFTemplate (v_grid= collect (v_grid),template= ccf_template, frac_of_width_to_fit = args[ " frac_of_width_to_fit " ], measure_width_at_frac_depth = args[ " measure_width_at_frac_depth " ] )
318+ order_rvs_template = DataFrame (map (i-> any (isnan .(view (order_ccfs,:,j,i))) ? (rv= NaN , σ_rv= NaN ) : measure_rv_from_ccf (v_grid,view (order_ccfs,:,j,i),view (order_ccf_vars,:,j,i),alg= alg_template),1 : num_obs))
311319 df_out[! ,Symbol (" rv_" * string (orders_physical[j]) * " _template" )] = order_rvs_template. rv
312320 df_out[! ,Symbol (" σrv_" * string (orders_physical[j]) * " _template" )] = order_rvs_template. σ_rv
313321 end
327335
328336println (" # Writing daily RVs." )
329337 CSV. write (daily_rvs_filename,df_out)
330-
0 commit comments