Source: src/idl_cvs/gamma_raise.pro
NAME:
GAMMA_RAISE
PURPOSE:
Apply gamma correction to an array, presumably an image.
CATEGORY:
Image Processing.
CALLING SEQUENCE:
newImage = GAMMA_RAISE(image, Gamma)
INPUTS:
Gamma: The value of gamma correction. A value of 1.0 indicates a
linear ramp, i.e., no gamma correction. Higher values of
gamma give more contrast. Values less than 1.0 yield lower
contrast.
KEYWORD PARAMETERS:
OUTPUTS:
A gamma-corrected image.
RESTRICTIONS:
None.
PROCEDURE:
The gamma correction is implemented as x^gamma.
MODIFICATION HISTORY:
Written 14-Jul-2008 by Bill Davis
Source: src/idl_cvs/gaussian.pro
NAME:
GAUSSIAN
PURPOSE:
Compute the 1-d Gaussian function and optionally the derivative
CATEGORY:
Math
EXPLANATION:
Compute the 1-D Gaussian function and optionally the derivative
at an array of points.
CALLING SEQUENCE:
y = gaussian( xi, parms,[ pderiv ])
INPUTS:
xi = array, independent variable of Gaussian function.
parms = parameters of Gaussian, 2 or 3 element array:
parms(0) = maximum value (factor) of Gaussian,
parms(1) = mean value (center) of Gaussian,
parms(2) = standard deviation (sigma) of Gaussian.
(if parms has only 2 elements then sigma taken from common).
OPTIONAL OUTPUT:
pderiv = optional output of partial derivatives,
computed only if parameter is present in call.
pderiv(*,i) = partial derivative at all xi absisca values
with respect to parms(i), i=0,1,2.
Function returns array of Gaussian evaluated at xi.
EXAMPLE:
Evaulate a Gaussian centered at x=0, with sigma=1, and a peak value
of 10 at the points 0.5 and 1.5. Also compute the derivative
IDL> f = gaussian( [0.5,1.5], [10,0,1], DERIV )
==> f= [8.825,3.25]. DERIV will be a 2 x 3 array containing the
numerical derivative at the two points with respect to the 3 parameters.
COMMON BLOCKS:
common gaussian, sigma
HISTORY:
Written, Frank Varosi NASA/GSFC 1992.
Converted to IDL V5.0 W. Landsman September 1997
Source: src/idl_cvs/getcmodefit.pro
NAME:
getCmodEfit
PURPOSE:
Get efit data from CMOD for separatrix and limiter locations
CATEGORY:
CMOD
CALLING SEQUENCE:
IDL>
INPUTS:
shot = CMOD shot number
KEYWORD PARAMETERS:
Inputs:
tree - MDSplus tree
verbose - if set, will print many informational messages
debug - if set, debug output will be printed
Outputs:
status - if odd, then success
OUTPUTS:
COMMON BLOCKS:
NONE
EXAMPLE:
IDL> getcmodefit, 1100824017, rbbbs=rbbbs, zbbbs=zbbbs, $
nbbbs=nbbbs, efitTimes=efitTimes ,/debug
NOTES:
MODIFICATION HISTORY:
29-Nov-2012 use connect_cmd
21-Dec-2011 Written by Bill Davis, PPPL
Source: src/idl_cvs/getefit.pro
NAME:
GETEFIT
PURPOSE:
Procedure to get efit data from A0 and G0 file or from MDSPLUS. This
can be used as a front end to the usual reada and readg. It prints
out a message if the efit data does not occur for the desired value
of DELTIME. It does not return any data unless time window
requirements are met.
CATEGORY:
EFIT
CALLING SEQUENCE:
getefit, shot, time, aaa, ggg [,DELTIME=DELTIME] $
[,ERR=ERR] [,MODE=MODE] [,runID=runID]
INPUTS:
shot shot number
time shot time (sec)
KEYWORDS:
DELTIME - maximum allowable time (sec) for the data to deviate from
time. If two values [t0,t1] are input, the time window is from
(time - t0) to (time + t1), otherwise, the time window is from
(time - t0) to (time + t0).
ERR - set to 0 for successful return of efit data; a non-zero
value means there was a problem getting the efit data
MODE - read a mode parameter, file or mdsplus
runID - choose EFIT01 (JT snap file) or EFIT02 (MSE snap file) from
MDSPlus efit data. Default is EFIT01, the non-MSE automatic
control room EFIT
OUTPUTS:
aaa structure from reada routine holds data from A0 file
ggg structure from readg routine holds data from G0 file
err error code returned from reada ok if err=0
RESTRICTIONS:
User can specify source of data as MDSPLUS or a file in the current
directory, or in a directory given by the environment variable
MY_EFIT_DIR.
PROCEDURE:
CODE TYPE: modeling, analysis, control
CODE SUBJECT: operation, edge, rf, transport, equilibrium, other
EASE OF USE: can be used with existing documentation
OPERATING SYSTEMS: UNIX of all flavors
EXTERNAL CALLS: READA, READG
TO TEST: IDL> getefit, 138000, 0.2, aaa, ggg
IDL> getefit, 141010, runID='LRDFIT06', 0.2, aaa, ggg
MODIFICATION HISTORY:
Created by Gary D. Porter
1998.10.20: Allow for data from a file or MDSPLus by G.D. Porter
1998.11.03: Change DELTIME check to allow for 2 values by R.A. Jong
1999.04.01: Added runID and removed BLESSED optional keywords
1999.05.06; Reset aaa.error=1 when our err parameter=1
2000.01.03; Change check on aaa.time and ggg.time to accept data if
both are in the acceptable time range, when not equal
2000.10.19; Do not cd to MY_EFIT_DIR and send message if mode=MDSPLUS
2001.10.16; Fix missing time_range flag in readg call (RAJ)
06-Aug-2010 [BD] adapted for NSTX for Jose Boedo (note EFIT times on NSTX are
in seconds, rather than milliseconds)
27-nov-2012 [BD] added aaa.shot and ggg.shot tags when getting LRDfit trees.
Source: src/idl_cvs/getfiletime.pro
NAME:
getfiletime
PURPOSE:
return creation date and time of a file
(not sure atime and ctime are right, for files from a PC)
CATEGORY:
Dates, files
CALLING SEQUENCE:
IDL> times = getfiletime(files=files)
INPUT KEYWORDS:
files - string array of filenames, needed unless list used
list - alternate way: filename containing a list of files
dir - if present, is prepended to filenames before finding
KEYWORD PARAMETERS:
print - if present, will print results
atime - access time in seconds since 1 January 1970 UTC
ctime - creation time in seconds since 1 January 1970 UTC
mtime - modification time in seconds since 1 January 1970 UTC
OUTPUTS:
times - string array of creation date and times of files,
e.g.,
COMMON BLOCKS:
NONE
EXAMPLE:
% /bin/ls -1 * > list.txt
idl
IDL> times = getfiletime( list='list.txt',/print )
camerasbig Tue Oct 2 11:35:37 2007
cpp Fri Nov 9 16:28:02 2007
dothis.csh Tue Oct 2 11:33:37 2007
...
NOTES:
MODIFICATION HISTORY:
03-Mar-2009 added atime, ctime & mtime keywords
16-Apr-2008 Written by Bill Davis, PPPL
Source: src/idl_cvs/getimage.pro
NAME:
GETIMAGE
PURPOSE:
The purpose of this function is to allow the user to open either
regular or XDR binary image files of two or three dimensions.
CATEGORY:
Image Processing, Widgets, File I/O
CALLING SEQUENCE:
image = GETIMAGE(filename)
INPUTS:
filename: The name of the file to open for reading.
KEYWORD PARAMETERS:
CANCEL: An output variable that can be set to a named variable.
The value of the return variable will be 1 if the user clicked
the "Cancel" button or if there was a problem reading the file.
DIRECTORY: The name of the directory the file is located in. By
default the program looks in the "training" directory under the
main IDL directory, if one exists. Otherwise, it defaults to the
current directory.
FRAMES: The 3rd dimension of a 3D data set. Defaults to 0.
HEADER: The size of any header information in the file in BYTES.
Default is 0.
PARENT: The group leader for this widget program. The PARENT is
required if GETIMAGE is called from another widget program.
XDR: Set this keyword if the binary file is of XDR type.
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.
XSIZE: The size of the 1st dimension of the data.
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.
YSIZE: The size of the 2nd dimension of the data.
COMMON BLOCKS:
None.
SIDE EFFECTS:
A "CANCEL" operation is indicated by a 0 return value.
Any error in reading the file results in a 0 return value.
RESTRICTIONS:
None.
EXAMPLE:
To load the image "galaxy.dat" in the $IDL/examples/data
directory, type:
image = GETIMAGE('galaxy.dat', DIRECTORY=!DIR + '/examples/data', $
XSIZE=256, YSIZE=256, Cancel=cancelled, Parent=event.top)
IF NOT cancelled THEN TV, image
MODIFICATION HISTORY:
Written by: David Fanning, 3 February 96.
Fixed bug that prevented reading INTEGER data. 19 Dec 96.
Modifed program for IDL 5 MODAL operation. 19 Oct 97.
Added CANCEL keyword. 27 Oct 97. DWF.
Fixed CANCLE keyword spelling. Sigh... 29 JUN 98. DWF.
Source: src/idl_cvs/getmdslabel.pro
NAME:
getMDSlabel
PURPOSE:
return a label for an MDSplus signal. If there is a :LABEL sub-node,
use that string, else if there is a :COMMENT sub-node, use that, else
return the MDSplus signal name.
CATEGORY:
MDSplus
CALLING SEQUENCE:
IDL> (the tree has to be opened)
IDL> label=getMDSlabel( signal, textNode=textNode, FOUNDTDI=foundTDI, $
status=status, /quiet, /fullPath )
INPUTS:
signal - mdsplus signal or tag name (shot must be opened)
OUTPUT:
label - contents of :LABEL substring, if found. Otherwise the
signal name is returned (just the last two elements, unless
/fullPath set)
KEYWORD PARAMETERS:
Optional Inputs:
quiet - just passed to mdsvalue
fullPath - if set, return fullpath if no :LABEL subnode found
Optional Outputs:
textNode - 1 returned if a text node
FOUNDTDI - 1 returned if TDI in node
status - if odd, successfull
NOTES:
The relevant MDSplus tree must be open for this routine to work.
MODIFICATION HISTORY:
01-Jun-01 Also look for :COMMENTS sub-node.
11-Mar-01 if no :LABEL node, look for :COMMENT node
15-Feb-01 Written by Bill Davis, PPPL
Source: src/idl_cvs/getnextfile.pro
NAME:
getNextFile
PURPOSE:
get next file in a directory, defaulting to alphabetic search
CATEGORY:
Files
CALLING SEQUENCE:
IDL> nextFile = getNextFile( inFile )
INPUTS:
input = filename with or without directory prefix
KEYWORD PARAMETERS:
numeric - if set will try to sort files numerically, so *_9.ext will
come before *_10.ext
back - if set will go back one in list
OUTPUTS:
nextFile out
EXAMPLE:
IDL> infile='/p/camdata/fastsoftxray/NSTX_119761/Frame_287.tif'
IDL> nextFile = GetNextFile( inFile)
IDL> infile='/p/camdata/fast_camera/shot000119681/NSTX000119681_35.tif'
IDL> print, GetNextFile( inFile, /numeric)
NOTES:
finds all files of the form AAAAAA_*.ext (if no "_" in file, just
return next in alphabetical order)
MODIFICATION HISTORY:
29-Jun-2006 added back keyword
20-Apr-2006 Written by Bill Davis, PPPL
Source: src/idl_cvs/getpos.pro
NAME:
getpos
PURPOSE:
Get the values for the POSITION keyword after a plot
CATEGORY:
Plotting
CALLING SEQUENCE:
IDL> pos = getpos()
INPUTS:
KEYWORD PARAMETERS:
Inputs:
window - window wanted
verbose - if set, will print many informational messages
debug - if set, debug output will be printed
OUTPUTS:
pos = position returned
COMMON BLOCKS:
NONE
EXAMPLE:
IDL> plot, indgen(100)
IDL> pos = getpos( )
NOTES:
MODIFICATION HISTORY:
20-Mar-2013 Written by Bill Davis, PPPL
Source: src/idl_cvs/getscopenames.pro
NAME:
getScopeNames
PURPOSE:
return signal names and plot settings from an MDSplus Scope input file
CATEGORY:
MDSplus, SCOPE
CALLING SEQUENCE:
names = getScopeNames( fileName, titles=titles )
names = getScopeNames() ; will get a dialog box
INPUTS:
Optional:
filename - name of scope input filename (else will get a dialog box)
RETURNED:
names - Array of signal names, including TDI, (Y values)
if nothing found, will return a '-1'
KEYWORDS:
(All Optional) Returned:
Titles - string array of the plot titles from the scope file, else y-name
xMins - array of each plot's x-minimum from the scope file (else global, or 0)
xMaxes - array of each plot's x-maximum from the scope file (else global, or 0)
yMins - array of each plot's y-minimum from the scope file (else global, or 0)
yMaxes - array of each plot's y-maximum from the scope file (else global, or 0)
nCols - # of columns for plot
nRows - (array) # of rows in each column for plot
Optional inputs:
stripTitles - if set, remove double quotes and everything after //
noEqualSigns - if set, remove equal signs (=)
addTrees - if set, add trees into signals
verbose - if set, will print many informational messages
debug - if set, debug output will be printed
NOTES:
LIMITATIONS:
For jScope files, won't handle 2 signals on a single frame
EXAMPLES:
IDL> file = 'wfplus.scope'
IDL> SigNames = GetScopeNames( file, titles=titles, yMins=yMins, yMaxes=yMaxes, $
IDL> xMins=xMins, xMaxes=xMaxes, xNames=xNames, $
IDL> nRows=nRows, nCols=nCols, /addTrees )
IDL> file = '/p/nstxusr/util/jscp/wfplus.jscp'
IDL> file = '/p/nstxusr/util/jscp/EAST_Mag_probes.jscp'
IDL> names = getScopeNames( file, TITLES=titles, yMins=yMins, yMaxes=yMaxes )
MODIFICATION HISTORY:
22-Apr-2010 made to work with jScope input files (ext .jscp) (and with files
with blank lines in header lines)
23-Jun-2008 added nRows and nCols keywords.
22-Mar-2006 revised xName logic when some there and some not.
27-Jan-06 add xNames keyword for specied X values.
19-Oct-01 if file not found, try other versions of name
13-Sep-01 Added addTrees keyword
17-Mar-01 default directory on Unix to /p/nstxusr/util/scopes/
02-Mar-01 added x & y mins and maxes
11-Jan-01 Written by Bill Davis
Source: src/idl_cvs/getsep.pro
NAME:
getsep
PURPOSE:
Get the separtrix (last closed flux surface) R & Z values
from EFIT or LRDfit for a particular NSTX or CMOD shot.
Interpolate surfaces in time. Can also return R & Z
of limiter interior. Also works for CMOD shots (tree
opened elsewhere).
CATEGORY:
EFIT, 2-D Plotting, NSTX, CMOD
CALLING SEQUENCE:
IDL> getsep, shot, outTime, r_edge=r_edge, z_edge=z_edge, $
xLim=xLim, zLim=zLim
INPUTS:
shot - shot number for MDSplus call
outTimes - times desired in seconds
KEYWORD PARAMETERS:
Optional Inputs:
efitVersion - 1-6. Defaults to "Best Fit"
LRDfitVersion - alternate to above
BestFit - (DEFAULT) if set, will call bestFitAvail, which has preference
of LRDFIT04, any other LRDFIT, EFIT02, then highest EFIT.
outer - if set will just return edge values > median value (default)
inner - if set will just return edge values <= median value
noOpen - if set will not try to open a tree (assumes already open)
verbose - if set, will print many informational messages
debug - if set, debug output will be printed
Returned:
r_edge - r values of separatrix (edge) points
z_edge - z values of separatrix points
rLim - r values of limiter points
zLim - z values of limiter points
EXAMPLE:
; get R & Z of separatrix for CMOD shot
IDL> getsep, 1120224029, 1.08800, $
r_edge=r_edge, z_edge=z_edge, $
/debug
to get get R & Z data and limiter location:
IDL> getsep, 135036, .589, R_edge=R, Z_edge=Z, $
rLim=rLim, zLim=zLim MODIFICATION HISTORY:
WRITTEN Aug-2012 by Bill Davis for Stewart Zweben
Source: src/idl_cvs/gettok.pro
NAME:
GETTOK
PURPOSE:
Function to retrieve the first part of the string
until the character char is encountered.
CATEGORY:
Strings
CALLING SEQUENCE:
token = gettok( st, char )
INPUT:
char - character separating tokens, scalar string
INPUT-OUTPUT:
st - (scalar) string to get token from (on output token is removed)
OUTPUT:
token - scalar string value is returned
EXAMPLE:
If ST is 'abc=999' then gettok(ST,'=') would return
'abc' and ST would be left as '999'
HISTORY
version 1 by D. Lindler APR,86
Remove leading blanks W. Landsman (from JKF) Aug. 1991
Add TABCHAR keyword, so token = gettok( st, '@', TABCHAR='@') will
just treat tabs as delimiters.
Source: src/idl_cvs/getwrd.pro
NAME:
GETWRD
PURPOSE:
Return the n'th word from a text string.
CATEGORY:
Strings
CALLING SEQUENCE:
wrd = getwrd(txt, n, [m])
INPUTS:
txt = text string to extract from. in
n = word number to get (first = 0 = def). in
m = optional last word number to get. in
KEYWORD PARAMETERS:
Keywords:
LOCATION = l. Return word n string location.
DELIMITER = d. Set word delimiter (def = space & tab).
/LAST means n is offset from last word. So n=0 gives
last word, n=-1 gives next to last, ...
If n=-2 and m=0 then last 3 words are returned.
/NOTRIM suppresses whitespace trimming on ends.
NWORDS=n. Returns number of words in string.
OUTPUTS:
wrd = returned word or words. out
COMMON BLOCKS:
getwrd_com
NOTES:
Note: If a NULL string is given (txt="") then the last string
given is used. This saves finding the words again.
If m > n wrd will be a string of words from word n to
word m. If no m is given wrd will be a single word.
n<0 returns text starting at word abs(n) to string end
If n is out of range then a null string is returned.
See also nwrds.
MODIFICATION HISTORY:
Ray Sterner, 6 Jan, 1985.
R. Sterner, Fall 1989 --- converted to SUN.
R. Sterner, Jan 1990 --- added delimiter.
R. Sterner, 18 Mar, 1990 --- added /LAST.
R. Sterner, 31 Jan, 1991 --- added /NOTRIM.
R. Sterner, 20 May, 1991 --- Added common and NULL string.
R. Sterner, 13 Dec, 1992 --- Made tabs equivalent to spaces.
R. Sterner, 4 Jan, 1993 --- Added NWORDS keyword.
Johns Hopkins University Applied Physics Laboratory.
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/get_delim.pro
NAME:
get_delim
PURPOSE:
returns file delimiter that is appropriate to VMS, UNIX or Windows
CATEGORY:
Programming
CALLING SEQUENCE:
delim=get_delim()
INPUTS:
none
OUTPUTS:
delim=':' if VMS, '\' if Windows, '/' otherwise
PROCEDURE:
checks !version.os system variable
MODIFICATION HISTORY:
Written DMZ (ARC) May 1992
Modified DMZ(SAC) Sept 1997 - added Windows
Source: src/idl_cvs/get_nebar.pro
NAME:
get_nebar
PURPOSE:
Get Ne Bar (line-averaged plasma density at the midplane) from
Multi-point Thomson Scattering data and EFIT gap data.
CATEGORY:
MDSplus, Density
CALLING SEQUENCE:
nebar = get_nebar( shot, time=time )
INPUTS:
shot1 = starting shot number to process
KEYWORDS:
(Optional)
efit - #. Defaults to 2
time - time base of output (sec). Probably on the MPTS timebase
EXAMPLE:
IDL> nebar = get_nebar( 138846, time=time )
NOTES:
This has not been verified by the MPTS Cognizant Physicist
HISTORY:
WRITTEN 23-Jul-2013, by Bill Davis for Stewart Zweben
Source: src/idl_cvs/get_text_input.pro
NAME:
get_text_input
PURPOSE:
Prompt the user for input with a question and
return the text string typed by user.
For X-windows the input is through a text widget, in the middle of
the screen, and the text widget waits until carriage return is entered.
Otherwise input is in the terminal window, with a beep to alert user.
CATEGORY:
GUI, Input
CALLING:
text = get_text_input( question )
INPUTS:
question = string(s), prompt for input, default is null string.
If an array is passed, each element is shown on its own line.
KEYWORDS:
DEFAULT_INPUT = optional string, setting the default response.
OUTPUTS:
Function returns the text string entered by user,
with leading and trailing blanks removed.
HISTORY:
Written, Frank Varosi NASA/GSFC 1993.
F.V.1997, question can be a string array, shown as multiple lines.
Source: src/idl_cvs/get_webplotsum.pro
NAME:
get_webplotsum
PURPOSE:
Creates summary plots vs time with plasma current, D-alpha,
injected power and stored energy (W-mhd).
CATEGORY:
Web
CALLING SEQUENCE:
IDL> image = get_webplotsum( ishot )
INPUTS:
shot = NSTX shot number
KEYWORD PARAMETERS:
Inputs:
(many)
EXAMPLE:
image = get_webplotsum( ishot, tois=ftime[0:nActualTimes-1]/1000., $
sig=signals, status=status )
if status then begin
jfile = 'SHOTSUMMARY_'+strtrim( ishot, 2 )+'.jpeg'
mk_jpeg, filename=dir+subDir+jfile, image=image
PRINTF,LUN,''
endif
image = get_webplotsum( 127264, tois=[50,100,150,200,300]/1000.)
tv, image, true=1
MODIFICATION HISTORY:
04-Mar-2008 call webplotsum to add W-mhd (stored energy) to plot
WRITTEN by Bill Davis, PPPL
Source: src/idl_cvs/good_ip.pro
NAME:
good_ip
PURPOSE:
Determine if plasma current (Ip) was good for a shot and, optionally
declare an event.
CATEGORY:
MDSplus, Shot Number, Plasma Current
CALLING SEQUENCE:
nextShot = good_ip( shot )
INPUTS:
shot - shot number
KEYWORD PARAMETERS:
Inputs:
goodValue - value required for tag for next good shot (default=30000 Amps)
event - if non-blank, will be declared if plasma current > goodValue
Server - MDS server (default is NSTX)
TagToUse - Tag to use for IP check (default to \OPERATIONS::CAL_IROGEVVUL1)
IPforGood - alternate to goodValue (for compatibility with old routine)
Verbose - if set, print debugging information
Returned:
IpTime - time of good plasma current in seconds.
OUTPUTS:
1 or 0
EXAMPLE:
IDL> ipOK = good_ip( shot, goodValue = 100. )
COMMON BLOCKS:
NOTES:
if TagToUse not specified, will try to use in the following order:
1) \ENGINEERING::IP1UNC
2) \ENGINEERING::PPCC_IP1
3) \WF::IP
if SigUnits from MDSplus begins with 'K' will mult. by 1000. If it
begins with an 'M' will mult. by 1000000.
RESTRICTIONS:
MODIFICATION HISTORY:
Written by Bill Davis March, 2006
Source: src/idl_cvs/gpicont.pro
NAME:
gpicont
PURPOSE:
plot GPI data (an average of a center strip vs. time) as a
color contour with the separatrix overlayed
CATEGORY:
Cameras, GPI, MDSplus, NSTX, edge
CALLING SEQUENCE:
IDL> gpicont, shot
INPUT PARAMETERS:
shot - MDSplus shot #
KEYWORD PARAMETERS:
t1 - start time (Def=0.3 s)
t2 - end time (Def=0.9 s)
maxtimes - max number of points in time to plot (def=100000)
nTimes - the final number of times on the color contours
moreSmooth - after smoothing is done in the time dimension
when reducing the # of times plotted, this
is used for the whole image (with edges handled)
XSIZE - initial horizontal size of graphics window
YSIZE - initial vertical size of graphics window
charsize - size of characters on plot (Def=2)
sep - if=0, will not show separatrix
jpeg - if set, will make a jpeg of a screen dump
ps - if set, will save a postscript file
pdf - if set and ps set, will save a pdf file
new - forces rereading and saving data, even if times have
been done before
verbose - if set, will print many informational messages
debug - if set, debug output will be printed
EXAMPLE:
IDL> gpicont, 138844
IDL> gpicont, 138846, /new, t1=0.59, t2=0.67
IDL> for i=138844, 138846 do gpicont, i, t1=0.59, t2=0.67, $
/psout, /pdf
MODIFICATION HISTORY:
18-Sep-2013 from efit edge points was using nearest point
to the camera middle. Now interpolate edge values
using sepatmidgpi.
14-Aug-2013 Written by Bill Davis for Stewart Zweben.
Source: src/idl_cvs/gpimountain.pro
NAME:
gpimountain
PURPOSE:
plot GPI data (an average of a center strip vs. time) as a surface
with the separatrix overlayed
CATEGORY:
3-D Plotting, MDSplus, NSTX, GPI, edge
CALLING SEQUENCE:
IDL> gpimountain, shot
INPUT PARAMETERS:
shot - MDSplus shot #
KEYWORD PARAMETERS:
t1 - start time (Def=0.3 s)
t2 - end time (Def=0.9 s)
maxtimes - max number of points in time to plot (def=1000)
az - degrees to rotate around Z axis (def=30)
ax - degrees to rotate around X axis (def=30)
XSIZE - initial horizontal size of graphics window
YSIZE - initial vertical size of graphics window
charsize - size of characters on plot (Def=2)
sep - if=0, will not show separatrix
nudge - amount to nudge separatrix line up, so shows above surface
Def=30
fence - height to draw top of fence where separatrix is.
Def=100. If=0, no fence will be drawn.
verbose - if set, will print many informational messages
debug - if set, debug output will be printed
LIMITATIONS:
To show the separatrix on the surface, you have to find the right
Z, which is hard without lots of interpolation. The work around is
to nudge the Z values up so they will show above the surface even
if it isn't quite right.
EXAMPLE:
IDL> gpimountain, 138844, az=50, ax=40, nudge=10, $
position=[.15,.1,.85,.85], nSmooth=5, nTimes=100
IDL> gpimountain, 138846, az=50, ax=40, nudge=10, /new, $
position=[.15,.1,.85,.85], nSmooth=5, nTimes=1000
MODIFICATION HISTORY:
11-Jun-2013 Written by Bill Davis for Stewart Zweben.
Source: src/idl_cvs/greek.pro
NAME:
GREEK
PURPOSE:
This function returns the string needed to draw the specified
greek character using either the vector graphics font no. 4,
or PostScript font 9.
If (!d.name eq 'PS') and (!p.font eq 0), then the PostScript
font will be used. Otherwise, the vector font will be used.
CATEGORY:
Programming
CALLING SEQUENCE:
Result = GREEK(Name)
INPUTS:
Name - String specifying the greek character name. Valid
inputs are:
alpha, beta, gamma, delta, epsilon, zeta, eta, theta
iota, kappa, lambda, mu, nu, xi, omicron, pi, rho,
sigma, tau, upsilon, phi, chi, psi, omega
Alpha, Beta, Gamma, Delta, Epsilon, Zeta, Eta, Theta
Iota, Kappa, Lambda, Mu, Nu, Xi, Omicron, Pi, Rho,
Sigma, Tau, Upsilon, Phi, Chi, Psi, Omega
Although not greek, the following characters are also
valid (but will only work with the 'default' font !3):
angstrom, Angstrom, degrees, plus_minus
KEYWORDS:
FORCE_PS - Set to use PostScript font, regardless of the value
of !d.name and !p.font.
PLAIN - Set to just return Name in plain text.
APPEND_FONT - Set to append the characters specifying a
'default' font: !3. That is, if this keyword is
set, then the command
Result=GREEK(theta,/APPEND_FONT)
will return the string
'!9q!3' for PostScript and '!4h!3' for vector
fonts.
OUTPUTS:
Result - The string containing the specified greek character.
EXAMPLE:
Result=GREEK(theta)
In this case, Result='!9q' if !d.name is 'PS' and !p.font is
0; otherwise, Result='!4h'
MODIFICATION HISTORY:
David L. Windt, Bell Labs, September 1998.
windt@bell-labs.com
Source: src/idl_cvs/gridplot.pro
NAME:
gridplot
PURPOSE:
Widget for plotting a grid of data from MDSplus or gadat
This is an interactive version of ShotLoop.
If at GA, assume that access will be through gadat only.
When a plot on the grid is clicked on, it is expanded into a
separate window.
CATEGORY:
Plotting, MDSplus, Example, GA
CALLING SEQUENCE:
IDL> gridplot
or IDL> gridplot,tmin=2000,tmax=2002, SigFileName='mysigs.txt'
INPUTS:
none required
FILES:
lastshot.txt - if this file (or that specified by ShotFileName
keyword) is found, will initilize shot number
to that read from the first line of this file.
If this file can not be found in the directory from
which you are running, or in the IDL_PATH,
the initial shot number will be set to the current
machine shot minus 3.
mdsplussig.txt - if this file (or that specified by SigFileName
keyword) is found, will read signalnames from it
KEYWORD PARAMETERS:
Optional Keywords:
nSmooth - smoothing parameter to use when plotting data
nRows - # of rows of plots (default to 6)
nCols - # of colomns of plots (default to # signals/nrows)
printer - printer to send plots to (else goes to the default printer)
tmin - default plotting minimum for x-axis. (MDS in sec; GA in msec)
tmax - default plotting maximum for x-axis.
ShotFileName - File for storint last shot processed
(default: lastshot.txt)
SigFileName - Signal names in the file will be plotted
when you click on "Plot All." The names
should be one per row (default='mdsplusssig.txt')
sizeofplot - (2-element Real Array) x & y size of graphics area on widget
(but you are forced to stay on the screen).
OUTPUTS:
none from routine
COMMON BLOCKS:
gp_SetupParams, gp_Info, gp_GridData, gp_widgetIDs
EXAMPLE:
MAJOR FUNCTIONS and PROCEDURES:
PLOT: X-Y plotting.
NOTES:
PlotOne and PlotSomething
are routines shared in common with ShotLoop.
MODIFICATION HISTORY: Written by: WMD, PPPL, April, 1999
for Hiro Takahashi work at General Atomics
Source: src/idl_cvs/h5dfromtext.pro
NAME:
h5dfromtext
PURPOSE:
create a H5D file from a text file with columns of data
CATEGORY:
files
CALLING SEQUENCE:
IDL> h5dfromtext, in_filename=in_filename, out_filename=out_filename
KEYWORD INPUTS:
in_filename - file name with columns and, preferably, headings
out_filename - name of H5D file to write (defaults to in_filename with .H5 ext)
strip - if set, strip everything from column headings up to
and including the first period
FORMAT - scalar string containing a letter specifying an IDL type
for each column of data to be read. Allowed letters are
A - string data, B - byte, D - double precision, F- floating
point, I - integer, L - longword, and X - skip a column.
(G & E equate to F)
Columns without a specified format are assumed to be floating
point. Examples of valid values of FMT are
'A,B,I' ;First column to read as 6 character string, then
1 column of byte data, 1 column integer data. 'V' for LONG64
'L,L,L,L' ;Four columns will be read as longword arrays.
' ' ;All columns are floating point
If a FORMAT keyword string is not supplied, then all columns are
assumed to be floating point.
SILENT - Normally, READCOL will display each line that it skips over.
If SILENT is set and non-zero then these messages will be
suppressed.
DEBUG - If this keyword is non-zero, then additional information is
printed as READCOL attempts to read and interpret the file.
nSkip - Scalar specifying number of lines to skip at the top of file
before reading. Default is to start at the first line.
COMMENT - skip if a line begins with this
NUMLINE - Scalar specifying number of lines in the file to read.
Default is to read the entire file
LINESSKIPPED - Ascii array of lines skipped
TABDELIM - If set, then assume columns are delimitted by tabs
verbose - if set, will print many informational messages
debug - if set, debug output will be printed
OUTPUTS:
status
(file written)
EXAMPLES:
IDL> h5dfromtext, in_filename='/u/bdavis/Blobs/readtest.txt', nskip=1, /strip, $
FORMAT='I,F,F,F,F,F,I,F,F,F,I,F,I,F,F,F,F,F,I,F,F,F,F,F,F,F,F,F,F,F,F,F'
REVISION HISTORY:
WRITTEN 02-May-2012 by Bill Davis for Ahmed Diall0
Source: src/idl_cvs/highestefitrun.pro
NAME:
highestEfitRun
PURPOSE:
find highest efit version run (in the MDSplus tree)
Checks up to 5, and contigously after that
CATEGORY:
EFIT, MDSplus
CALLING SEQUENCE:
IDL> run = highestEfitRun(shot)
INPUTS:
shot = shot #
KEYWORD PARAMETERS:
FITTYPE= fit type. Defaults to 'EFIT'. Works for 'LRDFIT', too.
min2Check - will always check up to this number, and contigously
after that. E.g. if there is a EFIT05 and EFIT07,
5 will be declared the highest unless this keyword
is 6 or higher.
max2Check - will stop checking at this fit number
OUTPUTS:
integer # representing highest EFIT run in tree
EXAMPLES:
IDL> print,fitsrun(123001)
EFIT01 EFIT02 EFITRT
IDL> print,highestefitrun(123001)
2
IDL> print,fitsrun(117707)
EFIT01 EFIT02 EFIT03 EFIT06 EFITRT LRDFIT04 LRDFIT06
IDL> print,highestefitrun(117707)
6
IDL> print,highestefitrun(117707,FIT='LRDFIT')
6
NOTES:
When the routine is called with no parameters, or with the
keyword hlp set, help information is printed.
MODIFICATIONS:
13-Apr-2010 added max2Check keyword
29-Aug-2008 make min2check=20 for LRDfit
27-Aug-2007 check at least 5 runs. Add keyword for fit type and
min2Check.
Aug-2005 Written by Bill Davis
Source: src/idl_cvs/hours2time.pro
NAME:
hours2time
PURPOSE:
Return time string like 23:59:05 from floating point hour value
CATEGORY:
Dates, times
CALLING SEQUENCE:
timeStr = hours2time( hours )
INPUTS:
hours - floating pt., from 0-23.9999
KEYWORDS
optional outputs:
hours - integer hours
minutes - integer minutes
seconds - floating point seconds
OUTPUT
timeStr - string like 23:59:05.123, 03:01:59.777, etc.
EXAMPLE:
IDL> print,hours2time( 3.333333 )
03:19:59.999
NOTES:
use rgatime2hr() to go the other way
MODIFICATION HISTORY:
07-Jul-2011 WRITTEN by Bill Davis
Source: src/idl_cvs/idlv4_to_v5.pro
NAME:
IDLV4_TO_V5
PURPOSE:
Modify an IDL V4.0 (or earlier) procedure such that variables are
indexed using square brackets, as allowed (and suggested)
within IDL V5.0 and later
CALLING SEQUENCE:
IDLV4_TO_V5, infiles, outdir
INPUTS:
infiles - scalar string specifying IDL procedure name(s), wild card
values allowed
outdir - scalar string giving directory to contain output file.
EXAMPLES:
Convert the procedure curvefit.pro in the current directory to a
IDL V5 version in the (Unix) idlv5 directory
IDL> idlv4_to_v5,'curvefit.pro','idlv5/'
Convert all the procedures in the current directory to IDL V5 versions
in the /share/idlv5 directory
IDL> idlv4_to_v5, '*.pro', '/share/idlv5/'
METHOD:
ISFUNCTION() is used to determine all the routine names in the file,
and then ROUTINE_INFO() is used to determine the names of all variables
in the procedure. Each (non-commented) line is scanned for
parentheses, and converted to square brackets if the token to the left
of the left parenthesis matches a variable name.
NOTES:
(1) Only runs under IDL V5.0 (since it calls ROUTINE_INFO())
(2) May possibly get confused by parenthesis within strings.
(3) May get confused by IDL statements that extend over multiple lines
idlv4_to_v5 will supply a warning when it becomes confused by
unmatched parenthesis.
(4) Do not include this procedure 'idlv4_to_v5' in the directory that
you are trying to convert (since it will compile the procedure
while executing it, and do a retall.)
(5) Conversions cannot be performed unless specified procedure(s)
already compile properly
(6) Will not work on IDL main programs
(7) May get confused by gaps between array name and parenthesis
PROCEDURES CALLED:
FDECOMP, MATCH, REMOVE, ISFUNCTION()
REVISION HISTORY:
Written W. Landsman Hughes STX June 1997
Variable names can have numerals August 1997
Never change an intrinsic IDL function to square brackets, even if it
is also a variable name.
Source: src/idl_cvs/ij2rz.pro
NAME:
ij2rz
PURPOSE:
Convert from fast GPI camera pixels at CMOD or NSTX to R & Z
CATEGORY:
Fast 2-D Cameras
CALLING SEQUENCE:
IDL> ij2rz, shot=shot, cam=cam, nx=nx, ny=ny, $
Rvals=Rvals, Zvals=Zvals
INPUTS:
KEYWORD PARAMETERS:
Inputs:
shot - CMOD or NSTX shot number (default to 1120224029)
cam - default to 1 for NSTX (only one), but 2 (X-pt) for CMOD
nx - # of pixels in X (defaults to that of camera)
ny - # of pixels in Y (defaults to that of camera)
verbose - if set, will print many informational messages
debug - if set, debug output will be printed
Outputs:
Rvals - 2-D array of R (major Radius) values in meters of pixel location
(at Gas Puff)
Zvals - 2-D array of Z values (m) of pixel location (at Gas Puff)
OUTPUTS:
EXAMPLE:
IDL> ij2rz, shot=1120224029, cam=1, $ ; input
Rvals=Rvals, Zvals=Zvals ; returned
NOTES:
Unrotated images from NSTX are read as [80,64]. Since these need to
to be rotated so up is up, default to ny=80. MODIFICATION HISTORY:
25-Sep-2012 don't transpose R-Z values, so 80 pixels is in vertical direction
27-Aug-2012 Written by Bill Davis, PPPL, for Stewart Zweben
Source: src/idl_cvs/imageproc.pro
NAME:
imageproc
PURPOSE:
Demonstrate a few of IDL's image processing features:
Fourier filtering, pixel scaling, pixel distribution
(histogram), edge enhancement, dilate & erode,
convolution, and zooming.
CATEGORY:
Image Processing, 2-D Plotting
CALLING SEQUENCE:
IDL> imageproc
INPUTS:
input = a 2-D image (optional, otherwise will pop dialog for tiff file
KEYWORD PARAMETERS:
NColors - # of colors to use
Bottom - value to add to bytescaled image
magnification - magnification factor desired for image
INTERP - if magnification set, INTERP=1 will cause interpolation
XSIZE - xsize of displayed image
YSIZE - ysize of displayed image
REFERENCE: IDL Reference Guide, IDL User's Guide
NAMED STRUCTURES:
none.
COMMON BLOCS:
none.
MODIFICATION HISTORY:
July, 2004 a few more additions [BD]
23-Jan-00 Modified from RSI d_imageproc by Bill Davis.
d_imageproc Written by: DC, RSI, 1995
Source: src/idl_cvs/interp2d.pro
NAME:
interp2d
PURPOSE:
Perform bilinear 2d interpolation using the IDL intrinsic
interpolate procedure
CATEGORY:
Interpolation
CALLING SEQUENCE:
result = interp2d(A,x0,y0,x1,y1)
result = interp2d(A,x0,y0,x1,y1,/grid)
result = interp2d(A,x0,y0,x1,y1,/regular,/cubic)
result = interp2d(A,x0,y0,x1,y1,missing=missing)
INPUTS:
A = 2d array to interpolate
x0 = Values that correspond to A(0,0), A(1,0), ...
y0 = Values that correspond to A(0,0), A(0,1), ...
x1 = New X values at which A should be interpolated
y1 = New Y values at which A should be interpolated
OPTIONAL INPUTS:
nxny = [nx,ny] Vector of length 2 which specifies the size of
the regular linearized grid produced with trigrid. The
default is nxny = [51,51]. If the size of A is much larger
than 51 by 51, greater accuracy may be obtained by having
nxny = [n_elements(A(*,0),n_elements(A(0,*))]
OPTIONAL INPUT KEYWORDS:
grid= If set, return an n_elements(X1) by n_elements(y1) grid
missing = Value to points which have X1 gt max(X0) or X1 lt min(X0)
and the same for Y1.
quintic = If set, use smooth interpolation in call to trigrid
regular = If set, do not call trigrid -- x0 and y0 must be linear.
cubic = If set, use cubic convolution
extrapolate = If set, then extrapolate beyond boundary points
bin = set to bin data prior to interpolation.
(e.g. bin=2 interpolate every second pixel)
Returned:
result = a vector N_elements(X1) long
or, if /grid is set
result = an array that is N_elements(X1) by N_elements(Y1)
PROCEDURE:
First call the IDL intrinsic routines TRIANGULATE & TRIGRID to make
sure that X0 and Y0 are linear (if /regular is not set).
Then call the IDL intrinsic INTERPOLATE to do bilinear interpolation.
RESTRICTIONS:
X0 and Y0 must be linear functions.
A must be a 2-d array
HISTORY:
9-mar-94, J. R. Lemen LPARL, Written.
20-Jan-95, JRL, Added the REGULAR & CUBIC keywords
6-Sept-97, Zarro, GSFC, allowed for 2-d (X-Y) coordinate inputs
22-Apri-99, Zarro, SM&A/GSFC - added /triangulate and made /regular
the default (much faster).
Source: src/idl_cvs/interp2dfit.pro
NAME:
interp2dfit
PURPOSE:
fit irregularly-spaced x, y, & z points by fitting a 2-D surface
using SFIT, and, using the returned coefficients, compute new
values at other irregularly-spaced locations.
CATEGORY:
Interpolation
CALLING SEQUENCE:
IDL> zWant = interp2dfit( x, y, z, Xwant, Ywant, surfaceOut=surfaceOut )
INPUTS:
x, y, z - randomly-spaced points
Xwant, Ywant - X & Y points at which to compute new points
KEYWORD PARAMETERS:
Inputs:
degree - degree of polynomial passed to SFIT (default=6)
plot - if set, will plot data and surfaces so you can see
if fit is reasonable
gtzero - if set, will force all values to be greater than 0
NXout - # of X points to use for fitted surface, and in returned array
NYout - # of Y points to use for fitted surface, and in returned array
verbose - if set, will print many informational messages
debug - if set, debug output will be printed
Outputs:
Zwant - (returned value) interpolated values at Xwant & Ywant
KX - coeficients of polynomial fit, returned from SFIT.
surfaceOut - 2-D grid to which irregular points were interpolated
EXAMPLE:
; get randomly-spaced x, y, & z values:
IDL> restore,'/u/bdavis/cvs/idl_cvs/interp2dfiteg.sav'
IDL> minx = MIN( x, MAX=maxx )
IDL> miny = MIN( y, MAX=maxy )
IDL> XWant = randomu(seed,200)*(maxX-minX) + minX ; more points make smoother plots
IDL> YWant = randomu(seed,200)*(maxY-minY) + minY
IDL> Zwant = interp2dfit( x, y, z, Xwant, Ywant, /gtZero, /plot )
NOTES:
Polynomial fits can be way off beyond the edges of the data.
(Probably should pass in as a parameter the 100 currently used
to make the interpolated surface)
MODIFICATION HISTORY:
22-Aug-2012 fix bug when plotting, but not returning regsurf
15-May-2010 Use Xwant and Ywant for output array
WRITTEN 17-Jan-2010 by Bill Davis for Manny Manickam
Source: src/idl_cvs/interpedge.pro
NAME:
interpEdge
PURPOSE:
Interpolate separatrix in time. From EFIT or LRDfit, find R
and Z values of last closed flux surface (separatrix) for a
particular NSTX or CMOD shot. Can also return R & Z of limiter
interior. Also works for CMOD shots (tree opened elsewhere).
CATEGORY:
EFIT, 2-D Plotting, NSTX, CMOD
CALLING SEQUENCE:
IDL> interpEdge, shot, outTime, r_edge=r_edge, z_edge=z_edge, $
xLim=xLim, zLim=zLim, $
/plot, /debug
INPUTS:
shot - shot number for MDSplus call
outTimes - times desired in seconds
KEYWORD PARAMETERS:
Optional Inputs:
efitVersion - 1-6. Defaults to 2
LRDfitVersion - alternate to above
BestFit - (DEFAULT) if set, will call bestFitAvail, which has preference
of LRDFIT04, any other LRDFIT, EFIT02, then highest EFIT.
outer - if set will just return edge values > median value
inner - if set will just return edge values <= median value
noOpen - if set will not try to open a tree (assumes already open)
plot - if set will plot data
verbose - if set, will print many informational messages
debug - if set, debug output will be printed
Returned:
r_edge - r values of edge points (in meters)
z_edge - z values of edge points
xLim - r values of limiter points
zLim - z values of limiter points
EXAMPLE:
IDL> interpEdge, 130376, .2, $
r_edge=r_edge, z_edge=z_edge, $
/plot, /debug
to get get R & Z data and limiter location:
IDL> interpEdge, 135036, .589, R_edge=R, Z_edge=Z, $
xLim=xLim, zLim=zLim
IDL> interpEdge, 1120815021, 1.15, r_edge=Rsep, z_edge=Zsep, /outer, /plot
IDL> interpEdge, 138846, .615,r_edge=Rsep,z_edge=Zsep,/outer,/plot, /deb
MODIFICATION HISTORY:
--------------------
16-Sep-2013 always have noOpen=0 (bug somewhere)
04-Mar-2013 don't stop if no radii found greater than average
30-Aug-2012 add MDSconnect for CMOD; do not assume shot is open
21-Aug-2012 fixed bug for CMOD
05-Jan-2012 account for time being first dimension in r & z from CMOD EFITs
21-Dec-2011 added CMOD support
15-Dec-2011 added outer and inner keywords
WRITTEN 12-Dec-2011 by Bill Davis
Source: src/idl_cvs/interpwf.pro
NAME:
interpwf
PURPOSE:
Interpolate MDS signal, or array, to 1 KHz.
CATEGORY:
Interpolation
CALLING SEQUENCE:
IDL> data1KHz = interpwf( inData, time=intime, OUTTIME=outTime)
or
IDL> data1KHz = interpwf( sigName )
INPUTS:
inData - data array or MDSplus signal name
KEYWORDS:
intime - timebase of input. If not present will get dim_of(inData)
dt - delta time desired of output. Default to 1.0e-3 (1 KHz)
TSTART - start time desired. If not present, =0.0
TSTOP - last output time desired. If not present = max(inTime)
Returned
outTime - timebase of desired output array.
EXAMPLES:
(works with just arrays, if time present:)
IDL> data1KHz = interpwf(findgen(3000), time=findgen(3000)/(3000)*1.2, $
OUTTIME=outTime)
IDL> mdsopen, 'engineering', 130000
IDL> wf=interpwf( '\ip1', OUTTIME=outTime, $
tStart=-0.5, tStop=1.5 )
IDL> data=mdsvalue('\ip1')
IDL> time=mdsvalue('dim_of(\ip1)')
IDL> plot, time, data
IDL> oplot, outTime, wf, color=colorsearch('red')
LIMITATION:
If a signal name is passed in, assume the tree is already open
MODIFICATION HISTORY:
13-Feb-2009 do everything in IDL
27-Jun-2008 Convert to Linux
06-Apr-06 made default endtime lesser of input and output time
05-Jul-00 Written by Bill Davis, PPPL
Source: src/idl_cvs/int_defined.pro
NAME:
int_defined
PURPOSE:
see if a value is defined and is an integer
CATEGORY:
programming
CALLING SEQUENCE:
logical = INT_DEFINED( whatever )
INPUTS:
whatever - any IDL variable in
KEYWORD PARAMETERS
none
OUTPUTS:
logical - 1 if an integer, 0 if not (or if not defined)
EXAMPLE:
COMMON BLOCKS:
NOTES:
MODIFICATION HISTORY:
1999 Written by Bill Davis
Source: src/idl_cvs/isarray.pro
NAME:
ISARRAY
PURPOSE:
Tests if the argument is an array.
CATEGORY:
Programming
CALLING SEQUENCE:
flag = isarray(a)
INPUTS:
a = variable to test. in
KEYWORD PARAMETERS:
OUTPUTS:
flag = test result: 0 if not array, else non-zero. out
COMMON BLOCKS:
NOTES:
MODIFICATION HISTORY:
R. Sterner 20 Mar, 1986.
Checked for undefined variables. RES 25 Aug, 1989.
Johns Hopkins Applied Physics Lab.
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/isfunction.pro
NAME:
ISFUNCTION()
PURPOSE:
Determine whether the IDL program(s) in a file are procedures or
functions. Needed because the intrinisc RESOLVE_ROUTINE and
ROUTINE_INFO() procedures require the user to know beforehand whether
to supply the /IS_FUNCTION or /FUNCTION keywords.
CALLING SEQUENCE:
status = ISFUNCTION( filename, [ outnames, numlines]
INPUT:
filename = scalar string giving complete specification if file name
(include .pro extension)
OUTPUT:
status - integer vector with number of elements equal to the number
of routines in the file. Each status value consists of 0 or 1
1 - routine is an IDL function
0 - routine is an IDL procedure
If no valid IDL functions or procedures are found in the file, then
ISFUNCTION() returns a scalar value of -1
OPTIONAL OUTPUTS:
outnames - vector string, giving name of each IDL procedure or function
in the file
numlines - integer vector, giving the number of lines in each IDL
procedure or function in the file
PROCEDURE CALLS:
FDECOMP
REVISION HISTORY:
Written, W. Landsman June, 1995
Source: src/idl_cvs/isnum.pro
NAME:
ISNUM
VERSION:
3.0
PURPOSE:
Checks whether the input is a number.
CATEGORY:
Programming.
CALLING SEQUENCE:
Result = ISNUM(X)
INPUTS:
X
Arbitrary, doesn't even have to exist.
OPTIONAL INPUT PARAMETERS:
None.
KEYWORD PARAMETERS:
/DOUBLE
Switch. If set the result is 1 only if X is DOUBLE or DCOMPLEX.
/COMPLEX
Switch. If set the result is 1 only if X is COMPLEX or DCOMPLEX.
TYPE
Optional output. See below.
OUTPUTS:
Returns 1 if X is number, 0 otherwise. Output type is byte.
OPTIONAL OUTPUT PARAMETERS:
TYPE
The name of the variable to receive the numeric code of the type of X.
Included for convenience to save an additional call to TYPE.
COMMON BLOCKS:
None.
SIDE EFFECTS:
None.
RESTRICTIONS:
None.
PROCEDURE:
Straightforward. Using TYPE from MIDL.
MODIFICATION HISTORY:
19-Jul-2009 added U types [Bill Davis]
Created 15-JUN-1995 by Mati Meron.
Modified 5-MAY-1996 by Mati Meron. Added keywords DOUBLE, COMPLEX and
TYPE.
Source: src/idl_cvs/isnumber.pro
NAME:
ISNUMBER
PURPOSE:
Determine if a text string is a valid number.
CATEGORY:
CALLING SEQUENCE:
i = isnumber(txt, [x])
INPUTS:
txt = text string to test. in
KEYWORD PARAMETERS:
OUTPUTS:
x = optionaly returned numeric value if valid. out
i = test flag: out
0: not a number.
1: txt is a long integer.
2: txt is a float.
-1: first word of txt is a long integer.
-2: first word of txt is a float.
COMMON BLOCKS:
NOTES:
MODIFICATION HISTORY:
28-Feb-2011 don't call a character when has a minus sign [BD]
15-Feb-2008 don't consider date string, like 02/15/2008, a number [BD]
29-Oct-2007 return 0 if input not defined [BD]
01-Dec-2006 handle structures (treat as not a number) [Bill Davis]
Richard Garrett, 14 June, 1992 --- fixed bug in returned float value.
R. Sterner, 12 Mar, 1990 --- upgraded.
R. Sterner. 15 Oct, 1986.
Johns Hopkins Applied Physics Lab.
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/isotime.pro
NAME:
ISOtime
PURPOSE:
Return time in ISO 8601 standard, assuming US East Coast.
(handles Daylight Savings time)
CATEGORY:
Dates
CALLING SEQUENCE:
IDL> timeStr = ISOtime( DateTime )
INPUTS:
DateTime - like "06/14/2004 11:04:52"
KEYWORD PARAMETERS:
Keywords:
OUTPUTS:
timeStr - like 2004-06-14T11:04:52.0-4:00
COMMON BLOCKS:
NONE
EXAMPLE:
IDL> print,isotime('06/14/2004 11:04:52')
2004-06-14T11:04:52.0-4:00
NOTES:
The ISO standard includes the adjustment to Grenwich Mean Time, so
you need to know whether Daylight Savings time is in affect.
This includes routines to find last and first Sunday of a month.
Assumes no fractions of seconds.
MODIFICATION HISTORY:
WRITTEN 19-Jan-2005 by Bill Davis, PPPL
Source: src/idl_cvs/jd2date.pro
NAME:
JD2DATE
PURPOSE:
Convert a Julian Day number to a date string.
CATEGORY:
dates
CALLING SEQUENCE:
date = jd2date(jd)
INPUTS:
jd = Julian Day number. 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 as a 2 digit number.
W$ = full weekday name.
w$ = 3 letter week day name.
OUTPUTS:
date = returned date string. 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:
17-Aug-2009 added $m option so can get dates like 17-8-2009.
R. Sterner, 27 Feb, 1991
Copyright (C) 1991, 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/jd2ymd.pro
NAME:
JD2YMD
PURPOSE:
Find year, month, day from julian day number.
CATEGORY:
Dates
CALLING SEQUENCE:
jd2ymd, jd, y, m, d, dateString=dateString
INPUTS:
jd = Julian day number (like 2447000). in
KEYWORD PARAMETERS:
dateString - (OPTIONAL OUTPUT) of form yyyymmdd (e.g., 20030613)
OUTPUTS:
y = year (like 1987). out
m = month number (like 7). out
d = day of month (like 23). out
COMMON BLOCKS:
NOTES:
MODIFICATION HISTORY:
12-Feb-2008 added dateString optional output keyword
Theo Brauers, 21 Sep, 1997 long loop index i
R. Sterner, 30 Apr, 1993 --- cleaned up and allowed arrays.
R. Sterner. 21 Aug, 1986.
Johns Hopkins Applied Physics Lab.
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/keybrdanim.pro
NAME:
keybrdanim
PURPOSE:
Animate frames of plots with keyboard controls.
Plot commands can be passed into the routine.
By default a vertical dashed red line shows the time.
Keyboard controls over animation:
'H': See this Help
'P' or : Toggle Pause
'C': Continue
'F': Faster
'S': Slower
'R' or '>' or : move forward 1 frame
'L' or '<' or : move backward 1 frame
'J' or : Jump forward 10 frames
'B' or : move backward 10 frames
'M': Mouse-click time desired
'Q': to quit
CATEGORY:
Plotting
CALLING SEQUENCE:
IDL> keybrdanim, x, y
INPUTS:
x - abscissa array for plotting
y - ordinate array for plotting
KEYWORD PARAMETERS:
Inputs:
plotCmd - a string array to execute. To have something indexed by the loop
variable, use iFr.
Defaults to:
["PLOT, x, y, _extra=_extra", $
"OPLOT, [x[ifr], x[ifr]], !y.crange, line=2, color=cs.red"]
nframes - # of points to plot. Defaults to # of points in X
plotCmd - a string array of plot commands. Defaults to
xsize - horizontal size of plot window, Default = 640
ysize - vertical size of plot window, Default = 480
pauseInit - Initial time to pause between frames. Default = 0.2
loops - # of times to loop through the animation. Default = 10
load - if set, will call mk_color to load colors. Default = 1.
verbose - if set, will print many informational messages
debug - if set, debug output will be printed
any other keywords will be passed to the PLOT command via the _extra keyword.
OUTPUTS:
none (just plot window)
EXAMPLE:
IDL> cmd =["PLOT, x, y, xtitle='Sec', title='plot title'", $
"OPLOT, [x[ifr], x[ifr]], !y.crange, line=2, color=colorsearch('red')", $
"xyouts, .12, 0.92, 'Shot 999999', /norm, charsize=2"]
IDL> keybrdanim, x, y, plotCmd=cmd
NOTES:
The Z-buffer is used for plotting and then results copied to plot window for
for smooth animations.
MODIFICATION HISTORY:
19-Jul-2010 Written by Bill Davis
Source: src/idl_cvs/labeleveryothertick.pro
NAME:
labeleveryothertick
PURPOSE:
Only label every other major tic mark.
The format of the numbers is customized.
CATEGORY:
Plotting, Graphics
EXAMPLE 1 - Make a dummy plot call so can determine Tick Max:
IDL> COMMON betterticklabels_common, yticklabels
IDL> plot, y, ytick_get=yticklabels, ytickname=replicate(' ',30)
IDL> AXIS, YAXIS=1, YRANGE=!y.crange, ytickformat='labeleveryothertick'
IDL> dum = TEMPORARY(yticklabels) ; so doesn't affect later calls
EXAMPLE 2 - Just take what you get (still pretty good):
IDL> plot, y, ytickformat='labeleveryothertick'
HISTORY:
09-Oct-00 Written by Bill Davis
Source: src/idl_cvs/labelfit.pro
NAME:
labelfit
PURPOSE:
determine character size to make a label fit in a space
CATEGORY:
Strings
CALLING SEQUENCE:
IDL> newCharSize= labelfit( label, width=width )
INPUTS:
width - pixels to fit label into
charsize - starting charactersize (max) Default=3
minsize - minimum character size allowed
pad - # of blank characters to allow around string (default=2)
RETURNED:
shortLabel - if charsize needs to be less than minsize to fit
everything, make a short label that fits
EXAMPLES:
IDL> print, labelfit('Hi mom', width=40, charsize=20 )
5.80002
IDL> label = 'abcdefghijklmnopqrstuvwxyz'
IDL> print, labelfit(label, width=400 )
1.65000
IDL> print, labelfit(label, width=400, minsize=2, shortLabel=shortLabel )
2.00000
IDL> help,shortlabel
SHORTLABEL STRING = '...jklmnopqrstuvwxyz'
MODIFICATION HISTORY:
15-Sep-2011 Written by Bill Davis, PPPL
Source: src/idl_cvs/lastmdsshot.pro
NAME:
LastMDSshot
PURPOSE:
get the last (current) MDS shot
CATEGORY:
MDSplus
CALLING SEQUENCE:
currentShot = LastMDSshot()
INPUTS:
none
KEYWORD PARAMETERS:
SERVER - MDS server (default is NSTX)
MACHINE - machine (default is NSTX)
OUTPUTS:
currentShot - current shot number
EXAMPLE:
COMMON BLOCKS:
NOTES:
MODIFICATION HISTORY:
25-Feb-99 BD added way to get current shot from either VMS or UNIX
default to NSTX
11-Dec-98 BD added MDSplus access for shotnumber, if on VMS at PPPL
01-Dec-98 BD use fas_dir and Mk_Filename for filename lookup
5/14/98 changing USER directory to BE1 etc [PR]
Source: src/idl_cvs/leafname.pro
NAME:
LeafName
PURPOSE:
Return leaf name from MDSplus pathname(s)
CATEGORY:
MDSplus
CALLING SEQUENCE:
IDL> leaf = leafname(mdspath)
INPUTS:
mdspath - MDSplus path string.
OUTPUTS:
leaf - MDSplus leaf node string (last signal in multi-signal TDI)
KEYWORDS:
Delim - delimiter (default is ':')
Tree - returns tree of input (last signal in multi-signal TDI),
or environmental variable 'MACHINE' if Signal Math TDI used
on signals from more than one tree
AllTrees - all trees in input path
Prefix - returns everything before the leafname
nParts - # of parts to return, counting from the end (default=1,
max of 2)
BRACKETSTR - (1st) square bracket clause, as in an array subscript
COMMON BLOCKS:
NONE
EXAMPLE:
IDL> print,leafname('\JMENARD_DAY1::TOP.FLUX_LOOP.FLUX:FFLPF1BL')
FFLPF1BL
IDL> print,leafname('\wf::ip')
ip
IDL> print,leafname('TOP.FLUXLOOP.FLUX.CALIBRATION',delim='.')
CALIBRATION
NOTE:
for multi-signal TDI, will return the leaf name of last signal, as well as the
last tree.
MODIFICATION HISTORY:
23-Nov-2010 fixed bug introduced 15-Oct with defaulting to '::' delimiter
15-Oct-2010 fixed bug using 2-char delimiter
30-Sep-2010 set delimiter to '::' and don't return '-1' in allTrees
26-Oct-07 Ignore square bracket clauses (but return in keyword BRACKETSTR)
16-Aug-07 return last tree for multi-line TDI
06-Aug-07 fix bug where no backslash in name
11-Jul-07 return all tree names in ALLTREES keyword.
If sigadd, sigmult, etc., used with more than one tree,
return 'NSTX' in TREE keyword
11-Jan-01 Remove comma and anything after, and ')' if TDI
28-Nov-00 Don't return tree name with '\'
23-Jul-99 Written by Bill Davis, PPPL
Source: src/idl_cvs/legend.pro
NAME:
LEGEND
PURPOSE:
Create an annotation legend for a plot.
EXPLANATION:
This procedure makes a legend for a plot. The legend can contain
a mixture of symbols, linestyles, Hershey characters (vectorfont),
and filled polygons (usersym). A test procedure, legendtest.pro,
shows legend's capabilities. Placement of the legend is controlled
with keywords like /right, /top, and /center or by using a position
keyword for exact placement (position=[x,y]) or via mouse (/position).
CALLING SEQUENCE:
LEGEND [,items][,keyword options]
EXAMPLES:
The call:
legend,['Plus sign','Asterisk','Period'],psym=[1,2,3]
produces:
-----------------
| |
| + Plus sign |
| * Asterisk |
| . Period |
| |
-----------------
Each symbol is drawn with a plots command, so they look OK.
Other examples are given in optional output keywords.
lines = indgen(6) ; for line styles
items = 'linestyle '+strtrim(lines,2) ; annotations
legend,items,linestyle=lines ; vertical legend---upper left
items = ['Plus sign','Asterisk','Period']
sym = [1,2,3]
legend,items,psym=sym ; ditto except using symbols
legend,items,psym=sym,/horizontal ; horizontal format
legend,items,psym=sym,box=0 ; sans border
legend,items,psym=sym,delimiter='=' ; embed '=' betw psym & text
legend,items,psym=sym,margin=2 ; 2-character margin
legend,items,psym=sym,position=[x,y] ; upper left in data coords
legend,items,psym=sym,pos=[x,y],/norm ; upper left in normal coords
legend,items,psym=sym,pos=[x,y],/device ; upper left in device coords
legend,items,psym=sym,/position ; interactive position
legend,items,psym=sym,/right ; at upper right
legend,items,psym=sym,/bottom ; at lower left
legend,items,psym=sym,/center ; approximately near center
legend,items,psym=sym,number=2 ; plot two symbols, not one
legend,items,/fill,psym=[8,8,8],colors=[10,20,30]; 3 filled squares
INPUTS:
items = text for the items in the legend, a string array.
For example, items = ['diamond','asterisk','square'].
You can omit items if you don't want any text labels.
OPTIONAL INPUT KEYWORDS:
linestyle = array of linestyle numbers If linestyle[i] < 0, then omit
ith symbol or line to allow a multi-line entry.
psym = array of plot symbol numbers. If psym[i] is negative, then a
line connects pts for ith item. If psym[i] = 8, then the
procedure usersym is called with vertices define in the
keyword usersym. If psym[i] = 88, then use the previously
defined user symbol
vectorfont = vector-drawn characters for the sym/line column, e.g.,
['!9B!3','!9C!3','!9D!3'] produces an open square, a checkmark,
and a partial derivative, which might have accompanying items
['BOX','CHECK','PARTIAL DERIVATIVE'].
There is no check that !p.font is set properly, e.g., -1 for
X and 0 for PostScript. This can produce an error, e.g., use
!20 with PostScript and !p.font=0, but allows use of Hershey
*AND* PostScript fonts together.
N. B.: Choose any of linestyle, psym, and/or vectorfont. If none is
present, only the text is output. If more than one
is present, all need the same number of elements, and normal
plot behaviour occurs.
By default, if psym is positive, you get one point so there is
no connecting line. If vectorfont[i] = '',
then plots is called to make a symbol or a line, but if
vectorfont[i] is a non-null string, then xyouts is called.
/help = flag to print header
/horizontal = flag to make the legend horizontal
/vertical = flag to make the legend vertical (D=vertical)
box = flag to include/omit box around the legend (D=include)
clear = flag to clear the box area before drawing the legend
delimiter = embedded character(s) between symbol and text (D=none)
colors = array of colors for plot symbols/lines (D=!P.color)
textcolors = array of colors for text (D=!P.color)
margin = margin around text measured in characters and lines
spacing = line spacing (D=bit more than character height)
pspacing = psym spacing (D=3 characters)
charsize = just like !p.charsize for plot labels
charthick = just like !p.charthick for plot labels
thick = array of line thickness numbers, if used, then linestyle
must also be specified
box_color=color for the box
position = data coordinates of the /top (D) /left (D) of the legend
normal = use normal coordinates for position, not data
device = use device coordinates for position, not data
number = number of plot symbols to plot or length of line (D=1)
usersym = 2-D array of vertices, cf. usersym in IDL manual. (D=square)
/fill = flag to fill the usersym
/left = flag to place legend snug against left side of plot window (D)
/right = flag to place legend snug against right side of plot window
If /right,pos=[x,y], then x is position of RHS and text
runs right-to-left.
/top = flag to place legend snug against top of plot window (D)
/bottom = flag to place legend snug against bottom of plot window
/top,pos=[x,y] and /bottom,pos=[x,y] produce same positions.
If LINESTYLE, PSYM, VECTORFONT, THICK, COLORS, or TEXTCOLORS are
supplied as scalars, then the scalar value is set for every line or
symbol in the legend.
Outputs:
legend to current plot device
OPTIONAL OUTPUT KEYWORDS:
corners = 4-element array, like !p.position, of the normalized
coords for the box (even if box=0): [llx,lly,urx,ury].
Useful for multi-column or multi-line legends, for example,
to make a 2-column legend, you might do the following:
c1_items = ['diamond','asterisk','square']
c1_psym = [4,2,6]
c2_items = ['solid','dashed','dotted']
c2_line = [0,2,1]
legend,c1_items,psym=c1_psym,corners=c1,box=0
legend,c2_items,line=c2_line,corners=c2,box=0,pos=[c1(2),c1(3)]
c = [c1(0)c2(2),c1(3)>c2(3)]
plots,[c(0),c(0),c(2),c(2),c(0)],[c(1),c(3),c(3),c(1),c(1)],/norm
Useful also to place the legend. Here's an automatic way to place
the legend in the lower right corner. The difficulty is that the
legend's width is unknown until it is plotted. In this example,
the legend is plotted twice: the first time in the upper left, the
second time in the lower right.
legend,['1','22','333','4444'],linestyle=indgen(4),corners=corners
; BOGUS LEGEND---FIRST TIME TO REPORT CORNERS
xydims = [corners(2)-corners(0),corners(3)-corners(1)]
; SAVE WIDTH AND HEIGHT
chdim=[!d.x_ch_size/float(!d.x_size),!d.y_ch_size/float(!d.y_size)]
; DIMENSIONS OF ONE CHARACTER IN NORMALIZED COORDS
pos = [!x.window(1)-chdim(0)-xydims(0) $
,!y.window(0)+chdim(1)+xydims(1)]
; CALCULATE POSITION FOR LOWER RIGHT
plot,findgen(10) ; SIMPLE PLOT; YOU DO WHATEVER YOU WANT HERE.
legend,['1','22','333','4444'],linestyle=indgen(4),pos=pos
; REDO THE LEGEND IN LOWER RIGHT CORNER
You can modify the pos calculation to place the legend where you
want. For example to place it in the upper right:
pos = [!x.window(1)-chdim(0)-xydims(0),!y.window(1)-xydims(1)]
Common blocks:
none
Procedure:
If keyword help is set, call doc_library to print header.
See notes in the code. Much of the code deals with placement of the
legend. The main problem with placement is not being
able to sense the length of a string before it is output. Some crude
approximations are used for centering.
Restrictions:
Here are some things that aren't implemented.
- An orientation keyword would allow lines at angles in the legend.
- An array of usersyms would be nice---simple change.
- An order option to interchange symbols and text might be nice.
- Somebody might like double boxes, e.g., with box = 2.
- Another feature might be a continuous bar with ticks and text.
- There are no guards to avoid writing outside the plot area.
- There is no provision for multi-line text, e.g., '1st line!c2nd line'
Sensing !c would be easy, but !c isn't implemented for PostScript.
A better way might be to simply output the 2nd line as another item
but without any accompanying symbol or linestyle. A flag to omit
the symbol and linestyle is linestyle[i] = -1.
- There is no ability to make a title line containing any of titles
for the legend, for the symbols, or for the text.
Side Effects:
Modification history:
10-Aug-07 add debug keyword. Don't die if more lines than labels. [BD]
01-Mar-99 squeeze legend closer to top [Bill Davis]
write, 24-25 Aug 92, F K Knight (knight@ll.mit.edu)
allow omission of items or omission of both psym and linestyle, add
corners keyword to facilitate multi-column legends, improve place-
ment of symbols and text, add guards for unequal size, 26 Aug 92, FKK
add linestyle[i]=-1 to suppress a single symbol/line, 27 Aug 92, FKK
add keyword vectorfont to allow characters in the sym/line column,
28 Aug 92, FKK
add /top, /bottom, /left, /right keywords for automatic placement at
the four corners of the plot window. The /right keyword forces
right-to-left printing of menu. 18 Jun 93, FKK
change default position to data coords and add normal, data, and
device keywords, 17 Jan 94, FKK
add /center keyword for positioning, but it is not precise because
text string lengths cannot be known in advance, 17 Jan 94, FKK
add interactive positioning with /position keyword, 17 Jan 94, FKK
allow a legend with just text, no plotting symbols. This helps in
simply describing a plot or writing assumptions done, 4 Feb 94, FKK
added thick, symsize, and clear keyword Feb 96, W. Landsman HSTX
David Seed, HR Wallingford, d.seed@hrwallingford.co.uk
allow scalar specification of keywords, Mar 96, W. Landsman HSTX
added charthick keyword, June 96, W. Landsman HSTX
DM, allow choosing of color for box
Source: src/idl_cvs/linesout.pro
NAME:
linesout
PURPOSE:
Write lines out to an X window. Works like xyouts, but uses
line #'s (from the top) and /right if you want to right justify text.
CATEGORY:
Plotting, Strings
CALLING SEQUENCE:
IDL> linesout, text, line=line
INPUTS:
text - text string to write to window
KEYWORD PARAMETERS:
line - line # location, starting with 1 at the top (default=1)
right - if set, text will be right-justified, rather than left
center - if set, will center line (default to left justify).
charsize - character size of text (default to !p.charsize or 1)
dropshadow - if set, make a drop shadow of thick=3 text
thickDropShadow - thickness of drop shadow (default to 1, or 2 if /highlight)
color - color of text
dscolor - color of drop-shadow text (defaults to black or white)
bottom - if set, write lines from bottom, instead of top.
OUTPUTS:
none
COMMON BLOCKS:
NONE
EXAMPLE:
IDL> !p.color=mk_color('black')
IDL> !p.backround=mk_color('white')
IDL> plot,indgen(11)
IDL> linesout, 'Hi Mom', line=2, /right, /dropshadow, charsize=2, $
color=mk_color('black'), dscolor=mk_color('red')
NOTES:
MODIFICATION HISTORY:
24-Oct-2006 added bottom, xpos, ypos, thickDropShadow, & highlight keyword
25-Aug-2005 Written by Bill Davis, PPPL
Source: src/idl_cvs/lint.pro
NAME:
LINT
PURPOSE:
Find the intersection of two lines in the XY plane.
CATEGORY:
CALLING SEQUENCE:
lint, a, b, c, d, i1, i2
INPUTS:
a, b = Points on line 1. in
c, d = Points on line 2. in
KEYWORD PARAMETERS:
Keywords:
FLAG=f Returned flag:
0 means no intersections (lines parallel).
1 means one intersection.
2 means all points intersect (lines coincide).
/COND print condition number for linear system.
OUTPUTS:
i1, i2 = Returned intersection. out
Both i1 and i2 should be the same.
COMMON BLOCKS:
NOTES:
Notes: Each point has the form [x,y].
MODIFICATION HISTORY:
R. Sterner, 1998 Feb 4
Copyright (C) 1998, 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/linterp.pro
NAME:
LINTERP
PURPOSE:
Linearly interpolate tabulated 1-d data from one grid to a new one.
EXPLANATION:
The results of LINTERP are numerically equivalent to the RSI
INTERPOL() function, but note the followign:
(1) LINTERP is a procedure rather than a function
(2) INTERPOL() extrapolates beyond the end points whereas LINTERP
truncates to the endpoints (or use the MISSING keyword)
(3) LINTERP (unlike INTERPOL) uses the intrinsic INTERPOLATE function
and thus may have a speed advantage
Use QUADTERP for quadratic interpolation.
CALLING SEQUENCE:
LINTERP, Xtab, Ytab, Xint, Yint, [MISSING =, /NoInterp ]
INPUT PARAMETERS:
Xtab - Vector containing the current independent variable grid.
Must be monotonic increasing or decreasing
Ytab - Vector containing the current dependent variable values at
the XTAB grid points.
Xint - Scalar or vector containing the new independent variable grid
points for which interpolated value(s) of the dependent
variable are sought.
OUTPUT PARAMETERS:
Yint - Scalar or vector with the interpolated value(s) of the
dependent variable at the XINT grid points.
YINT is double precision if XTAB or YTAB are double,
otherwise YINT is REAL*4
OPTIONAL INPUT KEYWORD:
MISSING - Scalar specifying YINT value(s) to be assigned, when Xint
value(s) are outside of the range of Xtab. Default is to
truncate the out of range YINT value(s) to the nearest value
of YTAB. See the help for the INTERPOLATE function.
/NoINTERP - If supplied then LINTERP returns the YTAB value(s)
associated with the closest XTAB value(s)rather than
interpolating.
EXAMPLE:
To linearly interpolate from a spectrum wavelength-flux pair
WAVE, FLUX to another wavelength grid defined as:
WGRID = [1540., 1541., 1542., 1543., 1544, 1545.]
IDL> LINTERP, WAVE, FLUX, WGRID, FGRID
FGRID will be a 6 element vector containing the values of FLUX
linearly interpolated onto the WGRID wavelength scale
PROCEDURE:
Uses TABINV to calculate the effective index of the values
in Xint in the table Xtab. The resulting index is used
with the intrinsic INTERPOLATE function to find the corresponding
Yint value in Ytab. Unless the MISSING keyword is supplied, out
of range Yint values are truncated to the nearest value of Ytab.
PROCEDURES CALLED:
TABINV, ZPARCHECK
MODIFICATION HISTORY:
Adapted from the IUE RDAF, W. Landsman October, 1988
Modified to use the new INTERPOLATE function June, 1992
Modified to always return REAL*4 October, 1992
Added MISSING keyword August, 1993
Converted to IDL V5.0 W. Landsman September 1997
Added NoInterp keyword W. Landsman July 1999
Source: src/idl_cvs/listfromperl.pro
NAME:
listFromPerl
PURPOSE:
Called from a Perl Script to list MDSplus data from a Web Page
CATEGORY:
WebTools, MDSplus
MODIFICATION HISTORY:
14-Jul-04 added parseShotInput for handling inputs
Source: src/idl_cvs/listshots.pro
NAME:
ListShots
PURPOSE:
List shot numbers with signal over/under a certain amount
CATEGORY:
MDSplus
CALLING SEQUENCE:
IDL> listshots, shot, nshots, signal=signal, warningLevel=warningLevel
INPUTS:
shot - if an interger: beginning shot # to search for
if an array of integers, use as a shot list (ignore nshots)
nshots - # of shots to search over (def=10)
KEYWORD PARAMETERS:
Optional Inputs:
comparator - 'GT' (default) or 'LT' for cutoff and warning
cutoff - value under which value will be ignored
outFile - outFile for output
nSmooth - # for median smoothing before using signal (default=0)
noScreen - if set, do not echo output to screen
server - MDSplus server, default='EUROPA.PPPL.GOV:8501'
signal - mdsplus signal name
skip - shots to skip while looping through list
warningLevel - warn if greater than than this value
Optional Returned:
count - number of shots satisfying criteria
OUTPUTS:
just to screen and/or file
COMMON BLOCKS:
NONE
EXAMPLE:
IDL> listshots, 102915, 10, signal='\WF::IP', warn=1.0
NOTES:
tree should be in signal name
MODIFICATION HISTORY:
17-Apr-2008 Made > 0 not return zero values
04-May-2006 changed openMDSshot to mdsopen
03-Mar-04 a little bullet proofing
23-May-01 Written by Bill Davis, PPPL
Source: src/idl_cvs/list_printer_unix.pro
NAME:
LIST_PRINTER_UNIX
PURPOSE:
LIST available printers from lpstat -a
CATEGORY:
Printing, Unix
SYNTAX:
IDL> printers=list_printer_unix(desc)
EXAMPLES:
(see example in mk_pdmenu)
INPUTS: None
OUTPUTS:
PRINTERS - printer que names
Opt. Outputs:
DESC - description of each printer (doesn't work for printcap.lprng)
KEYWORDS:
printcap - the printcap file to query (INPUT)
ERR - error messages (OUTPUT)
COMMON:
LIST_PRINTER_UNIX - contains last reading of printcap file
Restrictions:
Unix only.
History
22-Feb-2012 use "lpstat-a" for discovering printers
12-May-2005 Made to work for Red Hat Enterprise Linux
where names end with colon [BD]
13-Jan-2003 added printcap.lprng to file search and remove
blank printer names. If file=printcap.lprng, also
look for printer names as first character of line. [Bill Davis]
Version 1, 8-Aug-1995, D M Zarro . Written
Version 2, 1 July 1996, S.V.H.Haugan (UiO)
Added PSLASER/PSCOLOR/PSCOLOR2 environmentals check.
1-Nov-2000, Kim Tolbert - Previously only worked for unix machines with
/etc/printcap file for printers (DEC, ?). Added check
for /etc/printers.conf (Sun) also.
18-Dec-2001, Kim Tolbert. Some unix (linux) allows pipe symbol (|) in
lp definition (like :lp=|/usr/share/printconf/jetdirectprint:\)
so have to look for names in lines with | but no colon in first column.
Also, names can be in lines with |, or lines with : (if not in
first column), so append result of both kinds of search instead of
doing one or the other.
Also, eliminate all comment lines first
Source: src/idl_cvs/loadblobs.pro
NAME:
loadblobs
PURPOSE:
calls many routines used for loading blob tracking info into a
database and making plots and output files
CATEGORY:
blobs
CALLING SEQUENCE:
IDL> loadblobs, filename
INPUTS:
filename - a .cin or .hdf file containing plasma images
KEYWORD PARAMETERS:
filename - cine file to analyze
outfilename - output of text with blob info (default formed from inputs)
t1 - start time desired in terms of times in .cin file (in sec)
t2 - end time desired in terms of times in .cin file (in sec)
aveT1 - start for averaging frame (DEF=t1) if normalize=1
aveT2 - ending time for averaging frame (DEF=t2)
horiz - if=0, do not flip frames horizontally
RotCCW - if set, will rotate frame Counter-clockwise (after horizontal flip)
default for NSTX, but not for CMOD
BlobCriteria - structure for blob criteria, like min normalized height, etc.
normalize - normalize images (divide by average frame) before looking for
blobs.
deleteFirst - if = 0, will NOT first delete the existing database table.
dbOut - if=0, will not write to an SQL database
outDBfile - if set, will write database info to this filename, rather than db
table - if not set, will write to table SH+
database - if not set, will write to database 'BLOBS'
nSmooth - amount to smooth image before looking for blobs
GaussSmooth - if set, will do "gaussian" smoothing (sort of a double smooth)
instead of boxcar smoothing
velSmooth - amount to smooth velocity tracks before putting into database
FrameOffset - if set, subtract this (like a baseline) from all pixels
FrameAveMin - if set, make close-to-zero pixels this number,
so when dividing into data, as in normalizing, result is near zero
AveFrameSmooth - smoothing for the averaged frame(s)
verbose - if set, lots of information output listed
debug - if set, will output even more and may stop at some spots
NOTES:
see CheckBlobVel.txt for validation case
EXAMPLES:
; NB scan
loadblobs, T1=0.500, T2=0.510, /verb, $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_139481.cin'
loadblobs, T1=0.500, T2=0.510, /verb, $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_139482.cin'
loadblobs, T1=0.500, T2=0.510, /verb, $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_139483.cin'
; Li scan
loadblobs, T1=0.580, T2=0.590, /verb, $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_141319.cin'
loadblobs, T1=0.580, T2=0.590, /verb, $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_141326.cin'
loadblobs, T1=0.530, T2=0.540, /verb, $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_141320.cin'
loadblobs, T1=0.530, T2=0.540, /verb, $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_141324.cin'
loadblobs, T1=0.530, T2=0.540, /verb, $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_141322.cin'
loadblobs, T1=0.480, T2=0.490, /verb, $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_141307.cin'
; two CMOD cameras for same shot
(when data retrieved from MDSplus at MIT, times are shot times):
loadblobs, T1=1.089, T2=1.091, /verb, table='SH1120224030x', $ ; cam near X-pt
/horiz, minHt=0.5, minRise=0.06, Chi=5, velSmooth=0, $
nSmooth=3, /GaussSmooth, outFile='shot_1120224030x_blobs_1116-1118ms.txt', $
AveFrameSmooth=0, FrameAveMin=25, $
'shot_1120224030.cine'
loadblobs, T1=1.089, T2=1.091, /verb, table='SH1120224030m', $ ; cam near mid-plane
/horiz, minHt=0.5, minRise=0.06, Chi=5, velSmooth=0, $
nSmooth=3, /GaussSmooth, outFile='shot_1120224030m_blobs_1116-1118ms.txt', $
AveFrameSmooth=0, FrameAveMin=25, $
'shot_1120224030.cin' shot='1120224009' & t1=0.701 & t2=t1+0.005
shot='1120224015' & t1=0.801 & t2=t1+0.004
shot='1120224022' & t1=1.044 & t2=t1+0.004 ;
shot='1120224023' & t1=1.113 & t2=t1+0.003
shot='1120224024' & t1=1.130 & t2=t1+0.005
shot='1120224027' & t1=1.144 & t2=t1+0.004
shot='1120712026' & t1=1.144 & t2=t1+0.004
shot='1120712027' & t1=1.144 & t2=t1+0.004
shot='1120712028' & t1=1.144 & t2=t1+0.005 ;
shot='1120712029' & t1=1.144 & t2=t1+0.003
shot='1120815018' & t1=1.270 & t2=t1+0.004
shot='1120815021' & t1=1.190 & t2=t1+0.003
shot='1120815030' & t1=1.260 & t2=t1+0.004
shot='1120815034' & t1=1.150 & t2=t1+0.003
st1 = strtrim( string(t1*1000,format='(I4.4)'), 2)
st2 = strtrim( string(t2*1000,format='(I4.4)'), 2)
loadblobs, T1=t1, T2=t2, table='SH'+shot+'x', $ ; cam near X-pt
/horiz, /RotCW, minHt=0.5, minRise=0.06, Chi=5, velSmooth=0, $
nSmooth=3, /GaussSmooth, outFile='shot_'+shot+'x_blobs_'+st1+'-'+st2+'ms.txt', $
AveFrameSmooth=0, FrameAveMin=25, FrameAveDeltaMS=0, $
'shot_'+shot+'.cine', /verb
loadblobs, T1=t1, T2=t2, table='SH'+shot+'m', $ ; cam near midplane
/horiz, minHt=0.5, minRise=0.06, Chi=5, velSmooth=0, $
nSmooth=3, /GaussSmooth, outFile='shot_'+shot+'m_blobs_'+st1+'-'+st2+'ms.txt', $
AveFrameSmooth=0, FrameAveMin=25, FrameAveDeltaMS=0, $
'shot_'+shot+'.cin', /verb ; midplane camera file does not end in e ; for fake blobs covering whole center of image:
; and tilts
.r getfakeblobs
loadblobs, T1=0.080, T2=0.080+.002, /verb, table='FakeShotXall', $
nSmooth=3, /GaussSmooth, outFile='shot_1120815021FakeX_blobs_80-80ms.txt', $
norm=0, horiz=0, minHt=3, velSmooth=0, $
'/p/gpi/szweben/Phantom2_Data/2012_shots/1120815/shot_1120815021.cine'
loadblobs, T1=0.080, T2=0.080+.0055, /verb, table='FakeShotM', $
nSmooth=3, /GaussSmooth, outFile='shot_1120815021FakeM_blobs_80-80ms.txt', $
norm=0, horiz=0, minHt=3, velSmooth=0, $
'/p/gpi/szweben/Phantom_Data/2012_data/1120815/shot_1120815021.cin'
loadblobs, T1=0.080, T2=0.080+.0055, /verb, table='FakeShotXT', $
nSmooth=3, /GaussSmooth, outFile='shot_1120815021FakeXT_blobs_80-80ms.txt', $
norm=0, horiz=0, minHt=3, velSmooth=0, $
'/p/gpi/szweben/Phantom2_Data/2012_shots/1120815/shot_1120815021.cine'
loadblobs, T1=0.080, T2=0.080+.0055, /verb, table='FakeShotXT30', $
nSmooth=3, /GaussSmooth, outFile='shot_1120815021FakeXT30_blobs_80-80ms.txt', $
norm=0, horiz=0, minHt=3, velSmooth=0, $
'/p/gpi/szweben/Phantom2_Data/2012_shots/1120815/shot_1120815021.cine'
; two CMOD cameras for same shot:
loadblobs, T1=1.086, T2=1.088, /verb, table='SH1120224029x', $ ; cam near X-pt
/horiz, minHt=0.5, minRise=0.06, Chi=5, velSmooth=0, $
nSmooth=3, /GaussSmooth, outFile='shot_1120224029x_blobs_1086-1088ms.txt', $
AveFrameSmooth=0, FrameAveMin=25, $
'shot_1120224029.cine'
loadblobs, T1=1.086, T2=1.088, /verb, table='SH1120224029m', $ ; cam near X-pt
/horiz, minHt=0.5, minRise=0.06, Chi=5, velSmooth=0, $
nSmooth=3, /GaussSmooth, outFile='shot_1120224029m_blobs_1086-1088ms.txt', $
AveFrameSmooth=0, FrameAveMin=25, $
'shot_1120224029.cin'
; two CMOD cameras for same shot
(stewarts Movie is from 1.116-1.118, but stuff starts happening at 1.117):
loadblobs, T1=1.115, T2=1.117, /verb, table='SH1120224022x', $ ; cam near X-pt
/horiz, minHt=0.5, minRise=0.06, Chi=5, velSmooth=0, $
nSmooth=3, /GaussSmooth, outFile='shot_1120224022x_blobs_1116-1118ms.txt', $
AveFrameSmooth=0, FrameAveMin=25, $
'shot_1120224022.cine'
loadblobs, T1=1.115, T2=1.117, /verb, table='SH1120224022m', $ ; cam near X-pt
/horiz, minHt=0.5, minRise=0.06, Chi=5, velSmooth=0, $
nSmooth=3, /GaussSmooth, outFile='shot_1120224022m_blobs_1116-1118ms.txt', $
AveFrameSmooth=0, FrameAveMin=25, $
'shot_1120224022.cin'
loadblobs, T1=0.080, T2=0.090, /verb, table='SH1120815021xN', $ ; cam near X-pt
/horiz, minHt=0.5, minRise=0.06, Chi=5, velSmooth=0, $
nSmooth=3, /GaussSmooth, outFile='shot_1120815021xN_blobs_80-90ms.txt', $
AveFrameSmooth=0, FrameAveMin=25, $
'/p/gpi/szweben/Phantom2_Data/2012_shots/1120815/shot_1120815021.cine'
loadblobs, T1=0.080, T2=0.090, /verb, table='SH1120815021mN', $ ; midplane cam
/horiz, minHt=0.33, minRise=0.04, Chi=5, velSmooth=0, $
nSmooth=3, /GaussSmooth, outFile='shot_1120815021mN_blobs_80-90ms.txt', $
AveFrameSmooth=0, FrameAveMin=25, FrameOffset=25, $
'/p/gpi/szweben/Phantom_Data/2012_data/1120815/shot_1120815021.cin' loadblobs, T1=0.080, T2=0.090, /verb, table='SH1120224022xN', $ ; cam near X-pt
/horiz, minHt=0.5, minRise=0.06, Chi=5, velSmooth=0, $
nSmooth=3, /GaussSmooth, outFile='shot_1120224022x_blobs_80-90ms.txt', $
AveFrameSmooth=0, FrameAveMin=25, $
'/p/gpi/szweben/Phantom2_Data/2012_shots/1120224/shot_1120224022.cine'
loadblobs, T1=0.080, T2=0.090, /verb, table='SH1120224022mN', $ ; midplane cam
/horiz, minHt=0.33, minRise=0.04, Chi=5, velSmooth=0, $
nSmooth=3, /GaussSmooth, outFile='shot_1120224022m_blobs_80-90ms.txt', $
AveFrameSmooth=0, FrameAveMin=25, FrameOffset=25, $
'/p/gpi/szweben/Phantom_Data/2012_data/1120224/shot_1120224022.cin' ; two CMOD cameras for same shot -- try without normalization
loadblobs, T1=0.020, T2=0.040, /verb, table='SH1120815021x', $ ; cam near X-pt
/horiz, minHt=20, norm=0, minRise=4, Chi=8, velSmooth=0, $
nSmooth=3, /GaussSmooth, outFile='shot_1120815021x_blobs_20-40ms.txt', $
'/p/gpi/szweben/Phantom2_Data/2012_shots/1120815/shot_1120815021.cine'
loadblobs, T1=0.020, T2=0.040, /verb, table='SH1120815021m', $
/horiz, minHt=20, norm=0, minRise=4, Chi=8, velSmooth=0, $
nSmooth=3, /GaussSmooth, outFile='shot_1120815021m_blobs_20-40ms.txt', $
'/p/gpi/szweben/Phantom_Data/2012_data/1120815/shot_1120815021.cin'
; try that shot with normal params
loadblobs, T1=0.020, T2=0.040, /verb, table='SH1120815021', $
/horiz, outFile='shot_1120815021_blobs_20-40ms.txt', $
'/p/gpi/szweben/Phantom_Data/2012_data/1120815/shot_1120815021.cin'
; defaults work pretty well when normalizing:
loadblobs, T1=0, T2=0.020, /verb, $
'/p/gpi/szweben/Phantom_Data/2009_Phantom_data/1091216/shot_1091216017.cin'
'/p/gpi/szweben/Phantom_Data/2009_Phantom_data/1091216/shot_1091216018.cin'
'/p/gpi/szweben/Phantom_Data/2009_Phantom_data/1091216/shot_1091216019.cin'
'/p/gpi/szweben/Phantom_Data/2009_Phantom_data/1091216/shot_1091216023.cin'
'/p/gpi/szweben/Phantom_Data/2009_Phantom_data/1091216/shot_1091216025.cin'
'/p/gpi/szweben/Phantom_Data/2009_Phantom_data/1091216/shot_1091216026.cin'
'/p/gpi/szweben/Phantom_Data/2009_Phantom_data/1091216/shot_1091216028.cin'
'/p/gpi/szweben/Phantom_Data/2009_Phantom_data/1091216/shot_1091216029.cin'
'/p/gpi/szweben/Phantom_Data/2009_Phantom_data/1091216/shot_1091216030.cin'
loadblobs, T1=0.050, T2=0.070, /verb, $
'/p/gpi/szweben/Phantom_Data/2010_data/1100120/shot_1100120025.cin'
'/p/gpi/szweben/Phantom_Data/2010_data/1100120/shot_1100120026.cin'
'/p/gpi/szweben/Phantom_Data/2010_data/1100120/shot_1100120027.cin'
loadblobs, T1=0.050, T2=0.070, /verb, $
'/p/gpi/szweben/Phantom_Data/2010_data/1100803/shot_1100803005.cin'
'/p/gpi/szweben/Phantom_Data/2010_data/1100803/shot_1100803008.cin'
'/p/gpi/szweben/Phantom_Data/2010_data/1100803/shot_1100803011.cin'
'/p/gpi/szweben/Phantom_Data/2010_data/1100803/shot_1100803015.cin'
loadblobs, T1=0.060, T2=0.080, /verb, $
'/p/gpi/szweben/Phantom_Data/2010_data/1100824/shot_1100824017.cin'
'/p/gpi/szweben/Phantom_Data/2010_data/1100824/shot_1100824019.cin'
'/p/gpi/szweben/Phantom_Data/2010_data/1100824/shot_1100824021.cin'
loadblobs, T1=0, T2=0.020, /verb, $
'/p/gpi/szweben/Phantom_Data/2011_data/1110114/shot_1110114023.cin'
'/p/gpi/szweben/Phantom_Data/2011_data/1110114/shot_1110114026.cin'
'/p/gpi/szweben/Phantom_Data/2011_data/1110114/shot_1110114027.cin'
loadblobs, T1=0.017, T2=0.027, /verb, $
'/p/gpi/szweben/Phantom_Data/2011_data/1110114/shot_1110114032.cin'
For Matt:
loadblobs, T1=0.24, T2=0.27, /verb, $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_142000.cin'
loadblobs, T1=0.219, T2=0.229, /verb, $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_138120.cin'
loadblobs, T1=0.225, T2=0.235, /verb, $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_138114.cin'
; APS NB
loadblobs, T1=0.280, T2=0.300, /verb, $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_138119.cin'
loadblobs, T1=0.290, T2=0.300, /verb, $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_138128.cin'
loadblobs, T1=0.280, T2=0.300, /verb, $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_142220.cin'
loadblobs, T1=0.530, T2=0.550, /verb, FrameAveDeltaMS=0, table='SH138234z', $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_138234.cin'
loadblobs, T1=0.268, T2=0.288, /verb, table='SH139432', $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_139432.cin'
loadblobs, T1=0.258, T2=0.278, /verb, table='SH139444', $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_139444.cin'
loadblobs, T1=0.200, T2=0.220, /verb, $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_141751.cin'
loadblobs, T1=0.210, T2=0.230, /verb, $
'/p/nstxcam-archive/Phantom710-9205/2010/nstx_5_141752.cin' , /deb
loadblobs, T1=0.021, T2=0.031, /verb, '/p/nstxcam/CMOD/shot_1120223031.cin' , /deb
to load a file, but not a database:
loadblobs, '/u/bdavis/Blobs/solt_012_3.5b.hdf', shot=99901203, dbout=0, $
outDBfile='solt_012_3.5b.txt', normalize=0, minHt=0.01, minRise=0.01
27-Feb-2012 added smoothing options, since default in findblobs now=0
MODIFICATION HISTORY:
12-Nov-2012 made default GaussSmooth=1, to be consistent with FCplayer.
17-May-2012 several updates to pass parameters to saveblobs for file output
WRITTEN by Bill Davis, PPPL, for Stewart Zweben
Source: src/idl_cvs/load_fc.pro
NAME:
load_fc
PURPOSE:
Load summary Waveforms for Phantom Fast Cameras into MDSplus.
PROCEDURE:
CATEGORY:
Fast Cameras, MDSplus
CALLING SEQUENCE:
load_fc, shot1, shot2, path=['/p/nstxusr/miro/2009','/p/nstxcam/miro/2009'], $
prefix='Miro'
load_fc, shot1, shot2, path='/p/nstxusr/miro/2008',prefix='Miro'
INPUTS:
shot1 = starting shot number to process
shot2 = (Optional) last shot number to process
KEYWORDS:
(Optional)
test - doesn't write to MDSplus
EventDone - if there, will declare this event when all of one shot done
noDeclare - if set, will declare NO events.
COMMON BLOCKS:
NONE
NOTES:
YOU NEED PRIVILEGES to write to the MDSplus tree. On skylark:
IDL> addSigNodes, shot1, shot2, tree='CAMERAS', $
nodes=['\aveintensity', '\maxintensity', '\ave_r','\ave_g','\ave_b' ], $
tags =['\aveint', '\maxint','\ave_r','\ave_g','\ave_b']
(probably better to do the above in TCL procedure
LIMITATIONS:
MODIFICATION HISTORY:
09-Mar-2007 WRITTEN by Bill Davis
Source: src/idl_cvs/load_nebar.pro
NAME:
load_nebar
PURPOSE:
Load Ne-bar Waveform into MDSplus.
CATEGORY:
MDSplus, Density
CALLING SEQUENCE:
load_nebar, shot1, shot2
INPUTS:
shot1 = starting shot number to process
shot2 = (Optional) last shot number to process
KEYWORDS:
(Optional)
test - doesn't write to MDSplus
wfTree - name of MDSplus tree to write to (defalut='WF')
NOTES:
YOU NEED PRIVILEGES to write to the MDSplus tree.
LIMITATIONS:
Divide by zeroes, etc. will cause a message like:
% Program caused arithmetic error: Floating illegal operand
MODIFICATION HISTORY:
WRITTEN 23-Jul-2013, by Bill Davis for Stewart Zweben
Source: src/idl_cvs/logbook_list.pro
NAME:
logbook_list
PURPOSE:
List info from the NSTX logbook (to a screen or file)
CATEGORY:
Database, NSTX
CALLING SEQUENCE:
IDL> logbook_list, shot1=shot1, shot2=shot2, runID=runID, $
rundate=rundate, username=username, $
str1=str1, str2=str2, str3=str3, logical1=logical1, logical2=logical2, $
database=database, include=include, outFile=outFile
INPUTS:
(none required)
KEYWORD PARAMETERS:
(all optional)
shot1 - beginning shot, e.g., 120200
shot2 - ending shot (if missing, will just search shot1)
runID - Typically the XP #, e.g., 5
rundate - run date (YYYYMMDD), e.g., 20060426
username - computer username of person who made the entry, e.g. 'KAYE'
str1, str2, str3 - strings that must be in the comments for a shot to be included
logical1, logical2, 'AND' or 'OR' between str1, 2, & 3
include - if NOT=0 and USERNAME specified then include any entries satisfying
other criteria for which TOPIC='PHS OPS' or 'SESSION LEADER'
database - defaults to 'NSTXLOGS'
break - if set, lines longer than 72 characters will be broken at an earlier space
outFile - string (if not present, data listed to screen)
OUTPUTS:
data to screen or file, if specified
COMMON BLOCKS:
NONE
EXAMPLE:
IDL> logbook_list, shot1=120200
IDL> logbook_list, rundate=20060426 ; all shots from Apri. 25, 2006
IDL> logbook_list, shot1=120200, shot2=130000, username='PAUL'
MODIFICATION HISTORY:
07-Apr-2009 made response better when nothing found
29-Nov-2007 Had to change supersep to wrap long lines
28-Nov-2007 Written by Bill Davis, PPPL (some code from Josh Stillerman)
Source: src/idl_cvs/logbook_list_plus.pro
NAME:
logbook_list_plus
PURPOSE:
List info from the NSTX logbook (to a screen or file)
CATEGORY:
Database, NSTX
CALLING SEQUENCE:
IDL> logbook_list_plus, shot1=shot1, shot2=shot2, XP=XP, $
rundate=rundate, username=username, $
str1=str1, str2=str2, str3=str3, logical1=logical1, logical2=logical2, $
database=database, include=include, outFile=outFile
INPUTS:
(none required)
KEYWORD PARAMETERS:
(all optional)
shot1 - beginning shot, e.g., 120200
shot2 - ending shot (if missing, will just search shot1)
XP - Typically the XP #, e.g., 5
rundate - run date (YYYYMMDD), e.g., 20060426
username - computer username of person who made the entry, e.g. 'KAYE'
str1, str2, str3 - strings that must be in the comments for a shot to be included
logical1, logical2, 'AND' or 'OR' between str1, 2, & 3
include - if NOT=0 and USERNAME specified then include any entries satisfying
other criteria for which TOPIC='PHS OPS' or 'SESSION LEADER'
database - defaults to 'NSTXLOGS'
break - if set, lines longer than 72 characters will be broken at an earlier space
outFile - string (if not present, data listed to screen)
xsize - horizontal size of plot summary
ysize - vertical size of plot summary
OUTPUTS:
data to screen or file, if specified
COMMON BLOCKS:
NONE
EXAMPLE:
IDL> logbook_list_plus, shot1=120200
IDL> logbook_list_plus, rundate=20060426 ; all shots from April 25, 2006
IDL> logbook_list_plus, shot1=120200, shot2=130000, username='PAUL'
IDL> logbook_list_plus, shot1=120200, /verb, /debug, outfile='temp.html'
MODIFICATION HISTORY:
09-Aug-2013 don't set shot # if blank, but rundate specified.
11-Jul-2012 make work if just username specified (didn't use %) and allow strings
of shot numbers.
24-Aug-2010 included 'RF' as default entries.
26-Jul-2010 addes for having checkboxes for topics on weblogplus.html
15-Jul-2010 made lightning fast by searching subdirectories like 138000s for plot
summary files. See mkandmv.pro to make these directories and move files.
08-Apr-2010 allow pre-existing jpegs to be in subdirectories
08-Dec-2009 added keywords charsize, xsize, ysize
14-Jul-2009 Return error if no entries found
25-Jul-2008 Removed RunID keyword, and added XP [BD]
10-Jul-2008 Added "order by shot" to query, so all shots shown
29-Nov-2007 Had to change supersep to wrap long lines
28-Nov-2007 Written by Bill Davis, PPPL (some code from Josh Stillerman)
Source: src/idl_cvs/logbook_options.pro
NAME:
logbook_options (copied from logbook_options)
PURPOSE:
List info from the NSTX logbook (to a screen or file)
CATEGORY:
Database, NSTX
CALLING SEQUENCE:
IDL> logbook_options, shot1=shot1, shot2=shot2, XP=XP, $
rundate=rundate, username=username, $
str1=str1, str2=str2, str3=str3, logical1=logical1, logical2=logical2, $
database=database, include=include, outFile=outFile
INPUTS:
(none required)
KEYWORD PARAMETERS:
(all optional)
shot1 - beginning shot, e.g., 120200
shot2 - ending shot (if missing, will just search shot1)
XP - Typically the XP #, e.g., 5
rundate - run date (YYYYMMDD), e.g., 20060426
username - computer username of person who made the entry, e.g. 'KAYE'
str1, str2, str3 - strings that must be in the comments for a shot to be included
logical1, logical2, 'AND' or 'OR' between str1, 2, & 3
include - if NOT=0 and USERNAME specified then include any entries satisfying
other criteria for which TOPIC='PHS OPS' or 'SESSION LEADER'
database - defaults to 'NSTXLOGS'
break - if set, lines longer than 72 characters will be broken at an earlier space
outFile - string (if not present, data listed to screen)
xsize - horizontal size of plot summary
ysize - vertical size of plot summary
OUTPUTS:
data to screen or file, if specified
COMMON BLOCKS:
NONE
EXAMPLE:
IDL> logbook_options, shot1=120200
IDL> logbook_options, rundate=20060426 ; all shots from April 25, 2006
IDL> logbook_options, shot1=120200, shot2=130000, username='PAUL'
IDL> logbook_options, shot1=120200, /verb, /debug, outfile='temp.html'
MODIFICATION HISTORY:
24-Aug-2010 included 'RF' as default entries.
26-Jul-2010 addes for having checkboxes for topics on weblogplus.html
15-Jul-2010 made lightning fast by searching subdirectories like 138000s for plot
summary files. See mkandmv.pro to make these directories and move files.
08-Apr-2010 allow pre-existing jpegs to be in subdirectories
08-Dec-2009 added keywords charsize, xsize, ysize
14-Jul-2009 Return error if no entries found
25-Jul-2008 Removed RunID keyword, and added XP [BD]
10-Jul-2008 Added "order by shot" to query, so all shots shown
29-Nov-2007 Had to change supersep to wrap long lines
28-Nov-2007 Written by Bill Davis, PPPL (some code from Josh Stillerman)
Source: src/idl_cvs/long64date2str.pro
NAME:
long64date2str
PURPOSE:
Return date from a 64-bit longword, like 1112308040, as returned
from file_info, in a more conventional format.
CATEGORY:
Dates
CALLING SEQUENCE:
dateString = long64date2str( long64date )
INPUTS:
long64date returned from file_info, e.g., 1112308040
RETURNED:
dateString - conventional date string, e.g. 02/18/2006
KEYWORDS
delim - (string) delimeter used for output (Default is /)
twoDigitsForYear - if set, year will be last two digits of year
filetime - time of day of file, e.g. 14:32:59
year - year of file
month - numerical month of file
day - numerical day of file
EXAMPLES:
IDL> print,long64date2str( 1112308040 )
03/31/2005
IDL> print,long64date2str( 1112308040, /twoDigitsForYear )
03/31/05
MODIFICATION HISTORY:
WRITTEN 3-Jan-2007 by Bill Davis
Source: src/idl_cvs/longdate2str.pro
NAME:
longdate2str
PURPOSE:
Return date from a longword, like 20060218, in a more conventional
format
CATEGORY:
Dates
CALLING SEQUENCE:
dateString = longdate2str( longDate )
INPUTS:
date in form yyyymmdd, e.g., 20060218
RETURNED:
dateString - conventional date string, e.g. 02/18/2006
KEYWORDS
delim - (string) delimeter used for output (Default is /)
twoDigitsForYear - if set, year will be last two digits of year
EXAMPLES:
IDL> print,longdate2str( 20060218 )
02/18/2006
IDL> print,longdate2str( 19951229, /twoDigitsForYear )
12/29/95
MODIFICATION HISTORY:
WRITTEN by 1-May-2006 Bill Davis