<spectrum name>[[<lower-limit>:<upper-limit>]]<number of channels> [<type>] [DISC ]
where<lower-limit> and <upper-limit> are optional integer values which allow more than one spectrum to be declared by a single statement (see indexed spectra for an example application) and <number of channels> is one of:
<integer> ...1D spectrum
<integer> * <integer> ..."rectangular" 2D spectrum
<integer> 2D ..."square" 2D spectrum
<integer> * <integer> * <integer> ..."cuboid"
<integer> 3D ...symmetrised "(1)/(6) cube"
and <type> is:
8 (signed byte precision, ie. 8-bits per channel)
16 (signed single precision, ie. 16-bits per channel)
32 (signed double precision, ie. 32-bits per channel)
The optional keyword DISC makes the spectrum disc-based during sorting.
If <type> is omitted then the default of 32 is assumed for 1D, 16 for 2D and 3D.
By default spectra are sorted into shared memory. It is the user's responsibility to ensure that there is sufficient memory available. Any combination of memory and disc-based spectra may be specified but as the sort package is essentially memory-based and is not fully optimised for disc-based sorting, the use of disc-updated spectra will degrade the performance.
Eg. some typical spectrum declarations might be:
*SPECTRA TIME 1024 // 1D 16-bit, 1024 channels GEL1 4096 32 // 1D 32-bit, 4096 channels GEL3 4096*1024 // 2D 16-bit, 4096 by 1024 channels GEL4 1024 2D // 2D 16-bit, 1024 channels square GSPEC 1024*1024*8 // 3D 16-bit, 1024 by 1024 by 8 channels SM[4:10] 4000 // 7 1D 16-bit spectra, 4000 channels each CUBE[1:5] 16 3D 8 // 5 3D 8-bit 16 channel cubes ...