pro thm_lsp_clean_timestamp, tvar, newname=newname
if n_elements(tvar) eq 0 then begin
print, 'THM_LSP_CLEAN_TIMESTAMP: ' + $
'A string of a tplot variable name must be given. Exiting...'
return
endif
tmp =size(tvar, /type)
if tmp ne 7 then begin
print, 'THM_LSP_CLEAN_TIMESTAMP: ' + $
'The input type must be string. Exiting...'
return
endif
tmp = size(tvar, /dim)
if tmp gt 0 then begin
print, 'THM_LSP_CLEAN_TIMESTAMP: ' + $
'The input must be a scalar. Exiting...'
return
endif
tmp = tnames(tvar)
if strlen(tmp) eq 0 then begin
print, 'THM_LSP_CLEAN_TIMESTAMP: ' + $
'The tplot variable ' + tname + ' does not exist on memory. Exiting...'
return
endif
if n_elements(newname) eq 0 then newname = tvar
tmp =size(newname, /type)
if tmp ne 7 then begin
print, 'THM_LSP_CLEAN_TIMESTAMP: ' + $
'The newname must be string. Exiting...'
return
endif
get_data, tvar, data=data, dlim=dlim
ydim = size(data.y, /dim)
str_element, data, 'v', success = success
if success then vdim = size(data.v,/dim)
tarr = data.x - data.x[0]
nt = n_elements(data.x)
badpts = 0L
last = tarr[0]
for i = 1L, nt-1 do begin
if tarr[i] le last then begin
badpts = badpts + 1
if badpts eq 1 then ind = i
if badpts gt 1 then ind = [ind, i]
endif else begin
last = tarr[i]
endelse
endfor
if badpts eq 0 then begin
print, 'THM_LSP_CLEAN_TIMESTAMP: ' + $
'The time stamp of the input tplot variable is already monotonic. No'+$
' cleaning needed. Returning...'
return
endif
print, 'THM_LSP_CLEAN_TIMESTAMP: ' + $
String(badpts, format='(I0)') + ' bad points have been tossed.'
tarr = data.x
tarr[ind] = !values.d_nan
new_ind = where(finite(tarr))
newt = tarr[new_ind]
newy = data.y[new_ind, *]
if success then begin
newv = data.v[new_ind, *]
store_data, newname, data={x:newt, y:newy, v:newv}, dlim=dlim
endif else begin
store_data, newname, data={x:newt, y:newy}, dlim=dlim
endelse
end