[Previous]
[Next]
NAME:
GeographicInfo
PURPOSE:
Return geographic longitude of specified location
CATEGORY:
Trivial
CALLING SEQUENCE:
PRO GeographicInfo, UT, previous=previous, next=next, degrees=degrees, $
nagoya = nagoya , $
cambridge = cambridge , $
mexart = mexart , $
ooty = ooty , $
tmo = tmo , $
location = location , $
geolng = geolng , $
geolat = geolat , $
UTnoon = UTnoon , $
RAnoon = RAnoon , $
RAlocal = RAlocal
INPUTS:
UT array; type: time structure
UT times
/nagoya if set, return location of Nagoya (Japan)
/cambridge if set, return location of Cambridge (UK)
/ooty if set, return location of Ooty (India)
/tmo if set, return location of Table Mntn Obs (US)
location geographic longitude of requested location
(in radian, or if /degrees is set, in degrees)
OPTIONAL INPUT PARAMETERS:
/degrees if set, all input and output angles are in degrees
(default: radians)
/previous check for previous noon
/next check for next noon
if neither /previous or /next is set then the nearest
noon is checked
OPTIONAL OUTPUT PARAMETERS:
geolng scalar; type: float
geographic longitude
geolat scalar; type: float
geographic latitude
UTnoon array; type: time structure
UT for nearest/previous/next time when Sun crossed local meridian
(i.e. local noon)
RAnoon array; type; float
right ascension of local meridian at times UTnoon
RAlocal array; type; float
right ascension of local meridian at times UT
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
AngleRange, BadValue, InitVar, IsTime, IsType, SubArray, SyncArgs, TimeGST, TimeGet
TimeOp, TimeSet, TimeUnit, ToRadians, big_eph, jpl_body
CALLED BY:
GetColors [2], GetColors [3], PlotEarthSkymap [1], PlotEarthSkymap [2]
PlotEarthSkymap [3], PlotEarthSkymap [4], PlotPolarSkymap, stardistance
vu_localskymap, vu_nagoyasourcemap, vu_thomson_antifish, vu_thomson_hammer
PROCEDURE:
Geographic coordinates are hardwired
MODIFICATION HISTORY:
SEP-1999, Paul Hick (UCSD/CASS)
FEB-2003, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Added tmo and geolat keywords
[Previous]
[Next]
NAME:
get_page
PURPOSE:
Complete output procedure set up with set_page.
Submit PostScript or HP file to print queue
CATEGORY:
Plotting
CALLING SEQUENCE:
get_page [,File, /color] Close device & print & delete
get_page [,File, /killfile] Close device & delete
get_page [,File, /keepfile ,/color] Close device & keep
get_page [,File, /keepfile, /printfile ,/color]
Close device & print & keep
OPTIONAL INPUTS:
File scalar; type: string; default: !ThePlotFile
file name to be used for plot filefile name. In general the common block
default should be use. Primarily useful for /gif and /bmp ouput.
/keepfile
keepfile=KeepFile
scalar; type: string or byte
(HP only) the plot file will be saved
If KeepFile is a valid file name it is used for the saved plot file.
(this option is only set up for the HP printer on CASS01 and depends
on the LIBPRN command procedure).
/printfile (HP and PS)
if set the plot file is submitted for printing
This is the default for HP and PS
/killfile (HP, PS and EPS)
closes the plot device, and deletes the plot file
/freezedev by default the plot device is set back to !TheTerminal.
If /freezedev is set the device will remain at the setting found when
get_page was called (usually the printer device !ThePrinter)
/color plot in color (only for PS files)
/gif
/png
/jpg
/bmp can be used in combination with the File argument to save the
content of the current window into a GIF or BMP file.
If File has the extension .gif or .bmp then the keyword does not need
to be specified.
/silent suppresses a bunch of informational messages
INCLUDE:
@compile_opt.pro ; On error return to caller
CALLS: ***
FILEPATH, GetFileSpec, InitVar, IsDisplay, IsPrinter, IsType, LOADCT, SetFileSpec
SuperArray, WRITE_BMP, WRITE_GIF, do_file, flip_colors, hide_env, put_logo, twin
CALLED BY:
PlotEarthSkymap [2], allsky [1], allsky [2], allsky [3], allsky_f, ark_duty_cycle
coriolis_map, dusan_earth, even_light_corrections, even_light_photometry
even_light_registration, fileset_sizes, grdout, ips_exit, ipv6_packets
ipv6_traffic, krill_request_bars, krill_request_stats, miscfig
packet_size_graphs, packet_size_update, qBar_Print, qLine_Print, qSave2File_Save
qset_page, show_wso, smei_frm_summary, smei_hdr_plot, smei_sky, smei_star_show
smei_zldsky, smeifig, telescope_sizes, thomsonfig, vu_get_page, vu_image
SEE ALSO:
set_page
PROCEDURE:
set_page and get_page are supposed to be used together: set_page starts the
output procedure, get_page completes it. get_page uses the file name save in
common block 'devices' to determine what kind of output to produce (EPS, GIF, BMP,
HP, PS, etc.).
For the PRINTER device no plot file is created but instead output is send directly
to the printer. Hence none of the keywords are useful. get_page will always close
the PRINTER device (effectively forcing the printer to start printing).
For EPS a file name is selected using 'set_page'. The file name is saved in common
block 'devices'. Here the EPS file is just closed.
For GIF and BMP a tvrd() is executed, and the return value is written into a file
with the name in !ThePlotFile. Alternatively the File argument is used to specify a
file name. If the name does not have extension .gif or .bmp then the keyword /gif
or /bmp must be set explicitly.
MODIFICATION HISTORY:
Based on PSPLOT, written DMZ (ARC, Aug'90)
July 1991, Paul Hick (ARC)
1992, Paul Hick (UCSD/CASS); added option for plotting to HP printer
2006, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Added logo keyword
[Previous]
[Next]
NAME:
GetColors
PURPOSE:
Convert array of function values to equivalent color indexes.
Optionally plot a legend.
CALLING SEQUENCE:
FUNCTION GetColors, Value, BreakVal, BreakName, BreakPos, $
open = open , $
legend = legend , $
rimlegend = rimlegend , $
format = format , $
ctable = ctable , $
cpart = cpart , $
usedcolors = usedcolors, $
badforeground=badforeground, $
badbackground=badbackground, $
charsize = charsize , $
flip = flip , $
noedge = noedge , $
ncolors = ncolors , $
strictlabels= strictlabels, $
steplabels = steplabels, $
labelrange = labelrange, $
logscale = logscale , $
_extra = _extra
INPUTS:
Value array; type: any
function values
BreakVal array[n]; type: any
function values between adjacent colors
Only used if /legend is set:
BreakName array[m]; type: any
labels along legend; usually a subset
of BreakVal. See PROCEDURE.
BreakPos array[m];
position for BreakName labels along legend
CALLED BY:
PlotCoronagraph, PlotEarthSkymap [1], PlotEarthSkymap [2], PlotEarthSkymap [3]
PlotEarthSkymap [4], PlotEloTimeMap, PlotPlanarCut, PlotPolarSkymap
PlotSolarDisk, PlotSphereCut, PlotSynopticMap, RemoteView_Display2D
nagoya_glevel, thomsonfig, vu_synopticmap, vu_thomson_antifish
vu_thomson_hammer
See PROCEDURE:
OPTIONAL INPUT PARAMETERS:
/legend if set, a legend is plotted at the left
edge of the screen
steplabels=steplabels
scalar; type: integer; default: 1+ncolors/8
SEE PROCEDURE
rimlegend=rimlegend scalar; type: any; default: 0
sets the thickness of the bounding box around
the legend
/strictlabels
format=format scalar; type: string
format used to label the legend (only used if
BreakVal is a float array)
ctable=ctable scalar; type: integer
used to load a color table with LOADCT
(only if !d.n_colors=16)
cpart=cpart array[2]; type: float
fractions of one; limits the range of color indices
used to cpart*(!d.n_colors-1)
/noedge avoids using color indices 0 and !d.n_colors-1
this overrides the cpart setting.
(these sometimes are set to black and white and
do not fit in with the rest of the color table).
_extra=_extra
/badforeground if set then bad values (detected with the
finite function) are set to the foreground
color (!p.color)
/badbackground if set then bad values are set to the foreground
color (!p.background)
/flip uses color table in reverse order, i.e. with increasing
fnc value corresponding to decreasing color index
labelrange=labelrange
array[2]; type: float; default: [0.0,1.0]
determines range in normal coordinates used to
plot the labels along the legend.
OUTPUTS:
Result array; type: byte
array with color indices (same dimensions as Value)
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
InitVar, IsType, LOADCT, REVERSE, UNIQ, anicenum, gridgen
SIDE EFFECTS:
The BreakVal array is sorted
RESTRICTIONS:
#break values = n_elements(BreakVal) must be less than
#colors = !d.n_colors
PROCEDURE:
The BreakVal array with N = n_elements(BreakVal) elements
divides the data range into N+1 interval (the 1st interval
covers data values below BreakVal[0], the last interval
covers data value above BreakVal[N-1]. A data value is
matched to a color index depending on the interval it
belongs to.
The # colors needed is 1+N (N=n_elements(BreakVal).
The 1+N color indices are calculated as
Col = round( (!d.n_colors-1.)/nBreak*indgen(nCols) )
i.e. as nearly evenly spaced over the full range 0,!d.n_colors-1
[Col[0]=0, Col[nBreak]=!d.n_colors-1]
The legend is a vertical color bar (color 0 to nBreak
from bottom to top) at the left side of the screen.
The BreakVal values are plotted at the borders between
adjacent colors. A maximum of 8 evenly spaced numbers
is plotted.
By default the labeling of the legend is determined
internally from the BreakVal array. This works well if
the BreakVal array contains a large number of values
(usually !d.n_colors).
For short arrays of BreakVal the labelling is better
controlled using a couple of arguments
BreakName explicitly specifies how the legend needs to
be labelled. Usually these are numbers. The numbers then
also define the position of the label. If BreakName
contains custom labels (e.g. string labels instead of
numbers), then the position of the label can be
specified as BreakPos.
If /strictlabels is set then BreakName = BreakPos = BreakVal
is assumed, and labels are plotted every
'steplabels' value of BreakVal
If BreakName is set then /strictlabels is ignored;
This is how GetColors worked originally;
the drawback is that the values plotted along
the legend are usually not nicely rounded values.
MODIFICATION HISTORY:
SEP-1992, Paul Hick (UCSD/CASS)
APR-1993, Paul Hick (UCSD/CASS)
removed restrictions to !d.n_colors=8 and 16
AUG-1999, Paul Hick (UCSD/CASS)
added a check for bad values using the 'finite' function.
Corresponding entries in the Color output array are now set
to -1 (these will be ignored by ColorSkybox).
SEP-1999, Paul Hick (UCSD/CASS)
added badforeground and badbackground options
added /open keyword
SEP-2003, Paul Hick (UCSD/CASS)
added cpart keyword
OCT-2003, Paul Hick (UCSD/CASS)
added /flip and /noedge
MAY-2006, Paul Hick (UCSD/CASS)
Added /rimlegend
JUN-2008, Paul Hick (UCSD/CASS)
Added /strictlabel, BreakPos. Added code to improve
labeling of legend.
JAN-2009, Paul Hick (UCSD/CASS)
Added keyword labelrange. Improved positioning of labels
along legend.
DEC-2009, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Added keyword /logscale.
Removed restriction on equally spaced BreakVal array.
[Previous]
[Next]
NAME:
GetColors
PURPOSE:
Convert array of function values to equivalent color indexes.
Optionally plot a legend.
CALLING SEQUENCE:
Colors = GetColors( Value, BreakVal, BreakName, $
/legend, format=format, charsize=charsize, ctable=ctable, cpart=cpart )
INPUTS:
Value array; type: any
function values
BreakVal array; type: any
function values between adjacent colors
OPTIONAL INPUT PARAMETERS:
/legend if set, a legend is plotted at the left
edge of the screen
format=format scalar; type: string
format used to label the legend (only used if
BreakVal is a float array)
ctable=ctable scalar; type: integer
used to load a color table with LOADCT
(only if !d.n_colors=16)
cpart=cpart array[2]; type: float
fractions of one; limits the range of color indices
used to cpart*(!d.n_colors-1)
/noedge avoids using color indices 0 and !d.n_colors-1
this overrides the cpart setting.
(these sometimes are set to black and white and don't
fit in with the rest of the color table).
_extra=_extra
/badforeground if set then bad values (detected with the
finite function) are set to the foreground
color (!p.color)
/badbackground if set then bad values are set to the foreground
color (!p.background)
/flip uses color table in reverse order, i.e. with increasing
fnc value corresponding to decreasing color index
OUTPUTS:
GetColors array; type: byte
array with color indices (same dimensions as Value)
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
ARG_TIME, AngleRange, BadValue, ColorSkybox, CvSky, EarthSky3DLoc, EarthTransit3DLoc
EulerRotate, FILEPATH, FishEye, GeographicInfo, GetFileSpec, HammerAitoff, INTERPOL
IPS_params, InitVar, IntegrateLOS, IsType, LOADCT, MercatorProj, NewcombSun, PlotCurve
PlotEarthSkymap [1], PlotEarthSkymap [2], PlotEarthSkymap [3]
PlotEarthSkymap [4], REVERSE, STRETCH, ThomsonRadialFilter, TimeGet, TimeSet
TimeString, TimeUnit, ToDegrees, ToRadians, UBVCONST, UNIQ, VU_TYPE_SKY, WhatIs
anicenum, destroyvar, flt_read, gridgen, reset_colors, set_page, vu_earthskymap
vu_get, vu_get_page, vu_getdata, vu_gettime, vu_point_source, vu_thomson_antifish
CALLED BY:
PlotCoronagraph, PlotEarthSkymap [1], PlotEarthSkymap [2], PlotEarthSkymap [3]
PlotEarthSkymap [4], PlotEloTimeMap, PlotPlanarCut, PlotPolarSkymap
PlotSolarDisk, PlotSphereCut, PlotSynopticMap, RemoteView_Display2D
nagoya_glevel, thomsonfig, vu_synopticmap, vu_thomson_antifish
vu_thomson_hammer
SIDE EFFECTS:
The BreakVal array is sorted
RESTRICTIONS:
#break values = n_elements(BreakVal) must be less than
#colors = !d.n_colors
PROCEDURE:
The BreakVal array with N = n_elements(BreakVal) elements divides the data
range into N+1 interval (the 1st interval covers data values below
BreakVal[0], the last interval covers data value above BreakVal[N-1]. A
data value is matched to a color index depending on the interval it belongs to.
The # colors needed is 1+N (N=n_elements(BreakVal).
The 1+N color indices are calculated as
Col = round( (!d.n_colors-1.)/nBreak*indgen(nCols) )
i.e. as nearly evenly spaced over the full range 0,!d.n_colors-1
[Col[0]=0, Col[nBreak]=!d.n_colors-1]
The legend is a vertical color bar (color 0 to nBreak from bottom
to top) at the left side of the screen. The BreakVal values are
plotted at the borders between adjacent colors. A maximum of 8 evenly
spaced numbers is plotted
MODIFICATION HISTORY:
SEP-1992, Paul Hick (UCSD/CASS)
APR-1993, Paul Hick (UCSD/CASS)
removed restrictions to !d.n_colors=8 and 16
AUG-1999, Paul Hick (UCSD/CASS)
added a check for bad values using the 'finite' function. Corresponding
entries in the Color output array are now set to -1 (these will be ignored
by ColorSkybox).
SEP-1999, Paul Hick (UCSD/CASS)
added badforeground and badbackground options
added /open keyword
SEP-2003, Paul Hick (UCSD/CASS)
added cpart keyword
OCT-2003, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
added /flip and /noedge
[Previous]
[Next]
NAME:
GetColors
PURPOSE:
Convert array of function values to equivalent color indexes.
Optionally plot a legend.
CALLING SEQUENCE:
Colors = GetColors( Value, BreakVal, BreakName, $
/legend, format=format, charsize=charsize, ctable=ctable, cpart=cpart )
INPUTS:
Value array; type: any
function values
BreakVal array; type: any
function values between adjacent colors
OPTIONAL INPUT PARAMETERS:
/legend if set, a legend is plotted at the left
edge of the screen
format=format scalar; type: string
format used to label the legend (only used if
BreakVal is a float array)
ctable=ctable scalar; type: integer
used to load a color table with LOADCT
(only if !d.n_colors=16)
cpart=cpart array[2]; type: float
fractions of one; limits the range of color indices
used to cpart*(!d.n_colors-1)
/noedge avoids using color indices 0 and !d.n_colors-1
this overrides the cpart setting.
(these sometimes are set to black and white and don't
fit in with the rest of the color table).
_extra=_extra
/badforeground if set then bad values (detected with the
finite function) are set to the foreground
color (!p.color)
/badbackground if set then bad values are set to the foreground
color (!p.background)
/flip uses color table in reverse order, i.e. with increasing
fnc value corresponding to decreasing color index
OUTPUTS:
GetColors array; type: byte
array with color indices (same dimensions as Value)
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
ARG_TIME, AngleRange, BadValue, ColorSkybox, CvSky, EarthSky3DLoc, EarthTransit3DLoc
EulerRotate, FILEPATH, FishEye, GeographicInfo, GetFileSpec, HammerAitoff, INTERPOL
IPS_params, InitVar, IntegrateLOS, IsType, LOADCT, MercatorProj, NewcombSun, PlotCurve
PlotEarthSkymap [1], PlotEarthSkymap [2], PlotEarthSkymap [3]
PlotEarthSkymap [4], REVERSE, STRETCH, ThomsonRadialFilter, TimeGet, TimeSet
TimeString, TimeUnit, ToDegrees, ToRadians, UBVCONST, UNIQ, UlyssesOrbit, VU_TYPE_SKY
WhatIs, anicenum, destroyvar, flt_read, gridgen, reset_colors, set_page
vu_earthskymap, vu_get, vu_get_page, vu_getdata, vu_gettime, vu_point_source
vu_thomson_hammer
CALLED BY:
PlotCoronagraph, PlotEarthSkymap [1], PlotEarthSkymap [2], PlotEarthSkymap [3]
PlotEarthSkymap [4], PlotEloTimeMap, PlotPlanarCut, PlotPolarSkymap
PlotSolarDisk, PlotSphereCut, PlotSynopticMap, RemoteView_Display2D
nagoya_glevel, thomsonfig, vu_synopticmap, vu_thomson_antifish
vu_thomson_hammer
SIDE EFFECTS:
The BreakVal array is sorted
RESTRICTIONS:
#break values = n_elements(BreakVal) must be less than
#colors = !d.n_colors
PROCEDURE:
The BreakVal array with N = n_elements(BreakVal) elements divides the data
range into N+1 interval (the 1st interval covers data values below
BreakVal[0], the last interval covers data value above BreakVal[N-1]. A
data value is matched to a color index depending on the interval it belongs to.
The # colors needed is 1+N (N=n_elements(BreakVal).
The 1+N color indices are calculated as
Col = round( (!d.n_colors-1.)/nBreak*indgen(nCols) )
i.e. as nearly evenly spaced over the full range 0,!d.n_colors-1
[Col[0]=0, Col[nBreak]=!d.n_colors-1]
The legend is a vertical color bar (color 0 to nBreak from bottom
to top) at the left side of the screen. The BreakVal values are
plotted at the borders between adjacent colors. A maximum of 8 evenly
spaced numbers is plotted
MODIFICATION HISTORY:
SEP-1992, Paul Hick (UCSD/CASS)
APR-1993, Paul Hick (UCSD/CASS)
removed restrictions to !d.n_colors=8 and 16
AUG-1999, Paul Hick (UCSD/CASS)
added a check for bad values using the 'finite' function. Corresponding
entries in the Color output array are now set to -1 (these will be ignored
by ColorSkybox).
SEP-1999, Paul Hick (UCSD/CASS)
added badforeground and badbackground options
added /open keyword
SEP-2003, Paul Hick (UCSD/CASS)
added cpart keyword
OCT-2003, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
added /flip and /noedge
[Previous]
[Next]
NAME:
GetFileSpec
PURPOSE:
Retrieve file name information from the common block
set by SetFileSpec.
CATEGORY:
I/O, string manipulation
CALLING SEQUENCE:
FUNCTION GetFileSpec, setfile, $
from = From , $
upto = Upto , $
part = Part , $
strict = strict, $
asfilename = AsFileName
INPUTS:
setfile
array; type: string
array of file names is fed into SetFileSpec before anything
else is done. If not specified then the information set up by
a previous call to SetFileSpec is used.
From, UpTo, Part
scalar; type: string
Any of the following six strings can be used:
'NODE','DEVICE','DIRECTORY','NAME','TYPE','VERSION'
(a prefix 'FILE' is permitted, as in 'FILENAME')
The input is case-insensitive
Only a unique starting substrings has to be specified
If From is not specified, From='NODE' is assumed
If UpTo is not specified, From='VERSION' is assumed
OPTIONAL INPUT PARAMETERS:
/AsFileName if UpTo = 'Directory' and AsFileName is set than the
directory names are returned as file names, i.e.
in vms a *.DIR name is returned; in Win32 and Unix
the trailing (back)slash is removed. MacOS is not
implemented.
OUTPUTS:
Result string array
The array structure is determined by the input to the
SetFileSpec call that set up the internal data.
Includes all FileParts in between and including the
From and UpTo strings
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
InitVar, IsType, SetFileSpec, SyncDims, os_separator, strposn
CALLED BY:
FUNCTION smeilatest lastorbit, FindAllFiles, FindAllSubDirs, GetColors [2]
GetColors [3], PlotEarthSkymap [2], PlotEarthSkymap [3], PlotEarthSkymap [4]
allsky [1], allsky [2], allsky [3], allsky_f, ark_duty_cycle, aurora, badpix, bin_read
bin_write, clean, cvequ, cvgrd, cvgrd_skymap, do_file, fileset_sizes, findfile_fix
fix_cxlo, fix_version, forecast, forecast_ftp, get_page, grdout, gunzip_file
gzip_file, img_read, ipv6_packets, ipv6_traffic, krill_request_bars
krill_request_stats, makediff, makemovie [1], makemovie [2], mk_flick, mpc_body
nso_fe_read, packet_size_graphs, physics_constant, psfn, qImage, qImage_Pick
qImage_cw_Property, qImage_cw_Save, qImage_cw_SmeiMask, qRemoteView_Pick
qSave2File, qSave2File_Pick, qSave2File_Save, qView, qView_FileFilter
qView_PickFiles, qView_Save2File, qView_Shortname, qView_TMO_tracksky
qset_page_pick, qsmei_sky_pick, qvu_pick, rename_mrk, set_page, sgp_body
smei_base_testcase, smei_buf, smei_buf_getframe, smei_buf_prep
smei_buf_splitfile, smei_filename, smei_findcrazy, smei_frm_cp, smei_frm_cvhdr
smei_frm_darkfit, smei_frm_read, smei_frm_smoothdark, smei_frm_update
smei_frm_write, smei_getfile, smei_hdr_make, smei_mkcal, smei_mkorb
smei_mkzldresidue, smei_orbit_stats, smei_property, smei_rmdups
smei_shutterwrong, smei_sky_cleanedge_map, smei_star_cleanup, smei_star_fitone
smei_star_list, smei_star_remove, smei_star_split, smei_star_writepnt
smei_www_skymaps, smei_zld_remove [1], smei_zld_remove [2], telescope_sizes
test_td, timeposn, tolowcase, unhide_env, usno_body, vu_check, vu_coronagraph
vu_earthskymap, vu_extract, vu_get_page, vu_getdata, vu_header, vu_image
vu_insitu_raw, vu_lineofsight, vu_movie, vu_quick_movie, vu_remoteview, vu_synopt
vu_thomson_antifish, vu_thomson_fisheye, vu_thomson_hammer, vu_vox_sequence
vu_vox_write, vu_write, who_am_i, wso_read, wso_write, www_help_crosslinks
www_help_files, www_help_get_header, www_help_get_info, xhcs
EXAMPLE:
SetFileSpec, 'ud1:[test]file.txt' Establishes internal data
print, GetFileSpec() Prints: ud1:[test]file.txt
print, GetFileSpec(upto='dir') Prints: ud1:[test]
print, GetFileSpec(from='name') Prints: file.txt
print, GetFileSpect(from='dev',upto='dev') Prints: ud1:
INCLUDE:
@filespec_common.pro ; Common block with arrays File and Parts
SIDE EFFECTS:
> Input is converted to uppercase
RESTRICTIONS:
> Internal data must have been set up by SetFileSpec
PROCEDURE:
Extracts data from common block set by SetFileSpec
MODIFICATION HISTORY:
DEC-1997, Paul Hick
JAN-2001, Paul Hick (UCSD/CASS)
Added part keyword
OCT-2003, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Added setfile keyword
[Previous]
[Next]
NAME:
getipssources
PURPOSE:
Extract IPS observations from yearly data files in Morelia format
CATEGORY:
I/O
CALLING SEQUENCE:
FUNCTION getipssources, trange, $
observatory = observatory , $
subdir = subdir , $
use_good_sources = use_good_sources , $
degrees = degrees , $
silent = silent , $
point_sources = point_sources
INPUTS:
trange scalar or array[2]; type: time structure
time range (begin and end time)
a scalar is interpreted as [trange, trange+1 day]
(i.e. a one day time range starting at trange
OPTIONAL INPUT PARAMETERS:
observatory scalar; type: string; default: none
select one of 'mexart','nagoya', or 'ooty'
(the list of valid observatories is hardcoded)
subdir=subdir scalar; type: string; default: none
subdirectory in $DAT/ips where to look for data files
/degrees if set pp will be in degrees (default: radians)
OUTPUTS:
Result scalar; type: long;
# ips sources in time range
OPTIONAL OUTPUT PARAMETERS:
point_sources=point_sources
array[n]; type: structure
structure with IPS sources inside time range
point_sources.name = string with source name
point_sources.pp = 2-element array with RA and decl of source
point_sources.tt = time structure with time of observation
point_sources.vv = IPS velocity
point_sources.gg = IPS g-level
point_sources.xy = used by PlotEarthSkymap to set pixel locations of sources
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
AngleUnits, BadValue, CheckDir, CvPrecess, FILEPATH, InitVar, IsType, TimeFixYear
TimeGet, TimeOp, TimeSet, TimeUnit, ToDegrees, boost, destroyvar, say, txt_read
vu_point_source
PROCEDURE:
> All relevant yearly IPS data files are read to find observations inside
specified time range. These files are stored in $DAT/ips//<subdir>
where <subdir> is supplied as keyword.
> Files containing a list of IPS sources with celestial coordinates
(presumably in B1950) are stored in directory $NAGOYA/sources
A slightly different list is used each year. Currently this list
contains the source name, B1950 right ascension and declination,
and an expected source intensity.
> RA and dec for the sources are precessed to the current epoch.
MODIFICATION HISTORY:
AUG-2016, Paul Hick (UCSD/CASS), using getnagoyasources as start
[Previous]
[Next]
NAME:
getnagoyasources
PURPOSE:
Extract Nagoya IPS observations from yearly data files
CATEGORY:
I/O
CALLING SEQUENCE:
FUNCTION getnagoyasources, trange, $
subdir = subdir , $
use_good_sources = use_good_sources , $
degrees = degrees , $
silent = silent , $
point_sources = point_sources
INPUTS:
trange scalar or array[2]; type: time structure
time range (begin and end time)
a scalar is interpreted as [trange, trange+1 day]
(i.e. a one day time range starting at trange
OPTIONAL INPUT PARAMETERS:
subdir=subdir scalar; type: string; default='daily'
subdirectory in $DAT/nagoya where to look for data files
/degrees if set pp will be in degrees (default: radians)
OUTPUTS:
Result scalar; type: long;
# ips sources in time range
OPTIONAL OUTPUT PARAMETERS:
point_sources=point_sources
array[n]; type: structure
structure with IPS sources inside time range
point_sources.name = string with source name
point_sources.pp = 2-element array with RA and decl of source
point_sources.tt = time structure with time of observation
point_sources.vv = IPS velocity
point_sources.gg = IPS g-level
point_sources.xy = used by PlotEarthSkymap to set pixel locations of sources
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
AngleUnits, BadValue, CheckDir, CvPrecess, FILEPATH, InitVar, IsType, TimeFixYear
TimeGet, TimeOp, TimeSet, TimeUnit, ToDegrees, boost, destroyvar, say, txt_read
vu_point_source
CALLED BY:
qnagoya_pointsources, vu_localskymap, vu_nagoyasourcemap
PROCEDURE:
> All relevant yearly IPS data files are read to find observations inside
specified time range. These files are stored in $NAGOYA/'subdir'
where subdir is supplied as keyword.
> Files containing a list of IPS sources with celestial coordinates
(presumably in B1950) are stored in directory $NAGOYA/sources
A slightly different list is used each year. Currently this list
contains the source name, B1950 right ascension and declination,
and an expected source intensity.
> RA and dec for the sources are precessed to the current epoch.
MODIFICATION HISTORY:
SEP-1999, Paul Hick (UCSD/CASS)
JUL-2000, Paul Hick (UCSD/CASS)
record length for nagoya.* files changed from 66 to 76 to
account for extra column with scintillation index data.
MAY-2003, Paul Hick (UCSD/CASS)
Added precession of source coordinates from B1950 to current epoch.
DEC-2006, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Added check for IPS sources in yearly data files which are not
specified in the STELab IPS source list (and for which therefore
no sky locations are available).
[Previous]
[Next]
NAME:
getootyasources
PURPOSE:
Extract Ooty IPS observations from yearly data files
CATEGORY:
I/O
CALLING SEQUENCE:
FUNCTION getootysources, trange, $
subdir = subdir , $
use_good_sources = use_good_sources , $
degrees = degrees , $
silent = silent , $
point_sources = point_sources
INPUTS:
trange scalar or array[2]; type: time structure
time range (begin and end time)
a scalar is interpreted as [trange, trange+1 day]
(i.e. a one day time range starting at trange
OPTIONAL INPUT PARAMETERS:
subdir=subdir scalar; type: string; default='daily'
subdirectory in $DAT/ooty where to look for data files
/degrees if set pp will be in degrees (default: radians)
OUTPUTS:
Result scalar; type: long;
# ips sources in time range
OPTIONAL OUTPUT PARAMETERS:
point_sources=point_sources
array[n]; type: structure
structure with IPS sources inside time range
point_sources.name = string with source name
point_sources.pp = 2-element array with RA and decl of source
point_sources.tt = time structure with time of observation
point_sources.vv = IPS velocity
point_sources.gg = IPS g-level
point_sources.xy = used by PlotEarthSkymap to set pixel locations of sources
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
AngleUnits, BadValue, CheckDir, CvPrecess, FILEPATH, GETOOTYSOURCES, InitVar, IsType
TimeFixYear, TimeGet, TimeOp, TimeSet, TimeUnit, ToDegrees, destroyvar, flt_string, say
txt_read, vu_point_source
PROCEDURE:
MODIFICATION HISTORY:
AUG-2008, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Derived from getnagoyasources
[Previous]
[Next]
NAME:
getsmeisources
PURPOSE:
Extract SMEI lines of sight from orbital data files
CATEGORY:
I/O
CALLING SEQUENCE:
FUNCTION getsmeisources, trange, $
subdir = subdir , $
use_good_sources = use_good_sources , $
degrees = degrees , $
silent = silent , $
point_sources = point_sources
INPUTS:
trange scalar or array[2]; type: time structure
time range (begin and end time)
a scalar is interpreted as [trange, trange+1 day]
(i.e. a one day time range starting at trange
OPTIONAL INPUT PARAMETERS:
subdir=subdir scalar; type: string; default='daily'
subdirectory in $DAT/smei where to look for data files
/degrees if set pp will be in degrees (default: radians)
OUTPUTS:
Result scalar; type: long;
# ips sources in time range
OPTIONAL OUTPUT PARAMETERS:
point_sources=point_sources
array[n]; type: structure
structure with lines of sight inside time range
(see vu_point_source)
point_sources.name = string with source name
point_sources.pp = 2-element array with RA and decl of source
point_sources.tt = time structure with time of observation
point_sources.vv = IPS velocity
point_sources.gg = IPS g-level
point_sources
point_sources.xy = used by PlotEarthSkymap to set pixel locations of sources
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
BadValue, CheckDir, CvPrecess, FILEPATH, InitVar, IsType, TimeGet, TimeOp, TimeSet
TimeUnit, ToDegrees, destroyvar, flt_read, smei_orbit_get, vu_point_source
PROCEDURE:
MODIFICATION HISTORY:
AUG-2008, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Derived from getnagoyasources
[Previous]
[Next]
NAME:
GetStarShape
PURPOSE:
Get a set of shapes in the form of a 2D rectangular template to be used
to detect stars in an image
CATEGORY:
CALLING SEQUENCE:
INPUTS:
Frame 2D array, any type
Image containing stars
Star scale, type integer
Location of suspected star in Frame (usually a local
maximum in Frame)
OPTIONAL INPUT PARAMETERS:
/nocentroid if set then no attempt is made to find the centroid of the
suspected star (the centroid is supposed to be at the location
of the maximum at position Star).
file=File character, default: starshape.txt in directory $SMEI/sys
Name of file containing the basic star template
OUTPUTS:
Box 2D array, type float, same size as the star template used to
fit the star the suspected star (pixel Star in Frame) is
in the center of Box.
Box contains the square from Frame around suspected star.
Values !VALUES.F_NAN near the edges of Box indicate pixels
outside the range of the Frame array.
Mask 1D array, type long integer
mask of pixels covering the area in the basic star mask
defined as 'inside the star', i.e. the part of the 2D
template actually used to match the peak in Frame to a star.
BoxBase scalar, type float
BoxDev scalar, type float
measure for the fluctuations of the values in the 'outside
star' pixels in box (~standard deviation)
BoxMed scalar, type float
median of the 'outside star' pixels in Box
OPTIONAL OUTPUT PARAMETERS:
CALLS: ***
ArrayLocation, FILEPATH, MEAN, STDDEV, SuperArray, VALUESNAN, flt_read
CALLED BY:
FitStar
COMMON BLOCKS:
common SaveStarShape, Shape, X, Y, InStar
PROCEDURE:
> The basic template, a 2D array of numbers is stored in an ascii file and
read by flt_read. The template is separated in an 'inside star' and
'outside star' area. The 'outside' area is used to define a base level,
which is subtracted from the 'inside' area. The remaining difference is
the basic template used for fitting.
> If the /nocentroid keyword is not set, then a set of templates is calculated
corresponding to set of slightly different centroids for the suspected star.
MODIFICATION HISTORY:
OCT-1998, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
[Previous]
[Next]
NAME:
grayburst
CALLING SEQUENCE:
PRO grayburst, f
INCLUDE:
@compile_opt.pro
CALLS: ***
AngleUnits, FILEPATH, InitVar, TimeOp, TimeSet, TimeString, TimeUnit, boost, flt_read
smei_frm_findpoint, smei_frm_where
[Previous]
[Next]
NAME:
grd_read
PURPOSE:
Very provisional reader for .grd files
CATEGORY:
gen/idl/util
CALLING SEQUENCE:
FUNCTION grd_read, InFile, data , $
dimension = dimension , $
norow = norow , $
errormessage= errormessage , $
silent = silent
INPUTS:
file scalar; type: string
fully-qualified file name
OPTIONAL INPUT PARAMETERS:
/dimension is set then only the array dimension from the header
is returned
OUTPUTS:
result scalar; type: integer
always 1
data array[n,m]; type: float
data array
array[2]: type: integer
(only if /dimension is set)
Size of array (i.e. values of n and m)
OPTIONAL OUTPUT PARAMETERS:
error_message=error_message
scalar; type: string
always null-string
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
InitVar, IsType, destroyvar, do_file, flt_string, gunzip_file, hide_env
CALLED BY:
allsky [1], allsky [2], allsky [3], brightness, cvgrd_skymap, img_read
makemovie [1], makemovie [2], smei_mkglare, smei_mklsff, smei_mksidereal
smei_mkstarmask, smei_mkstdstar, smei_mkzldresidue, smei_sky_grd2fts, tailplot
SEE ALSO:
PROCEDURE:
MODIFICATION HISTORY:
JUL-2003, Paul Hick (UCSD/CASS)
SEP-2003, Paul Hick (UCSD/CASS)
Added /dimension keyword
SEP-2003, Paul Hick (UCSD/CASS)
Added /norow keyword
APR-2008, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Added code to handle binary grd files in addition
to ascii.
[Previous]
[Next]
NAME:
grdout
CALLING SEQUENCE:
PRO grdout
CALLS: ***
BadValue, FILEPATH, GetFileSpec, InitVar, LOADCT, REVERSE, WhatIs, bin_read, get_page
set_page
[Previous]
[Next]
NAME:
gridfill
PURPOSE:
Removes empty bins. An empty bin is given the average over all
neighbours with valid function values.
CATEGORY:
Plotting: contours
CALLING SEQUENCE:
FUNCTION gridfill, ZIn, nfill=nfill, weightfnc=WeightFnc,status=s
INPUTS:
Z 2D array; any type
If of type float, then invalid grid values are marked by !values.f_nan
OPTIONAL INPUTS:
nfill=nFill scalar; type integer; default: 0
<= 0: fill all empty bins with extrapolated values
> 0: fill empty bins with more than nFill neighbours
weightfnc=WeightFnc
scalar; type string; default: not present
name of function to calculate weights (see PROCEDURE)
OUTPUTS:
Z 2D array; type float
same as input array with invalid grid values replaced by averages
(if nfill>0 not all invalid values may have been filled in)
OPTIONAL OUTPUTS:
status=S
2D array; type byte
array identifying the extrapolated values:
= 1 contents of bin is same as valid input value
= 2 contents of bin is extrapolated value
nFill>0 only:
= 0 empty bin with less than nFill neighbours
Z[.,.] = !values.f_nan (same as input).
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
ArrayLocation, InitVar
CALLED BY:
InterpolateHeliosphere, PlotSphereCut, PlotSynopticMap, ss_map, wso_read
wso_write
PROCEDURE:
> If nFill <= 0 then:
Step 1: for each empty bin, count the number of non-empty neighbours
Step 2: find the subset of empty bins with the maximum number of
non-empty neighbours
Step 3: for the subset of step 2, calculate the average over the non-
empty neighbours and assign this average to the empty bin
Step 4: Go to step 1
Repeat until there are no empty bins left.
> nFill > 0:
Step 1: for each empty bin, count the number of non-empty neighbours
Step 2: find the subset of empty bins with nFill or more non-empty
neighbours
Step 3: for the subset of step 2, calculate the average over the non-
empty neighbours and assign this average to the empty bin
Step 4: Return.
> By default neigbouring function values are averaged with weight=1.
If WeightFnc is specified, it is used to calculate the weights instead.
The function has the form
function WeightFnc(I,J,inX,jnY,Z[inX,jnY])
I,J are the indices of the bad pixel; inX,jnY are arrays with the
indices of good neighbour pixels, and Z[inX,jnY] are the
function values in the good neighbours.
MODIFICATION HISTORY:
1990, Paul Hick (UCSD)
24-MAR-1999, Paul Hick (UCSD), converted from Fortran
[Previous]
[Next]
NAME:
gridgen
PURPOSE:
Generate array of x,y,z coordinates for a multi-dim area
CALLING SEQUENCE:
FUNCTION gridgen, nn, yy, zz, $
unit = unit , $
merge = merge , $
origin = origin , $
edge = edge , $
open = open , $
one = one , $
range = range , $
multid = multid , $
double = double
INPUTS:
n array[ndim]; type: integer
(ndim = 1,2,3)
dimensions of area in x, x-y, or x-y-z directions
OPTIONAL INPUT PARAMETERS:
/one if set, scales output array to range [0,1] in all dimensions
one=one array[ndim]; type: integer with value 0 or 1
set scaling for each of the dimension in 'n' separately
/open if set, then the pixel centers for the 'pixel edges' [0,n]
is returned
open=open array[ndim]; type: integer with value 0 or 1
set 'open' status for each of the dimensions separately
This is the same as gridgen1d(n, origin=-0.5)
The origin=0.5 is added to the origin specified in keyword
origin.
/edge if set, then coordinates for the 'pixel edges' of pixels
[0,..n-1] is returned
edge=edge array[ndim]; type: integer with value 0 or 1
set 'edge' status for each of the dimensions separately
This is the same as gridgen(n+1, origin=0.5)
The origin=0.5 is added to the origin specified in keyword
origin.
Example: gridgen(5, /edge) = [-0.5,0.5,1.5,2.5,3.5, 4.5]
origin=origin
array[ndim]; type: float
defines the origin in units of output grid
(i.e. usually in array indices; but if /one or range are
used then it is in units of the data range)
range=range scalar, array[ndim] or array[2,ndim]
if scalar then the output array is scaled to the range
[0,range] in every dimension
if array[ndim] then the output array is scaled to the ranges
[0,range[i]], i=0,ndim-1, in each dimension
if array[2,ndim] then the output array is scaled to the ranges
[range[0,i],range[1,i]], i=0,ndim-1 in each dimension
/multid (only in ndim > 1) reforms output array to [ndim,n] array.
The default is a two-dim array of size
[ndim,n[0]*n[1]*..*n[ndim-1]]
OUTPUTS:
Result array[ndim,n[0],n[1],..,n[ndim-1]]; type: long integer or float
coordinates across the area
a float array is returned if keywords /one or /range
are used.
CALLS: ***
InitVar, IsTime, IsType, SuperArray, TimeOp, TimeSet, TimeUnit, gridgen1d
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLED BY:
EarthSky3DLoc, EarthTransit3DLoc, GetColors [1], GetColors [2], GetColors [3]
PlotBars, PlotCoronagraph, PlotEarthSkymap [1], PlotEarthSkymap [2]
PlotEarthSkymap [3], PlotEarthSkymap [4], PlotEloTimeMap, PlotPlanarCut
PlotPolarSkymap, PlotSolarDisk, PlotSphereCut, PlotSynopticMap, RemoteView
RemoteView_CMEDensity, RemoteView_CubeFrame, RemoteView_CurrentSheet
RemoteView_Display2D, RemoteView_FOV_xyz, RemoteView_VertexSphere
RemoteView_rgbo, SMEI_cr_removal, TMO_skymotion, TMO_tracksky, ThomsonLOSStep
TimeXAxis, allsky [1], allsky [2], allsky [3], allsky_f, big_orbit, brachistochrone
cvsmei, even_light, even_light_figures, even_light_pedestal
even_light_platescale, forecast, forecast_cfg, jpl_test, los_weight, losgeometry
miscfig, packet_size_one_graph, plot3darc, projfig, qGlitch_Run
qImage_cw_BoxCosine, qImage_cw_SmeiMask, qImage_cw_ZEllipse, qView_PlotSeries
qvu_draw, sgp4_orbit_axis, show_wso, smei_ccd2sky, smei_hdr_plot, smei_mki2m
smei_mkmask, smei_normal, smei_sky, smei_sky_cleanedge_fov, smei_sky_getmask
smei_sky_read, smei_star_box, smei_star_standard, smei_zld_model
smei_zld_remove [1], smei_zld_remove [2], smei_zldsky, sphere_great_arc
sphere_smooth, spokes, stardistance, surfertable [1], surfertable [2]
surfertable [3], surfertable_update [1], surfertable_update [2], thomsonfig
tomography_sp, view3d, vu_coronagraph, vu_elotime, vu_extract, vu_get, vu_insitu
vu_insitucurve, vu_movie, vu_planarcut, vu_solardisk, vu_spherecut, vu_syncgrid
vu_synopticmap, vu_thomson_antifish, vu_thomson_fisheye, vu_thomson_hammer
vu_timeseries, vu_type_skymap, vu_vox_drawelatitude, vu_vox_drawelongitude
vu_vox_drawhlatitude, vu_vox_drawhlongitude, vu_vox_draworbit
vu_vox_drawsphere, vu_vox_write, wedge_content, wso_read
RESTRICTIONS:
For time structures only 1-dim arrays can be generated
PROCEDURE:
> The origin is subtracted after applying the scaling implied by
keywords /one and range=range
> Combination of 'replicate' function and matrix multiplication #
> Create 1-dim time grids:
gridgen(10,TimeUnit(/day))
10-element grid of time differences with 1-day time steps
gridgen(10,TimeUnit(/day),range='2008_001'
gridgen(10,range=['2008_001','2008_009'])
10-element grid with 1-day steps starting at 2008_001
MODIFICATION HISTORY:
OCT-2000, Paul Hick (UCSD/CASS)
Result of merging indgen1d, indgen2d, and indgen3d
JAN-2002, Paul Hick (UCSD/CASS)
Change all replicate(1.0,n) statements to replicate(1L,n) in the
last case block.
Using 1.0 will always return a float array even when an integer
return would be acceptable.
NOV-2005, Paul Hick (UCSD/CASS)
Added 4D version
SEP-2006, Paul Hick (UCSD/CASS)
Substantial rewrite: generalized to work for any number
of dimensions (memory permitting)
OCT-2008, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Added argument 'unit' and allowed keywords 'origin' and
'range' to be standard structures. This allows setting up
1-dim arrays of times.
[Previous]
[Next]
NAME:
gridgen1d
PURPOSE:
(For internal use by gridgen only)
CALLING SEQUENCE:
FUNCTION gridgen1d, nn, unit, $
origin = origin, $ ; Could be time
edge = edge , $
open = open , $
one = one , $
range = range , $ ; Could be time range
double = double
INPUTS:
nn scalar; type: integer
number of elements in grid
OPTIONAL INPUTS:
origin=origin
scalar; type: any numerical type
the origin is shifted AFTER
applying keywords one or range.
/open
/edge return edges of bins
/one same as range=[0,1]
range=range
array[2]; type: any numerical type
scale array to this range
If range is of type integer then the grid
also will be type integer unless integer
truncation occurs.
/double if set return double precision grid
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
InitVar, IsTime, IsType, TimeOp, TimeSet, TimeUnit
CALLED BY:
gridgen
EXAMPLE:
gridgen(5) = [0,1,2,3,4]
gridgen(5,/open) = [0.5,1.5,2.5,3.5,4.5]
gridgen(5,/open,/edge) = [0,1,2,3,4,5]
gridgen(5,/one) = [0.0,0.25,0.5,0.75,1.0]
gridgen(5,/one,orig=0.5)= [-0.5,-0.25,0.0,0.25,0.5]
PROCEDURE
Sets up 1-dim grid. BE CAREFUL MIXING KEYWORDS.
MODIFICATION HISTORY:
OCT-2000, Paul Hick (UCSD/CASS)
SEP-2006, Paul Hick (UCSD/CASS)
If range is specified as integer then the return
array is returned as integer array also, after
checking that integer truncation has not occurred.
Keyword origin is now applied after processing
keywords one and range (if present).
JUN-2008, Paul Hick (UCSD/CASS)
Added code to handle n=1 without error messages
OCT-2008, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Added code to create 1-d time grids
[Previous]
[Next]
NAME:
GroupPixels
PURPOSE:
Divide a group of pixels in separate groups based on nearness of the pixels in a group
CATEGORY:
Tools
CALLING SEQUENCE:
Loc = GroupPixels(Locations, Positions, range=range, ngroup=nGroup, pgroup=pGroup, lgroup=lGroup)
INPUTS:
Locations 1D array, type integer
array of linear indices of pixel locations
Positions 3D array, type: float
x,y,z positions of pixels in 'Locations' array
(keywords sizeframe or dimension provide alternative
ways to specify x,y,z positions)
OPTIONAL INPUT ARRAY:
sizeframe=sizeframe size vector of image cube
dimension=dimension dimensions of image cube
if either of these is specified, then 'Positions' is ignored
Instead the dimensions of the image cube are used to
to get x,y,z pixel coordinates from 'Locations' using
ArrayLocation.
OPTIONAL INPUT PARAMETERS:
range=Range scalar, or vector with as many elements as Frame has dimensions
default: Range = 1
defines the distance in each dimension of Frame defining
how close the members of a group are.
/ellipsoid if set, Range is used to define an ellipsoidal region
if not set, Range defines a square region.
OUTPUTS:
Loc 1D array, type integer
same as input array Locations but with elements reordered
if Frame is supplied as an array (i.e. if /sizeframe is not set),
then groups will be ordered with the values of the highest
pixel in each group in decreasing order
OPTIONAL OUTPUT PARAMETERS:
ngroup=nGroup scalar, type long integer
number of groups of pixels in Loc
pgroup=pGroup 1D array[nGroup], type long integer
indicates the position in Loc where each group begins
lgroup=lGroup 1D array[nGroup], type long integer
indicates number of pixels in each group
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
ArrayLocation, InitVar, IsType
CALLED BY:
Find2DGlitch, SMEI_cr_removal
PROCEDURE:
This procedure was written to group pixels in a 3D image cube, but I think it works
with cubes of any number of dimensions.
MODIFICATION HISTORY:
NOV-1998, Paul Hick (UCSD/CASS)
FEB-2001, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Added possibility to specify x,y,z coordinates for pixels explicitly
(in addition to specification of size vector of image cube only)
[Previous]
[Next]
NAME:
GuessRecs
PURPOSE:
Guess number of records and record length for binary file
CATEGORY:
Tricks
CALLING SEQUENCE:
FUNCTION GuessRecs, iu, approx_recl, range, recl=recl
INPUTS:
iu scalar; type: integer
logical unit number of open file
approx_recl scalar; type: integer
approximate record length in bytes
OPTIONAL INPUT PARAMETERS:
range scalar: type: integer: default: 1
range of recordlength tested is approx_recl +/- range
OUTPUTS:
Results scalar; type: integer
guess at # records (-1 if not succesful)
OPTIONAL OUTPUT PARAMETERS:
recl = recl scalar: type: integer
guess at record length in bytes (= file size/# records)
(-1 if not succesful)
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
InitVar
CALLED BY:
compipsd, txt_read
PROCEDURE:
The approximate record length specified as input does not include record
terminators (such as CR or CR+LF combinations).
If the approximate record length specified is L and the range is R then
for all values i=[L-R,L+R] the procedures checks whether i+1 or i+2 are factors
of the file size. The largest i that satisfies this criterion is used to set
the number of records in the file. The record length returned is the ratio of
file size and number of records (i.e. it includes the record terminators).
MODIFICATION HISTORY:
MAR-2000, Paul Hick (UCSD/CASS)
SEP-2003, Paul Hick (UCSD/CASS)
Fixed order in which record lengths are tested.
approx_recl is tested first.
Then record lenghts increasingly different from approx_recl:
approx_recl-1, approx_recl+1, approx_recl-2, approx_recl+2, etc.
APR-2008, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
For an empty file now nrec=recl=0 is returned,
instead of nrec=recl=-1.
[Previous]
[Next]
NAME:
gunzip_file
PURPOSE:
Unzip .gz. file
CATEGORY:
gen/idl/util
CALLING SEQUENCE:
FUNCTION gunzip_file, zipfile, rawfile, check=check, isgz=isgz, ramdisk=ramdisk
INPUTS:
zipfile scalar; type: string
file to be unzipped
OPTIONAL INPUT PARAMETERS:
/check if set then check whether the file exists
/ramdisk by default the unzipped file is written to $TUB
if /ramdisk is set the environment variable $ramdisk
is tried first.
OUTPUTS:
status 0: unzip not successfull
1: file succesfully unzipped into file 'rawfile'
rawfile scalar; type: string
name of unzipped file (if status=1) or the blank
string (if status=0)
OPTIONAL OUTPUTS:
isgz=isgz 1 if input file was .gz file; 0 if not.
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
FILEPATH, GetFileSpec, InitVar, SetFileSpec
CALLED BY:
bin_read, flt_read, grd_read, img_read, smei_fts_read, smei_star_readpnt, txt_read
vox_read
PROCEDURE:
If the input file 'zipfile' does not exist or is not a .gz file then
status = 0 is returned.
The unzipped output file has the same name as the input file with
the prefix _tmp_ added and the .gz stripped.
By default the file is written to $TUB. If /ramdisk is set then
$ramdisk is used (if the env var exists). Usually $ramdisk will point
to a ramdisk. Note that the user should set up the ramdisk and make
sure it is big enough to hold the unzipped file.
MODIFICATION HISTORY:
APR-2003, Paul Hick (UCSD/CASS)
JUL-2004, Paul Hick (UCSD/CASS)
Added /ramdisk keyword.
DEC-2007, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Change name of temp file from _tmp_* to _tmp##_*, where ## is
a number less than 10. The number is the lowest number that
make a file name for a non-existent files. This was added to
avoid conflicts with other program trying the same file
(the conflicting program might delete the temp file before it
is read).
[Previous]
[Next]
NAME:
gzip_file
PURPOSE:
Unzip .gz. file
CATEGORY:
gen/idl/util
CALLING SEQUENCE:
FUNCTION gzip_file, file, zipfile, check=check, isgz=isgz, nozip=nozip, force=force
INPUTS:
file scalar; type: string
file to be unzipped
OPTIONAL INPUT PARAMETERS:
/check if set then check whether the file exists
/nozip skip the actual zipping; only return the name
of the zipped file if it had been zipped
/force force gzip if file already exists
OUTPUTS:
status 0: zip not successfull
1: file succesfully zipped into file 'zipfile'
zipfile scalar; type: string
name of zipped file (if status=1) or the blank
string (if status=0)
OPTIONAL OUTPUTS:
isgz=isgz 1 if input file was .gz file; 0 if not.
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
FILEPATH, GetFileSpec, InitVar
CALLED BY:
smei_mksidereal, smei_mkstdstar, smei_star_remove, smei_zld_remove [1]
smei_zld_remove [2], vu_write, xhcs
PROCEDURE:
If the input file 'zipfile' does not exist or is not a .gz file then
status = 0 is returned.
MODIFICATION HISTORY:
OCT-2003, Paul Hick (UCSD/CASS)
NOV-2003, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Added /nozip keyword