functions in utils.i -
|
__strlower
|
__strlower | |
| SEE | strlower | |
|
__strupper
|
__strupper | |
| SEE | strupper | |
|
__swap
|
__swap | |
| SEE | swap | |
|
__unref
|
__unref | |
| SEE | unref | |
|
__xopen_get_compress
|
__xopen_get_compress(compress, filename, for_reading)
Private function called by xopen.
| |
| SEE | ALSO, xopen. | |
|
_is_complex
|
is_integer(x)
returns true if array X if of integer type.
| |
| SEE |
ALSO,
is_scalar,,
is_vector,,
is_matrix,,
is_array, |
|
|
_is_integer
|
is_integer(x)
returns true if array X if of integer type.
| |
| SEE |
ALSO,
is_scalar,,
is_vector,,
is_matrix,,
is_array, |
|
|
_is_integer_scalar
|
is_integer_scalar(x)
Check whether or not X is an integer scalar.
| |
| SEE | ALSO, is_scalar,, is_integer. | |
|
_is_matrix
|
is_matrix(x)
returns true if array X is a matrix (i.e. a 2D array).
| |
| SEE |
ALSO,
is_scalar,,
is_vector,,
is_matrix,,
is_array, |
|
|
_is_numerical
|
is_numerical(x)
returns true if array X if of numerical type.
| |
| SEE |
ALSO,
is_scalar,,
is_vector,,
is_matrix,,
is_array, |
|
|
_is_real
|
is_real(x)
returns true if array X if of real type (i.e. double or float).
| |
| SEE |
ALSO,
is_scalar,,
is_vector,,
is_matrix,,
is_array, |
|
|
_is_scalar
|
is_scalar(x)
returns true if X is a scalar.
| |
| SEE |
ALSO,
is_scalar,,
is_vector,,
is_matrix,,
is_array, |
|
|
_is_vector
|
is_vector(x)
returns true if array X is a vector (i.e. a 1D array).
| |
| SEE |
ALSO,
is_scalar,,
is_vector,,
is_matrix,,
is_array, |
|
|
_protect_file_name_list
|
_protect_file_name_list | |
| SEE | _protect_file_name_table | |
|
_protect_file_name_table
|
protect_file_name(path)
Protect special characters in PATH (apostrophes, quotes, $, *, ?, [,
etc) by backslashes to avoid them being interpreted by the shell, for
instance when using the system() builtin function.
| |
| SEE ALSO: | system, get_file_name, expand_file_name | |
|
_stat_worker
|
_stat_worker(x)
Private routine used by stat, returns vector of double's:
[min(X), max(X), avg(X), std(X)]
where std(X) is the standard deviation of X.
| |
| SEE | ALSO, stat. | |
|
_strlower
|
local _strlower, _strupper;
Private arrays to convert char to upper/lowercase letters.
| |
| SEE | ALSO, strlower,, strupper | |
|
_strupper
|
_strupper | |
| SEE | _strlower | |
|
dump_text
|
dump_text, file, text;
Dump every elements of string array TEXT as individual lines into a
text file. FILE can be a file name or a text stream.
If the file is specified by its name, keywords COMPRESS, LEVEL can be
used to specify a compression method (see xopen). The default value
of COMPRESS is "auto" (i.e., method guessed on the basis of the file
extension).
If the file is specified by its name, keyword PRESERVE can be set to
true to avoid overwriting an existing file.
| |
| SEE ALSO: | xopen, rdline, load_text | |
|
eval
|
eval, code;
-or- eval(code);
Evaluates CODE given as a string or as an array of strings (considered
as different lines in the script). Since CODE can be dynamically
build, this routine allows the execution of virtually (see
hints/restrictions below) any Yorick's code (e.g. dynamic definition
of structures, of functions, etc.). For instance, the following
statement defines a new structure:
eval, "struct NewStruct {string a; long b; float c, d;}";
Since the script gets evaluated at the scope level of the "eval"
routine some local variables of the "eval" routine may be used in the
script:
"eval_tmp" contains the name of the temporary script file and
must not be changed by the script;
"eval_debug" contains the value of the keyword DEBUG and must not
be changed by the script;
"eval_code" contains the value of the argument CODE;
"eval_result" is returned by "eval", its contents may be defined
into the script to provide a returned value.
Note: impredictible results may occur if CODE changes the value of
symbols "eval_tmp" and "eval_debug".
Keyword TMP can be used to specify the file name of the temporary
script. The default file name is:
"$YORICK_EVAL_TMP" if environment variable "YORICK_EVAL_TMP" is
set;
"/tmp/$USER-eval_tmp.i" if environment variable "USER" set;
"~/.eval_tmp.i" otherwise.
If keyword DEBUG is true (non-zero and non-nil), the name of the
temporary file is printed out and the file is not removed.
| |
| SEE ALSO: | include | |
|
expand_file_name
|
expand_file_name(path)
Expand leading "~" in file name PATH which must be an array of
strings (or a scalar string).
| |
| SEE ALSO: |
strpart,
cd,
get_cwd,
get_file_name,
protect_file_name |
|
|
get_file_name
|
get_file_name(obj)
If OBJ is a stream, returns the path name of the file associated with
the stream. Otherwise if OBJ is an array of strings, expand leading
"~" in the elements of OBJ.
| |
| SEE ALSO: |
open,
print,
expand_file_name,
protect_file_name |
|
|
grow_dimlist
|
grow_dimlist, dimlist, next_argument
builds a dimension list DIMLIST, as used in the array function. Use
like this (all extra arguments in your function are considered as
dimensions or dimension lists):
func your_function(arg1, arg2, etc, ..)
{
dimlist = [0];
while (more_args()) grow_dimlist, dimlist, next_arg();
...
}
After this, DIMLIST will be an array of the form
[ndims, dim1, dim2,...], compounded from the multiple arguments in the
same way as the array function. Another possibility is to define your
function as:
func your_function(arg1, arg2, etc, dimlist, ..)
{
while (more_args()) grow_dimlist, dimlist, next_arg();
...
}
But in this latter case, if no DIMLIST arguments given, DIMLIST will
be [] instead of [0], which will act the same in most situations. If
that possibility is unacceptible, you may add
if (is_void(dimlist)) dimlist= [0];
before/after the while loop.
| |
| SEE ALSO: | array, build_dimlist | |
|
guess_compression
|
guess_compression, filename;
-or- guess_compression(filename)
Guess which compression program was used to produce file FILENAME
according to first bytes of this file. When called as a subroutine,
the file name is printed out with the name of the compression program
if any. If called as a function, the result is an integer:
1 - if file compressed with "gzip";
2 - if file compressed with "bzip2";
3 - if file compressed with "compress";
4 - if file compressed with "pack";
0 - otherwise.
| |
| SEE ALSO: | xopen | |
|
load_text
|
load_text(file)
Returns all lines of text file as a vector of strings. Returns nil if
there are no lines to read. FILE can be a file name or a text stream.
In the latter case, the lines not yet read get returned.
By default, if the file is specified by its name, it will be
automatically decompressed if its compressed; it is possible to force
another behaviour by specifying a value different from "auto" for
keyword COMPRESS (see xopen).
| |
| SEE ALSO: | xopen, rdline, dump_text | |
|
map
|
map(f, input)
Map scalar function F onto array/list argument INPUT to mimics
element-wise unary operation.
| |
| SEE ALSO: | _map | |
|
pdb_list
|
pdb_list, file;
-or- pdb_list(file)
Lists contents of PDB binary file. FILE can be either a file name or
a binary stream.
| |
| SEE ALSO: | createb, openb, restore, pdb_restore_all | |
|
pdb_restore_all
|
pdb_restore_all, file;
Restore all non-record variables of a PDB file. FILE can be either a
file name or a binary stream.
| |
| SEE ALSO: | createb, openb, restore, pdb_list | |
|
protect_file_name
|
protect_file_name | |
| SEE | _protect_file_name_table | |
|
pwd
|
pwd
-or- pwd()
Prints out (subroutine form) or returns (function form) full path
of current working directory.
| |
| SEE ALSO: | cd, lsdir | |
|
read_ascii
|
read_ascii(file_or_name)
Reads ascii numeric data in columns from text file. FILE_OR_NAME is
the name of the file or an already open file stream. The result is a
NCOLUMNS-by-NLINES array of doubles.
Data are read as double values arranged in columns separated by any
number of spaces or tabs. Comments starting with a "#" or an FILEy
other character which is not part of a number are ignored up to the
end-of-line. Blank lines are ignored. The first non-blank/commented
line gives the number of values per column, for subsequent lines.
Subsequent lines must have the same number of columns -- blanks in
columns are not permitted, use 0.0 instead. However, minimal error
checking is performed, and if the data is not really in columns,
read_ascii can silently fail to interpret your file as you would
scanning it by eye.
The read operation will be much faster if the number of commented
lines is relatively small. Blank lines cost nothing, while a line
containing just a "#" is expensive.
If the file is specified by its name, it may be compressed in which
case it get automatically decompressed while reading (see xopen).
| |
| SEE ALSO: | xopen, read | |
|
reform
|
reform(x, dimlist, ...);
-or- reform(x);
returns array X reshaped according to dimension list DIMLIST. Without
DIMLIST, discards all dimensions equal to 1. In most cases, prefer
this to reshape.
| |
| SEE ALSO: | array, dimsof, grow_dimlist | |
|
smooth
|
smooth(a)
-or- smooth(a, level)
Returns array A smoothed along its dimensions. I.e. for a 1D array:
smooth(A) = A(pcen)(zcen)
for a 2D array:
smooth(A) = A(pcen,pcen)(zcen,zcen)
... (up to 6 dimensions).
For a greater number of dimensions, each direction is smoothed and
transposed in turn: apart from rounding errors, the result is the same
but the computation time is approximately multiplied by 3. If you
oftenly smooth arrays with more than 6 dimensions you may think about
modifying the source...
Optional argument LEVEL (default 1) set the number of time the
smoothing operation is performed.
PROPERTIES OF THE SMOOTHING OPERATOR:
(i) The smoothing operator is linear and symmetric. For instance,
for a vector, A, smooth(A)=S(,+)*A(+) where the matrix S is
tridiagonal:
[3 1 ]
[1 2 1 ]
[ 1 2 1 ]
0.25 * [ \ \ \ ] where, to improve readability,
[ \ \ \ ] missing values are all zero.
[ 1 2 1 ]
[ 1 2 1]
[ 1 3]
You can, in principle, reverse the smoothing operation with
TDsolve along each dimensions of smooth(A). Note:For a vector
A, the operator S-I applied to A (where I is the identity
matrix) is the finite difference 2nd derivatives of A (but for
the edges).
(ii) The smoothing operator does not change the sum of the element
values of its argument, i.e.: sum(smooth(A)) = sum(A).
(iii) Only an array with all elements having the same value is
invariant by the smoothing operator. In fact "slopes" along
dimensions of A are almost invariant, only the values along the
edges are changed.
The symmetry of the smoothing operator is important for the
computation of gradients. For instance, let Y = smooth(X) and DQ_DY
be the gradient of a scalar function Q with respect to Y, then the
gradient of Q with respect to X is simply: DQ_DX = smooth(DQ_DY)
TO DO:
By default A is smoothed along all its dimensions, but the list
of dimensions to smooth can be specified with keyword WHICH. As
usual, negative dimensions are taken as offset from the last one.
If keyword WRAP is true (non-nil and non-zero) a wrapped version
of the operator (with same properties but no longer tridiagonal)
is applied instead. This is suitable for periodic arrays (e.g.
FFT transformed arrays).
| |
| SEE ALSO: | TDsolve | |
|
spline_zoom
|
spline_zoom(a, fact)
Return an array obtained by cubic spline interpolation of A with all
its dimension multiplied by a factor FACT. If keyword RGB is true the
first dimsion of A is left unchanged. If keyword RGB is not
specified, then it is considered as true if A is a 3 dimensional array
of 'char' with its first dimension equal to 3.
| |
| SEE ALSO: | spline, transpose | |
|
stat
|
stat, x, ...
Print out statistics and information for all the arguments. */
| |
|
strcut
|
strcut(str, len)
Cut input scalar string STR in pieces of length less or equal LEN and
return an array of such pieces.
| |
| SEE | ALSO, strjoin | |
|
strjoin
|
strjoin(str)
-or- strjoin(str, glue)
Join strings from array STR into a single long string. The string GLUE
(default "") is used between each pair of element from STR.
| |
| SEE | ALSO, strcut | |
|
strlower
|
strlower(s)
-or- strtolower(s)
Convert a string or an array of strings S to lower case letters.
| |
| SEE | ALSO, strupper | |
|
strtolower
|
strtolower | |
| SEE | strlower | |
|
strtoupper
|
strtoupper | |
| SEE | strupper | |
|
strupper
|
strupper(s)
-or- strtoupper(s)
Convert a string or an array of strings S to upper case letters.
| |
| SEE | ALSO, strlower | |
|
swap
|
swap, a, b;
Exchanges the contents of variables A and B without requiring any
temporary copy.
| |
| SEE ALSO: | eq_nocopy, unref | |
|
timer_elapsed
|
timer_start;
-or- timer_elapsed;
-or- timer_elapsed, count;
-or- timer_elapsed()
-or- timer_elapsed(count)
The subroutine timer_start (re)starts the timer and the function
timer_elapsed computes the elapsed time since last call to
timer_start. If COUNT is given, the elapsed time is divided by COUNT.
When called as a subroutine, timer_elapsed prints out the elapsed
time; when called as a function, it returns [CPU,SYSTEM,WALL], with
all three times measured in seconds. The two functions make use of
external variable _timer_stamp to memorize the initiale times.
For instance:
timer_start;
... // some code to be profiled
timer_elapsed;
... // some more code to be profiled
timer_elapsed; // prints out _total_ elapsed time
| |
| SEE ALSO: | timer | |
|
undersample
|
undersample(a, nsub)
Returns array A with all (some) dimensions divided by NSUB. The
dimensions of interest must be a multiple of NSUB.
Keyword WHICH can be used to specify the dimension(s) to shrink.
Values in WHICH less or equal zero are counted from the last
dimension. By default, all dimensions of A get undersampled.
Keyword OP can be used to specify the range operator to apply to the
sets of NSUB adjacent values along the considered dimensions:
OP=sum to sum the values
OP=avg to average values
OP=min to keep the smallest value
OP=max to keep the largest value
By default, the median is taken (WARNING: with the median operator,
the result depends in which order the dimensions of A are considered).
| |
| SEE ALSO: | median | |
|
unref
|
unref(x)
returns X, destroying X in the process (useful to deal with temporary
big arrays). Written after Yorick's FAQ.
| |
| SEE ALSO: | eq_nocopy, swap | |
|
xopen
|
xopen(filename)
-or- xopen(filename, filemode)
Opens the file FILENAME according to FILEMODE (both are strings). The
return value is an IOStream (or just stream for short). When the last
reference to this return value is discarded, the file will be closed.
The file can also be explicitly closed with the close function (which
see). The FILEMODE (default "r" -- open an existing text file for
reading) determines whether the file is to be opened in read, write,
or update mode, and whether writes are restricted to the end-of-file
(append mode). FILEMODE also determines whether the file is opened as
a text file or as a binary file. FILEMODE can have the following
values, which are the same as for the ANSI standard fopen function:
"r" - read only
"w" - write only, random access, existing file overwritten
"a" - write only, forced to end-of-file, existing file preserved
"r+" - read/write, random access, existing file preserved
"w+" - read/write, random access, existing file overwritten
"a+" - read/write, reads random access, writes forced to
end-of-file, existing file preserved
"rb" "wb" "ab" "r+b" "rb+" "w+b" "wb+" "a+b" "ab+"
without b means text file, with b means binary file
Keyword COMPRESS can be used to specify compression method for a text
file open for reading (FILEMODE="r") or writing (FILEMODE="w") only --
(de)compression is unsupported in append mode or for binary files.
The value of keyword COMPRESS can be a scalar string or an integer:
"auto" - guess compression according to first bytes of file
in read mode, or according to file extension in
write mode: ".gz" for gzip, ".bz2" for bzip2 and
".Z" for compress.
0 "none" - no (de)compression
1 "gzip" - use gzip to (de)compress
2 "bzip2" - use bzip2 to (de)compress
3 "compress" - use compress to (de)compress
4 "pack" - use pack to (de)compress
The default value for COMPRESS is "auto" in read mode and "none" in
write mode. Note that "gzip", "bzip2", "pack" and "compress" commands
must exists in your $PATH for compressing with the corresponding
methods. Decompression of files compressed with "pack" and "compress"
is done by "gzip". If keyword COMPRESS is explicitely 0, no
decompression is ever applied; if keyword COMPRESS is explicitely
non-zero, the file must have been compressed. The compression level
for gzip and bzip2 can be specified as an integer value thanks to
keyword LEVEL.
Keyword PRIMS can be used to specify primitives data type different
than the native ones for binary files (PRIMS is ignored for text
files). PRIMS can be a scalar string (i.e., "alpha", "mac", "sun3",
"cray", "macl", "sun", "dec", "pc", "vax", "vaxg", "i86", "sgi64", or
"xdr") or a 32-element vector of long's as taken by set_primitives
(which see).
When a binary file is created, it is possible to avoid the creation of
the log-file FILENAME+"L" by setting keyword NOLOG to true.
Keyword PRESERVE can be set to true to avoid overwriting an existing
file when FILENAME is open for writing (i.e. with a "w" in FILEMODE).
BUGS:
If (de)compression is used, FILENAME must not contain any double quote
character (").
| |
| SEE ALSO: |
close,
guess_compression,
open,
popen,
set_primitives |
|