1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329
|
Yeti: a Yorick extension
Eric Thi�baut
version 6.2.0, April 2007
_________________________________________________________________
Description
Yeti is an extension of Yorick (a fast interpreted interactive data
processing language written by David Munro) which implements (see
QUICK REFERENCE below for a list of additional functions):
* hash table objects
* regular expressions
* complex, real-complex and complex-real FFT by FFTW (the Fastest
Fourier Transform in the West - version 2)
* wavelet filtering ("� trou" method)
* fast convolution along a chosen dimension with various border
conditions
* more string functions
* memory hacking routines
* more math functions (sinc, round, arc)
* generalized matrix-vector multiplication (with possibly sparse
matrix)
* routines to query/check Yorick's symbols
* support for reading TIFF images
* morpho-math operators
* 120 special functions from GSL (the GNU Scientific Library)
* ...
This distribution of Yeti may come with several extensions (depending
whether corresponding directories exist or not):
* yeti_fftw - support for FFTW
* yeti_gsl - implements special functions from GSL
* yeti_regex - support for POSIX regular expressions
* yeti_tiff - support for reading TIFF images
_________________________________________________________________
Compilation and Installation of Yeti Software Suite
Starting with version 6.0.0, Yeti is built as a regular Yorick
plugin and some of the Yeti extensions are built as standalone
Yorick plugins (they do not require Yeti to be used). The
installation of Yeti depends on that of Yorick which must have been
installed prior to Yeti. You'll need at least version 1.6.02 of
Yorick (for Yorick version 1.5, you can install Yeti 5.3). You can
have a look at accompanying file "BUILD-YORICK" to see how to build
and install Yorick.
The first installation step consists in the configuration of Yeti
software suite. This is done via the config.i script. In order to
figure out the different options (and their default values), you
can just do:
yorick -batch ./config.i --help
where yorick can also be the full path of the particular Yorick
executable you want to use for building Yeti. At least version 1.6
of Yorick is required to configure/build Yeti.
By default, Yeti is configured so as to be built as a plugin for
the executable used to run the ./config.i script. You can however
specify a different Yorick executable with option --yorick=PATH. If
you have different versions of Yorick installed, you can
configure/build/install different versions of Yeti by runnning the
configure script with option --yorick set to the full path name of
the considered Yorick executable.
If you want Yeti plugin for extended regular support, you'll have
the choice to use a system provided POSIX REGEX library or the GNU
REGEX library which can be built into the plugin. This is achieved
by defining the preprocessor macro HAVE_REGEX to true if you trust
your system REGEX library. To use the POSIX REGEX library of your
system:
yorick -batch ./config.i [...] \
--with-regex-defs='-DHAVE_REGEX=1' [...]
and to build the GNU REGEX library into the plugin (this is the
default behaviour):
yorick -batch ./config.i [...] \
--with-regex-defs='-DHAVE_REGEX=0' [...]
For instance, here is how to call the configure script to use
builtin REGEX support and to enable plugins for FFTW (installed in
/usr/local), GSL and TIFF (installed in standard locations):
yorick -batch ./config.i --with-regex \
--with-fftw --with-fftw-defs="-I/usr/local/include" \
--with-fftw-libs="-L/usr/local/lib -lrfftw -lfftw" \
--with-gsl --with-gsl-defs="-I/usr/local/include" \
--with-gsl-libs="-L/usr/local/lib -lgsl -lgslcblas" \
--with-tiff --with-tiff-libs="-ltiff"
In order to check your configuration settings, you can add --help as
the last argument of the call to ./config.i.
After configuration, you can build Yeti and all related plugins by
just doing:
make
In order to install Yeti files into Yorick installation directories,
you simply do:
make install
_________________________________________________________________
Author
Eric Thi�baut
Observatoire de Lyon
9, avenue Charles Andr�
F-69561 Saint Genis Laval Cedex
thiebaut AT obs.univ-lyon1.fr
_________________________________________________________________
Thanks
Many things in this software suite were inspired or more or less
directly imported/translated from other existing softwares (see file
LICENSE for details).
_________________________________________________________________
Links
* [1]Yorick is an interpreted programming language for scientific
simulations or calculations, postprocessing or steering large
simulation codes, interactive scientific graphics, and reading,
writing, or translating large files of numbers.
* [2]FFTW is the Fastest Fourier Transform in the West. Please note
that since FFTW API has changed with FFTW version 3, only FFTW
version 2 (latest is 2.1.5) is supported in Yeti (this may change
soon).
* [3]GSL: the GNU Scientific Library.
* [4]LibTIFF: a free TIFF library which provides support for the Tag
Image File Format (TIFF), a widely used format for storing image
data.
* [5]Tcl/Tk: the Tool Command Language and its widget toolkit.
_________________________________________________________________
Quick Reference of Yeti Functions/Routines
Hash Tables
h_cleanup delete void members of hash table object
h_clone clone a hash table
h_copy duplicate hash table object
h_delete delete members from a hash table
h_first get name of first hash table member
h_get get value of hash table member
h_has check existence of hash table member
h_info list contents of hash table
h_keys get member names of a hash table object
h_list make a hash table into a list
h_new create a new hash table object
h_next get name of next hash table member
h_pop pop member out of an hash table object
h_restore_builtin restore builtin functions
h_save_symbols save builtin functions
h_set set member of hash table object
h_set_copy set member of hash table object
h_show display a hash table as an expanded tree
h_stat get statistics of hash table object
Yeti Hierarchical Data (YHD) files
#include "yeti_yhdf.i"
yhd_check check version of YHD file
yhd_info print some information about an YHD file
yhd_restore restore a hash table object from an YHD file
yhd_save save a hash table object into an YHD file
Regular Expressions
#include "yeti_regex.i"
regcomp compile regular expression
regmatch match a regular expression against an array of strings
regmatch_part peek substrings given indices returned by regmatch
regsub substitute regular expression into an array of strings
Miscellaneous
about search for documentation
current_include full path of currently parsed file
expand_path expand directory names to absolute paths
get_path the counterpart of set_path
heapsort sort an array by heap-sort method
identof get type identifier of an object
insure_temporary make sure a variable is not referenced
is_complex check if an object is an array of complex value(s)
is_hash check if an object is a hash table
is_integer check if an object is an array of integer value(s)
is_list check if an object is a list
is_matrix check if an object is a 2-D array
is_numerical check if an object is an array of numerical value(s)
is_pointer check if an object is an array of pointer(s)
is_real check if an object is an array of floating point value(s)
is_scalar check if an object is a scalar array
is_sparse_matrix check if an object is a sparse matrix
is_string check if an object is an array of string(s)
is_vector check if an object is a 1-D array
pretty_print_string_list print out a list in columns
quick_select find K-th smallest element in an array
quick_median find median value (faster than median function)
quick_interquartile_range compute inter-quartile range of values
select_file interactively select an existing file
select_item_in_string_list interactively select an item in a list
set_alarm invoke a callback function after some time
swap exchange contents of two variables (n copy needed)
unref make a symbol temporary
yeti_init setup Yeti internals
Memory Hacking
mem_base get base address of an array object
mem_copy copy array data at a given address
mem_info print memory information
mem_peek make a new array from a base address, type and dimension list
native_byte_order compute native byte order
Files
filepath get full path of a file
chn_open open, possibly compressed, file channel.
chn_seek set i/o position for a channel.
chn_read read data from a channel.
chn_rewind go to beginning of a channel file.
chn_tell get current i/o position into a channel.
chn_write write data to a channel.
Binary Encoding of Data
get_encoding get description of binary encoding for various machines
install_encoding install binary description into a binary stream
same_encoding compare two encoding
Math/Numerical
arc lengh of arc in radians
cost_l2 cost function and gradient for l2 norm
cost_l2l0 cost function and gradient for l2-l0 norm
cost_l2l1 cost function and gradient for l2-l1 norm
machine_constant get machine dependent constant (such as EPSILON)
mvmult (sparse)matrix-vector multiplication
round round to nearest integer
sinc cardinal sine: sinc(x) = sin(pi*x)/(pi*x)
smooth3 smooth an array by 3-element convolution
sparse_expand convert a sparse matrix array into a regular array
sparse_grow augment a sparse array
sparse_matrix create a new sparse matrix
sparse_squeeze convert a regular array into a sparse one
yeti_convolve convolution along a given dimension
yeti_wavelet "� trou" wavelet decomposition
Strings
strlower convert array of strings to lower case
strtrim remove leading/trailing spaces from an array of strings
strtrimleft remove leading spaces from an array of strings
strtrimright remove trailing spaces from an array of strings
strupper convert array of strings to upper case
Yorick Internals
memory_info display memory used by Yorick symbols
symbol_exists check existence of a Yorick symbol
symbol_info get some information about existing Yorick symbols
symbol_names get names of Yorick symbols
nrefsof get number of references of an object
get_includes get list of all included files so far
Graphics
window_geometry get geometry of a Gist window
Morpho-math operations
morph_black_top_hat perform valley detection
morph_closing perform morpho-math closing operation
morph_dilation perform morpho-math dilation operation
morph_erosion perform morpho-math erosion operation
morph_opening perform morpho-math opening operation
morph_white_top_hat perform summit detection
TIFF images
#include "yeti_tiff.i"
tiff_open open TIFF file
tiff_debug control printing of TIFF warning messages
tiff_read_pixels read pixel values in a TIFF file
tiff_read_image read image in a TIFF file
tiff_read_directory move to next TIFF "directory"
tiff_read read image/pixels in a TIFF file
tiff_check check if a file is a readable TIFF file.
FFTW
#include "yeti_fftw.i"
fftw_plan setup a plan for FFTW
fftw computes FFT of an array according to a plan
cfftw computes complex FFT of an array
fftw_indgen generates FFT indices
fftw_dist computes length of spatial frequencies
fftw_smooth smooths an array
fftw_convolve fast convolution of two arrays
_________________________________________________________________
Version 6.1.8
Last updated 17-Dec-2006 23:58:36 CEST
Références
1. http://sourceforge.net/projects/yorick
2. http://www.fftw.org/
3. http://www.gnu.org/software/gsl/
4. http://www.libtiff.org/
5. http://www.scriptics.com/products/tcltk/
|