This page was created by the IDL library routine
mk_html_help. For more information on
this routine, refer to the IDL Online Help Navigator
or type:
? mk_html_help
at the IDL command line prompt.
Last modified: Fri Nov 13 21:41:07 1998.
Name : BELONG
returns a binary integer (or a vector of binary integers)
which specifies whether a given Element belongs to a Set
or not
Calling Sequence:
Result = BELONG(Element, Set)
Arguments
Element : an element or a vector of elements to be tested
Set : an array of values defining the set.
Both may be any type of variables.
History
Jongchul Chae :December 1996
(See ./belong.pro)
NAME : CR_CORRECT
PURPOSE :
Correct for cosmic ray like defect
CALLING SEQUENCE
New_image = CR_CORRECT(Old_image, Size=size, Cutoff=cutoff)
INPUT:
Old_image : image to be corrected
KEYWORD INPUTS:
Size : window size for median filtering (defualt=3)
Cutoff : cutoff value (default value=3.)
OUTPUT:
New_image : corrected image
History
June 1997 Jongchul Chae
(See ./cr_correct.pro)
NAME:
CURVEFIT
PURPOSE:
Non-linear least squares fit to a function of an arbitrary
number of parameters. The function may be any non-linear
function. If available, partial derivatives can be calculated by
the user function, else this routine will estimate partial derivatives
with a forward difference approximation.
CATEGORY:
E2 - Curve and Surface Fitting.
CALLING SEQUENCE:
Result = CURVEFIT_C(X, Y, W, A, SIGMAA, FUNCTION_NAME = name, $
ITMAX=ITMAX, ITER=ITER, TOL=TOL, /NODERIVATIVE)
INPUTS:
X: A row vector of independent variables.
Y: A row vector of dependent variable, the same length as x.
W: A row vector of weights, the same length as x and y.
For no weighting,
w(i) = 1.0.
For instrumental weighting,
w(i) = 1.0/y(i), etc.
A: A vector, with as many elements as the number of terms, that
contains the initial estimate for each parameter. If A is double-
precision, calculations are performed in double precision,
otherwise they are performed in single precision.
KEYWORDS:
FUNCTION_NAME: The name of the function (actually, a procedure) to
fit. If omitted, "FUNCT" is used. The procedure must be written as
described under RESTRICTIONS, below.
ITMAX: Maximum number of iterations. Default = 20.
ITER: The actual number of iterations which were performed
TOL: The convergence tolerance. The routine returns when the
relative decrease in chi-squared is less than TOL in an
interation. Default = 1.e-3.
CHI2: The value of chi-squared on exit
NODERIVATIVE: If this keyword is set then the user procedure will not
be requested to provide partial derivatives. The partial
derivatives will be estimated in CURVEFIT using forward
differences. If analytical derivatives are available they
should always be used.
A_EXPECTED : The expected value of the parameters (INPUT).
If omitted, initial guesses are used.
A_WEIGHT : the inverse of the variances of the allowable difference between
the expected and the final parameters
OUTPUTS:
Returns a vector of calculated values.
A: A vector of parameters containing fit.
OPTIONAL OUTPUT PARAMETERS:
Sigmaa: A vector of standard deviations for the parameters in A.
COMMON BLOCKS:
NONE.
SIDE EFFECTS:
None.
RESTRICTIONS:
The function to be fit must be defined and called FUNCT,
unless the FUNCTION_NAME keyword is supplied. This function,
(actually written as a procedure) must accept values of
X (the independent variable), and A (the fitted function's
parameter values), and return F (the function's value at
X), and PDER (a 2D array of partial derivatives).
For an example, see FUNCT in the IDL User's Libaray.
A call to FUNCT is entered as:
FUNCT, X, A, F, PDER
where:
X = Vector of NPOINT independent variables, input.
A = Vector of NTERMS function parameters, input.
F = Vector of NPOINT values of function, y(i) = funct(x(i)), output.
PDER = Array, (NPOINT, NTERMS), of partial derivatives of funct.
PDER(I,J) = DErivative of function at ith point with
respect to jth parameter. Optional output parameter.
PDER should not be calculated if the parameter is not
supplied in call. If the /NODERIVATIVE keyword is set in the
call to CURVEFIT then the user routine will never need to
calculate PDER.
PROCEDURE:
Copied from "CURFIT", least squares fit to a non-linear
function, pages 237-239, Bevington, Data Reduction and Error
Analysis for the Physical Sciences.
"This method is the Gradient-expansion algorithm which
combines the best features of the gradient search with
the method of linearizing the fitting function."
Iterations are performed until the chi square changes by
only TOL or until ITMAX iterations have been performed.
The initial guess of the parameter values should be
as close to the actual values as possible or the solution
may not converge.
EXAMPLE: Fit a function of the form f(x) = a * exp(b*x) + c to
sample pairs contained in x and y.
In this example, a=a(0), b=a(1) and c=a(2).
The partials are easily computed symbolicaly:
df/da = exp(b*x), df/db = a * x * exp(b*x), and df/dc = 1.0
Here is the user-written procedure to return F(x) and
the partials, given x:
pro gfunct, x, a, f, pder ; Function + partials
bx = exp(a(1) * x)
f= a(0) * bx + a(2) ;Evaluate the function
if N_PARAMS() ge 4 then $ ;Return partials?
pder= [[bx], [a(0) * x * bx], [replicate(1.0, N_ELEMENTS(x))]]
end
x=findgen(10) ;Define indep & dep variables.
y=[12.0, 11.0,10.2,9.4,8.7,8.1,7.5,6.9,6.5,6.1]
w=1.0/y ;Weights
a=[10.0,-0.1,2.0] ;Initial guess
yfit=curvefit(x,y,w,a,sigmaa,function_name='gfunct')
print, 'Function parameters: ', a
print, yfit
end
MODIFICATION HISTORY:
Written, DMS, RSI, September, 1982.
Does not iterate if the first guess is good. DMS, Oct, 1990.
Added CALL_PROCEDURE to make the function's name a parameter.
(Nov 1990)
12/14/92 - modified to reflect the changes in the 1991
edition of Bevington (eq. II-27) (jiy-suggested by CreaSo)
Mark Rivers, U of Chicago, Feb. 12, 1995
- Added following keywords: ITMAX, ITER, TOL, CHI2, NODERIVATIVE
These make the routine much more generally useful.
- Removed Oct. 1990 modification so the routine does one iteration
even if first guess is good. Required to get meaningful output
for errors.
- Added forward difference derivative calculations required for
NODERIVATIVE keyword.
- Fixed a bug: PDER was passed to user's procedure on first call,
but was not defined. Thus, user's procedure might not calculate
it, but the result was then used.
Stein Vidar H. Haugan, Univ. of Oslo, 7 May 1996
- Detecting NaN errors and deadlock repetitions inside the
REPEAT loop.
Jongchul CHAE, 1996
- Introduce a regularizing term to prevent the degeneracy between
parameters
- Add new keyword paramters A_EXPECTED and A_weight
- Eliminate forward difference derivative calulations
- Vectorize the program so as to fit a set of data points
at a same time
(See ./curvefit_c.pro)
NAME :
FILE_IN_PATH
PURPOSE :
Checks and finds a full string of a file name
by searching through IDL paths
CALLING SEQUENCE :
Result = file_in_path(filename, count=count)
INPUTS :
FILENAME a string of the file name
OUTPUTS:
Result a full string including directory and filename'
If the specified file exists, it returns the
file name without searching through IDL paths.
If more than one files are found in IDL paths,
the first one is returned.
If no file is found, it returms the file name
but the keyword count has the value zero.
KEYWORDS:
COUNT the number of existing files
REQUIRED ROUTINES:
BREAK_PATH LOCATE_DIR
MODIFICATION HISTORY
March 1997 Jongchul Chae
(See ./file_in_path.pro)
NAME: FTP_GETPUT
PURPOSE: Get a file from or put it to a remote machine using FTP
CALLING SEQUENCE:
FTP_GETPUT, FILE, NODE, USER, PASSWD
INPUT:
FILE the file name to be gotten or put
NODE the node of the remote machine
USER user id
PASSWD password. USER and PASSWD can be omitted if either
ANONYMOUS or AUTO_LOGIN keyword is set.
KEYWORDS:
REMOTE_DIR the remote directory (default is the home directory)
LOCAL_DIR the local directory (deafult id the current directory)
PUT if set, the file is put (default id to get it)
ASCII if set, the ASCII mode is chosen (default is BINARY)
ANONYMOUS if set, anonymous FTP is tried.
AUTO_LOGIN if set, auto-login FTP is tried. This works
only UNIX-campatible machines and the file $HOME/.netrc
should exist and contain the proper infomation.
STATUS is set to 1 (success) or 0 (failure). Valid only for GET
HISTORY:
1998 November Created Jongchul Chae
(See ./ftp_getput.pro)
NAME : GAUSS_PROFILE
PURPOSE : Calcultes Gaussian profiles
CALLING SEQUENCE :
Value = GAUSS_PROFILE(W, gauss_par)
INPUTS:
W values at which the function is evaluated
GAUSS_PAR Normal Gaussian parameters
which define a Gaussian profile in the way :
continuum = GAUSS_PAR(0,*,*) in counts
peak = GAUSS_PAR(1,*,*) in counts
center = GAUSS_PAR(2,*,*) in pixels
width = GAUSS_PAR(2,*,*) in pixels
I(W) = continuum+peak*exp(-0.5*((W-center)/width)^2)
RESTRICTION:
GAUSS_PAR should not be a scalar.
The first dimension should be 4.
If GAUSS_PAR is an 1-d array, then W can be any of
scalar, 1-d array, 2-d array etc.
IF GAU_PAR is a 2-d or 3-d array, then W should
be either a scalar or 1-d array.
OUTPUTS:
Value spectral profiles
(1-d, 2-d or 3-d array)
with N0 x N1 X N2 elements
N0 = number of X(*,0,0) elements
N1 x N2 = number of GAUSS_PAR(0,*,*) elements
MODIFICATION HISTORY
April 1997 Jongchul Chae
(See ./gauss_profile.pro)
NAME : IMAGE_COMPRESS
PURPOSE :
Compress an image into a byte image
CALLING SEQUENCE :
result = IMAGE_COMPRESS(image, direction, par, $
minbyte=minbyte, maxbyte=maxbyte, $
bytscl=bytscl, quasilog=quasilogm sqrt=sqrt
INPUTS :
IMAGE input image
DIRECTION if equal to 1, compression
if equal to -1, decompression
PAR compression parameters
(in the case of decompression)
OUTPUTS:
PAR (in the case of compression)
KEYWORDS :
MINBYTE The minimum value for
the compressed byte image (default=0)
MAXBYTE The maximum value for
the compressed byte image (default=255)
BYTSCl if set, byte scaling method is used.
par(0) = maximum value of uncompressed image
par(1) = minimum value of uncompressed image
QUASILOG if set, quasi log compression is used.
par(0) = maximum value of uncompressed image
par(1) = minimum value of uncompressed image
MODIFICATION HISTORY
March 1997, Jongchul Chae
(See ./image_compress.pro)
NAME : image_scale
PURPOSE :
Display image with a color scale
CALLING SEQUENCE:
image_scale, image, pos_dev, $
minvalue=min, maxvalue=max, $
maxbyte=maxbyte, $
no_scale =no_scale, $
scale_pos=scale_pos, $
stitle=stitle, scale=scale, $
color=color
ARGUMENT
image : a two-dimensional array to be displayed (INPUT)
pos_dev :
(See ./image_scale.pro)
NAME : LINE_PAR_CONV
PURPOSE : Convert normal Gaussian parameters into physical
line parameters or vice versa.
CALIING SEQUENCE :
Value = LINE_PAR_CONV(data, wl, dispersion $
[, rest_pixel], reverse=reverse)
INPUTS:
DATA line fitting parameters
(1-d, 2-d, or 3-d floating array)
which define a Guassian profile in the way :
continuum = DATA(0,*,*) in counts
peak = DATA(1,*,*) in counts
center = DATA(2,*,*) in pixels
width = DATA(2,*,*) in pixels
I(j) = continuum+peak*exp(-0.5*((j-center)/width)^2)
WL rest wavelength of the line given in angstroms
DISPERSION dispersion given in angstrom/pixel
OPTIONAL INPUTS:
REST_PIXEL the pixel value corresponding to WL
if not specified, it is set to zero.
OUTPUTS:
VALUE physical line parameters
(1-d, 2d-, or 3-d floating array)
VALUE(0,*,*) : continuum in counts
VALUE(1,*,*) : integrated intensity in counts
VALUE(2,*,*) : Doppler Shift in km/s defined by
shift = (center-median(center)
-rest_pixelmedian(rest_pixel))*dispersion/wl*c
so that the median value of Doppler shift should be
very close to zero.
VALUE(3,*,*) : Doppler Width in km/s defined by
Doppler Width = 1.414*width*dispersion/wl*c
KEYWORDS :
REVERSE If set, given input are interpreted to be
physical line parameters and line fitting
parameters are returned.
MODIFICATION HISTORY
April 1997 Jongchul Chae
(See ./line_par_conv.pro)
NAME :
MARK_ON_IMAGE
PURPOSE :
Removes an old crosshair from an image and mark a new one on it
CALLING SEQUENCE:
MARK_ON_IMAGE, xpos_dev, ypos_dev, $
color=color, xsize=xsize, ysize=ysize, $
mark_only=mark_only, remove_only=remove_only
OPTIONAL INPUTS:
XPOS_DEV, YPOS_DEV mark position in device units
KEYWORDS :
COLOR the color index of mark (optional input)
xsize crosshair horizontal size (optional input, def=20)
ysize crosshair vertical size(optional input, def=20)
thick crosshair thickness(optional input, def=1)
mark_only if set, only a new crosshair is marked on the image
remove_only if set, only the old crosshair is removed.
restore if set, the old crosshair is restored.
EXAMPLE :
TVSCL, DIST(200)
MARK_ON_IMAGE, 70, 80, /mark_only
MARK_ON_IMAGE, 70, 130, /mark_only
MARK_ON_IMAGE, 120, 150
MARK_ON_IMAGE, /remove_only
COMMON BLOCKS:
mark_on_image_block
MODIFICATION HISTORY
March 1997 Jongchul Chae
April 1997 J Chae Introduce keyword RESTORE
(See ./mark_on_image.pro)
NAME : mgaussfit
PURPOSE :
Multi gaussian fitting
ARGUMENT :
INPUT
x : independent variable data
y : dependent variable data
w : inverse square of the noise level of the data at each point
Notice . X, Y, W should have the same elements.
par : Gaussian parameters (initial guess)
1 D array with elements of 6, 9 , 12, .. which depends
on the number of lines
y(i) = par(0) + par(1)*(x(i)-par(4))/par(5)
+ par(2)*((x(i)-par(4))/par(5))^2 +
par(3) * exp(-0.5*((x(i)-par(4))/par(5))^2) +
par(6) * exp(-0.5*((x(i)-par(7))/par(8))^2)+...
i=0,1,.., n_spectral-1
k=0,1,.., nspatial-1
OUTPUT :
result fitted result
par : determined parameters
KEYWORD
free_par : the indice of free parameters
default value = the indice of given parameters
expected_free : the expected values of free parameters
weight_free : inverse square of the allowable differences
between the expected and the true free parameters.
value : if set , calculate functional values without modifying $
the paramteres.
Notice : the weight corresponding to peak values
should be an inverse square of uncertanity in the
common logarithmic values. A typical
value may be 1./0.3^2.
itmax maximum number of iteration
MODIFICATION HISTORY
May 1997 J. Chae : adapted from MULTI_GAUSS_FIT
(See ./mgaussfit.pro)
NAME : multi_gauss_fit
ARGUMENT :
INPUT
x : independent variable data
y : dependent variable data
w : weight of the data
Note that x, y, and w may be either 1 D arrays or
2 D arrays.
1 D : n_spectral elements
2 D : n_spectral x n_spatial elements.
par : Gaussian parameters (initial guess)
1 D : n_param elements
2 D : n_param x n_spatial elements
y(i,k) = par(0,k) + par(1,k)*(x(i,k)-par(4,k))/par(5,k)
+ par(2,k)*((x(i,k)-par(4,k))/par(5, k))^2 +
exp(alog(10)*par(3,k)-0.5*((x(i,k)-par(4,k))/par(5,k))^2) +
exp(alog(10)*par(6,k)-0.5*((x(i,k)-par(7,k))/par(8,k))^2)+...
i=0,1,.., n_spectral-1
k=0,1,.., nspatial-1
OUTPUT :
result fitted result
par :
sigma_par : probable error of parameters
KEYWORD
free_par : the indice of free parameters
default value = the indice of given parameters
free_expected : the expected values of free parameters
free_weight : the inverse of the variances of the difference
between the expected and the true free parameters.
itmax maximum number of iteration
sign : an array of signs (1 or -1) with numer of elements
equal to the number of Gaussian components
MODIFICATION HISTORY
April 1997 Jongchul Chae
May 1997 J. Chae : added keyword SIGN
(See ./multi_gauss_fit.pro)
NAME : PLOT_STYLE
PURPOSE : Select plot style
INPUTS :
STYLE style number
0 : default setting
1 : charsize =1.2 / charthick=2.
font = complex roman, ticklen=0.03
minor ticks :suppressed
2 : charsize =1.2 / charthick=2.
font = complex roman, ticklen=-0.03
minor ticks :suppressed, ticks :outward
(See ./plot_style.pro)
NAME: SUMER_CONFIG
PURPOSE:
Display and modify the system variable !sumer_config
HISTORY:
1998 November J. Chae created
(See ./sumer_config.pro)
NAME: SUMER_CONFIG_DEF
PURPOSE:
Define the default SUMER configurations
(See ./sumer_config_def.pro)
NAME :
SUMER_COR
PURPOSE:
Apply correction for detector saturation
CALLING SEQUENCE :
data_str1 = SUMER_COR (data_str0)
INPUTS :
DATA_STR0 Input data structure (defined by SUMER_FITS)
OUTPUTS:
DATA_STR1 Output data structure
REQUIRED ROUTINES :
deadtime_cor, local_gain_cor
(See ./sumer_cor.pro)
NAME: SUMER_DIR
Purpose:
Determine a SUMER data directory in SOHO-archive
CALLING SEQUENCE:
dir = SUMER_DIR(YEAR, MONTH)
INPUT: YEAR (integer value: e.g., 1996 or 96)
MONTH (integer value: 1,2,.., 12)
KEYWORD:
OS operating system (either 'vms' or 'unix')
if not specfied, it is set to the machine OS.
HISTORY
1998 November Chae
(See ./sumer_dir.pro)
NAME :
SUMER_DISPLAY_IMA
PURPOSE :
Display raster image (only for XRASTER)
CALIING SEQUENCE :
SUMER_DISPLAY_IMA [,ps=ps]
INPUTS :
None
OUPUTS :
None
COMMON BLOCKS
XRASTER_WIDGET_BLOCK XRASTER_DRAW_BLOCK
RDSUMEREXT_BLOCK DROP_INDEX_BLOCK DRAW_BLOCK
XLOADCT_COM MONOCOLORS_BLOCK
IDL_vector_font_comm
KEYWORDS :
PS If set to have non-zero value, the image is
displayed on POSTCRIPT device.
SIDE EFFECTS:
A Raster image is displayed either on X-window or POSTSCRIPT
REQUIRED ROUTINES:
GET_IMAGE HARDCOPY_MESSAGE
MODIFICATION HISTORY
March 1997 Jongchul Chae
(See ./sumer_display_ima.pro)
NAME :
SUMER_DISPLAY_SPECTRUM
PURPOSE :
Display a single spectrum image(only for XRASTER)
CALIING SEQUENCE :
SUMER_DISPLAY_SPECTRUM [,ps=ps]
INPUTS :
None
OUPUTS :
None
COMMON BLOCKS
XRASTER_WIDGET_BLOCK XRASTER_DRAW_BLOCK
RDSUMEREXT_BLOCK DROP_INDEX_BLOCK DRAW_BLOCK
XLOADCT_COM MONOCOLORS_BLOCK
IDL_vector_font_comm
KEYWORDS :
PS If set to have non-zero value, the spectrum image is
displayed on POSTCRIPT device.
SIDE EFFECTS:
A spectrum is displayed either on X-window or POSTSCRIPT
REQUIRED ROUTINES:
HARDCOPY_MESSAGE
MODIFICATION HISTORY
March 1997 Jongchul Chae
(See ./sumer_display_spectrum.pro)
NAME :
SUMER_DISPLAY_W
PURPOSE :
Display W profile (only for SUMER_TOOL)
CALIING SEQUENCE :
SUMER_DISPLAY_W [,ps=ps]
INPUTS :
None
OUPUTS :
None
COMMON BLOCKS
XRASTER_WIDGET_BLOCK XRASTER_DRAW_BLOCK
RDSUMEREXT_BLOCK DROP_INDEX_BLOCK DRAW_BLOCK
XLOADCT_COM MONOCOLORS_BLOCK
IDL_vector_font_comm
KEYWORDS :
PS If set to have non-zero value, the w profile is
displayed on POSTCRIPT device.
SIDE EFFECTS:
A w profile is displayed either on X-window or POSTSCRIPT
REQUIRED ROUTINES:
HARDCOPY_MESSAGE
MODIFICATION HISTORY
March 1997 Jongchul Chae
(See ./sumer_display_w.pro)
NAME : SUMER_DISTORT_COR
gives the destretched image of a SUMER spectrum
based on a bilinear interpolation scheme
CALIING SEQUENCE:
REsult=SUMER_DISTORT_COR( Data, Refw, Refy,
Refw_n, Ref_n,Detector=Detector)
INPUTS:
Data : a spectrum image
(2 D :n_spectral x n_spatial)
(3 D :n_spectral x n_spatial x n_step)
(4 D :n_spectral x n_spatial x n_step x n_line)
Refw : the column position of the lower
left corner of the spectrum on the detector plane.
0:shorter wavelength side ege,
1023 :longer wavength side edge
(Scalars) : in case of 1 line
(1 D : n_line) : in case of lines more than 1
Refy : the row position of the lower
left corner of the spectrum on the detector plane.
OUTPUTS:
Xoff_new, Yoff_new : the position of
the new corrected sprectrum on the detector
plane
OUPUTS:
DATA : distortion corrected data
with the same dimensions as the input data
KEYWORD
Detector : 'a' or 'b' ( case insensitive)
When one repeatedly calls this routine for
a set of data obtained using the same detector,
he may specify this keyword only in the first
call and omit it after the first call
since the common block DISTORT_BLOCK keeps the
distortion data for that detector.
This speeds up this routine by skipping
data reading.
RESTRICTIONS :
The data files :del_x_at.fits, del_x_at.fits,
del_x_bt.fits, del_x_bt.fits
should exist in one of the directories in IDL path
HISTORY
December 1996, Jongchul CHAE
April 1997 J Chae change of routine name and arguments
(See ./sumer_distort_cor.pro)
NAME :
SUMER_FILE
PURPOSE :
Check and/or produce an effective full filename of SUMER data
CALLING SEQUENCE:
Result = SUMER_FILE(FILENAME)
INPUTS:
FILENAME SUMER file name (full or simple)
KEYWORDS:
STATUS is set to 1 (success) or 0 (failure)
DIRECTORY a directory or a string array of directories.
If specifed, those directories are searched.
REQUIRED_ROUTINES:
BREAK_FILE, SUMER_DIR
MODIFICATION HISTORY
March 1997 Jongchul Chae
April 1997 CHAE : function name chnge
November 1998 CHAE
(See ./sumer_file.pro)
NAME :
SUMER_FILE
PURPOSE :
Check and produce an effective full filename of SUMER data
CALLING SEQUENCE:
Result = SUMER_FILE(FILENAME)
INPUTS:
FILENAME SUMER file name (full or simple)
KEYWORDS:
STATUS is set to 1 (success) or 0 (failure)
DIRECTORY a directory or a string array of directories.
If specifed, those directories are searched.
ARCHIVE If set, the SOHO-archive is searched.
FTP If set, the file is retrieved via FTP
This option requres the pre-defined system variable
with the fields FTP_NODE, FTP_USER and FTP_PASSWD
specified.
AUTO_FTP If set, the file is retrieved via AUTO-LOGIN FTP
This option holds only for UNIX machines and requires
the predifined file $HOME/.netrc
ANON_FTP If set, the file is retrieved via ANONYMOUS FTP.
REQUIRED_ROUTINES:
BREAK_FILE, SUMER_DIR
MODIFICATION HISTORY
March 1997 Jongchul Chae
April 1997 CHAE : function name chnge
November 1998 CHAE
(See ./sumer_filename.pro)
NAME :
SUMER_FITS
PURPOSE :
Read one binary table extension of a SUMER file
CALLING SEQUENCE:
data_str = SUMER_FITS(filename,exten=exten)
INPUTS:
FILENAME SUMER fits file name.
KEYWORDS :
EXTEN The exntension number of the binary table to be read
(optional input, default=1)
OUPUTS:
DATA_STR a data structure with the following fields:
FILE SUMER file name
H primary header
BH binary header
DATA an array of SUMER data
AMP count amplification factor
Note that DATA = RAW COUNT x AMP ; SUM_STATUS Image Status
DEL_TIME Relative Time of each image
EXPTIME Exposure time of each image
SOLAR_X Azimuth position of each image
SOLAR_Y Elevation position of each image
NEXT Number of binary extensions
EXTENSION The present extension number
DIM dimensions of DATA
NDATA Number of lines in DATA
DATA_NAMES specification of each line
DESCR Physicaldescription of each dimension in DATA
REFPIXELS Reference pixels
The reference pixels are the center pixels
of the spectrograms each position of which
is measured from the lower left corner of
the corresponding spectrogram, or explicitly,
refpixels(0, *) = dim(0)/2 - (dim(0) mod 2 eq 0)
refpixels(1, *) = dim(1)/2 - (dim(1) mod 2 eq 1)
Note the FITS keyword TRPIXi in the binary header of
the SUMER FITS files with the extension '.fits' are
irrelevant to these reference pixels and
the FITS keywors TRPIXi in the SUMER files with the
extension '.fts' are defined in a slightly different
way.
REFPOS Physical values at refernce pixels (from TRVALi)
The reference positions are the physical values
(wavelength and y-position) of the reference pixels.
DELTAS Physical Increments (from TDELTi)
SUMPIXELS SUMER reference co-pixels (from TSPIXi)
The SUMER reference co-pixels are the coordinates
of the reference pixels measured from the lower left
(solar North and short wavelength) corner of the
detector.
It is usually the same as the values
of the keyword TRPIXi in the binary header of
the SUMER FITS files with extension of '.fits'
and those of the keyword TRSPIXi in the binary header
of the SUMER files with extension '.fts'
However when the spectral dimension is 1024 (full
detector range), the TRPIXi in '.fits' files or
TRSPIX in '.fts' are different from SUMPIXELS.
In this case, REFPOS(0, *) should be corrected to
have
REFPOS(0,*) = REFPOS(0,*) + DELTAS(0,*)*(511. - SUMPIXELS(0,*) )
and then SUMPIXELS(*,0) should be set to 511.
Then the position of the lower left corner of each
spectrogram is given by
sumpixels(0, *)-refpixels(0,*) :spectral direction
sumpixels(1, *)-refpixels(1,*) :spatial direction
RESTRICTIONS:
This routine reads the primary header and only one binary
table extension of a SUMER file at a time.
REQUIRED ROUTINES:
FITS_INFO HEADFITS
FXBOPEN FXBCLOSE FXPAR FXBFIND FXBTDIM FXBREAD
MODIFICATION HISTORY
April 1997 Jongchul Chae
Sept 1998 Clarify the definition of data field: refpixels and
sumpixels
(See ./sumer_fits.pro)
NAME : SUMER_FLAT
PURPOSE : Applies flat field correction to SUMER data
CALLING SEQUENCE :
Result= SUMER_FLAT(Data, Refw, Refy, file=file, $
decorrect=decorrect)
INPUTS:
DATA : SUMER data array
Nspectral x Ny x Nstep x Nline
If DATA is a 2-d array, then Nstep=1 and Nline=1
If DATA is a 3-d array, then Nline=1
REFW : the pixel positions of the left edges
of sub spectral images measured across the
slit direction in the detector plane.
increases with wavelength
1-d array with Nline elements or a scalar
default value =0
REFY : the pixel positions of the lower edges
of sub spectral images measured along the
the slit direction in the detector plane.
increases in the S direction
(upward in the ditector).
1-d array with Nline elements or a scalar
default value=0
KEYWORD INPUTS:
FILE : SUMER flat field file name
If given, the flat image is read from this file.
Otherwise, the flat image in the common block is used.
DECORRECT If set , the data are subject the reverse
process (i.e. decorrected).
OUTPUT:
DATA : flat field (de) corrected data
HISTORY
April 1997 Jongchul Chae
(See ./sumer_flat.pro)
NAME :
SUMER_REFORMAT
PURPOSE :
Reformat SUMER data for a Raster or
Temporal Sequence
CALLING SEQUENCE:
SUMER_REFORMAT, OldData, OldPos, OldNstep, $
NewDim, NewPos
INPUTS:
OldData an array of spectral images
OldNw x OldNy x OldNline
OldPOs an array of the detector coordinates of the lower left
corners of the lines
OldPos(0,*) : spectral coordinates
OldPOs(1,*) : spatial coordinates
OldNstep numer of steps for the original sequence
OUTPUTS:
NewDim a two element array of the spectrograms
NewPOs a new array of detector coordinates of the lower
left corners of the new line set
HISTORY:
J. Chae 1998 Sept
(See ./sumer_new_format.pro)
NAME : SUMER_PICK_FLAT
PURPOSE : Picks SUMER flat image file name
CALLING SEQUENCE :
Result = SUMER_PICK_FLAT(Filename)
INPUTS:
FILENAME SUMER fits filename
OUTPUTS:
RESULT SUMER FLAT Filename
HISTORY
Apr 97, J Chae
(See ./sumer_pick_flat.pro)
NAME :
SUMER_RASTER_SAVE
PURPOSE :
Save raster images of line parameters into a standard fits file
CALLING SEQUENCE:
SUMER
INPUTS:
None
OUPUTS:
None
COMMON BLOCKS:
xraster_block
SIDE EFFECTS:
A new standard fits file is created.
REQUIRED SUBROUTINES:
fxaddpar fxhmake WRITEFITS
MODIFICATION HISTORY
May 1997 Jongchul Chae adapted from SAVE_RASTER
(See ./sumer_raster_save.pro)
NAME :
SUMER_REFORMAT
PURPOSE :
Reformat SUMER data for a Raster or Temporal Sequence
CALLING SEQUENCE:
SUMER_REFORMAT, OldData, OldPos, OldNstep, $
NewDim, NewPos
INPUTS:
OldData an array of spectral images
OldNw x OldNy x OldNline
OldPOs an array of the detector coordinates of the lower left
corners of the lines
OldPos(0,*) : spectral coordinates
OldPOs(1,*) : spatial coordinates
OldNstep numer of steps for the original sequence
OUTPUTS:
NewDim a two element array of the spectrograms
NewPOs a new array of detector coordinates of the lower
left corners of the new line set
HISTORY:
J. Chae 1998 Sept
(See ./sumer_reformat.pro)
NAME: SUMER_SEARCH
PURPOSE:
Widget-based Search for SUMER fits files
CALLING SEQUENCE:
SUMER_SEARCH, filelist, catalog
INPUTS :
None
OPTIONAL OUTPUTS :
FILELIST : an array of file names
CATALOG : an array of strings for basic information
KEYWORDS :
None
COMMON BLOCKS
SUMER_SEARCH_BLOCK
REMARKS:
System variable !sumer_config should be difined.
To manipulate the variable, use the program sumer_config
REQUIRED SUNBROUTINES:
SUMER_SEARCH_MAIN_EVENT SUMER_SEARCH_PD_EVENT
MODIFICATION HISTORY
March 1997 Jongchul Chae version 1.5
November 1998 Jongchul Chae version 2.0
(See ./sumer_search.pro)
This contains the common block used in the SUMER_SEARCH program.
common sumer_search_block, $
log_dir, $ ; directory of the log file
logfile, $ ; log file defined by John Mariska
sumer_dir, $ ; SUMER directory name
fits_kind, $ ; first part of SUMER file name( e.g., 'SUM_')
time1, time2, $ ; start and end times (e.g., '960101_000000' and '991231_240000')
xcen1, xcen2, $ ; east and west limits (e.g., -2000. and 2000.)
ycen1, ycen2, $ ; south and north limits (e.g., -2000. and 2000.0)
rcen1, rcen2, $ ; inner and outer limits (e.g., 0, 2000.)
wl1, wl2, $ ; 1st order wavelength limits (e.g., 600. and 1700.)
exposure1, $ ; explosure limits (e.g., 0 and 1.e5)
exposure2, $ ;
slit, $ ; slit (e.g., '1'). Optional
detector, $ ; detector (e.g., 'A' or 'B'). Optional
object, $ ; object of the observing program (e.g., 'filament'). Optional
pop, $ ; POP or UDP. optional
seq_type, $ ; Sequence Type (e.g., 'raster'). Optional
scientist, $ ; Scientist name. Optional
studyname, $ ; Study name. Optional
logs, $ ; a list of searched log structures. A working variable
files, $ ; a list of searched files. A working variable
select, $ ; a binary list of the files representing being chosen
file, $ ; One chosen file. A wortking variable
catalog, $ ; A list of basic information of the selected files
done, $ ; 0 or 1. A working variable
text_id, $ ; Text widget ID. A working varaible
list_id ; List widget ID. A working variable
(See ./sumer_search_block.pro)
NAME:
SUMER_SEARCH_MAIN_EVENT
PURPOSE:
Responses to main events in SUMER_SEARCH
CALLING SEQUENCE:
SUMER_SEARCH_MAIN_EVENT, event
INPUTS:
EVENT = a structure variable for an event
OUTPUTS:
None
COMMON BLOCKS:
SUMER_SEARCH_BLOCK
SIDE EFFECTS:
Change parameters defined in common blocks
REQUIRED SUBROUTINES:
None:
MODIFICATION HISTORY
March 1997 Jongchul Chae
(See ./sumer_search_main_event.pro)
NAME:
SUMER_SEARCH_PD_EVENT
PURPOSE:
Responses to pull-down events in SUMER_SEARCH
CALLING SEQUENCE:
SUMER_SEARCH_PD_EVENT, event
INPUTS:
EVENT = a structure variable for an event
OUTPUTS:
None
COMMON BLOCKS:
SUMER_SEARCH_BLOCK
SIDE EFFECTS:
Change parameters defined in common blocks
REQUIRED NON-STADNARD SUBROUTINES:
XRASTER MK_SUMER_CAT LOCATE_DIR
HEADFITS BREAK_PATH
SLOG_RDLOG SLOG_GET_DAY SLOG_GET_TIME
RESTRICTIONS :
SUMER log files should exist in the specified directory
MODIFICATION HISTORY
March 1997 Jongchul Chae
(See ./sumer_search_pd_event.pro)
NAME:
SUMER_SERIAL
PURPOSE:
Construct a single data structure from a set of SUMER files
CALLING SEQUENCE:
data_str = SUMER_SERIAL(files)
INPUTS :
FILES an array of file names
OUPUTS:
DATA_STR a data structure defined in the same as in SUMER_FITS
KEYWORDS:
REFORMAT if set, the detector plane setup ogf data
are reformatted.
HISTORY:
J. Chae 1998 September introduce FLAG, REFORMAT keyword
(See ./sumer_serial.pro)
NAME :
SUMER_TIME
PURPOSE :
Convert SUMER time string into the time of the day in seconds
CALLING SEQUENCE:
time = sumer_time(time_string, jday)
INPUTS:
TIME_STRING time string such as '1996-10-20T16:35:30.063'
OUTPUTS:
TIME time of the day in seconds
OPTIONAL OUTPUT:
JDAY Julian day
(See ./sumer_time.pro)
NAME :
SUMER_TOOL
PURPOSE:
Widget-based display of SUMER fits data
CALLIING SEQUENCE:
SUMER_TOOL, files
INPUTS :
None
OPTIONAL INPUT:
FILES SUMER fits file names to be displayed
KEYWORDS :
EXTEN The extension nember of a FITS table in the file
to be read(optional input \ default=1).
GROUP Widge ID of group leader (optional input)
REFORMAT If set, the SUMER data are reformatted.
COMMON BLOCKS:
REQUIRED ROUTINES:
RDSUMEREXT XRAS_MAIN_EVENT SUMER_FULL_FILENAME
GET_COLOR DISPLAY_IMA
RESTRICTIONS :
Only one call is allowed at the same time.
MODIFICATION HISTORY
March 1997 Jongchul Chae
Novemebr 1998 JC Change Name
(See ./sumer_tool.pro)
NAME :
SUMER_TOOL_MAIN_EVENT
PURPOSE :
Responds to main events in XRASTER
CALLING SEQUENCE:
SUMER_TOOL_MAIN_EVENT, event [, group=group]
INPUTS:
EVENT an event structure variable (given by XRASTER)
OUTPUTS:
None
KEYWORDS:
GROUP widget ID of the group leader (optional input)
COMMON BLOCKS:
XLOADCT_COM MONOCOLORS_BLOCK
SIDE EFFECTS:
Changes some variables in the common blocks
Controls various kinds of display
REQUIRED ROUTINES:
DISPLAY_IMA DISPLAY_X DISPLAY_Y DISPLAY_W
DISPLAY_SPECTRUM MARK_ON_IMAGE
MODIFICATION HISTORY
March 1997 Jongchul Chae
(See ./sumer_tool_main_event.pro)
NAME :
SUMER_TOOL_PD_EVENT
PURPOSE
Responds to pull-down events in SUMER_TOOL
CALLING SEQUENCE:
SUMER_TOOL_PD_EVENT, event [, group=group]
INPUTS:
EVENT an event structure variable (given by XRASTER)
OUTPUTS:
None
KEYWORDS:
GROUP widget ID of the group leader (optional input)
COMMON BLOCKS:
SUMER_TOOL_BLOCK
SIDE EFFECTS:
Changes some variables in the common blocks
Controls data manipulations
Controls various kinds of display
REQUIRED ROUTINES:
GET_COLOR SAVE_RASTER FLAT_FIELDING
SUM_COMPRESS1 SUM_DECOMPRESS1 IDL_VECTOR_FONT
XRASTER_HELP
DISPLAY_IMA DISPLAY_X DISPLAY_Y
DISPLAY_W
DISPLAY_SPECTRUM MARK_ON_IMAGE
MODIFICATION HISTORY
March 1997 Jongchul Chae
(See ./sumer_tool_pd_event.pro)
NAME :
VDF_HEIGHT
PURPOSE:
Gives the physcal height of default size IDL fonts
in device units
CALLING SEQUENCE:
Height = VDF_HEIGHT(Device_name)
INPUTS:
DEVICE_NAME either 'X' or 'PS'
OUTPUTS:
Height in device units
1000 = 1cm in 'PS'
1= 1 pixel in 'X'
MOdification History
April 1997 Jongchul Chae
(See ./vdf_height.pro)
NAME :
XDEFROI
PURPOSE :
Define a region of interest in a given image
CALLING SEQUENCE:
Result = xdefroi(image, zoom=zoom)
INPUTS:
IMAGE a two-dimensional array
It should be byte-type for better looking
since TV is used for displaying it.
KEYWORDS:
ZOOM a two elements vector containning the expansion
factor in X and Y.
MODIFICATION HISTORY
March 1997 Jongchul Chae
(See ./xdefroi.pro)
NAME :
XGAUSSFIT
PURPOSE :
Interactive Gaussian Fitting
CALLING SEQUENCE :
XGAUSSFIT, X, Y, Par, Ncomp=Ncomp, Noise=Noise
INPUTS:
X independent variables
Y dependent variables
OUTPUT :
PAR fitted gaussian parameters
Y = par(0) + par(1)*X + par(2)*X^2
+ par(3)*exp(-0.5*((X-par(4))/par(5))^2)
+ par(6)*exp(-0.5*((X-par(7))/par(8))^2) + ...
under the positive constraints, i.e. par(3)>0, par(6)>, ...
KEYWORDS
XTITLE x-axis title
YTITLE y-axis title
NCOMP number of gaussian components (default=1)
NOISE a 3-element array defining noise characteristics
(default=[1,0 0])
RMS NOISE = sqrt(NOISE(0)+NOISE(1)*SIGNAL
+NOISE*SIGNAL^2)
(See ./xgaussfit.pro)