function MVN_KP_LOCAL_INSITU_FILES, begin_jul, end_jul, insitu_dir, filename_spec, save_files=save_files, text_files=text_files
insitu_pattern = filename_spec.pattern
insitu_year_index = filename_spec.year_index
insitu_month_index = filename_spec.month_index
insitu_day_index = filename_spec.day_index
if keyword_set(save_files) then begin
insitu_pattern += '.sav'
endif else if keyword_set(text_files) then begin
insitu_pattern += '.txt'
endif else begin
insitu_pattern += '.cdf'
endelse
local_insitu = file_search(insitu_dir+path_sep()+insitu_pattern, count=count)
if (count gt 0) then begin
local_insitu_base = file_basename(local_insitu)
local_times_insitu_year = fix(strmid(local_insitu_base, insitu_year_index, 4))
local_times_insitu_month = fix(strmid(local_insitu_base, insitu_month_index, 2))
local_times_insitu_day = fix(strmid(local_insitu_base, insitu_day_index, 2))
local_times_insitu_jul = julday(local_times_insitu_month, local_times_insitu_day, local_times_insitu_year)
ind = where((local_times_insitu_jul ge (floor(begin_jul-.5)+.5)) and (local_times_insitu_jul le (ceil(end_jul-.5)+.5)))
if(ind[0] lt 0) then begin
print, "No Local Files Found"
return, 'None'
endif
local_insitu = local_insitu[ind]
local_insitu_base = local_insitu_base[ind]
endif else begin
local_insitu = 'None'
endelse
return, local_insitu
end
function MVN_KP_LOCAL_IUVS_FILES, begin_jul, end_jul, iuvs_dir, filename_spec, save_files=save_files, text_files=text_files
iuvs_pattern = filename_spec.pattern
iuvs_year_index = filename_spec.year_index
iuvs_month_index = filename_spec.month_index
iuvs_day_index = filename_spec.day_index
iuvs_hour_index = filename_spec.hour_index
iuvs_min_index = filename_spec.min_index
iuvs_sec_index = filename_spec.sec_index
if keyword_set(save_files) then begin
iuvs_pattern += '.sav'
endif else if keyword_set(text_files) then begin
iuvs_pattern += '.txt'
endif else begin
iuvs_pattern += '.cdf'
endelse
local_iuvs = file_search(iuvs_dir+path_sep()+iuvs_pattern, count=count)
if (count gt 0) then begin
local_iuvs_base = file_basename(local_iuvs)
tiuvs_year = fix(strmid(local_iuvs_base, iuvs_year_index, 4))
tiuvs_month = fix(strmid(local_iuvs_base, iuvs_month_index, 2))
tiuvs_day = fix(strmid(local_iuvs_base, iuvs_day_index, 2))
tiuvs_hour = fix(strmid(local_iuvs_base, iuvs_hour_index, 2))
tiuvs_min = fix(strmid(local_iuvs_base, iuvs_min_index, 2))
tiuvs_sec = fix(strmid(local_iuvs_base, iuvs_sec_index, 2))
times_iuvs_jul = julday(tiuvs_month,tiuvs_day,tiuvs_year,tiuvs_hour,tiuvs_min,tiuvs_sec)
ind = where((times_iuvs_jul ge begin_jul) and (times_iuvs_jul le (ceil(end_jul-.5)+.5)))
if (ind[0] lt 0) then begin
print, "no Files found"
return, 'None'
endif
local_iuvs = local_iuvs[ind]
local_iuvs_base = local_iuvs_base[ind]
endif else begin
local_iuvs = 'None'
endelse
return, local_iuvs
end
function MVN_KP_LATEST_VERSION_FILE, in_files, vpos, rpos
files = in_files
if n_elements(files) le 1 then return, files
versions = intarr(n_elements(files))
revisions = intarr(n_elements(files))
i = 0
foreach file, files do begin
split_suffix = strsplit(file, '.', /extract)
split = strsplit(split_suffix[0], '_', /extract)
if (n_elements(split) lt rpos) then return, -1
versions[i] = strmid(split[vpos], 1)
revisions[i] = strmid(split[rpos], 1)
i++
endforeach
max_v = where(versions eq max(versions))
revisions = revisions[max_v]
files = files[max_v]
max_r = where(revisions eq max(revisions))
files = files[max_r]
if (n_elements(files) gt 1) then files = files[0]
return, files
end
function MVN_KP_LATEST_VERSIONS, in_files, filename_spec
vpos=filename_spec.vpos
rpos=filename_spec.rpos
basetrim=filename_spec.basetrim
basenames=file_basename(in_files)
base_trim=strmid(basenames,0,basetrim)
uniq_base_trim = base_trim[uniq(base_trim)]
latest_files = strarr(n_elements(uniq_base_trim))
j=0
foreach trim, uniq_base_trim do begin
candidates = basenames[where(strmatch(basenames, trim+"*", /fold_case) eq 1)]
final = MVN_KP_LATEST_VERSION_FILE(candidates, vpos, rpos)
if (size(final, /type) ne 7) then begin
message, "Problem with filenames in "
endif
latest_files[j] = final
j++
endforeach
return, latest_files
end
pro MVN_KP_FILE_SEARCH, begin_time, end_time, insitu_filenames, insitu_dir, iuvs_filenames, iuvs_dir, $
save_files=save_files, text_files=text_files, insitu_only=insitu_only, download_new=download_new
debug = getenv('MVNTOOLKIT_DEBUG')
if not keyword_set(debug) then begin
on_error, 1
endif
insitu_filename_spec = mvn_kp_config(/insitu_file_spec)
iuvs_filename_spec = mvn_kp_config(/iuvs_file_spec)
begin_date = strmid(begin_time.string,0,10)
end_date = strmid(end_time.string, 0,10)
if keyword_set(download_new) then begin
if not keyword_set(text_files) then cdf_files = 1
mvn_kp_download_files, start_date=begin_date, end_date=end_date, /insitu, /new_files, $
text_files=text_files, cdf_files=cdf_files, debug=debug
if not keyword_set(insitu_only) then begin
mvn_kp_download_files, start_date=begin_date, end_date=end_date, /iuvs, /new_files, $
text_files=text_files, cdf_files=cdf_files, debug=debug
endif
endif
insitu_filenames = MVN_KP_LOCAL_INSITU_FILES(begin_time.Jul, end_time.Jul, insitu_dir, insitu_filename_spec, $
save_files=save_files, text_files=text_files)
insitu_filenames = MVN_KP_LATEST_VERSIONS(insitu_filenames, insitu_filename_spec)
if not keyword_set(insitu_only) then begin
iuvs_filenames = MVN_KP_LOCAL_IUVS_FILES(begin_time.Jul, end_time.Jul, iuvs_dir, iuvs_filename_spec, $
save_files=save_files, text_files=text_files)
iuvs_filenames = MVN_KP_LATEST_VERSIONS(iuvs_filenames, iuvs_filename_spec)
endif
end