Source: src/idl_cvs/tabinv.pro
src/idl_cvs/tabinv.pro
NAME: TABINV PURPOSE: To find the effective index of a function value in an ordered vector. CALLING SEQUENCE: TABINV, XARR, X, IEFF INPUTS: XARR - the vector array to be searched, must be monotonic increasing or decreasing X - the function value(s) whose effective index is sought (scalar or vector) OUTPUT: IEFF - the effective index or indices of X in XARR real or double precision, same # of elements as X RESTRICTIONS: TABINV will abort if XARR is not monotonic. (Equality of neighboring values in XARR is allowed but results may not be unique.) This requirement may mean that input vectors with padded zeroes could cause routine to abort. PROCEDURE: A binary search is used to find the values XARR(I) and XARR(I+1) where XARR(I) < X < XARR(I+1). IEFF is then computed using linear interpolation between I and I+1. IEFF = I + (X-XARR(I)) / (XARR(I+1)-XARR(I)) Let N = number of elements in XARR if x < XARR(0) then IEFF is set to 0 if x > XARR(N-1) then IEFF is set to N-1 EXAMPLE: Set all flux values of a spectrum (WAVE vs FLUX) to zero for wavelengths less than 1150 Angstroms. IDL> tabinv, wave, 1150.0, I IDL> flux( 0:fix(I) ) = 0. NOTES: Users of V5.3 or later can use a faster version of tabinv.pro available at http://idlastro.gsfc.nasa.gov/ftp/v53/ which makes use of the VALUE_LOCATE() intrinsic function. FUNCTIONS CALLED: ISARRAY() REVISION HISTORY: Adapted from the IUE RDAF January, 1988 More elegant code W. Landsman August, 1989 Mod to work on 2 element decreasing vector August, 1992 Converted to IDL V5.0 W. Landsman September 1997
Source: src/idl_cvs/tagrankof.pro
src/idl_cvs/tagrankof.pro
NAME: tagRankOf PURPOSE: Return a list of MDSplus signals with a certain rank (that contain data) CATEGORY: MDSplus CALLING SEQUENCE: tags = tagRankOf( rankDesired ) INPUTS: rankDesired = 0 for scalars, 1 for vectors, etc. KEYWORD PARAMETERS: Optional Keywords: filter - wild card specifer. E.g. '*ip*' will get all of specifed rank with ip in the the tag name. fullpaths - returns full pathnames of tags found print - if set, tags and full pathnames found will be printed debug - print some debugging info the tree may be opened before this routine is called, or you can specify: treeName - MDSplus tree. Default='NSTX' (unless embedded in nodeString) shot - MDSplus shot to search. Default=-1 (the model tree). server - MDSplus server. Default comes from the environmental variable _path OUTPUTS: tags = tagnames of specifed rank fitting any filter specified if none are found fitting criteria, 'none' is returned. EXAMPLE: IDL> print, tagRankOf( 1, filter='i*', shot=120200, tree='wf' ) \WF::ICHI \WF::IOH \WF::IP \WF::IPF1AL \WF::IPF1AU \WF::IPF1B \WF::IPF2L \WF::IPF2U \WF::IPF3L \WF::IPF3U \WF::IPF4 \WF::IPF5 \WF::ITF IDL> mdsopen,'microwave', 120200 IDL> scalarNames = tagRankOf(0) IDL> someSigs = tagRankOf( 1, filter='n*', /print ) COMMON BLOCKS: none NOTES: Only returns signals with data in them. LIMITATIONS: An MDSplus shot file must be open first. MODIFICATION HISTORY: 10-Jan-08 Added extra keywords for findMDSnodes [BD] 14-Mar-00 more efficient & added keywords [BD] 20-Jan-00 Written by Bill Davis
Source: src/idl_cvs/tagsearch.pro
src/idl_cvs/tagsearch.pro
NAME: tagsearch PURPOSE: Search MDS Plus Trees for a tag CATEGORY: MDSplus, Utility CALLING SEQUENCE: IDL> status=tagsearch(searchtag[,tag=tag, path=path]) INPUTS: searchnode and optional variable to return an array of full paths containing tag name and an array containing the tag names KEYWORD PARAMETERS: the tree may be opened before this routine is called, or you can specify: Inputs (optional): treeName - MDSplus tree. Default='NSTX' (unless embedded in nodeString) shot - MDSplus shot to search. Default=-1 (the model tree). server - MDSplus server. Default comes from the environmental variable _path Returned: path tag OUTPUTS: status of function COMMON BLOCKS: none EXAMPLE: IDL> status=tagSearch('xp_', tag=tag, path=fullpath, tree='nstx') NOTES: will return 0 if tag is found and -1 if it is not found in the tree specified MODIFICATION HISTORY: 08-May-2009 default to nstx tree if none indicated [BD] 10-Jan-08 use findMDSnodes, since findtags.fun not in Linux distribution [BD] 01-Dec-00 Added capability for wildcards in search string 28-Feb-00 Written by Dana Mastrovito, PPPL
Source: src/idl_cvs/tag_exist.pro
src/idl_cvs/tag_exist.pro
NAME: TAG_EXIST PURPOSE: To test whether a tag name exists in a structure. CATEGORY: MDSplus, structure CALLING SEQUENCE: status = tag_exist(str, tag) INPUTS: str - structure variable to search tag - tag name to search for OUTPUTS: Function returns 1 if tag name exists or 0 if it does not. KEYWORDS: INDEX = index of matching tag METHOD: Routine obtains a list of tagnames and tests whether the requested one exists or not. The search is recursive so if any tag names in the structure are themselves structures the search drops down to that level. Common : None Restrictions: None Side effects: None Written : C D Pike, RAL, 18-May-94 Modified : 03-May-2007 datatype wasn't working, so just use SIZE [BD] : Version 1.1, D Zarro, ARC/GSFC, 27-Jan-95 Passed out index of matching tag Version : Version 1.1, 27-Jan-95
Source: src/idl_cvs/tdis.pro
src/idl_cvs/tdis.pro
NAME: tdis PURPOSE: Search MDS Plus Trees for TDI DATA CATEGORY: MDSplus, Utility CALLING SEQUENCE: IDL> result = tdis( keyword[,sensitvity][, tdi=tdi][,path=path] ) INPUTS: searchstring and optional variables to control case sensitivity and return an array of text strings found and an array of paths to those strings KEYWORD PARAMETERS: (output) tdi - the full tdi found path - the full path to the text OUTPUTS: result=status of function COMMON BLOCKS: none EXAMPLE: IDL> result=tdi('build','sensitive',tdi=tdi,path=path) NOTES: this version is specifically for idl4 (?) tree must already be open before tsearch can be called if no records are found in current tree returns -1 else returns 0 MODIFICATION HISTORY: 30-Jan-00 Speed up. Fixed node names. 01-Dec-00 Added capability for wildcards in search string 07-Feb-00 Written by Dana Mastrovito, PPPL
Source: src/idl_cvs/template.pro
src/idl_cvs/template.pro
NAME: TEMPLATE PURPOSE: Provide a template for IDL routines to be used by others CATEGORY: Utility CALLING SEQUENCE: IDL> opt = template(shot) INPUTS: shot = NSTX shot number KEYWORD PARAMETERS: Inputs: HLP - When set, help information is printed. tree - MDSplus tree sig - MDSplus signal to look for in current shot xsize - horizontal size of X window ysize - vertical size of X window xpos - initial X position of lower left of X window in pixels ypos - initial Y position of lower left of X window in pixels charsize - size of characters on plot verbose - if set, will print many informational messages debug - if set, debug output will be printed Outputs: status - if odd, then success OUTPUTS: opt = returned value out COMMON BLOCKS: NONE EXAMPLE: IDL> opt = TEMPLATE( /HLP ) NOTES: When the routine is called with no parameters, or with the keyword hlp set, help information is printed. MODIFICATION HISTORY: 20-Jan-2012 Written by Bill Davis, PPPL
Source: src/idl_cvs/testcmd.pro
src/idl_cvs/testcmd.pro
NAME: testcmd PURPOSE: test batch execution CATEGORY: Example, Batch INVOCATION: $ IDL runtestcmd.pro Where runtestcmd.pro might contain: testcmd, key='key input', file='newfile.txt' exit WRITTEN by Bill Davis, 23-Apr-99
Source: src/idl_cvs/textlines.pro
src/idl_cvs/textlines.pro
NAME: textlines PURPOSE: Form lines of text for outputing (say, in a table form). If formats are not input, then guess about good formatting for variables of different types. CATEGORY: STRINGS, Output CALLING SEQUENCE: IDL> lines = textlines( arg01, arg02, arg03, arg04, ... ) INPUTS: inputs = up to 40 scalars or arrays (of same length) KEYWORD PARAMETERS: Optional Inputs: formats - array of formats for each column tabs - if =0 then will put a space between each column, rather than a tab debug - if set, debug output will be printed Optional Output: getFormat OUTPUTS: lines - string array of formatted output EXAMPLE: arg01 = [1,2,3] & arg02=['a','b','c'] arg03 = [0.1,0.2,0.3] & arg04 =arg01 lines = textlines( arg01, arg02, arg03, arg04, /debug ) MODIFICATION HISTORY: 20-Dec-2007 Written by Bill Davis, PPPL
Source: src/idl_cvs/th_image_cont.pro
src/idl_cvs/th_image_cont.pro
NAME: TH_IMAGE_CONT PURPOSE: Plot contours of Images with both contour lines and colors CATEGORY: 2-D Plotting USAGE: ******************** HIGH FREQUENCY RADAR DIVISION, SRL ********************** *************************** Ionospheric Effects ****************************** HELP 1 TH_IMAGE_CONT Overlays an image and a contour plot and optionally adds a scale bar. Based on the IDL USERLIB routine IMAGE_CONT. This routine supersedes the USERLIB one, having far more functionality, yet capable of EXACTLY reproducing the effect of IMAGE_CONT. Scale bar appears on the right-hand-side unless /NOBAR is set. NB: the scale bar is automatically created by a recursive call to this routine using the same color and image parameters Format: In its simplest form (allowing all parameters to default) IDL> TH_IMAGE_CONT, IMAGE or, IDL> TH_IMAGE_CONT, IMAGE, X, Y And in its most complex form, specifying ALL parameter IDL> TH_IMAGE_CONT, IMAGE, $ ASPECT=aspect, $ BADPTS=badpts,$ BAR_LABEL_LENGTH=bar_label_length, $ BAR_RANGE=bar_range, $ BAR_SEPARATION=bar_separation, $ BAR_TICKLEN=bar_ticklen, $ BAR_TICKNAME=bar_tickname, $ BAR_TICKS=bar_ticks, $ BAR_TICKV=bar_tickv,$ BARSZ_CHARS=barsz_chars, $ BOTTOMcolor=bottomcolor,$ C_COLORS=c_colors,$ C_LINESTYLE=c_linestyle, $ C_THICK=c_thick, $ CONGRID=congrid, $ CONT=cont, $ CRANGE=crange, $ CT=ct, $ CUBIC=cubic, $ DEBUG=debug, $ EXACT=exact, $ RAISE_PTITLE=raise_ptitle IMAGE_WINDOW=image_window, $ INTERP=interp,$ LEVELS=levels,$ MAX_VALUE=max_value, $ NLEVELS=nlevels, $ NOBAR=nobar, $ NOCONT=nocont, $ NOERASE=noerase,$ TOPcolor=topcolor,$ TSIZE=tsize, $ WINDOW_SCALE=window_scale, $ XRANGE=xrange, $ YRANGE=yrange 2 IMAGE 2-dimensional array to display as an image. 2 /ASPECT set to retain image's aspect ratio. Assumes square pixels. If /WINDOW_SCALE is set, the aspect ratio is retained. 2 BADPTS indices into IMAGE data which define the bad points. These will not be contoured 2 BAR_LABEL_LENGTH the space, in characters (default = 2), for the bar label 2 Btitle Bar title 2 BAR_RANGE set the range limits for the color scale bar (same as CRANGE, defaults to autoscaling if BAR_TICKV not set) 2 BAR_SEPARATION the separation, in characters (default = 2), between the scale bar and the image. Note that the |y-ticklength| will be added to this value if y-ticklength < 0. Both the image and the color bar need to fit into the space allowed for the plot window, otherwise an informative message will be printed and unpredictable results may occur for the displayed image 2 BAR_TICKS set the number of tick intervals for the labelling of the scale bar (defaults to !z.ticks) 2 BAR_TICKV the values to label on the scale bar. If this is set then the scale bar will have AT LEAST this range (defaults to !z.tickv) 2 BAR_TICKNAME the labels to use on the scale bar (defaults to !z.range) 2 BAR_TICKLEN the length of the ticks on the scale bar in fractions of tick bar window, (defaults to !z.ticklen) 2 BARSZ_CHARS the size of the scale bar in characters (default = 2). Both the image and the color bar need to fit into the space allowed for the plot window, otherwise an informative message will be printed and unpredictable results may occur for the displayed image. If the value of this keyword is <=0 then no bar will be displayed BUT the scaling and window size will be calculated as those a color bar is to be used. This is useful when doing multiple plots per page where only some scale bars are not required but you want the plots to all be the same size. Set BARSZ_CHARS = -#chars to allow room for a bar of #chars size but not to put a scale bar on the plot. Then set BARSZ_CHARS = +#chars to plot the bar on alongside another plot, to end up with images of the same size. Useful in collaboration with the SIDES procedure (which will set flags for when the plot is on the Left,Right,Top and Bottom of the plot window).2 BOTTOMcolor Set this keyword to the color index of the desired bottom color (range from 0 to TOPcolor-1). Note that the default value for this keyword is 1, which allows the color of the image to be independent of the background and axes colors (!P.background and !P.color). If the user sets this keyword then allowance should be made for these colors as they are generally swapped for POSTSCRIPT and X-Window devices 2 /CONGRID if the image has to be resampled then use the USERLIB CONGRID routine 2 /CONT only do the contouring (no image) 2 CRANGE set the range limits for the color scale bar (same as BAR_RANGE, defaults to autoscaling if BAR_TICKV not set) 2 CT load a color table (uses LOADCT via MK_COLOR) 2 /CUBIC if the image has to be resampled AND interpolated then use the CUBIC interpolation rather than the bi-linear (see INTERP Keyword) 2 /DEBUG write out some inforamtion as it goes2 /EXACT When set this will force the contour routine to fit to the exact positions relative to the image. When data is displayed as an image each datum is expanded out to fill a pixel of finite dimensions. The assignment of where the "data value" resides within this space is open to debate, but is most appropriately (to this author) assigned to the geometric centre of the pixel. Most defaults assign this position to be at the bottom left-hand corner of the pixel. Contour will fit to the 2-d plane assuming that the data value is associated with the bottom left-hand corner. To reconcile this with the notion of the value being in the middle of the pixel the contour call is made with the x/y values and ranges for the image adjusted (effectively by half a pixel in the x/y directions). This is the EXACT mapping. By default, the mapping will be the default contour one. 2 RAISE_PTITLE Raise the plot title by this many character units above the plot to allow room to put a label on the top x-axis. Default is raise by 1 char. If not called then the default y-position is 1 char unit above plot (allowing room for xticks, and scaled by !P.charsize) 2 IMAGE_WINDOW the position of the image window. Can be used to set !p.position so you can over-plot the image. (Only useful when the scale-bar has been used) 2 /INTERP set to bi-linear interpolate if image is resampled. (see also the CUBIC keyword) 2 /NOBAR dont put a scale bar on the right-hand-side 2 /NOCONT only do the imaging (no contours) 2 /NOERASE dont erase the previous plot /NOLOAD if set, do not load color table 2 TOPcolor Set this keyword to the color index of the desired bottom color (range from BOTTOMcolor+1 to !D.n_colors-1). Note that the default value for this keyword is !D.n_colors-2, which allows the color of the image to be independent of the background and axes colors (!P.background and !P.color). If the user sets this keyword then allowance should be made for these colors as they are generally swapped for POSTSCRIPT and X-Window devices 2 TSIZE size of the plot title (default = 1) 2 /WINDOW_SCALE set to scale the window size to the image size, otherwise the image size is scaled to the window size. Ignored when outputting to devices with scalable pixels. 2 XRANGE will set the ranges for the x-axes labelling 2 YRANGE will set the ranges for the y-axes labelling 2 Contour most of the CONTOUR parameters are passed directly 2 Examples IDL> th_image_cont, image IDL> th_image_cont, image, /nocont, /nobar IDL> !p.title = "!17 This is an example of what can be done!3" IDL> !x.title = "X Title" & !y.title = "Y Title" & !z.title = "Z Title" IDL> !x.ticklen = -0.02 & !y.ticklen = -0.02 & !z.ticklen = -0.02 IDL> !p.charsize = 1.5 IDL> levels = findgen(5)*2 IDL> image = findgen(20,20)/40. IDL> th_image_cont, image, crange=[0,10], /follow, level=levels, $ tsize=1.5*!p.charsize, bar_tickv=levels 2 Error_responses Returns to the calling procedure on an error 2 Limitations/Assumptions The currently selected display is affected. If the device has scalable pixels then the image is written over the plot window. As with all TV style image displays, the axes range is independent of the image, so it is up to the user the ensure correct labelling of the axes. NOTE: if the user aborts while this routine is processing then the system variables (in particular !p.position) will have been changed, causing subsequent plots to appear different. Issue the command "resetplt,/all" to reset all the system variables back to the startup state. NOTE: if x or y does not have a constant interval, the image will be wrong. Instead, use contour, /fill... 2 References See USERLIB IMAGE_CONT 2 Keywords Graphics images contours 2 MODIFICATIONS: ------------- 05-Sep-2013 if /NoLoad set, use values in common block from mk_colors (if set) for max values 07-Jun-2013 make /EXACT the default 27-Jul-2012 tweeked color table handling. Add rainbow keyword. 07-Jan-2010 print error if input not 2-D array 06-Jun-2006 several changes including adding x & ytickformat keywords 06-Apr-2006 limit max dimension of interpolated postscript plots to 2000 pixels 14-Mar-2006 added zrange keyword [BD] 25-Oct-01 Made Contours work when /ASPECT set. Made Contours work when XRANGE or YRANGE set. 18-Apr-00 Made interpolated image align with data. /EXACT does not give an exact representation. Warn if style=2 06-Dec-99 Added another pixel to TV image size, so it fills the grid square 23-Aug-99 Allow Contour, Z, X, Y format. Use MK_COLOR 07-Jan-98 BD allow more space at the bottom and right-hand side for text (keyword BAR_LABEL_LENGTH added) 07-Aug-97 Bill Davis- v. 2.24 [1] added _extra call to main CONTOUR and removed it from those making the bar. (more modifications in file)
Source: src/idl_cvs/time2sec.pro
src/idl_cvs/time2sec.pro
NAME: time2Sec PURPOSE: Return times in seconds since Ja. 1, 1970 CATEGORY: Dates, times CALLING SEQUENCE: seconds = time2Sec( time ) INPUTS: time - string in military style '11:04' or '23:59' (no double quotes!) KEYWORDS OUTPUT time - string with AM or PM after it (no space between). This is the format SQL queries want. EXAMPLE: IDL> print,time2Sec( '6:08') 22080.000 IDL> print,time2Sec( '6:08PM') 65280.000 MODIFICATION HISTORY: WRITTEN by 03-Mar-2009 Bill Davis
Source: src/idl_cvs/timesofshots.pro
src/idl_cvs/timesofshots.pro
NAME: timesofshots PURPOSE: return dates and times, like 12:26PM, of NSTX shot CATEGORY: dates, MDSplus CALLING SEQUENCE: IDL> times = timesofshots( shot1, shot2, dates=dates ) IDL> times = timesofshots( year=2010, dates=dates ) INPUTS: shot1 - starting shot shot2 - ending shot KEYWORD PARAMETERS: year - if set, will find the shots for that year dates - dates of files in dd-mon-yyyy (e.g., 07-Jul-2007) longDates - dates (LONG) of files in YYYYMMDD (e.g., 20061231) times - time of day of file, e.g., 23:59:59 verbose - if set, will print informational output OUTPUTS: times - time of day of file, e.g., '12:05PM' EXAMPLE: IDL> times = timesofshots( year=2010, dates=dates, shots=shots, longd=longd ) IDL> for i=0,4 do print, shots[i], ' ', dates[i], ' ', times[i] 136730 23-Feb-2010 12:05PM 136731 23-Feb-2010 12:17PM 136732 23-Feb-2010 12:23PM 136733 23-Feb-2010 12:30PM 136734 23-Feb-2010 12:40PM NOTES: you will need database setup done, as for the NSTX logbook. E.g., source /p/nstxusr/util/setup/mkmdsplusdbfile.csh MODIFICATION HISTORY: 08-Jul-2013 added year keyword WRITTEN by Bill Davis, 27-Feb-2009
Source: src/idl_cvs/toidltime.pro
src/idl_cvs/toidltime.pro
NAME: toIdlTime PURPOSE: Convert a date string to IDL time (output from SYSTIME(1), i.e., seconds since 1/1/1970 CATEGORY: Dates CALLING SEQUENCE: seconds = TOIDLTIME( date_time ) INPUTS: date_time - string line '06/14/2004 11:04:52' (no double quotes!) KEYWORD PARAMETERS: OUTPUTS: seconds since 1/1/1970 (type long64) NOTES: EXAMPLE: IDL> print, systime(0), long64(systime(1)) Fri Oct 14 09:10:43 2005 1129295443 IDL> print, toIdlTime('10/14/2005 09:10:43') 1129295443 IDL> print, fromIdlSeconds(1129295443) 10/14/2005 09:10:43 IDL> print, toIdlTime('20 Jun 11') MODIFICATION HISTORY: 17-Mar-2010 Handle dates like 'Fri Feb 5 17:04:55 2010', and inputs of Julian dates and Long dates (like 20091231) WRITTEN 14-Oct-2005 by Bill Davis
Source: src/idl_cvs/totstruct.pro
src/idl_cvs/totstruct.pro
NAME: totstruct PURPOSE: find the total of numerical values in a structure (handles structures within the input structure) CATEGORY: Programming, Math EXAMPLE: IDL> structure = { a: 2.3, b:10, c:[2.1,22.3], d:'Hi Mom'} IDL> print, totstruct(structure) 36.7 IDL> structure2 = { a: 2.3, b:10, c:[2.1,99], d:'Hi Mom' } IDL> structure = [structure, structure2] IDL> print, totstruct(structure) 99.0000 IDL> inStruc = {a:77., b:88., c:101.} IDL> structure = { a: 2.3, b:10, c:[2.1,22.3], d:'Hi Mom', e:inStruc } IDL> print, totstruct(structure) 302.700 NOTES: will not consider values in sub-structures MODIFICATIONS 25-Mar-2008 handles arrays of structures, and go into nested structures [BD] 01-Dec-2006 Ignore non-numeric structure elements [BD]
Source: src/idl_cvs/tree_exists.pro
src/idl_cvs/tree_exists.pro
NAME: tree_exists PURPOSE: Return a true if an MDSplus tree exists for a given shot number CATEGORY: MDSplus, Trees CALLING SEQUENCE: found = tree_exists( shot, tree ) INPUTS: (tree and shot arguments can be reversed, if shot is an number) shot - MDSplus shot number, i.e, ID. Can be string acceptable to mk_shotlist.pro tree - tree to open. Defaults to 'wf' KEWORDS: (returned) list - list of shots found EXAMPLE: IDL> IF tree_exists(101526,'operations') THEN ... IDL> founds = tree_exists( '112300-112302 112305+2', 'wf', list=shots ) NOTE: Returns true only if shot exists; the shot may be empty. If you have an account on skylark.pppl.gov, you use mdir.pro, which is faster. 19-Nov-2008 make work if input arguments are reversed WRITTEN 15-Nov-2008 by Bill Davis (old version replaced)
Source: src/idl_cvs/trimtagnames.pro
src/idl_cvs/trimtagnames.pro
NAME: trimtagnames PURPOSE: Trim tree info from an MDSplus tag name CATEGORY: MDSplus, Tagnames CALLING SEQUENCE: trimmedList = trimtagnames( sigList ) INPUTS: sigList - a string array of MDSplus tag names in KEYWORD PARAMETERS: (Optional) all - if set, trim everything but string following the last : treeOnly - if set only remove the tree (& top:). Leave the backslash, TDI, etc. OUTPUTS: trimmedList - a string array of MDSplus tag names EXAMPLE: trimmedList = trimtagnames( sigList ) COMMON BLOCKS: NOTES: MODIFICATION HISTORY: 18-Oct-00 Added keyword treeOnly: Don't assume tree name at beginning of string (allows for trimming tree names from TDI expressions) Written by Bill Davis March, 1999
Source: src/idl_cvs/trismooth.pro
src/idl_cvs/trismooth.pro
NAME: trismooth PURPOSE: Triangular smoothing of a vector, including points near the ends. CATEGORY: Smoothing CALLING SEQUENCE: SMOOTHED = trismooth( VECTOR, WINDOW_WIDTH ) INPUTS: VECTOR = The vector to be smoothed WINDOW_WIDTH = The full width of the window over which the weighted average is determined for each point (if even, use window+1). KEYWORDS: GAUSS - if set, weighting is gaussian, rather than triangular OUTPUT: Function returns the smoothed vector SUBROUTINES CALLED: PROCEDURE: Each point is replaced by triangular weighting of the nearest WINDOW of points. The width of the window shrinks towards the ends of the vector. REVISION HISTORY: Written, Bill Davis. 23-Mar-00, per Michael Bell
Source: src/idl_cvs/truns_get.pro
src/idl_cvs/truns_get.pro
NAME: truns_get PURPOSE: List info (in a database) on NSTX TRANSP runs (to a screen or file) CATEGORY: TRANSP, Database CALLING SEQUENCE: IDL> truns_get, shotyear=shotyear, shotnumber=shotnumber, runID=runID, $ rundate=rundate, runby=runby, $ outFile=outFile INPUTS: (none required) KEYWORD PARAMETERS: (all optional) shotyear - e.g., '2001' shotnumber - e.g., 105535 runID - e.g., 01 rundate - run date (YYYYMMDD), e.g., 20010802 runby - person, e.g. 'KAYE' outFile - string (if not present, data listed to screen) OUTPUTS: data to screen or file, if specified COMMON BLOCKS: NONE EXAMPLE: IDL> truns_get, shotYear=2001 ; all 2001 NSTX TRANSP runs to screen IDL> truns_get, rundate=20010911 MODIFICATION HISTORY: 25-May-2005 Switched double and single quotes in queries to work on RHEL. 30-Jan-2002 Written by Bill Davis, PPPL Based on a program by Stan Kaye.
Source: src/idl_cvs/tvimage.pro
src/idl_cvs/tvimage.pro
NAME: TVIMAGE PURPOSE: This purpose of TVIMAGE is to create a device-independent TV command with the power and functionality to be used in sophisticated graphics programs, as well as at the IDL command line. It can be thought of as a "smart" TV command. AUTHOR: FANNING SOFTWARE CONSULTING: David Fanning, Ph.D. 1645 Sheely Drive Fort Collins, CO 80526 USA Phone: 970-221-0438 E-mail: davidf@dfanning.com Coyote's Guide to IDL Programming: http://www.dfanning.com/ CATEGORY: 2-D Plotting CALLING SEQUENCE: TVIMAGE, image INPUTS: image: A 2D (MxN) or 24-bit (e.g., MxNx3) byte array. A 24-bit image with an alpha channel (e.g., MxNx4) is also permitted. The alpha channel will be blended with the current background image. See the AlphaBackgroundImage keyword for details. x : The X position of the lower-left corner of the image. This parameter is only recognized if the TV keyword is set. If the Y position is not used, X is taken to be the image "position" in the window. See the TV command documenation for details. y : The Y position of the lower-left corner of the image. This parameter is only recognized if the TV keyword is set. KEYWORD PARAMETERS: ACOLOR: This keyword has been depreciated in favor of the COLOR keyword. ADDCMD: Set this keyword to add the TVImage command to an FSC_Window command list. Setting this command will force ERASEIT to be set to 0, so the TVImage command can exist peacefully with other commands in an FSC_Window command list. Setting this keyword automatically sets the WINDOW keyword. ALPHABACKGROUNDIMAGE: Normally, when a image with an alpha channel is displayed, the image is blended with the image currently in the display window. This means, the program has to obtain that background image. This is not a problem on devices (e.g., WIN, X, Z) that allow this kind of operation, but it is on devices (e.g., the PostScript device, PS) that do not. To get around this problem, you can pass the background image to the TVImage program, along with the alpha channel image you wish to display (via the image parameter) and the alpha channel image will be blended with this image appropriately on all devices. If an alpha channel image is displayed on a device in which there is no way to obtain the background image, and this keyword is not used to pass a background image, then the alpha channel image will be blended with a white background image. This keyword is only used if an alpha channel image is passed to the program via the image parameter. The AlphaBackgroundImage does not need to have the same dimensions as the alpha channel image. ALPHABGPOSITION: Normally, the alpha background image is displayed in the current graphics window, or is taken from the current graphics window. This is not always correct. Sometimes you want to actually position both the background and foreground image in a window. If this keyword is used to specify a position, the alphabackground image will be positioned at this location before the blending occurs. AXES: Set this keyword to draw a set of axes around the image. Setting this keyword also sets SAVE=1, unless told otherwise. AXKEYWORDS: An IDL structure variable of PLOT keywords as structure fields and keyword values as the values of the fields. Pass directly to the PLOT command that draws the axes for the image. Ignored unless the AXES keyword is set. For example, TVImage, image, /AXES, AXKEYWORDS={TICKLEN:-0.025} The axis color, range, title, font and character size must be set with TVIMAGE keywords ACOLOR, [XY]RANGE, [XY]TITLE, FONT, and CHARSIZE. BACKGROUND: This keyword specifies the background color. Note that the keyword ONLY has effect if the ERASE keyword is also set or !P.MULTI is set to multiple plots and TVIMAGE is used to place the *first* plot. [Note change, setting this keyword automatically sets ERASE=1.] Can be a string (e.g., 'ivory'), or a 24-bit value that can be decomposed into a color, or an 8-bit index number into the current color table. If you are in indexed color mode, the background color index must be outside the range of image color indices, or you will see the background color in your image output. For example, you should NOT use code like this while in indexed color mode: TVImage, image, Background=FSC_Color('gray') Since FSC_Color will load a gray color in index 81, which is inside the indices assigned to the image. To do this correctly in indexed color mode, do this: TVImage, image, Background='gray' Or, this: TVImage, Bytscl(image, Top=253), Background=FSC_Color('gray',254) BOTTOM: IF SCALE=1, the image is scaled so that all displayed pixels have values greater than or equal to BOTTOM and less than or equal to TOP. The value of BOTTOM is 0 by default. BREWER: Obsolete and not used. COLOR: Set this keyword to the axis color. If a byte or integer value, it will assume you are using INDEXED color mode. If a long integer is will assume you are using DECOMPOSED color mode. If a string, is will pass the string color name along to FSC_COLOR for processing. CHARSIZE: Sets the character size. Used only if the AXES keyword is also set. ERASE: If this keyword is set an ERASE command is issued before the image is displayed. FONT: Set this to the type of font wanted on axis annotation. By default FONT = !P.Font. Used only if the AXES keyword is also set. _EXTRA: This keyword picks up any TV keywords you wish to use. HALF_HALF: Obsolete and not used. Image resizing is always done as if CONGRID was called with CENTER=1. This prevents image pixels from changing locations in the output image. KEEP_ASPECT_RATIO: Normally, the image will be resized to fit the specified position in the window. If you prefer, you can force the image to maintain its aspect ratio in the window (although not its natural size) by setting this keyword. The image width is fitted first. If, after setting the image width, the image height is too big for the window, then the image height is fitted into the window. The appropriate values of the POSITION keyword are honored during this fitting process. Once a fit is made, the POSITION coordiates are re-calculated to center the image in the window. You can recover these new position coordinates as the output from the POSITION keyword. LAYOUT: This keyword specifies a grid with a graphics window and determines where the graphic should appear. The syntax of LAYOUT is a 3-element array: [ncolumns, nrows, location]. The grid is determined by the number of columns (ncolumns) by the number of rows (nrows). The location of the graphic is determined by the third number. The grid numbering starts in the upper left (1) and goes sequentually by column and then by row. MARGIN: A single value, expressed as a normalized coordinate, that can easily be used to calculate a position in the window. The margin is used to calculate a POSITION that gives the image an equal margin around the edge of the window. The margin must be a number in the range 0.0 to 0.333. This keyword is ignored if the POSITION or OVERPLOT keywords are used. It is also ignored when TVImage is executed in a multi-plot window, EXCEPT if it's value is zero. In this special case, the image will be drawn into its position in the multi-plot window with no margins whatsoever. (The default is to have a slight margin about the image to separate it from other images or graphics. MAXVALUE: If defined, the data is linearly scaled between MINVALUE and MAXVALUE. MAXVALUE is set to MAX(image) by default. Setting this keyword to a value implies SCALE=1. If the maximum value of the image is GT 255, this implies SCALE=1. MINVALUE: If defined, the data is linearly scaled between MINVALUE and MAXVALUE. MINVALUE is set to MIN(image) by default. Setting this keyword to a value implies SCALE=1. If the minimum value of the image is LT 0, this implies SCALE=1. MULTIMARGIN: Sometimes, when displaying multiple images with !P.Multi, you want the images to be slightly smaller than the position created by !P.Multi so you can add, for example, a colorbar or an annotation to the image. This keyword can be used to adjust the image position by a small margin. A four-element array, the margins apply to the [bottom, left, top, right] of the image position. So, to leave room at the top of an image for a color bar, you might type this: TVImage, image, MultiMargin=[0, 0, 4, 0] This keyword applies *only* to images displayed with !P.Multi, and if passed a scalar value, will use the same value for all four positions. MINUS_ONE: The value of this keyword is passed along to the FSC_RESIZE_IMAGE command. It prevents FSC_RESIZE_IMAGE from adding an extra row and column to the resulting array, which can be a problem with small image arrays. This keyword is set to 1 by default. NCOLORS: If this keyword is supplied, the TOP keyword is ignored and the TOP keyword is set equal to NCOLORS - 1. This keyword is provided to make TVIMAGE easier to use with the color-loading programs such as LOADCT: LoadCT, 5, NColors=100, Bottom=100 TVImage, image, NColors=100, Bottom=100 Setting this keyword to a value implies SCALE=1. NOINTERPOLATION: Setting this keyword disables the default bilinear interpolation done to the image when it is resized. Nearest neighbor interpolation is done instead. This is preferred when you do not wish to change the pixel values of the image. This keyword must be set, for example, when you are displaying GIF files that come with their own non-IDL color table vectors. NORMAL: Setting this keyword means image position coordinates x and y are interpreted as being in normalized coordinates. This keyword is only valid if the TV keyword is set. OVERPLOT: Setting this keyword causes the POSITION keyword to be ignored and the image is positioned in the location established by the last graphics command. For example: Plot, Findgen(11), Position=[0.1, 0.3, 0.8, 0.95] TVImage, image, /Overplot PALETTE: Set this keyword to a 3 x N or N x 3 byte array containing the RGB color vectors to be loaded before the image is displayed. Such vectors can be obtained, for example, from CTLOAD with the RGB_TABLE keyword: CTLoad, 4, /BREWER, /REVERSE, RGB_TABLE=palette TVImage, LoadData(7), PALETTE=palette POSITION: The location of the image in the output window. This is a four-element floating array of normalized coordinates of the type given by !P.POSITION or the POSITION keyword to other IDL graphics commands. The form is [x0, y0, x1, y1]. The default is [0.0, 0.0, 1.0, 1.0]. Note that this keyword is ALSO an output keyword. That is to say, upon return from TVIMAGE this keyword (if passed by reference) contains the actual position in the window where the image was displayed. This may be different from the input values if the KEEP_ASPECT_RATIO keyword is set, or if you are using TVIMAGE with the POSITION keyword when !P.MULTI is set to something other than a single plot. One use for the output values might be to position other graphics (e.g., a colorbar) in relation to the image. Note that the POSITION keyword should not, normally, be used when displaying multiple images with !P.MULTI. If it *is* used, its meaning differs slightly from its normal meaning. !P.MULTI is responsible for calculating the position of graphics in the display window. Normally, it would be a mistake to use a POSITION graphics keyword on a graphics command that was being drawn with !P.MULTI. But in this special case, TVIMAGE will use the POSITION coordinates to calculate an image position in the actual position calculated for the image by !P.MULTI. The main purpose of this functionality is to allow the user to display images along with colorbars when using !P.MULTI. See the example below. QUIET: There are situations when you would prefer that TVIMAGE does not advertise itself by filling out the FSC_$TVIMAGE common block. For example, if you are using TVIMAGE to draw a color bar, it would not be necessary. Setting this keyword means that TVIMAGE just goes quietly about it's business without bothering anyone else. SAVE: Set this to cause a data coordinate system to be established for the image. The XRANGE and YRANGE keyword values will be used to establish a data coordinate system coincident with the final image position. Setting the AXES keyword automatically sets SAVE=1. SCALE: Set this keyword to byte scale the image before display. If this keyword is not set, the image is not scaled before display. TITLE: The title annotation. Used only if the keyword AXES is set. TOP: IF SCALE=1, the image is scaled so that all displayed pixels have values greater than or equal to BOTTOM and less than or equal to TOP. The value of TOP is !D.Table_Size by default. TV: Setting this keyword makes the TVIMAGE command work much like the TV command, although better. That is to say, it will still set the correct DECOMPOSED state depending upon the kind of image to be displayed (8-bit or 24-bit). It will also allow the image to be "positioned" in the window by specifying the coordinates of the lower-left corner of the image. The NORMAL keyword is activated when the TV keyword is set, which will indicate that the position coordinates are given in normalized coordinates rather than device coordinates. Setting this keyword will ensure that the keywords KEEP_ASPECT_RATIO, MARGIN, MINUS_ONE, MULTI, and POSITION are ignored. Alpha channels are also ignored when this keyword is set. WHITE: A shorthand way of setting the ERASE keyword to 1 and the BACKGROUND keyword to "white. Also sets the ACOLOR keyword to "black," unless it is already set to something else. WINDOW: Set this keyword to add the command to an FSC_Window application. Setting this keyword ALWAYS sets the ERASEIT keyword. If you want to add an image to an FSC_Window without the ERASEIT keyword set, use the ADDCMD keyword. XRANGE: If the AXES keyword is set, this keyword is a two-element vector giving the X axis range. By default, [0, size of image in X]. XTITLE: The X title string to use for the X image axis. Used only if the AXES keyword is set. YRANGE: If the AXES keyword is set, this keyword is a two-element vector giving the Y axis range. By default, [0, size of image in Y]. YTITLE: The Y title string to use for the Y image axis. Used only if the AXES keyword is set. OUTPUTS: None. SIDE EFFECTS: Unless the KEEP_ASPECT_RATIO keyword is set, the displayed image may not have the same aspect ratio as the input data set. RESTRICTIONS: If the POSITION keyword and the KEEP_ASPECT_RATIO keyword are used together, there is an excellent chance the POSITION parameters will change. If the POSITION is passed in as a variable, the new positions will be returned in the same variable as an output parameter. If a 24-bit image is displayed on an 8-bit display, the 24-bit image must be converted to an 8-bit image and the appropriate color table vectors. This is done with the COLOR_QUAN function. The TVIMAGE command will load the color table vectors and set the NOINTERPOLATION keyword if this is done. Note that the resulting color table vectors are normally incompatible with other IDL-supplied color tables. Hence, other graphics windows open at the time the image is display are likely to look strange. Other programs from Coyote Library are required. EXAMPLE: To display an image with a contour plot on top of it, type: filename = FILEPATH(SUBDIR=['examples','data'], 'worldelv.dat') image = BYTARR(360,360) OPENR, lun, filename, /GET_LUN READU, lun, image FREE_LUN, lun TVIMAGE, image, POSITION=thisPosition, /KEEP_ASPECT_RATIO CONTOUR, image, POSITION=thisPosition, /NOERASE, XSTYLE=1, $ YSTYLE=1, XRANGE=[0,360], YRANGE=[0,360], NLEVELS=10 To display four images in a window without spacing between them: !P.Multi=[0,2,2] TVImage, image, Margin=0 TVImage, image, Margin=0 TVImage, image, Margin=0 TVImage, image, Margin=0 !P.Multi = 0 To display four image in a window with associated color bars: !P.Multi=[0,2,2] p = [0.02, 0.3, 0.98, 0.98] LoadCT, 0 TVImage, image, Position=p FSC_Colorbar, Position=[p[0], p[1]-0.1, p[2], p[1]-0.05] p = [0.02, 0.3, 0.98, 0.98] LoadCT, 2 TVImage, image, Position=p FSC_Colorbar, Position=[p[0], p[1]-0.1, p[2], p[1]-0.05] p = [0.02, 0.3, 0.98, 0.98] LoadCT, 3 TVImage, image, Position=p FSC_Colorbar, Position=[p[0], p[1]-0.1, p[2], p[1]-0.05] p = [0.02, 0.3, 0.98, 0.98] LoadCT, 5 TVImage, image, Position=p FSC_Colorbar, Position=[p[0], p[1]-0.1, p[2], p[1]-0.05] !P.Multi =0 MODIFICATION HISTORY: Written by: David Fanning, 20 NOV 1996. Fixed a small bug with the resizing of the image. 17 Feb 1997. DWF. Removed BOTTOM and NCOLORS keywords. This reflects my growing belief that this program should act more like TV and less like a "color aware" application. I leave "color awareness" to the program using TVIMAGE. Added 24-bit image capability. 15 April 1997. DWF. Fixed a small bug that prevented this program from working in the Z-buffer. 17 April 1997. DWF. Fixed a subtle bug that caused me to think I was going crazy! Lession learned: Be sure you know the *current* graphics window! 17 April 1997. DWF. Added support for the PRINTER device. 25 June 1997. DWF. Extensive modifications. 27 Oct 1997. DWF 1) Removed PRINTER support, which didn't work as expected. 2) Modified Keep_Aspect_Ratio code to work with POSITION keyword. 3) Added check for window-able devices (!D.Flags AND 256). 4) Modified PostScript color handling. Craig Markwart points out that Congrid adds an extra row and column onto an array. When viewing small images (e.g., 20x20) this can be a problem. Added a Minus_One keyword whose value can be passed along to the Congrid keyword of the same name. 28 Oct 1997. DWF Changed default POSITION to fill entire window. 30 July 1998. DWF. Made sure color decomposition is OFF for 2D images. 6 Aug 1998. DWF. Added limited PRINTER portrait mode support. The correct aspect ratio of the image is always maintained when outputting to the PRINTER device and POSITION coordinates are ignored. 6 Aug 1998. DWF Removed 6 August 98 fixes (Device, Decomposed=0) after realizing that they interfere with operation in the Z-graphics buffer. 9 Oct 1998. DWF Added a MARGIN keyword. 18 Oct 1998. DWF. Re-established Device, Decomposed=0 keyword for devices that support it. 18 Oct 1998. DWF. Added support for the !P.Multi system variable. 3 March 99. DWF Added DEVICE, DECOMPOSED=1 command for all 24-bit images. 2 April 99. DWF. Added ability to preserve DECOMPOSED state for IDL 5.2 and higher. 4 April 99. DWF. Added TV keyword to allow TVIMAGE to work like the TV command. 11 May 99. DWF. Added the OVERPLOT keyword to allow plotting on POSITION coordinates estabished by the preceding graphics command. 11 Oct 99. DWF. Added automatic recognition of !P.Multi. Setting MULTI keyword is no longer required. 18 Nov 99. DWF. Added NOINTERPOLATION keyword so that nearest neighbor interpolation is performed rather than bilinear. 3 Dec 99. DWF Changed ON_ERROR condition from 1 to 2. 19 Dec 99. DWF. Added Craig Markwardt's CMCongrid program and removed RSI's. 24 Feb 2000. DWF. Added HALF_HALF keyword to support CMCONGRID. 24 Feb 2000. DWF. Fixed a small problem with image start position by adding ROUND function. 19 March 2000. DWF. Updated the PRINTER device code to take advantage of available keywords. 2 April 2000. DWF. Reorganized the code to handle 24-bit images on 8-bit displays better. 2 April 2000. DWF. Added BACKGROUND keyword. 20 April 2000. DWF. Fixed a small problem in where the ERASE was occuring. 6 May 2000. DWF. Rearranged the PLOT part of code to occur before decomposition state is changed to fix Background color bug in multiple plots. 23 Sept 2000. DWF. Removed MULTI keyword, which is no longer needed. 23 Sept 2000. DWF. Fixed a small problem with handling images that are slices from 3D image cubes. 5 Oct 2000. DWF. Added fix for brain-dead Macs from Ben Tupper that restores Macs ability to display images. 8 June 2001. DWF. Fixed small problem with multiple plots and map projections. 29 June 2003. DWF. Converted all array subscripts to square brackets. 29 June 2003. DWF. Removed obsolete STR_SEP and replaced with STRSPLIT. 27 Oct 2004. DWF. Small modification at suggestion of Karsten Rodenacker to increase size of images in !P.MULTI mode. 8 December 2004. DWF. Minor modifications on Karsten Rodenacker's own account concerning margination and TV behaviour. 8 December 2004. KaRo There was a small inconsistency in how the image was resized for PostScript as opposed to the display, which could occasionally result in a small black line to the right of the image. This is now handled consistently. 3 January 2007. DWF. Made a small change to CMCONGRID to permit nearest-neighbor interpolation for 3D arrays. Previously, any 24-bit image was interpolated, no matter the setting of the NOINTERP keyword. 22 April 2007. DWF. Updated the program for the 24-bit Z-buffer in IDL 6.4. 11 June 2007. DWF. Added new POSITION keyword functionality for !P.MULTI display. 9 Sept 2007. DWF. Bit one too many times. Added _STRICT_EXTRA keywords for all _EXTRA keywords. 1 Feb 2008. DWF. Added FSC_$TVIMAGE common block for interactive interaction with TVINFO. 16 March 2008. DWF. Added SCALE keyword. 18 March 2008. DWF. Added keywords to allow axes to be drawn around the image. 18 March 2008. DWF. Added QUIET keyword to allow by-passing of FSC_$TVIMAGE common block updating. 21 March 2008. DWF. Made BACKGROUND and ERASE valid keywords only on 24-bit devices. Ignored on others. 28 May 2008. DWF. Cannot make color work in device independent way for axes, unless I handle axis color directly. To this end, I have added an ACOLOR keyword. 16 June 2008. DWF. Added BREWER keyword so I can specify Brewer colors with BACKGROUND and ACOLOR keywords. 16 June 2008. DWF. Fixed a problem with the BACKGROUND keyword and multiple plots. 16 March 2009. DWF. Added the ability to display transparent images. 13 May 2009. DWF. Modified to work with 24-bit color PostScript in IDL 7.1. 24 May 2009. DWF. Added MULTIMARGIN keyword to allow position adjustment when plotting with !P.Multi. 7 July 2009. DWF. Fixed a problem in which displaying an image with !P.MULTI turned on, switched the color of the output window. If this happens to you, set the BACKGROUND keyword to the color you want to have in the window. 4 January 2010. DWF. Some LINUX distributions cannot both get the current color decomposition state and set the state to another value on the same DEVICE command. I have changed all such occurances to two commands. One gets the current state, the other sets it. 11 Oct 2010. DWF. Added the SAVE keyword to save the data coordinate system established by adding axes to the image. 29 Oct 2010. DWF. If the AXES keyword is set, but no MARGIN or POSITION keyword is set, and the command is not doing a multiplot, then a Margin of 0.1 is used so image axes are shown. 30 Oct 2010. DWF. Changed the way alpha channel blending works. The alpha channel image is now blended with the background image in the display, if it can be obtained for a partical graphics device, or a background image can be passed to the program via the AlphaBackgroundImage keyword, or failing that, the alpha channel image is blended with a white background. 1 November 2010. DWF. Removed TVIMAGE_ERROR routine in favor of ERROR_MESSAGE, since other Coyote Library routines are already used in the program. 1 Nov 2010. DWF. Forgot to set the SET_PIXEL_DEPTH keyword in Z-Buffer to 24. Screwed up alpha channel display. 2 November 2010. DWF. Small error in alpha channel processing when images are the same size. Reorganized the code to avoid duplication. 5 November 2010. DWF. The SAVE keyword now always establishes a data coordinate system for the image if this keyword is set, using the values of XRANGE and YRANGE. The data coordinate system is coincident with the file position of the image. 11 Nov 2010. DWF. Added the WHITE keyword. 12 Nov 2010. DWF. Modified how the ERASE keyword works. Now images only erase the background when this keyword is set and !P.MULTI[0] is set to 0. 12 Nov 2010. DWF. Final color table restoration skipped in Z-graphics buffer. 17 November 2010. DWF. Made changes that supports the BACKGROUND color in PostScript. Requires the program PS_BACKGROUND from the Coyote Library. 17 November 2010. DWF. If the BACKGROUND color is set, then ERASEIT=1 automatically. 17 November 2010. DWF. Alpha images can only be produced in IDL 6.5 or higher. Issue warning. 17 November 2010. DWF. BACKGROUND color changes affected multi-plots. Fixed 18 Nov 2010. DWF. BACKGROUND color changes affected display in indexed color. Fixed 18 Nov 2010. DWF. Removed TVIMAGE_CONGRID in favor of FSC_RESIZE_IMAGE, which always does the interpolation with centered pixels, and allows nearest neightbor resampling of true-color images. 20 November 2010. DWF. Incorporated TVSCALE functionality into TVIMAGE. 22 November 2010. DWF. Problem fixed when displaying alpha image when POSITION and ALPHABACKGROUND keywords used simultaneously. 8 Dec 2010. DWF. More sophisticated selection of axis color. 5 Jan 2011. DWF. The fix on 8 Dec 2010 was causing problems with positioning of normal alpha images. I have now solved the original problem with a new ALPHABGPOSITION keyword, while restoring functionality that was lost in the 8 Dec 2010 fix. 10 January 2011. DWF. Added XTITLE and YTITLE keywords to add titles to image axes. 10 January 2011. DWF. Added FONT, CHARSIZE, and TITLE keywords. 11 Jan 2011. DWF. Depreciated ACOLOR keyword in favor of new COLOR keyword. 11 Jan 2011. DWF. Added ADDCMD and WINDOW keywords to allow TVIMAGE to work with FSC_Window. 26 Jan 2011. DWF. Added LAYOUT and PALETTE keywords. 28 Jan 2011. DWF.
Source: src/idl_cvs/tvimage_congrid.pro
src/idl_cvs/tvimage_congrid.pro
NAME: TVIMAGE_CONGRID PURPOSE: Shrink or expand the size of an array by an arbitrary amount. This IDL procedure simulates the action of the VAX/VMS CONGRID/CONGRIDI function. This function is similar to "REBIN" in that it can resize a one, two, or three dimensional array. "REBIN", however, requires that the new array size must be an integer multiple of the original size. CONGRID will resize an array to any arbitrary size (REBIN is somewhat faster, however). REBIN averages multiple points when shrinking an array, while CONGRID just resamples the array. CATEGORY: 2-D Plotting CALLING SEQUENCE: array = TVIMAGE_CONGRID(array, x, y, z) INPUTS: array: A 1, 2, or 3 dimensional array to resize. Data Type : Any type except string or structure. x: The new X dimension of the resized array. Data Type : Int or Long (greater than or equal to 2). OPTIONAL INPUTS: y: The new Y dimension of the resized array. If the original array has only 1 dimension then y is ignored. If the original array has 2 or 3 dimensions then y MUST be present. z: The new Z dimension of the resized array. If the original array has only 1 or 2 dimensions then z is ignored. If the original array has 3 dimensions then z MUST be present. KEYWORD PARAMETERS: INTERP: If set, causes linear interpolation to be used. Otherwise, the nearest-neighbor method is used. CUBIC: If set, uses "Cubic convolution" interpolation. A more accurate, but more time-consuming, form of interpolation. CUBIC has no effect when used with 3 dimensional arrays. MINUS_ONE: If set, will prevent CONGRID from extrapolating one row or column beyond the bounds of the input array. For example, If the input array has the dimensions (i, j) and the output array has the dimensions (x, y), then by default the array is resampled by a factor of (i/x) in the X direction and (j/y) in the Y direction. If MINUS_ONE is present (AND IS NON-ZERO) then the array will be resampled by the factors (i-1)/(x-1) and (j-1)/(y-1). HALF_HALF: If set, will tell CONGRID to extrapolate a *half* row and column on either side, rather than the default of one full row/column at the ends of the array. If you are interpolating images with few rows, then the output will be more consistent with this technique. This keyword is intended as a replacement for MINUS_ONE, and both keywords probably should not be used in the same call to CONGRID. OUTPUTS: The returned array has the same number of dimensions as the original array and is of the same data type. The returned array will have the dimensions (x), (x, y), or (x, y, z) depending on how many dimensions the input array had. PROCEDURE: IF the input array has three dimensions, or if INTERP is set, then the IDL interpolate function is used to interpolate the data values. If the input array has two dimensions, and INTERP is NOT set, then the IDL POLY_2D function is used for nearest neighbor sampling. If the input array has one dimension, and INTERP is NOT set, then nearest neighbor sampling is used. EXAMPLE: ; vol is a 3-D array with the dimensions (80, 100, 57) ; Resize vol to be a (90, 90, 80) array vol = TVIMAGE_CONGRID(vol, 90, 90, 80) MODIFICATION HISTORY: DMS, Sept. 1988. DMS, Added the MINUS_ONE keyword, Sept. 1992. Daniel Carr. Re-wrote to handle one and three dimensional arrays using INTERPOLATE function. DMS, RSI, Nov, 1993. Added CUBIC keyword. Craig Markwardt, Dec, 1997. Added halfhalf keyword to more evenly distribute "dead" pixel row Use uniformly spaced grid points for half_half W. Landsman Feb. 2000 (and slightly modified by C. Markwardt 14 Feb 2000) DWF, FSC, 22 Apr 2007. Modified the program so that 3D arrays use nearest-neighbor interpolation unless the INTERP keyword is set. DWF, FSC, 22 Apr 2007. Function renamed from CMCONGRID to TVIMAGE_CONGRID on recommendation of Craig Markwardt as he wants no part of this. :-)
Source: src/idl_cvs/tvrd_24.pro
src/idl_cvs/tvrd_24.pro
NAME: TVRD_24 PURPOSE: This function reads a 24-bit image from a 24-bit or 8-bit display device, returning a pixel-interleaved byte array of type BYTARR(3, xsize, ysize), where xsize and ysize are the dimensions of the current graphics device. CATEGORY: Graphics. CALLING SEQUENCE: image = TVRD_24() INPUTS: None KEYWORD PARAMETERS: None. COMMON BLOCKS: None. SIDE EFFECTS: None. RESTRICTIONS: None. EXAMPLE: image = tvrd_24() MODIFICATION HISTORY: Part of Struan's Surface Tutorial: http://www.sljus.lu.se/stm/IDL/Surf_Tips/ Written by: Struan Gray, Sljusfysik, Lunds Universitet, 970305.
Source: src/idl_cvs/tv_24.pro
src/idl_cvs/tv_24.pro
NAME: TV_24 PURPOSE: This procedure displays a 24-bit image on the current graphics device, constructing a custom colour table if the device supports less than 257 colours. CATEGORY: Graphics. CALLING SEQUENCE: TV_24(image) INPUTS: IMAGE: the pixel-interleaved, 24-bit image to be displayed. IMAGE should be of type BYTARR(3,M,N). KEYWORD PARAMETERS: None. COMMON BLOCKS: None. SIDE EFFECTS: On 8-bit displays the current colour table is overwritten, on 24-bit displays it is preserved. RESTRICTIONS: None. EXAMPLE: Display a 24-bit image on an 8-bit display: TV_24(image) MODIFICATION HISTORY: Part of Struan's Surface Tutorial: http://www.sljus.lu.se/stm/IDL/Surf_Tips/ Written by: Struan Gray, Sljusfysik, Lunds Universitet, 970305.
Source: src/idl_cvs/twoscomplement.pro
src/idl_cvs/twoscomplement.pro
NAME: TWOSCOMPLEMENT PURPOSE: Taking the Two's Complement of an integer CATEGORY: Math, Hardware, CAMAC CALLING SEQUENCE: twoscomp = TwosComplement( int ) INPUT: int - raw encoder value (8, 16 or 32 bit integer) OUTPUT: twoscomp - Two's complement of input. KEYWORDS: Optional Input: NBITS - # of bits; throw away this bit if there is a carry after adding 1 to the complement. Default is determined by data type. IfNeg - Only return the Two's Complement if value negative ALGORITHM: Taking the Two's Complement of a k-Digit Bitstring: 1.Complement the bitstring; i.e., change all 0s to 1s and all 1s to 0s; retain all leading 0s in your result. 2.Add 1 to this binary number (if there is a carry of 1 into the (k+1)st position, throw it away so that the result is still k-digits). 3.The result from (2) is the two's complement of the bitstring COMMENT: Works in many cases, but sign bit may get extended in some applications MODIFICATION HISTORY: 5-Jun-00 WMD Added Nbits & IfNeg Keywords
Source: src/idl_cvs/twosurf.pro
src/idl_cvs/twosurf.pro
NAME: TWOSURF PURPOSE: This function returns a 24-bit image of two interlocking surfaces with various combinations of colour, shading and grids. For each surface the colour coding can tied to the surface height or to an independent array. A grid can be overlaid on the surface or used to mask a coloured and/or shaded plot so as to produce a coloured and/or shaded grid. Light shading can be applied to both the coloured and gridded surface, or just the coloured surface, leaving the grid unshaded. The light shading parameters are determined by previous calls to SET_SHADING. The viewing position and 3d-2d scaling are handled by the usual graphics keywords - see the documentation for SURFACE and SHADE_SURF in the IDL user's guide. The image returned by TWOSURF is a pixel-interleaved 24-bit image of type bytarr(3, xsize, ysize). If on entry the current graphics device is a screen window or the z-buffer, xsize and ysize are the dimensions of the current or default window on that device. If the current device is anything else (eg a plotter or a postscript file) the default size of the z-buffer (640x480) is used. On exit the current graphics device and colour map are unchanged. CATEGORY: Graphics, Surface Plotting CALLING SEQUENCE: result = TWOSURF(SURFONE, SURFTWO) INPUTS: SURFONE: A two-dimensional array containing the data for the first of the surfaces to be plotted. SURFTWO: A two-dimensional array containing the data for the second of the surfaces to be plotted. KEYWORD PARAMETERS: COLOUR1: Set this keyword to include colour coding in the plot of SURFONE The default is no colour-coding. COLOUR2: As for COLOUR1 but for SURFTWO. The default is to be the same as COLOUR1. COLDATA1: A variable or array of type byte containing the colour data to be used when plotting a colour plot. If COLDATA1 is a scalar then it is assumed to be an index to a colour in COLMAP which is used to give a single colour to the whole surface. If COLDATA1 is a vector of at least three elements its first three elements are treated as a rgb colour triple and used to give a single colour to the whole surface. If COLDATA1 is two-dimensional it is treated as an array of colour indices of COLMAP and is used to give each data point it's own colour. If COLDATA1 has different dimensions to SURFONE, CONGRID is used to stretch or squeeze a copy of COLDATA1 to fit. If COLOUR1 is set but COLDATA1 is undefined or does not satisfy any of the above conditions, a BYTSCL'ed version of SURFONE is used to produce a plot coloured according to height. COLDATA2: As for COLDATA1 but for SURFTWO. SHADE1: Set this keyword to perform light shading for SURFONE. SHADE = 0: no shading SHADE = 1: shade everything SHADE = 2: don't shade the grid The default is no shading. SHADE2: As for SHADE1 but for SURFTWO. The default is to be the same as SHADE1. GRID1: Set this keyword to apply grids to SURFONE. GRID = 0: no grid GRID = 1: overlay a grid on the surface GRID = 2: use the grid as a mask The default is no grid GRID2: As for GRID1 but for SURFTWO. The default is to be the same as GRID1. CGRID1: The colour to use for overlaid grids on SURFONE. If CGRID is a number it is treated as an index in the colour table given by COLMAP. If CGRID is an three-element vector of bytes it is treated as the rgb values for a colour. If it is anything else or undefined the grid is plotted white. CGRID2: As for CGRID1 but for SURFTWO. The default is to be the same as CGRID1. TRANSP1: The transparency factor for SURFONE, which determines how much the hidden parts of SURFTWO show through SURFONE's surfaces. TRANSP1 is converted to type FLOAT before use, where 0.0 corresponds to an opaque surface and 1.0 mixes equal parts of SURFONE and SURFTWO. Note that if GRID1=2, the holes in the grid are already completely transparent and TRANSP1 affects only the grid lines. The default is 0.0. TRANSP2: As for TRANSP1 but for SURFTWO. The default is to be the same as TRANSP1. COLMAP: The colour map to use for plotting of the colour data. If a number is given the corresponding inbuilt IDL colour map is used. Otherwise COLMAP should be an array of three byte vectors [red, green, blue] such as those returned by the TVLCT, /get procedure. If COLMAP is not set, the current colour map is used. Note that TWOSURF maintains the current colour map even if a second colour map is specified for the plot. Because the z-buffer is only an 8bit device plotting SURFONE and SURFTWO with different colours has to be done by user manipulation of COLMAP and the arrays passed as COLDATA1 and COLDATA2. If either one of the surfaces has light shading applied the background is set to [0,0,0] (black), otherwise the background colour of COLMAP is used. _EXTRA: Used to pass extra plot parameters to both SHADE_SURF and SURFACE. _EXTRA provides a convenient way of passing common parameters such as viewing angle and plot position. Note that only keywords valid for both SHADE_SURF and SURFACE can be used. If EXTRA_SHADE is set, _EXTRA is ignored for the shaded plots, similarly with EXTRA_SURF and surface plots. Some keywords (eg, SHADES, COLOR, NODATA, NOERASE) will interfere with the plotting done by ONESURF and lead to unpredictable results. _EXTRA is itself passed to SHADE_SURF and SURFACE using the _EXTRA keyword, so keywords which expect a data value to be changed (eg [XYZ]TICK_GET) will not work. Useable keywords are: AX, AZ, MAX_VALUE, MIN_VALUE, SAVE, [XY]TYPE, CHARSIZE, CHARTHICK, CLIP, DATA, DEVICE, FONT, NOCLIP, NORMAL, POSITION, SUBTITLE, T3D, THICK, TICKLEN, TITLE, [XYZ]CHARSIZE, [XYZ]GRIDSTYLE, [XYZ]MARGIN, [XYZ]MINOR, [XYZ]RANGE, [XYZ]STYLE, [XYZ]THICK, [XYZ]TICKFORMAT, [XYZ]TICKLEN, [XYZ]TICKNAME, [XYZ]TICKS, [XYZ]TICKV, [XYZ]TITLE, ZVALUE. EXTRA_SHADE: Used to pass extra plot parameters to the SHADE_SURF procedure only. EXTRA_SHADE is passed to SHADE_SURF using the _EXTRA keyword so keywords such as IMAGE which expect a variable to be altered will not work. As with _EXTRA, setting the SHADES keyword can lead to unpredictable results. EXTRA_SURF should be an anonymous structure. EXTRA_SURF: Used to pass extra plot parameters to the SURFACE procedure only. Restrictions are as for _EXTRA and EXTRA_SHADE. If EXTRA_SHADE is set, but EXTRA_SURF is not, EXTRA_SURF is made equal to _EXTRA, and vice versa. COMMON BLOCKS: None. SIDE EFFECTS: None. RESTRICTIONS: None. EXAMPLE: SURFONE plotted as a shaded, coloured, partially transparent surface with the colours corresponding to height and a black grid, interlocking with SURFTWO, plotted as a shaded, coloured, partially transparent surface also coloured according to height but with different colours, and with an unshaded white grid: image = twosurf(surfone, surftwo, $ colour1 = 1, $ coldata1 = 127b + bytscl(surfone)/2b, $ shade1 = 2, $ grid1 = 1, $ cgrid1 = [0,0,0], $ transp1 = 0.3, $ colour2 = 1, $ coldata2 = 127b - bytscl(surftwo)/2b, $ shade2 = 2, $ grid2 = 1, $ cgrid2 = [250,250,250], $ transp2 = 0.6, $ colmap=25) For further examples see the SURFDEMO procedure MODIFICATION HISTORY: Part of Struan's Surface Tutorial: http://www.sljus.lu.se/stm/IDL/Surf_Tips/ Written by: Struan Gray, Sljusfysik, Lunds Universitet, 970305. 970313 SMG - added _extra, extra_surf and extra_shade keywords for better control of graphics keywords.
Source: src/idl_cvs/type.pro
src/idl_cvs/type.pro
NAME: TYPE VERSION: 3.0 PURPOSE: Finds the type class of a variable. CATEGORY: Programming. CALLING SEQUENCE: Result = TYPE(X) INPUTS: X Arbitrary, doesn't even need to be defined. OPTIONAL INPUT PARAMETERS: None. KEYWORD PARAMETERS: None. OUTPUTS: Returns the type of X as a long integer, in the (0,9) range. OPTIONAL OUTPUT PARAMETERS: None. COMMON BLOCKS: None. SIDE EFFECTS: None. RESTRICTIONS: None. PROCEDURE: Extracts information from the SIZE function. MODIFICATION HISTORY: Created 15-JUL-1991 by Mati Meron.
Source: src/idl_cvs/unsetup_ps.pro
src/idl_cvs/unsetup_ps.pro
NAME: unsetup_ps PURPOSE: close a postscript file (opened by setup_ps) and re-set system variables for previous device. CATEGORY: Printing, Cross-platform Printing of Plots CALLING SEQUENCE: UNSETUP_PS, name, PRINTER=printer INPUTS: (Optional) name - name of file without extenstion (defaults to IDL) (extention will always be .ps) KEYWORD PARAMETERS: Inputs: PRINTER - printer to send file to (only the string before the first blank is used). The printer may have been specified in the call to SETUP_PS, else the default is used printer. NOTE: if PRINTER='postscript', file will not be sent to a printer NOHEADER - if set, -h is inserted in lpr command OUTPUTS: none CALLING EXAMPLE: printer = 'picasso color printer' ; or printer = 'postscript color ' ; or printer = 'b143 Laserwriter in B143' ; or printer = 'default printer' ; setup_ps,'myplot', PRINTER=printer plot,indgen(11) ; any number of plot commands unsetup_ps ; send to printer and return to X RELATED ROUTINES: setup _ps MODICATION HISTORY: 30-Oct-2009 changed NoHeader string on lp command to "-o nobanner" 05-Feb-03 added keyword NoHeader 12-Feb-99 If printer = 'postscript' or 'file', don't send to a printer. If printer = 'default', send to the default printer (i.e., none specified) Write file in the login area. 27-Jan-99 adapt for SunOS; change y.margin settings [BD] 14-Oct-97 Written by Bill Davis
Source: src/idl_cvs/unsetup_tek.pro
src/idl_cvs/unsetup_tek.pro
NAME: unsetup_tek PURPOSE: undo system variables from setup_tek call. CATEGORY: Printing, Cross-platform plotting CALLING SEQUENCE: UNsetup_tek INPUTS: (Optional) name - name of file without extenstion (defaults to idl) (extention will always be .tek) KEYWORD PARAMETERS: OUTPUTS: none CALLING EXAMPLE: setup_tek plot,indgen(11) ; any number of plot commands unsetup_tek ; send to printer and back to X RELATED ROUTINES: setup_tek LIMITATIONS If using the CH_ crosshair routines, will need to call the following after this routine: IDL> CH_SET, yourGraph, NewX=!x,NewY=!y,NewP=!p MODICATION HISTORY: 13-Feb-06 add XTC calls 08-May-01 call CH_SET, if user calling cross-hair routines 26-Oct-00 Written by Bill Davis
Source: src/idl_cvs/unsetup_xpc.pro
src/idl_cvs/unsetup_xpc.pro
NAME: unsetup_xpc PURPOSE: Close plots file opened with setup_xpc, and send to the X-windows Plot Controller (XPC) by figuring out next file in the sequence it is looking for. CATEGORY: Printing, Cross-platform plotting CALLING SEQUENCE: UNsetup_xpc INPUTS: (Optional) name - name of file without extenstion (defaults to idl) (extention will always be .tek) KEYWORD PARAMETERS: OUTPUTS: none CALLING EXAMPLE: setup_xpc PLOT, indgen(11) ; any number of plot commands XYOUT, .2, .3, 'This is a Label' unsetup_xpc ; send to printer and back to X RELATED ROUTINES: setup_xpc LIMITATIONS If using the CH_ crosshair routines, will need to call the following after this routine: IDL> CH_SET, yourGraph, NewX=!x,NewY=!y,NewP=!p NOTE: This, in conjunction with unsetup_xpc, is supposed to be a replacement for XPC. MODICATION HISTORY: 18-Nov-2009 Written by Bill Davis
Source: src/idl_cvs/usesigmath.pro
src/idl_cvs/usesigmath.pro
NAME: useSigMath PURPOSE: parse an MDSplus TDI string, substituting Brian Nelson's Signal Math TDI routines for +,-,* and /, so timebases get adjusted, if necessary. CATEGORY: MDSplus CALLING SEQUENCE: IDL> newTDI = useSigMath( tdi ) INPUTS: tdi = a TDI string in which any signals are preceded by '\' OUTPUTS: newTDI - math operations -, +, * & / are replaced by Brian Nelson's SigMath functions sigsub, sigadd, sigmul and sigdiv. EXAMPLE: print, useSigMath('(\engineering::ip1+\engineering::ip2)/2') SIGADD(\engineering::ip1,\engineering::ip2)/2 print, useSigMath('\wf::ip-\wf::ipf4/\wf::ipf5') SIGDIV(SIGSUB(\wf::ip,\wf::ipf4),\wf::ipf5) NOTE ORDER OF OPERATIONS IS LEFT TO RIGHT print, useSigMath('1000*\wf::ip-\engineering::ip1') SIGSUB(1000*\wf::ip,\engineering::ip1) print, useSigMath('(\engineering::ip1/1000 - \wf::ip)') SIGSUB(\engineering::ip1/1000,\wf::ip) print, useSigMath('1000*\wf::ip-\engineering::ip1') SIGSUB(1000*\wf::ip,\engineering::ip1) print, useSigMath('\wf::ip-bcsmooth(\engineering::ip1/1000)') SIGSUB(\wf::ip,bcsmooth(\engineering::ip1/1000)) print, useSigMath('1000*\wf::ip-(\engineering::ip1+\engineering::ip2)/2') SIGSUB(1000*\wf::ip,SIGADD(\engineering::ip1,\engineering::ip2)/2) print, useSigMath('abs(bcsmooth(\engineering::ip1/1000)-\wf::ip)') (abs(SIGSUB(bcsmooth(\engineering::ip1/1000),\wf::ip))) print, useSigMath('\wf::ip-\wf::ip[0]') LIMITATIONS: Without brackets expressions will be evaluated from left to right. The SigMath routines do not correct for different units, like Amps and KiloAmps. Signals are only recognized when they begin with a backslash. MODIFICATION HISTORY: 04-Aug-2008 made to work (i.e., not use Sigmath) with '\wf::ip-\wf::ip[0]' WRITTEN 10-Aug-2007 by Bill Davis
Source: src/idl_cvs/usingxwindows.pro
src/idl_cvs/usingxwindows.pro
NAME: usingXwindows PURPOSE: Prompt user for switching Plot device to X. CATEGORY: Widgets, X-windows CALLING SEQUENCE: IDL> OK = usingXwindows() COMMON BLOCKS: NONE USE: Called in case a user was using Tektronix graphics, or the Postscript device and forgot to SET_PLOT,'X' before using widgets, etc. MODIFICATION HISTORY: Aug-00 Written [BD]
Source: src/idl_cvs/vaxis.pro
src/idl_cvs/vaxis.pro
NAME: vaxis PURPOSE: shell around AXIS procedure that sees if number of minor y tick marks need to be reduced, and if the number of y tick labels need to be cut in half. CATEGORY: Plotting CALLING SEQUENCE: IDL> vaxis, /yaxis INPUTS: if /yaxis not set, will just call AXIS routine with whatever inputs are passed KEYWORD PARAMETERS: Optional: yminor - as in plot command yrange - as in plot command ystyle - as in plot command yTickFormat - defaults to 'LabelEveryOtherTick' debug - if set, will print things and stop in routine OUTPUTS: none COMMON BLOCKS: vplot_local EXAMPLE: IDL> a=mk_color() IDL> x=findgen(100) IDL> y=sin(x/8*4)*exp(x/30) IDL> pos=[.1,.77,.9,.9] IDL> plot,x,y,ystyle=8, pos=pos, yTickFormat='LabelEveryOtherTick', yminor=2 IDL> vaxis, yaxis=1,/debug ;;; , yTickFormat='LabelEveryOtherTick' NOTES: 15-Aug-2013 fixed large major Y tick marks WRITTEN 29-Oct-2007 By Bill Davis, PPPL.
Source: src/idl_cvs/vcomp.pro
src/idl_cvs/vcomp.pro
NAME: vcomp PURPOSE: "visually compress" (resample) an array for faster plotting of lines. All data spikes should be retained. Will return y points for each x -- the min & max values. IF nFinal GE N_ELEMENTS(inData)*2 will just return inputs CATEGORY: Plotting CALLING SEQUENCE: VComp, inTime, inData, outTime, outData, NFINAL=4096 KEYWORDS Optional: NFINAL - # of points to "compress" to. Defaults to estimated # of pixels on x axis COMMON BLOCKS: none EXAMPLE: IDL> vcomp, inTime, inData, outTime, outData, NFINAL=4096 NOTES: assumes equally spaced data, but might be OK for some cases. LIMITATIONS: This doesn't work precisely when: 1) only points are drawn, rather than connecting lines, 2) the X values are not monotonically increasing, or 3) even if X intervals are not constant (although errors would probably be subtle). MODIFICATION HISTORY: 26-Jul-2004 NINT() introduced a bug in some cases; now fixed 17-May-2004 Bug fixed: not going to full time range 22-Apr-2004 If POS being used, x.margin irrelevant, so assume 0 Written 10-Nov-99 by Bill Davis
Source: src/idl_cvs/vectorsurf.pro
src/idl_cvs/vectorsurf.pro
NAME: vectorsurf PURPOSE: Shows a fancy way to plot irregulary spaced data from x,y & z vectors. CATEGORY: 2-D Plotting, Example CALLING SEQUENCE: vectorsurf, x, y, z INPUTS: tag - MDSplus tag or node name in KEYWORD PARAMETERS Input: DRAWXSIZE = drawXsize DRAWYSIZE = drawYsize BG_COLOR = bg_color OUTPUTS: none EXAMPLE: IDL> x=[4,6,1,7,1,8,5,2,4] IDL> y=[3,3,1,6,4,5,6,8,1] IDL> z=sqrt((x-3)^2+(y-2)^2)+randomn(seed)+2 IDL> vectorsurf, x, y, z MODIFICATION HISTORY: 05-Sep-97 Written by Bill Davis from IDL's d_mathstat.pro in the IDL 5.0 release Written by: DC, RSI, 1995
Source: src/idl_cvs/vgds_title.pro
src/idl_cvs/vgds_title.pro
NAME: vgds_title PURPOSE: write a plot title with shot date and time and NSTX label CATEGORY: Plotting CALLING SEQUENCE: IDL> vgds_title, mytitle, ishot INPUTS: mytitle = whatever you want as the main plot title. ishot = shot number. KEYWORD PARAMETERS: Keywords: noShot - if set, do not plot shot number noTime - if set, do not plot time TopMargin - in characters, extra space to shift down the characters HLP - When set, help information is printed. OUTPUTS: none COMMON BLOCKS: NONE EXAMPLE: IDL> !Y.OMARGIN=[0,1] IDL> plot,indgen(100) IDL> vgds_title, 'This is my title', 100523 NOTES: You'll probably want a little more room at the top of your plots, e.g. IDL> !Y.OMARGIN=[0,1] MODIFICATION HISTORY: 21-Sep-99 Written by Bill Davis, PPPL
Source: src/idl_cvs/viewtext.pro
src/idl_cvs/viewtext.pro
NAME: viewtext PURPOSE: View a string, or string array, of text in a scrollable text widget. DESCRIPTION: CATEGORY: Widgets CALLING SEQUENCE: viewtext, text [, KEYWORDS] INPUTS: text : String (scalar, 1-D or 2-D array) of text to be displayed. OPTIONAL INPUT PARAMETERS: KEYWORD PARAMETERS: EXIT = Label for exit button. Default is 'Dismiss'. FONT = Font to use for the text. Default is '8x13'. GROUP = Group Leader. TITLE = Title of widget. XSIZE = Width of text. Default is 80 characters. YSIZE = Length of text. Default is 40 lines. OUTPUTS: COMMON BLOCKS: SIDE EFFECTS: RESTRICTIONS: PROCEDURE: MODIFICATION HISTORY: 23-Feb-2005 if LASTPRINTER in private common defined, use that. pop dialog box on which printer HARDCOPY went to. 3-Feb-03 /FIT keyword and made resizable. 08-Jun-00 Added support for VMS (Bill Davis) Written by Doug Loucks, Lowell Observatory, May, 1993. 1/7/94, DWL, Added Hardcopy button. 8/25/94, DWL, Minor mods. 96/07/02, MWB, changed YSIZE default to 40 lines.
Source: src/idl_cvs/vplot.pro
src/idl_cvs/vplot.pro
NAME: vplot PURPOSE: Just like plot, except it calls vcomp to "visually compress" an array for faster delivery of graphs at the expense of CPU time. All data spikes should be retained. CATEGORY: Plotting CALLING SEQUENCE: vplot, time, data, _extra=_extra KEYWORDS Just like for plot (except you need both X & Y) xIsHHMM - plot x axis as time in HH:MM format (assume time in hours) xWithSeconds - plot x axis as time in HH:MM:SS format (assume time in hours) COMMON BLOCKS: vplot_local EXAMPLE: IDL> vplot, time, data, title='whatever', xrange=[0,2] NOTES: VComp assumes equally spaced data, but might be OK for some cases. Use oVPlot for overplotting. LIMITATIONS: This is compuationally intense, so is not appropriate for all applications, but for I/O-bound plotting can speed up 10x or more. Will return y points for each x -- the min & max values. IF nFinal GE N_ELEMENTS(inData)*2 will just return inputs MODIFICATION HISTORY: 05-Jul-2011 If axes are small, reduce number of tick marks, but use defaults if close. If aspect ratio is long, adjust ticklengths for vertical and horizontal axes. 14-Apr-2010 create window if none in use, so can do scaling. [BD] 16-Apr-2009 Removed xTickFormat='betterTickLabels' when want HH:MM.. 11-Feb-2008 fixed bug for pingplot.pro 30-Oct-2007 improve number of tick marks, and length. 08-May-2006 added logic if _extra contains range, but both equal 03-Mar-2006 add xIsHHMM keyword 26-Jul-04 make so plots "nice" range, like IDL default, if 15-Apr-04 handle when no additional paramters entered add keyword for xtick_get (seem to need to specify explicitly) Written 20-May-01 by Bill Davis
Source: src/idl_cvs/vt100.pro
src/idl_cvs/vt100.pro
NAME: VT100 PURPOSE: Define the TEK and VT100 commands for use in IDL. Especially useful for MAC users who use Versaterm or users who otherwise want to do Tektronix plots while connected to their UNIX platform of choice. CATEGORY: Misc CALLING SEQUENCE: VT100 INPUT PARAMETERS: NONE OPTIONAL INPUT PARAMETERS: NONE KEYWORDS: NONE OUTPUTS: NONE COMMON BLOCKS: NONE SIDE EFFECTS: NONE RESTRICTIONS: If you want to use the TEK command, you need to issue the VT100 command first. PROCEDURE: CODE TYPE: modeling, analysis, control CODE SUBJECT: operation, handling, edge, rf, transport, equilibrium EASE OF USE: can be used with existing documentation OPERATING SYSTEMS: UNIX of all flavors EXTERNAL CALLS: NONE RESPONSIBLE PERSON: Ray Jong DATE OF LAST MODIFICATION: 01/19/99 MODIFICATION HISTORY: Created by Michael D. Brown, LLNL
Source: src/idl_cvs/watchevents.pro
src/idl_cvs/watchevents.pro
NAME: watchevents PURPOSE: Widget to monitor occurrence of MDSplus events. If all events do not happen before next occurance of first event, send e-mail. CATEGORY: Events, MDSplus CALLING SEQUENCE: IDL> watchevents, events=['NSTX_SOC', 'my_event' ] IDL> watchevents, emailTo=['vlad@pppl.gov, joeshmoe@pppl.gov'], $ events=['NSTX_ACQ_DONE', 'CAM1_DONE', $ 'CAM2_DONE','CAM3_DONE','CAM4_DONE' ] to get all MPTS-relevant events: IDL> watchevents,/shot,/show,add=['NSTX_ABC', 'MPTS_FORCEFIT', $ 'NSTX_ABS','NSTX_KLC','TS_RAW_READY'] INPUTS: none. KEYWORD PARAMETERS: (optional) TEST - if set, appends TEST to all events EVENTS_WANTED - Character array of events to watch for. defaults to ['NSTX_SOC', 'CAM1_DONE', 'CAM2_DONE','CAM3_DONE','CAM4_DONE' ] GROUP_LEADER - Group_Leader ID NOCLEAR - if set, will not clear events when first event is recognized PRINT - if set, will print messages when events are recognized SHOWSHOTS - if set, will display shot numbers declared with the events TIME - if set, will display time-of-day when event was declared add_events - if set, will add these event(s) to the default BIG - if set, fonts are big WALL - if set, events of interest for display wall, and big font OUTPUTS: none. NOTES: The time of day will be printed for the first event, and the other times will be cleared. Then the time difference will be printed as mm:ss, so :12 would mean it came 12 seconds after the first event. TESTING IDL> watchevents, EVENTS_WANTED=['MY_TEST_EVENT_1','MY_TEST_event_2'], $ /Shots and from a VMS computer: IDL> SetMDSShotEvent,'MY_TEST_EVENT_1', 999999 COMMON BLOCKS: none ROUTINES USED: MK_COLOR, usingXwindows, MDSEVENT EXAMPLE: IDL> watchevents LIMITATION: Shot numbers are only returned when running on VMS currently. NOTES: As the events are declared, the boxes turn color. When the first event in the list is recognized, the other boxes are set to yellow (unless /noClear was set). Shot numbers declared with the events may optionally be displayed. The status fields are initially the background color. A program calling this routine, might want to save !D.WINDOW before the TV commands and restore it immediately afterwards. MODIFICATION HISTORY: 08-Sep-08 removed mdsconnect. 10-Jun-05 Converted from Monevents.pro for Vlad. 03-Feb-04 added wall keyword 10-Feb-03 added keyword add_event [BD] 14-Jun-01 Default to showing time 20-Jul-00 Written by Bill Davis, PPPL
Source: src/idl_cvs/webdisplay.pro
src/idl_cvs/webdisplay.pro
NAME: webdisplay PURPOSE: Display web pages from IDL for Help, or other purposes. CATEGORY: Utility CALLING SEQUENCE: IDL> webdisplay, url INPUTS: url = URL to display. KEYWORD PARAMETERS: OUTPUTS: NONE COMMON BLOCKS: NONE MODIFICATION HISTORY: 06-Jan-03 At PPPL, will find "hidden" netscape on Linux 16-Apr-99 Written by Bill Davis, PPPL
Source: src/idl_cvs/webplotsum.pro
src/idl_cvs/webplotsum.pro
NAME: webplotsum PURPOSE: Plot vs. time a summary of a shot in a small frame Ip, D-alpha, stored energy, NB & RF power are plotted. CATEGORY: Plotting CALLING SEQUENCE: IDL> webplotsum, shot INPUTS: shot - shot # (defaults to current shot) KEYWORD PARAMETERS: Optional Keywords: tois - times of interest at which a dashed vertical line will be drawn xsize - ysize - verbose - debug - labelShot - signames - pos - minIP - x1 - y1 - xfrac - yFrac - charsize - charThick - thick - xmargin - widthFactor - if set, ysize = xsize * widthFactor noLoad - if set, do not load a color table, even if colorsearch returns a bad status markTime - time at which to draw a vertical dashed line on graph OUTPUTS: NONE COMMON BLOCKS: NONE EXAMPLE: IDL> webplotsum, 119923 NOTES: Used in weblogplot.pro, amoung others MODIFICATION HISTORY: 20-Oct-2010 for MSE calibration, check for beam data, so can have time include it, even if plasma current is too low 17-Aug-2010 compute X tick length based on position array 27-May-2010 fixed bug when last signals not there, was returning before plotting. 07-Apr-2010 tweaked tick length & number of minor tick marks 02-Apr-2010 added lColor keyword for index color of dashed line 18-Dec-2009 add keyword noLoad and don't use mk_color if not necessary 29-Sep-2009 display Pnb and Prf, if present 07-Apr-2009 use \pnb+\prf if \ptot not there. 13-Mar-2008 handle missing ptot 04-Mar-2008 Written by Bill Davis, PPPL, for Stan Kaye
Source: src/idl_cvs/weekday.pro
src/idl_cvs/weekday.pro
NAME: WEEKDAY PURPOSE: Compute weekday given year, month, day. CATEGORY: Dates CALLING SEQUENCE: wd = weekday(y,m,d,[nwd]) INPUTS: y, m, d = Year, month, day (Like 1988, 10, 31). in KEYWORD PARAMETERS: OUTPUTS: wd = Returned name of weekday. out nwd = optional Weekday number. out COMMON BLOCKS: NOTES: MODIFICATION HISTORY: R. Sterner. 31 Oct, 1988. Johns Hopkins University Applied Physics Laboratory. RES 18 Sep, 1989 --- converted to SUN Copyright (C) 1988, Johns Hopkins University/Applied Physics Laboratory This software may be used, copied, or redistributed as long as it is not sold and this copyright notice is reproduced on each copy made. This routine is provided as is without any express or implied warranties whatsoever. Other limitations apply as described in the file disclaimer.txt.
Source: src/idl_cvs/wfmdsshotevent.pro
src/idl_cvs/wfmdsshotevent.pro
NAME: wfMDSshotEvent PURPOSE: Wait for an MDSplus event, with shot number coming in CATEGORY: MDSplus, Events CALLING SEQUENCE: wfMDSshotEvent, event, shotnum, [,/QUIET][,STATUS=istat] INPUT PARAMETERS: event = name of an MDSplus event to wait for. RETURNED PARAMETERS: shotnum - whatever data was passed when the event was set. for MDSplus events, except for nstx_acq_started Keywords (Optional): ASCII - if set, will assume data block contains ascii representation of numbers NOCONNECT - if set, will not try to connect to an MDSplus server SERVER - if not set, will connect to default server in OpenMDSshot QUIET = prevents IDL error if MDSplus command fails STATUS = return status, low bit set = success COMMON BLOCKS: None. SIDE EFFECTS: None. RESTRICTIONS: PROCEDURE: Makes a call to MDSplus shared image library procedure MDS$WTEVENT and checks for errors. MODIFICATION HISTORY: 11-Nov-2008 Default to no mdsconnect [BD] 02-Nov-2008 Return -1 if error from mdsvalue. Have an option not to connect. 09-Mar-2007 Added ASCII keyword which is needed on sflip PC 08-Jul-2005 Added support for Windows 31-May-05 include server keyword 06-Apr-05 use MdsValue( 'WFEVENT($)'... instead. [BD] 24-May-01 If on Unix, connect to VMS if not already [BD] 06-Nov-00 Made same version work on VMS & Unix [BD] copied from mds$wfevent.pro, so could have the same name on vms & unix VERSION 1.0, CREATED BY T.W. Fredian, April 22,1991 debug version 7/14/05 PR syntax error in if/endif structure
Source: src/idl_cvs/where_arr.pro
src/idl_cvs/where_arr.pro
NAME: where_arr PURPOSE: Return the subscripts where a given set of values equal the values in the input array. It is basically an expansion of IDL where in which the condition to match can be an array. CATEGORY: Strings, Searching CALLING SEQUENCE: ss = where_arr(full_arr, sub_arr) ss = where_arr(a, b) ss = where_arr(a, b, count) ss = where_arr(a, b, count, /notequal) - invert sense ss = where_arr(a, b, count, /map_ss) INPUT: full_arr- The complete array which is to be searched sub_arr - The subset array of the values to search "full_arr" of KEYWORD PARAMETERS: notequal - if set, return indices where values are NOTEQUAL map_ss - If set, then return the index in the "sub_arr" where first occurance of the element exists in the "full_arr" The length of the output is the same as "full_arr" OUTPUT: returns the subscripts where "sub_arr" occurrs in "full_arr". If there are no matches, return a -1. OPTIONAL OUTPUT: count - The number of matches HISTORY: Written 30-Apr-91 by M.Morrison 1-Jul-94 (SLF) - add NOTEQUAL keyword 14-Nov-97 (MDM) - Added /MAP_SS keyword 09-Mar-98 (JSN) - change loop from integer to long
Source: src/idl_cvs/which.pro
src/idl_cvs/which.pro
NAME: WHICH PURPOSE: Like Unix which, prints the path of an IDL routine. CATEGORY: Utility CALLING SEQUENCE: Which, Name INPUTS: Name: The string containing the name of the procedure. If no '.' in name, ".pro" is appended. Under Unix, Name may be "*" to get information on first routine to satisfy match. KEYWORDS: PRINT: If set, this keyword sends the output of WHICH to the default printer. Under Unix, if PRINT is a string, it is interpreted as a shell command used for output with the documentation from WHICH providing standard input (i.e. PRINT="cat > junk"). OUTPUT: returns full path of file found; will return null string if none found QUIET: If set, no printing to IDL session is done UNIX KEYWORDS: DIRECTORY: The directory to search. If omitted, the current directory and !PATH are used. MULTI: If set, this flag allows printing of more than one file if the requested module exists in more than one directory in the path and the current directory. VMS KEYWORDS: FILE: If this keyword is set, the output is left in the file "userlib.doc", in the current directory. PATH: An optional directory/library search path. This keyword uses the same format and semantics as !PATH. If omitted, !PATH is used. OUTPUTS: Documentation is sent to the standard output unless /PRINT is specified. COMMON BLOCKS: None. SIDE EFFECTS: Output is produced on terminal or printer. RESTRICTIONS: The DIRECTORY and MULTI keywords are ignored under VMS. The FILE and PATH keywords are ignored under Unix. EXAMPLE: To obtain documentation for the User's Library function DIST, enter: Which, 'DIST', output=fullpathname For a graphical interface to WHICH, see the procedure XDL. MODIFICATION HISTORY: 13-Apr-99 Allow findind files on VMS if not in libraries [BD] Converted from IDL DOC_LIBRARY by Bill Davis, March, 1999 optionally return path in keyword OUTPUT. Added QUIET keyword. allow extentions other than .pro allow uppercase finds. Written, DMS, Sept, 1982. Added library param, Jul 1987. Unix version, DMS, Feb, 1988. New VMS version, DMS, Dec. 1989 Wrapper procedure to call the correct version under Unix and VMS, AB, Jan 1990 Added support for DOS, SNG, Dec, 1990 Added support for Macintosh, DJE, Nov, 1994
Source: src/idl_cvs/whichcomputer.pro
src/idl_cvs/whichcomputer.pro
NAME: whichComputer PURPOSE: Return name of Linux computer you are running on. First uses enironmental variable HOST, then uname -n CATEGORY: System CALLING SEQUENCE: IDL> computerName = whichComputer( ) INPUTS: none required KEYWORD PARAMETERS: var - Environmental variable to check for computer name. (defaults to 'HOST'). If HOST not defined, will still work on Linux debug - if set, debug output will be printed OUTPUTS: computerName - name of computer (best not to have domain included) EXAMPLE: NOTES: MODIFICATION HISTORY: 07-Apr-2010 Written by Bill Davis, PPPL
Source: src/idl_cvs/whiteout.pro
src/idl_cvs/whiteout.pro
NAME: whiteout PURPOSE: white-out a portion of the color table -- defaults to the 5 lowest locs. CATEGORY: Colors, Graphics CALLING SEQUENCE: IDL> whiteout INPUTS: NONE KEYWORD PARAMETERS: Optional Keywords: loc - index within color table to start whiting out (Default=0) nlocs - number of locations to whiteout (Default=5 OUTPUTS: NONE (color table changed) LIMITATIONS: Reloading color table will undo this. MODIFICATION HISTORY: May-2006 Written by Bill Davis, PPPL
Source: src/idl_cvs/widget_bottom.pro
src/idl_cvs/widget_bottom.pro
NAME: WIDGET_BOTTOM PURPOSE: Move a widget to the bottom of the screen or base widget. CATEGORY: Widgets. CALLING SEQUENCE: WIDGET_BOTTOM, ID INPUTS: ID ID of the widget to be centered. KEYWORD PARAMETERS: PARENT ID of an existing widget over which the input widget should be centered. OUTPUTS: None. EXAMPLE: base = widget_base() label = widget_label(base, value='Hello world') WIDGET_BOTTOM, base widget_control, base, /realize MODIFICATION HISTORY: Created by Bill Davis 14-Apr-06. Added yborder and xborder. Based on WIDGET_BOTTOM Written by: Liam.Gum...@ssec.wisc.edu
Source: src/idl_cvs/withrankof.pro
src/idl_cvs/withrankof.pro
NAME: WithRankOf PURPOSE: Return a list of MDSplus signals with a certain rank (that contain data) CATEGORY: MDSplus CALLING SEQUENCE: sigs=withrankof( rank ) INPUTS: rank - integer rank of signal desired KEYWORD PARAMETERS: filter - wildcard specification to find signal names with desired rank signalnames - if present, use these, and ignore filter OUTPUTS: sigs - MDSplus signal names with EXAMPLE: IDL> stat=mdsopen('passivespec',101964) IDL> scalarNames = withrankof(0) COMMON BLOCKS: none NOTES: Only returns signals with data in them. LIMITATIONS: An MDSplus shot file must be open first. MODIFICATION HISTORY: 31-Jan-07 add keyword to pass in signalnames 20-Jan-00 Written by Bill Davis
Source: src/idl_cvs/wordarray.pro
src/idl_cvs/wordarray.pro
NAME: WORDARRAY PURPOSE: Convert text string or string array to a 1-d array of words. CATEGORY: Strings CALLING SEQUENCE: wordarray, instring, outlist INPUTS: instring = string or string array to process. in KEYWORD PARAMETERS: Keywords: IGNORE=string of characters to ignore (array allowed). These characters are removed before processing. Ex: wordarray,in,out,ignore=',;()' wordarray,in,out,ignore=[',',';','(',')'] DELIMITERS = word delimiter characters, like IGNORE. /WHITE means include white space (spaces,tabs) along with the specified delimiters. OUTPUTS: outlist = 1-d array of words in instring. out COMMON BLOCKS: NOTES: Words are assumed delimited by given delimiters (defaults are spaces and/or tabs) Non-delimiters are returned as part of the words. Delimiters not needed at the front and end of the strings. See commalist for a near inverse. MODIFICATION HISTORY: R. Sterner, 29 Nov, 1989 BLG --- Modified June 22,1991 to include tabs as delimiters R. Sterner, 11 Dec, 1992 --- fixed to handle pure white space. R. Sterner, 27 Jan, 1993 --- dropped reference to array. R. Sterner, 1998 Apr 1 --- Added DELIMITER. Modified IGNORE. Copyright (C) 1989, Johns Hopkins University/Applied Physics Laboratory This software may be used, copied, or redistributed as long as it is not sold and this copyright notice is reproduced on each copy made. This routine is provided as is without any express or implied warranties whatsoever. Other limitations apply as described in the file disclaimer.txt.
Source: src/idl_cvs/writecamavg.pro
src/idl_cvs/writecamavg.pro
NAME: writecamavg PURPOSE: For camera files that exist for a particular shot, check for \CAMERAS::TOP.FC_n.RAWDATA:FRAMES_MAX and \CAMERAS::TOP.FC_n.RAWDATA:FRAMES_AVG (tags \PH7_n_FMAX and \PH7_n_FAVG) and write them if need be. CALLING SEQUENCE: IDL> writecamavg, camera, year=year, shot1=shot1, shot2=shot2 INPUTS: camera = integer from 1-7 KEYWORDS: year - if shot1 and shot2 not entered, use this. (Defaults to current year) shot1 shot2 tree - defaults to 'cameras' checkDir - if set, will work from a list of the expected directory, rather than calling FindCamFiles for every file (recommended) writeMax - if not = 0, will try write max intensity vs. time waveforms writeAve - if not = 0, will try write ave intensity vs. time waveforms force - if=1, will write maxInt and aveInt, even if they are in the tree verbose - if set, will print many informational messages debug - if set, debug output will be printed EXAMPLE: IDL> writeCamAvg, 2, year=2010, /checkDir, /debug ; rewrite max for some shots: IDL> writeCamAvg, 7, shot1=139025, shot2=140569, /force, writeAve=0, /checkDir, /debug IDL> writeCamAvg, 2, shot1=140528, shot2=140569, /checkDir, /verb MODIFICATION HISTORY: --------------------- 27-Jul-2011 option to just use a file_search of conventional directory when checking for files (keyword CheckDir) 25-Jul-2011 Written by Bill Davis
Source: src/idl_cvs/writelog.pro
src/idl_cvs/writelog.pro
NAME: writeLog PURPOSE: Provide a writeLog for IDL routines to be used by others CATEGORY: Utility CALLING SEQUENCE: IDL> writeLog, logfile, msg, logWindowID=logWindowID INPUTS: logfile - logfile for output (DEFAULT='logfile.txt') msg - string to put in log KEYWORD PARAMETERS: time - if set then add time stamp to the output message nLines - lines for each message (def=1, meaning no blank lines) verbose - if set, will echo message to screen with print command OUTPUTS: none COMMON BLOCKS: NONE EXAMPLE: IDL> writeLog, 'mylogfile.txt', 'All is well', /time, /verbose NOTES: used in some auto-restart programs for nstxops MODIFICATION HISTORY: 20-Mar-2007 print blank lines when /verbose. Write every line of msg on separate line 14-Aug-2006 just return if log file not writable 07-Dec-2005 added nLines keyword Oct-2005 Written by Bill Davis, PPPL
Source: src/idl_cvs/write_generic.pro
src/idl_cvs/write_generic.pro
NAME: write_generic PURPOSE: write an image to the appropriate type of file, based on file extension CATEGORY: Files, Graphics CALLING SEQUENCE: IDL> write_generic, filename, data2D [, R,G,B] INPUTS: filename - file name to read in can be type 'jpg','tif','tif','bmp','jpeg,'png', 'ppm', 'pgm', or 'gif' KEYWORD PARAMETERS: Optional inputs: extension - the file extension, eg., 'jpg' quality - jpeg quality [0-100, default is 75] order - JPEG/JFIF images are normally written in top-to-bottom order. If the image array is in the standard IDL order (i.e., from bottom-to-top) set ORDER to 0, its default value. If the image array is in top-to-bottom order, ORDER must be set to 1. OUTPUTS: 2-D data array from file out COMMON BLOCKS: NONE MODIFICATION HISTORY: 25-Feb-2009 added RGB keyword 18-Oct-2007 added quality keyword 25-Apr-2007 added colortable keyword (not used!?!) 21-Feb-2007 added ppm file type 19-Apr-2006 replaced keywords with args R,G,B 15-Oct-2004 Written by Bill Davis, PPPL
Source: src/idl_cvs/write_in_box.pro
src/idl_cvs/write_in_box.pro
NAME: WRITE_IN_BOX PURPOSE: Writes a text message within a box in a graphics window. CATEGORY: Graphics Explanation : This procedure writes a short text message within a box-shaped area in a graphics window. The message may be split at word boundaries into several lines, and the character size and orientation may be adjusted for the text to fit within the box. CALLING SEQUENCE: IDL> WRITE_IN_BOX, X1, X2, Y1, Y2, TEXT Inputs : X1, X2 = X coordinates of the box limits. Y1, Y2 = Y coordinates of the box limits. TEXT = ASCII text string containing the message. Opt. Inputs : None. Outputs : None. Opt. Outputs: None. Keywords : DATA = If set, then the coordinates are in data units. This is the default. DEVICE = If set, then the coordinates are in device units. NORMAL = If set, then the coordinates are in normalized units. MAXCHARSIZE = The maximum character size to use in displaying the message. If not passed, then determined from !P.CHARSIZE. COLOR = Color to use to display the text. The default is !COLOR. ALIGNMENT = Controls the alignment of the text in the box. A value of 0 means to left justify the text, 0.5 means center it (default), and 1 stands for right justification. Calls : None. Common : None. Restrictions: X2 must be greater than X1, and Y2 must be greater than Y1. Side effects: The appearance of the displayed message may not be optimal if any words are separated by multiple blanks, or by tab characters. Category : Planning, Science. Prev. Hist. : None. Written : William Thompson, GSFC, 7 July 1993. Modified : Version 1, William Thompson, GSFC, 7 July 1993. Version 2, William Thompson, GSFC, 24 September 1993. Added ALIGNMENT keyword based on code provided by Jim Pendleton, GRO/OSSE NU. Version 3, William Thompson, GSFC, 21 September 1994 Added STRTRIM call. Version : Version 3, 21 September 1994
Source: src/idl_cvs/write_mpeg.pro
src/idl_cvs/write_mpeg.pro
+ NAME: WRITE_MPEG PURPOSE: Write a sequence of images as an mpeg movie CATEGORY: animation CALLING SEQUENCE: WRITE_MPEG,'movie.mpg',ims INPUTS: ims: sequence of images as a 3D array with dimensions [sx, sy, nims] where sx = xsize of images sy = ysize of images nims = number of images OPTIONAL INPUTS: KEYWORD PARAMETERS: delaft: if set delete temporary array after movie was created you should actually always do it otherwise you get problems with permissions on multiuser machines (since /tmp normally has the sticky bit set) rep: if given means repeat every image 'rep' times (as a workaround to modify replay speed) OUTPUTS: None OPTIONAL OUTPUTS: COMMON BLOCKS: SIDE EFFECTS: creates some files in TMPDIR which are only removed when the DELAFT keyword is used RESTRICTIONS: depends on the program mpeg_encode from University of California, Berkeley, which must be installed in /usr/local/bin PROCEDURE: writes a parameter file based on the dimensions of the image array + the sequence of images in ppm format into a temporary directory; finally spawns mpeg_encode to build the movie EXAMPLE: IDL> s=openmdsshot('efit',112800) IDL> data3d=mdsvalue('\efit01::psirz') IDL> write_mpeg, 'efit_112800.mpg', bytscl(congrid(data3d,65*8,65*8,128)) or IDL>write_mpeg,'test.mpg',reform([[dist(100)],[dist(100)],[dist(100)]],100,100,3) MODIFICATION HISTORY: 15-Jul-04 warn if file not 3d [BD] Mon Nov 18 13:13:53 1996, Christian Soeller grabbed original from the net and made slight modifications
Source: src/idl_cvs/write_text.pro
src/idl_cvs/write_text.pro
NAME: write_text PURPOSE: Write data to a text file CATEGORY: files CALLING SEQUENCE: IDL> write_text, filename, data, data2, data3, data4, data5, data6 INPUTS: filename - filename for output (DEFAULT='outfile.txt') data - array of numbers data2, data3, etc., are optional. KEYWORD PARAMETERS: header - text lines to put at the beginning of file tabs - if set, columns will be delimited by a tab characater verbose - if set, will echo message to screen with print command OUTPUTS: none COMMON BLOCKS: NONE EXAMPLE: IDL> write_text, 'myfilename.txt', findgen(100) to write two columns with 1 header line: IDL> write_text, 'myfilename.txt', time, data, header='Hello World!' NOTES: MODIFICATION HISTORY: 24-Apr-2009 option to write up to 6 columns of data 12-Jun-2008 Written by Bill Davis, PPPL
Source: src/idl_cvs/xanimjpeg.pro
src/idl_cvs/xanimjpeg.pro
NAME: XanimJpeg PURPOSE: animate jpegs (or other image files) in a VCR-like widget, which can make an MPEG Movie. CATEGORY: Animation, MPEG, jpegs KEYWORDS: jpegDir - directory containing files to animate ext - extension of files to animate (DEFAULT='jpg') showTime - if set, try to show time on image times - times of images in msec increment - for file list, ie., to skip frames, set > 1 maxFrames - max # of frames to load (to many can cause an X-window problem) prefix - prefix of files for search. Default='*' byteScale - if set, will scale individual frames from 0-255 minVal - if this and byteScale set, will use this as minimum value maxVal - if this and byteScale set, will use this as maximum value ctb - color table to load (not sure makes a difference) DEFAULT=3 mag - magnification factor for images EXAMPLE: IDL> xanimjpeg, jpegDir='~bdavis/ShockWaveOutput/Output' IDL> jpegDir='/p/gyro/wgutten/gyro-9.0wg/sim/NSTX_120968A02_560/nonlin/ra60/franklin_runs/x80y60_n8r200ob8v6/jpeg_files/' IDL> xanimjpeg, jpegDir=jpegDir, prefix='frame06', maxframes=10 IDL> xanimjpeg, jpegDir='~bdavis/DustTracking/Data/130388/Cam2_NO' NOTE: this routine requires substantial "X memory" so, Exceed on a Mac, may need more memory; an X-terminal may give a "toolkit error". MODIFICATIONS: 13-Jul-2010 use XIA & other features WRITTEN by Bill Davis
Source: src/idl_cvs/xaxisw.pro
src/idl_cvs/xaxisw.pro
NAME: xAxisW PURPOSE: Widget to set some X Axis values via the system variable !X CATEGORY: Graphics, Widgets CALLING SEQUENCE: IDL> xAxisW INPUTS: input = whatever. KEYWORD PARAMETERS: Optional Keywords: UPDATECALLBACK - a routine to call after axis system variable is set GROUP_LEADER - This widget is destroyed if it's GL is destroyed OUTPUTS: The system variable !X is changed out COMMON BLOCKS: NONE EXAMPLE: IDL> xAxisW, UPDATECALLBACK='myAxisUpdating' NOTES: MODIFICATION HISTORY: 29-Apr-08 check for routine being compiled (vs. needing to be found) added a "Refresh" button which, if a proper plotting routine is provided, will replot with any changed settings. 08-Dec-04 Removed callback test because of compiling on PC 22-Jan-01 Added Default and Auto Scale buttons [BD] 20-Sep-00 Added TickLen & GridStyle fields [BD] 30-Mar-99 Written by Bill Davis, PPPL
Source: src/idl_cvs/xcdedit.pro
src/idl_cvs/xcdedit.pro
NAME: XcdEdit PURPOSE: A table editor modified from XVAREDIT for ppcc c.d file. CATEGORY: Widgets CALLING SEQUENCE: XcdEdit, filename INPUTS: filename = The file to be edited. KEYWORD PARAMETERS: NAME = The NAME of the variable. This keyword is overwritten with the structure name if the variable is a structure. GROUP = The widget ID of the widget that calls XcdEdit. When this ID is specified, a death of the caller results in a death of XcdEdit. X_SCROLL_SIZE = The X_SCROLL_SIZE keyword allows you to set the width of the scrolling viewport in columns. Default is 4. Y_SCROLL_SIZE = The Y_SCROLL_SIZE keyword allows you to set the height of the scrolling viewport in rows. Default is 4. OUTPUTS: VAR= The variable that has been edited, or the original when the user Quits from the file menu. COMMON BLOCKS: None. SIDE EFFECTS: Initiates the XManager if it is not already running. RESTRICTIONS: None known. PROCEDURE: Create and register the widget and then exit. If the user selects "save", the values in the editor are written to the file passed in, otherwise, they are ignored. MODIFICATION HISTORY: Written by: Steve Richards, February, 1991 Modified: September 96, LP - rewritten with TABLE widget Converted from XcdEdit.pro by Bill Davis, Oct. 1998 07-Oct-98 BD Took out check for "commit" because it was always wrong.
Source: src/idl_cvs/xcolors.pro
src/idl_cvs/xcolors.pro
NAME: XCOLORS PURPOSE: The purpose of this routine is to interactively change color tables in a manner similar to XLOADCT. No common blocks are used so multiple copies of XCOLORS can be on the display at the same time (if each has a different TITLE). XCOLORS has the ability to notify a widget event handler, an object method, or an IDL procedure if and when a new color table has been loaded. Brewer color tables can also be accessed from this program, if the file fsc_brewer.tbl can be found somewhere in your IDL path. AUTHOR: FANNING SOFTWARE CONSULTING David Fanning, Ph.D. 1645 Sheely Drive Fort Collins, CO 80526 USA Phone: 970-221-0438 E-mail: davidf@dfanning.com Coyote's Guide to IDL Programming: http://www.dfanning.com CATEGORY: Widgets, Object, Command line. CALLING SEQUENCE: XCOLORS INPUTS: None. KEYWORD PARAMETERS: BLOCK: If this keyword is set, the program will try to block the IDL command line. Note that this is only possible if no other widget program is currently blocking the IDL command line. It is much more reliable to make XCOLORS a modal widget (see the MODAL keyword), although this can generally only be done when XCOLORS is called from another widget program. BREWER: Set this keyword if you wish to use the Brewer Colors, as explained in this reference: http://www.dfanning.com/color_tips/brewer.html. The Brewer color table file, fsc_brewer.tbl must be found somewhere in your IDL path for this option to be available. The file can be downloaded here. http://www.dfanning.com/programs/fsc_brewer.tbl Note that if this file is found, the Brewer colors are automatically added to the program as an option. In this case, the BREWER keyword just makes sure this is the initial user choice. BOTTOM: The lowest color index of the colors to be changed. COLORINFO: This output keyword will return either a pointer to a color information structure (if the program is called in a non-modal fashion) or a color information structure (if the program is called in modal or blocking fashion). The color information structure is an anonymous structure defined like this: struct = { R: BytArr(!D.Table_Size), $ ; The current R color vector. G: BytArr(!D.Table_Size), $ ; The current G color vector. B: BytArr(!D.Table_Size), $ ; The current B color vector. NAME: "", $ ; The name of the current color table. INDEX: 0, $ ; The index number of the current color table. TYPE: "", $ ; The type of color table (e.g, BREWER or IDL). REVERSED: 0B } ; Set to 1 if the color table is reversed. If a pointer to the structure is obtained, you will be responsible for freeing it to prevent memory leakage: XColors, ColorInfo=colorInfoPtr Print, "Color Table Name: ", (*colorInfoPtr).Name Ptr_Free, colorInfoPtr Note that that Name field will be "Unknown" and the Index field will be -1 until a color table is actually selected by the user. You are responsible for checking this value before you use it. When called in modal or blocking fashion, you don't have to worry about freeing the pointer, since no pointer is involved: XColors, /Block, ColorInfo=colorInfoData Help, colorInfoData, /Structure Print, "Color Table Name: ", colorInfoData.Name DATA: This keyword can be set to any valid IDL variable. If the variable is defined, the specified object method or notify procedure will be passed this variable via a DATA keyword. This keyword is defined primarily so that Notify Procedures are compatible with the XLOADCT way of passing data. It is not strictly required, since the _EXTRA keyword inheritance mechanism will allow passing of *any* keyword parameter defined for the object or procedure that is to be notified. DRAG: Set this keyword if you want colors loaded as you drag the sliders. Default is to update colors only when you release the sliders. Use of this keyword is greatly discouraged. _EXTRA: This keyword inheritance mechanism will pick up and pass along to any method or procedure to be notified and keywords that are defined for that procedure. Note that you should be sure that keywords are spelled correctly. Any mis-spelled keyword will be ignored. FILE: A string variable pointing to a file that holds the color tables to load. The normal colors1.tbl file is used by default. GROUP_LEADER: The group leader for this program. When the group leader is destroyed, this program will be destroyed. INDEX: The index of the color table to start up. If provided, a color table of this index number is loaded prior to display. Otherwise, the current color table is used. Set this keyword if you wish to have the index number of the event structure correct when the user CANCELs out of the progam. MODAL: Set this keyword (along with the GROUP_LEADER keyword) to make the XCOLORS dialog a modal widget dialog. Note that NO other events can occur until the XCOLORS program is destroyed when in modal mode. NCOLORS: This is the number of colors to load when a color table is selected. NOSLIDERS: If this keyword is set, the color stretch and color gamma sliders are not displayed. This would be appropriate, for example, for programs that just load pre-defined color tables. NOTIFYID: A 2-column by n-row array that contains the IDs of widgets that should be notified when XCOLORS loads a color table. The first column of the array is the widgets that should be notified. The second column contains IDs of widgets that are at the top of the hierarchy in which the corresponding widgets in the first column are located. (The purpose of the top widget IDs is to make it possible for the widget in the first column to get the "info" structure of the widget program.) An XCOLORS_LOAD event will be sent to the widget identified in the first column. The event structure is defined like this: event = {XCOLORS_LOAD, ID:0L, TOP:0L, HANDLER:0L, $ R:BytArr(!D.TABLE_SIZE < 256), G:BytArr(!D.TABLE_SIZE < 256), $ B:BytArr(!D.TABLE_SIZE < 256), INDEX:0, NAME:""} The ID field will be filled out with NOTIFYID[0, n] and the TOP field will be filled out with NOTIFYID[1, n]. The R, G, and B fields will have the current color table vectors, obtained by exectuing the command TVLCT, r, g, b, /Get. The INDEX field will have the index number of the just-loaded color table. The name field will have the name of the currently loaded color table. Note that XCOLORS can't initially tell *which* color table is loaded, since it just uses whatever colors are available when it is called. Thus, it stores a -1 in the INDEX field to indicate this "default" value. Programs that rely on the INDEX field of the event structure should normally do nothing if the value is set to -1. This value is also set to -1 if the user hits the CANCEL button. (Note the NAME field will initially be "Unknown"). Typically the XCOLORS button will be defined like this: xcolorsID = Widget_Button(parentID, Value='Load New Color Table...', $ Event_Pro='Program_Change_Colors_Event') The event handler will be written something like this: PRO Program_Change_Colors_Event, event ; Handles color table loading events. Allows colors be to changed. Widget_Control, event.top, Get_UValue=info, /No_Copy thisEvent = Tag_Names(event, /Structure_Name) CASE thisEvent OF 'WIDGET_BUTTON': BEGIN ; Color table tool. XColors, NColors=info.ncolors, Bottom=info.bottom, $ Group_Leader=event.top, NotifyID=[event.id, event.top] ENDCASE 'XCOLORS_LOAD': BEGIN ; Update the display for 24-bit displays. Device, Get_Visual_Depth=thisDepth IF thisDepth GT 8 THEN BEGIN WSet, info.wid ...Whatever display commands are required go here. For example... TV, info.image ENDIF ENDCASE ENDCASE Widget_Control, event.top, Set_UValue=info, /No_Copy END NOTIFYOBJ: A vector of structures (or a single structure), with each element of the vector defined as follows: struct = {XCOLORS_NOTIFYOBJ, object:Obj_New(), method:''} where the Object field is an object reference, and the Method field is the name of the object method that should be called when XCOLORS loads its color tables. ainfo = {XCOLORS_NOTIFYOBJ, a, 'Draw'} binfo = {XCOLORS_NOTIFYOBJ, b, 'Display'} XColors, NotifyObj=[ainfo, binfo] Note that the XColors program must be compiled before these structures are used. Alternatively, you can put this program, named "xcolors_notifyobj__define.pro" (*three* underscore characters in this name!) in your PATH: PRO XCOLORS_NOTIFYOBJ__DEFINE struct = {XCOLORS_NOTIFYOBJ, OBJECT:Obj_New(), METHOD:''} END Or, you can simply define this structure as it is shown here in your code. "Extra" keywords added to the XCOLORS call are passed along to the object method, which makes this an alternative way to get information to your methods. If you expect such keywords, your methods should be defined with an _Extra keyword. If you set the /OBJECT_DATA keyword, write your XColors notification routine with an XCOLORS_INFO keyword. This will return the same structure defined for the COLORINFO keyword above to your object method. NOTIFYPRO: The name of a procedure to notify or call when the color tables are loaded. If the DATA keyword is also defined, it will be passed to this program via an DATA keyword. But note that *any* keyword appropriate for the procedure can be used in the call to XCOLORS. For example, here is a procedure that re-displays and image in the current graphics window: PRO REFRESH_IMAGE, Image=image, _Extra=extra, WID=wid IF N_Elements(wid) NE 0 THEN WSet, wid TVIMAGE, image, _Extra=extra END This program can be invoked with this series of commands: IDL> Window, /Free IDL> TVImage, image, Position=[0.2, 0.2, 0.8, 0.8] IDL> XColors, NotifyPro='Refresh_Image', Image=image, WID=!D.Window Note that "extra" keywords added to the XCOLORS call are passed along to your procedure, which makes this an alternative way to get information to your procedure. If you expect such keywords, your procedure should be defined with an _Extra keyword as illustrated above. OBJECT_DATA: Set this keyword if you wish color information to be supplied to your object notification method via an XCOLORS_DATA keyword. This keyword is ignored unless the NOTIFYOBJ keyword is also used. The color information is supplied as a structure and is defined in the COLORINFO keyword definition above. REVERSE: If this keyword is set, the color table is reversed and the Reverse Color Table button is set on. TITLE: This is the window title. It is "Load Color Tables" by default. The program is registered with the name 'XCOLORS:' plus the TITLE string. The "register name" is checked before the widgets are defined. If a program with that name has already been registered you cannot register another with that name. This means that you can have several versions of XCOLORS open simultaneously as long as each has a unique title or name. For example, like this: IDL> XColors, NColors=100, Bottom=0, Title='First 100 Colors' IDL> XColors, NColors=100, Bottom=100, Title='Second 100 Colors' XOFFSET: This is the X offset of the program on the display. The program will be placed approximately in the middle of the display by default. YOFFSET: This is the Y offset of the program on the display. The program will be placed approximately in the middle of the display by default. COMMON BLOCKS: None. SIDE EFFECTS: Colors are changed. Events are sent to widgets if the NOTIFYID keyword is used. Object methods are called if the NOTIFYOBJ keyword is used. This program is a non-blocking widget. RESTRICTIONS: None. EXAMPLE: To load a color table into 100 colors, starting at color index 50 and send an event to the widget identified at info.drawID in the widget heirarchy of the top-level base event.top, type: XCOLORS, NCOLORS=100, BOTTOM=50, NOTIFYID=[info.drawID, event.top] MODIFICATION HISTORY: Written by: David W. Fanning, 15 April 97. Extensive modification of an older XCOLORS program with excellent suggestions for improvement by Liam Gumley. Now works on 8-bit and 24-bit systems. Subroutines renamed to avoid ambiguity. Cancel button restores original color table. 23 April 1997, added color protection for the program. DWF 24 April 1997, fixed a window initialization bug. DWF 18 June 1997, fixed a bug with the color protection handler. DWF 18 June 1997, Turned tracking on for draw widget to fix a bug in TLB Tracking Events for WindowsNT machines in IDL 5.0. DWF 20 Oct 1997, Changed GROUP keyword to GROUP_LEADER. DWF 19 Dec 1997, Fixed bug with TOP/BOTTOM reversals and CANCEL. DWF. 9 Jun 1998, Fixed bug when using BOTTOM keyword on 24-bit devices. DWF 9 Jun 1998, Added Device, Decomposed=0 for TrueColor visual classes. DWF 9 Jun 1998, Removed all IDL 4 compatibility. 21 Oct 1998, Fixed problem with gamma not being reset on CANCEL. DWF 5 Nov 1998. Added the NotifyObj keyword, so that XCOLORS would work interactively with objects. DWF. 9 Nov 1998. Made slider reporting only at the end of the drag. If you want continuous updating, set the DRAG keyword. DWF. 9 Nov 1998. Fixed problem with TOP and BOTTOM sliders not being reset on CANCEL. DWF. 10 Nov 1998. Fixed fixes. Sigh... DWF. 5 Dec 1998. Added INDEX field to the XCOLORS_LOAD event structure. This field holds the current color table index number. DWF. 5 Dec 1998. Modified the way the colorbar image was created. Results in greatly improved display for low number of colors. DWF. 6 Dec 1998. Added the ability to notify an unlimited number of objects. DWF. 12 Dec 1998. Removed obsolete Just_Reg keyword and improved documetation. DWF. 30 Dec 1998. Fixed the way the color table index was working. DWF. 4 Jan 1999. Added slightly modified CONGRID program to fix floating divide by zero problem. DWF 2 May 1999. Added code to work around a Macintosh bug in IDL through version 5.2 that tries to redraw the graphics window after a TVLCT command. DWF. 5 May 1999. Restore the current window index number after drawing graphics. Not supported on Macs. DWF. 9 Jul 1999. Fixed a couple of bugs I introduced with the 5 May changes. Sigh... DWF. 13 Jul 1999. Scheesh! That May 5th change was a BAD idea! Fixed more bugs. DWF. 31 Jul 1999. Substituted !D.Table_Size for !D.N_Colors. DWF. 1 Sep 1999. Got rid of the May 5th fixes and replaced with something MUCH simpler. DWF. 14 Feb 2000. Removed the window index field from the object notify structure. DWF. 14 Feb 2000. Added NOTIFYPRO, DATA, and _EXTRA keywords. DWF. 20 Mar 2000. Added MODAL, BLOCK, and COLORINFO keywords. DWF 20 Mar 2000. Fixed a slight problem with color protection events triggering notification events. DWF. 31 Mar 2000. Fixed a problem with pointer leakage on Cancel events, and improved program documentation. DWF. 17 Aug 2000. Fixed a problem with CANCEL that occurred only if you first changed the gamma settings before loading a color table. DWF. 10 Sep 2000. Removed the requirement that procedures and object methods must be written with an _Extra keyword. DWF. 5 Oct 2000. Added the File keyword to LOADCT command, as I was suppose to. DWF. 5 Oct 2000. Now properly freeing program pointers upon early exit from program. DWF. 7 Mar 2001. Fixed a problem with the BLOCK keyword. DWF. 12 Nov 2001. Renamed Congrid to XColors_Congrid. DWF. 14 Aug 2002. Moved the calculation of NCOLORS to after the draw widget creation to fix a problem with !D.TABLE_SIZE having a correct value when no windows had been opened in the current IDL session. DWF. 14 Aug 2002. Fixed a documentation problem in the NOTIFYID keyword documentation that still referred to !D.N_COLORS instead of the current !D.TABLE_SIZE. DWF. 27 Oct 2003. Added INDEX keyword. DWF. 29 July 2004. Fixed a problem with freeing colorInfoPtr if it didn't exist. DWF. 5 December 2005. Added NOSLIDERS keyword and performed some small cosmetic changes. DWF. 27 Sep 2006. Fixed a problem in which XCOLORS set device to indexed color mode. DWF. 14 May 2008. Added ability to read the Brewer Color Table file, if available. DWF 8 July 2008. Small change in how the program looks for the Brewer file. DWF. 1 October 2008. Added a button to switch from either BREWER color tables to IDL color tables, depending upon which is showing currently. The button ONLY appears if the file fsc_brewer.tbl can be found somewhere in the IDL distribution. DWF. 7 October 2008. Whoops! The 1 Oct change wasn't as simple as that. Fixed problems with destroy and restarting the program with respect to keywords that are set, etc. DWF. 12 October 2008. Changed license to BSD Open Software License. DWF. 21 October 2008. Found a problem with MODAL operations that I fixed. However, that led to problems with how I was switching from IDL to Brewer colors and visa versa, so I changed that mechanism, too. 21 October 2008. Added OBJECT_DATA keyword so that I can get additional information about the state of the color table tool into object methods. DWF. 12 April 2009. Add REVERSE keyword and Reverse Color Table button. DWF. 28 April 2009. In looking for a Brewer color table file, I replaced all FILE_WHICH commands with FIND_RESOURCE_FILE commands. DWF.
Source: src/idl_cvs/xeasyanim.pro
src/idl_cvs/xeasyanim.pro
NAME: XeasyAnim PURPOSE: animate 3-D array and optionally make MPEG Movie CATEGORY: Animation, MPEG KEYWORDS: nreps - number of frames to repeat when creating mpeg (1 means no dups) xSize - ySize - rate - MAX_COLORS_TO_USE - magnification - xpos - ypos - colortable - color table for movie ctbFile - color table file (for personal color tables) noLoad - if set, do not load any color table SCALEEACHFRAME - bottom - if set, then position window at bottom of screen despeckle - XWIN - YWIN - STDEV_MULT ctbfile - color table file (for personal color tables) EXAMPLE: IDL> Array3D_In = [DIST(200,200),DIST(200,200)*1.2,DIST(200,200)*1.4] IDL> Array3D_In = bytscl(reform( Array3D_In, 200, 200, 3 )) IDL> XEasyAnim, Array3D_In, /bottom you may wish to the following: IDL> dum=MK_COLOR(N_NONFIXED=ncolors) IDL> Array3D = BYTSCL( Array3D, TOP=ncolors ) IDL> XEasyAnim, Array3D Modifications: 12-May-2008 added noLoad and ctbFile keywords 02-Aug-2007 add gamma keyword [BD] 02-May-06 added nreps keyword 14-Apr-06 added xpos & ypos keywords 06-Mar-02 Added printing, resizing of array, added despeckling [BD]
Source: src/idl_cvs/xfont_4.pro
src/idl_cvs/xfont_4.pro
NAME: XFONT_4 PURPOSE: XFONT_4 is a modal widget for selecting and viewing an X Windows font. CATEGORY: Widgets, Fonts CALLING SEQUENCE: Selected_font = XFONT_4() INPUTS: No explicit inputs. KEYWORD PARAMETERS: GROUP: The widget ID of the widget that calls XFONT_4. When this ID is specified, a death of the caller results in a death of XFONT_4. PRESERVE: If set, XFONT_4 saves the server font directory in common blocks so that subsequent calls to XFONT_4 start-up much faster. If not set, the common block is cleaned. OUTPUTS: A string containing the font name. If nothing is selected, or the CANCEL button is pressed, a null string is returned. COMMON BLOCKS: XFONT_4_COM. SIDE EFFECTS: Initiates the XManager if it is not already running. Resets the current X Window font. RESTRICTIONS: The current X window font is manipulated without being restored. PROCEDURE: Create and register the widget and then exit. MODIFICATION HISTORY: Modified from a template written by: Hans-Joachim Bothe, CreaSo GmbH, November, 1991, by DMS, RSI, November, 1992. 1 July 1995, AB, Fixed sizing of toggle buttons.
Source: src/idl_cvs/xia.pro
src/idl_cvs/xia.pro
NAME: XIA PURPOSE: Display an animated sequence of images using X-windows Pixmaps. The speed and direction of the display can be adjusted using the widget interface. CATEGORY: Animation, Image display, widgets. CALLING SEQUENCE: To initialize: XIA, SET = [Sizex, Sizey, Nframes] To load a single image: XIA, IMAGE = Image, FRAME = Frame_Index To load a single image that is already displayed in an existing window: XIA, FRAME = Frame_index, $ WINDOW = [Window_Number [, X0, Y0, Sx, Sy]] (This technique is much faster than reading back from the window.) To display the animation after all the images have been loaded: XIA [, Rate] To close and deallocate the pixmap/buffer (which also takes place automatically when the user presses the "Done With Animation" button or closes the window with the window manager): XIA, /CLOSE OPTIONAL INPUTS: Rate: A value between 0 and 100 that represents the speed of the animation as a percentage of the maximum display rate. The fastest animation is with a value of 100 and the slowest is with a value of 0. The default animation rate is 100. The animation must be initialized using the SET keyword before calling XIA with a rate value. KEYWORD PARAMETERS: BOTTOM: If set, window will be at bottom of screen or parent window CLOSE: Set this keyword to delete the offscreen pixwins and Widget, freeing storage. CYCLE: If set, cycle. Normally, frames are displayed going either forward or backwards. If CYCLE is set, reverse direction after the last frame in either direction is displayed. Provide this keyword with the SET keyword. FRAME: The frame number when loading frames. This keyword only has an effect when used in conjunction with the SET keyword. FRAME must be set to a number in the range 0 to Nframes-1. GROUP: The widget ID of the widget that calls XIA. When this ID is specified, the death of the caller results in the death of XIA. IMAGE: A single image to be loaded at the animation position given by FRAME. The keyword parameter FRAME must also be specified. KEEP_PIXMAPS: If TRUE, XIA doesn't destroy the animation pixmaps when it is killed. Calling it again without going through the SET and LOAD steps will cause the same animation to play without the overhead of creating the pixmaps. BLOCK: Set this keyword to have XMANAGER block when this application is registered. By default the Xmanager keyword NO_BLOCK is set to 1 to provide access to the command line if active command line processing is available. Note that setting BLOCK for this application will cause all widget applications to block, not only this application. For more information see the NO_BLOCK keyword to XMANAGER. ORDER: Set this keyword to display images from the top down instead of the default bottom up. This keyword is only used when loading images. MODAL: If set, then XIA runs in "modal" mode, meaning that all other widgets are blocked until the user quits XIA. MPEG_FILENAME: Set this keyword equal to a string for the desired MPEG filename. If not set, idl.mpg is used. MPEG_CLOSE: Set this keyword to write the MPEG file. NREPS - number of frames to repeat when creating mpeg (1 means no dups) SHOWLOAD: Set this keyword (in conjunction with the SET keyword) to display each frame and update the frame slider as frames are loaded. SET: This keyword initializes XIA. SET should be equated to a 3-element integer vector containing the following parameters: Sizex, Sizey: The width and height of the images to be displayed, in pixels. Nframes: The number of frames in the animated sequence (since XIA is an animation routine, Nframes must be at least 2 frames). TITLE: A string to be used as the title of the widget. If this keyword is not specified, the title is set to "XIA" This keyword has an effect only when used in conjunction with the SET keyword). TRACK: If set, the frame slider tracks the current frame. Default is not to track. Provide this keyword with the SET keyword. WINDOW: When this keyword is specified, an image is copied from an existing window to the animation pixmap. When using X windows, this technique is much faster than reading from the display and then calling XIA with a 2D array. The value of this parameter is either an IDL window number (in which case the entire window is copied), or a vector containing the window index and the rectangular bounds of the area to be copied, for example: WINDOW = [Window_Number, X0, Y0, Sx, Sy] XOFFSET: The horizontal offset, in pixels from the left of the frame, of the image in the destination window. YOFFSET: The vertical offset, in pixels from the bottom of the frame, of the image in the destination window. OUTPUTS: No explicit outputs. COMMON BLOCKS: XIA_COM: a private common block. SIDE EFFECTS: A pixmap and widget are created. RESTRICTIONS: Only a single copy of XIA can run at a time. PROCEDURE: When initialized, this procedure creates an approximately square pixmap or memory buffer, large enough to contain Nframes of the requested size. Once the images are loaded, using the IMAGE and FRAME keywords, they are displayed by copying the images from the pixmap or buffer to the visible draw widget. EXAMPLE: Enter the following commands to open the file ABNORM.DAT (a series of images of a human heart) and animate the images it contains using XIA. For a more detailed example of using XIA, see the example in the "Using IDL Widgets" chapter of "IDL Basics". Read the images into the variable H by entering: OPENR, 1, FILEPATH('abnorm.dat', SUBDIR = 'examples/data') H = BYTARR(64, 64, 16) READU, 1, H CLOSE, 1 H = REBIN(H, 128, 128, 16) XIA, SET=[128, 128, 16], /SHOWLOAD FOR I=0,15 DO XIA, FRAME = I, IMAGE = H[*,*,I] XIA MODIFICATION HISTORY: 02-May-06 added nreps keyword 14-Apr-06 added xpos & ypos, bottom & right keywords 02-Aug-01 modified XInterAnimate to have printing [Bill Davis]
Source: src/idl_cvs/xpc.pro
src/idl_cvs/xpc.pro
NAME: XPC PURPOSE: This function allows to interactively pick a plot file. It will be plotted in a separate gv window. CATEGORY: Widgets. CALLING SEQUENCE: XPC KEYWORD PARAMETERS: scratchDir - defaults to /u/$USER/tmpdir (or value of $TMPDIR) programs running on different computers will have differnt areas. This must be the same used by the plotting-control software, setup_xpc.pro. NODELETE - if set, files in sractchDir (from previous invocation) are not deleted when application is started. TITLE: A scalar string to be used for the window title. GROUP: The widget ID of the widget that calls xpc. When this ID is specified, a death of the caller results in the death of the xpc widget application. NFILES - # of files to show at one time in window (def=10) filter - search filter for plots to show in window (def=XPC_*.ps) psPlotFile - file with plotting application keeps plotting (def=scratchDir+'/GV2plot.ps') psApp - file plotting application (def="gv") appSwitch - switch for file plotting application (def="--watch") updateTime - time in seconds between checks to see if list needs refreshed (def=0.5) ext - file extensions to look for (def='ps') OUTPUTS: Copies selected file to /GV2plot.ps, which "gv --watch" is looking for to plot. OPTIONAL ENVIRONMENTAL VARIABLES: USER - username. TMPDIR - default to '$USER/.XPC' XPC_SCRATCH - directory for postscript files; defaults to $TMPDIR/XPC_scratch/ XPC_SCRATCH_NFILES - if not found, defaults to 10 files (these are postscript filesand are not deleted when the program exits) PROCEDURE: a program that plots like: IDL> setup_xpc IDL> plot, indgen(111) IDL> ... IDL> unsetup_xpc ; graphics won't show up until this is called setup_xpc will startup XPC, if not running, which will, in turn, startup gv if it is not running on the same computer. Unfortunately, it is not easy to tell if XPC is running on the same computer in another IDL process. the postscript file written to in the above example is GV2buffer.ps (by default). When XPC sees one of these, it copies it to GV2plot.ps, so gv automatically replots it, and renames it to XPC_nnn.ps, where nnn is one more than the highest number of the files XPC_*.ps. NOTES: You probably want the following line in your ~/.Xresources file to get the gv program to refresh ever 1/2 second (default is every 1 second): gv.watchFileFrequency: 501 this will make gv check for file changes ever 501 ms, rather than 1000 ms. The Help display will tell you how to get color buttons in this widget. RESTRICTIONS: xpc only works on Linux/Unix systems where gv is in the PATH. Only one copy per user can be running on a computer, since it uses /local/$USER/tmpdir for the scratch files (though this can be be overridden by setting the ENVIRONMENTAL variable XPC_SCRATCH). MODIFICATION HISTORY: 20-Aug-2013 exclude searches for gv that include libexec 09-Jul-2011 don't use /local, so can be used from different computers 18-Nov-2009 Written by Bill Davis for Eric Fredrickson
Source: src/idl_cvs/xsectionw.pro
src/idl_cvs/xsectionw.pro
NAME: xsectionw PURPOSE: Widget to display an image and x-y plots of cross-sections. Color palettes may be loaded, adjusted and saved. Images can be saved as 'jpg','tif','tif','bmp','jpeg,'png', 'ppm', 'pgm', or 'gif' CATEGORY: Image Processing, 2-D Plotting, Files, Graphics CALLING SEQUENCE: IDL> xsectionw[[, image], x, y] INPUTS: image - a 2D array. If missing, and Keyword Filename not specified, a dialog box will appear allowing browsing for a TIFF image. x & y are optional inputs for x & y axes. Must be same dimension as image. KEYWORD PARAMETERS: (optional) filename - file to read (can be type 'jpg','tif','tif','bmp', 'jpeg,'png','ppm', 'pgm', or 'gif') xvals - optional values for X axis yvals - optional values for Y axis title - title to display at top of plot (Defaults to filename, if relevant) xsize - horizontal size of window (default is 0.75 of screen, but > 800) ysize - vertical size of window xoffset - initial horizontal offset of the widget (DEFAULT=0) yoffset - initial vertical offset of the widget (DEFAULT=30) INTERP - if magnification set, INTERP=1 will cause interpolation, rather than pixel replication. max_colors - # used by display (Default is 256) NOLOAD - if set, do not load color table colorTable - color table to use. Default is 03 (Hot Metal) NoCont - if set, no contours are drawn (default) file - color table file (for personal color tables) (other keywords to th_image_cont.pro may be included) GROUP_LEADER - Group_Leader ID OUTPUTS: none. COMMON BLOCKS: none ROUTINES USED: MK_COLOR, usingXwindows, NWORDS, FLIP EXAMPLE: IDL> xsectionw, dist(200,200) For serious testing of zooming, etc.: IDL> x=findgen(120)/120 IDL> y=findgen(50)*!PI IDL> d=sin(x*6+1)#cos(y/20+2) IDL> d[20:30,*]=-2 IDL> d[*,35:40]=.5 IDL> d=d*1000 IDL> d=d-min(d) IDL> th_image_cont,d,x,y IDL> xsectionw,d,x,y NOTES: If you specify max_colors to be something other than 256, and want to change color tables, you need to do something like: IDL> dum=MK_COLOR( table=3 ) Using XLOADCT, etc. won't work well, since it loads 256 colors. MODIFICATION HISTORY: 23-Sep-2013 increase left margin when y-axis has exponents. Added /drag to xcolors call, so colors updated when drag slider 22-Oct-2010 Fixed a couple of bugs opening new images 05-Jan-2010 Default to just red component for true color images, but COMPONENT keyword added to override this. 18-Aug-2009 fixed bug in zooming 24-Jun-2009 added xrange, yrange, and zrange keywords 30-Sep-2008 just use channel 0 of 24-bit images 14-Jul-2008 Handle 24-bit color images (poorly, but doesn't bomb) 25-Apr-07 Added more modify color table options, and option to save color table. Support more kinds of image files. Can set background color from menu. Can save image or window to files. Added Median Smoothing opt 25-May-06 added noload keyword 02-May-06 fixed x-y plot axis limits when zoomed in 12-Apr-06 added x & y keywords, and made to work with resizing and drawing box 03-Feb-03 Option to force lines to black or white 11-Dec-01 Written by Bill Davis, PPPL
Source: src/idl_cvs/xvaredit.pro
src/idl_cvs/xvaredit.pro
NAME: XVAREDIT PURPOSE: This routine provides an editor for any IDL variable. CATEGORY: Widgets CALLING SEQUENCE: XVAREDIT, VAR INPUTS: VAR = The variable that is to be edited. KEYWORD PARAMETERS: NAME = The NAME of the variable. This keyword is overwritten with the structure name if the variable is a structure. GROUP = The widget ID of the widget that calls XVarEdit. When this ID is specified, a death of the caller results in a death of XVarEdit. X_SCROLL_SIZE = The X_SCROLL_SIZE keyword allows you to set the width of the scrolling viewport in columns. Default is 4. Y_SCROLL_SIZE = The Y_SCROLL_SIZE keyword allows you to set the height of the scrolling viewport in rows. Default is 4. OUTPUTS: VAR= The variable that has been edited, or the original when the user selects the "Cancel" button in the editor. COMMON BLOCKS: None. SIDE EFFECTS: Initiates the XManager if it is not already running. RESTRICTIONS: None known. PROCEDURE: Create and register the widget and then exit. If the user selects "accept", the values in the editor are written to the variable passed in, otherwise, they are ignored. MODIFICATION HISTORY: Written by: Steve Richards, February, 1991 Modified: September 96, LP - rewritten with TABLE widget 07-Oct-98 BD Took out check for "commit" because it was always wrong.
Source: src/idl_cvs/xy2rmrsep.pro
src/idl_cvs/xy2rmrsep.pro
NAME: XY2RmRsep PURPOSE: transform pixel locations (say, from a Fast 2-D Camera image) to distance from the Separatrix and distance along field line parallel to flux lines CATEGORY: Plasma Analysis CALLING SEQUENCE: IDL> XY2RmRsep, shot, time, RmRsep, DistAlong INPUTS: shot = NSTX or CMOD shot number time = time in seconds after shot for which values are desired KEYWORD PARAMETERS: Inputs: fit - EFIT/LRDFIT indication, e.g., EFIT02 timeOffset - time to add to input time to be consistant with EFIT time show - if set, plot, separatrix, and distance values nx = # of pixels in X direction (default=64) ny = # of pixels in Y direction (default=64 if shot # for CMOD, else 80) cm - if set, distances will be in centimeters, rather than pixels verbose - if set, will print many informational messages debug - if set, debug output will be printed Outputs: status - if odd, then success OUTPUTS: RmRsep - distance from the Separatrix in pixels DistAlong - distance along field line from lower left, in pixels EXAMPLE: IDL> time = .2 ; in seconds IDL> shot = 1100824017 IDL> shot = 138234 IDL> XY2RmRsep, shot, time, RmRsep, DistAlong MODIFICATION HISTORY: WRITTEN 21-Jun-2012 by Bill Davis, PPPL, for Stewart Zweben
Source: src/idl_cvs/xyanim.pro
src/idl_cvs/xyanim.pro
NAME: xyanim PURPOSE: Animate a series of X-Y plots. Makes an animation in a XINTERANIMATE window. An MPEG file can then be saved, or the movie can be played with VCR-like controls CATEGORY: Animation CALLING SEQUENCE: IDL> xyanim, Radii, YvsT, times, xSize=xSize, ySize=ySize INPUTS: Radii - 1-D array of Radii (for example) YvsT - 2-D array of Independent axis vs. time times - times for which an x-y plot will be made (defaults to 1/frame) KEYWORD PARAMETERS: Keywords: xSize - x size of resulting output frame (default=400) ySize - y size of resulting output frame (default=xSize) OUTPUTS: just the XinterAnimate window. MPEGs can be made from that widget. COMMON BLOCKS: NONE EXAMPLE: See /u/bdavis/cvs/idl_cvs/testxyanim.pro MODIFICATION HISTORY: 12-Jun-01 Written by Bill Davis, PPPL
Source: src/idl_cvs/x_complain.pro
src/idl_cvs/x_complain.pro
NAME: X_COMPLAIN PURPOSE: Pops up a one line complaint. CATEGORY: MDS-Widgets CALLING SEQUENCE: X_COMPLAIN,message INPUTS: message - text to display COMMON BLOCKS: None. SIDE EFFECTS: PROCEDURE: MODIFICATION HISTORY:
Source: src/idl_cvs/yaxisw.pro
src/idl_cvs/yaxisw.pro
NAME: yAxisW PURPOSE: Widget to set some Y Axis values via the system variable !Y CATEGORY: Graphics, Widgets CALLING SEQUENCE: IDL> yAxisW INPUTS: input = whatever. KEYWORD PARAMETERS: Optional Keywords: UPDATECALLBACK - a routine to call after axis system variable is set GROUP_LEADER - This widget is destroyed if it's GL is destroyed OUTPUTS: The system variable !Y is changed out COMMON BLOCKS: NONE EXAMPLE: IDL> yAxisW, UPDATECALLBACK='myAxisUpdating' NOTES: If an application overrides !Y.* parameters, or specifies them on the plot command, changing settings with this widget will have no affect. MODIFICATION HISTORY: 29-Apr-08 check for routine being compiled (vs. needing to be found) added a "Refresh" button which, if a proper plotting routine is provided, will replot with any changed settings. 08-Dec-04 Removed callback test because of compiling on PC 22-Jan-01 Added Default and Auto Scale buttons [BD] 28-Sep-00 Correct the display of initial values [BD] 20-Sep-00 Added TickLen & GridStyle fields [BD] 30-Mar-99 Written by Bill Davis, PPPL
Source: src/idl_cvs/ymd2date.pro
src/idl_cvs/ymd2date.pro
NAME: YMD2DATE PURPOSE: Convert from year, month, day numbers to date string. CATEGORY: Dates CALLING SEQUENCE: date = ymd2date(Y,M,D) INPUTS: y = year number (like 1986). in m = month number (1 - 12). in d = day of month number (1 - 31). in KEYWORD PARAMETERS: Keywords: FORMAT = format string. Allows output date to be customized. The following substitutions take place in the format string: Y$ = 4 digit year. y$ = 2 digit year. N$ = full month name. n$ = 3 letter month name. m$ = 2 digit month number. d$ = day of month number. 0d$ = day of month number with leading 0 if < 10. W$ = full weekday name. w$ = 3 letter week day name. dateStr - alternate input, like '20070931' OUTPUTS: date = returned date string (like 24-May-1986). out COMMON BLOCKS: NOTES: Notes: The default format string is 'd$-n$-Y$' giving 24-Sep-1989 Example: FORMAT='w$ N$ d$, Y$' would give 'Mon MODIFICATION HISTORY: 19-Mar-2010 fixed bug for $m meaning minutes in called routines 17-Aug-2009 added $m option so can get dates like 17-8-2009. 28-NOV-2007 Added DateStr keyword [ Bill Davis, PPPL ] ... RES 18 Sep, 1989 --- converted to SUN R. Sterner. 16 Jul, 1986. Johns Hopkins University Applied Physics Laboratory. Copyright (C) 1986, Johns Hopkins University/Applied Physics Laboratory This software may be used, copied, or redistributed as long as it is not sold and this copyright notice is reproduced on each copy made. This routine is provided as is without any express or implied warranties whatsoever. Other limitations apply as described in the file disclaimer.txt.
Source: src/idl_cvs/ymd2jd.pro
src/idl_cvs/ymd2jd.pro
NAME: YMD2JD PURPOSE: From Year, Month, and Day compute Julian Day number. CATEGORY: Dates CALLING SEQUENCE: jd = ymd2jd(y,m,d) INPUTS: y = Year (like 1987). in m = month (like 7 for July). in d = month day (like 23). in KEYWORD PARAMETERS: OUTPUTS: jd = Julian Day number (like 2447000). out COMMON BLOCKS: NOTES: MODIFICATION HISTORY: R. Sterner, 23 June, 1985 --- converted from FORTRAN. Johns Hopkins University Applied Physics Laboratory. RES 18 Sep, 1989 --- converted to SUN Copyright (C) 1985, Johns Hopkins University/Applied Physics Laboratory This software may be used, copied, or redistributed as long as it is not sold and this copyright notice is reproduced on each copy made. This routine is provided as is without any express or implied warranties whatsoever. Other limitations apply as described in the file disclaimer.txt.
Source: src/idl_cvs/yrmonthday.pro
src/idl_cvs/yrmonthday.pro
NAME: yrmonthday PURPOSE: Return a string of YYYYMMDD from a date string. CATEGORY: Dates CALLING SEQUENCE: IDL> dateNumberString = yrmonthday(dateString) INPUTS: dateString = date in one of these formats: '7-jun-2001' 'Mon Jan 14 15:22:05 2002' '08Aug2002' 'Jun 30 2005' (defaults to today) OUTPUTS: dateNumberString = 8-character string of numbers: YYYYMMDD KEYWORDS time - returns time like 08:41:55 year - year number as string month - month number as string day - day number as string EXAMPLE: IDL> print,yrmonthday() 20020114 IDL> print,yrmonthday('5-jun-2001') 20010605 NOTES: MODIFICATION HISTORY: 19-Nov-2009 fixed bug returning month number 31-Mar-06 allow form of 'Jun 30 2005' or 'June 30, 2005' 16-Nov-04 added time keyword 15-Jan-02 Allow for 2-digit years 14-Jan-02 Written by Bill Davis, PPPL 15-Aug-02 Modified for UNIX date format by Stan Kaye
Source: src/idl_cvs/zaxisw.pro
src/idl_cvs/zaxisw.pro
NAME: zAxisW PURPOSE: Widget to set some Z Axis values via the system variable !Y CATEGORY: Graphics, Widgets CALLING SEQUENCE: IDL> zAxisW INPUTS: input = whatever. KEYWORD PARAMETERS: Optional Keywords: UPDATECALLBACK - a routine to call after axis system variable is set GROUP_LEADER - This widget is destroyed if it's GL is destroyed OUTPUTS: The system variable !Y is changed out COMMON BLOCKS: NONE EXAMPLE: IDL> zAxisW, UPDATECALLBACK='mzAxisUpdating' NOTES: If an application overrides !Z.* parameters, or specifies them on the plot command, changing settings with this widget will have no affect. MODIFICATION HISTORY: 17-Oct-00 Written by Bill Davis, PPPL