**************************************************************** * * * L A S T W A V E U P D A T E S * * **************************************************************** **************************************************************** ********* ********* LastWave 3.0a ---> LastWave 3.1 ********* ********* 2/February/2009 **************************************************************** ******* I/O problems There were several problems reading/writing signal/images/listv files on windows computers. Moreover files writen with non windows computers could not be read on windows computers. All these files problems should be fixed. ******* Cast to &num problems In previous versions, a signal/image/ranges of size 1 was automatically casted to a number, which was very often a problem. Moreover empty signals/images/listvs did not accept empty extractions which also was a problem. So from now on 1- signals/images are NEVER casted to numbers 2- Be aware of the different syntax (the rule is simple : if what is in [] is a signal then the output is a signal) s = <1,2,3> --> <1,2,3> s[2] --> 3 s[<2>] --> <3> s[<>] --> <> s = <> --> <> s[<>] --> <> s[*nolim; 1,2,3] --> <> 3- Same works with images ranges and listvs. ******* Options management in script procedure When you define a new command using the 'setproc' command, you can now very easily specify some options. The argument list in the setproc command has now the following syntax (compatible with LastWave 3.0 form of syntax) {{arg1 arg2 .... -option1 arg11 arg12 .. -option2 arg22 arg23 ... -option3 ....}} Each 'arg' term in the above syntax is optional and is of the form (same as in LastWave 3.0), either of a simple variable name, or of the form {[&type] varName [defaultValue]} in which the [..] denote optional terms The new feature in LastWave 3.1 is the -option terms which basically means that the newly defined command can have some options (specified in any order but after ALL the non optional arguments) which themselves can have arguments. To test in the script of the newly defined command whether an option has been set, you should test the variable named option_*optionName*. Here is an example : setproc printstats {{&signali s} -moment {&num q 4} -mean -var} { if (option_mean) {printf "mean is %g\n" mean(s)} if (option_var) {printf "variance is %g\n" [stats var s]} if (option_moment) {printf "moment of order %g is %g\n" q [stats nth s q]} } > printstats <1,2,3> > printstats <1,2,3> -mean mean is 2 > printstats <1,2,3> -var -mean mean is 2 variance is 0.666667 > printstats <1,2,3> -moment moment of order 4 is 32.6667 > printstats <1,2,3> -moment 1 -mean mean is 2 moment of order 1 is 2 ******* Improved "listv cread" command In version 3.0 appeared the "listv cread" command which allows reading multicolumn files. This command has been improved. Basically, the syntax is listv cread cread ( | ) list_of x|s|?|f|F|*|n -n -f -s -S -c -F It reads columns of a text file and return a listv which nth element corresponds basically to the nth column. Each element of the listv corersponds to a column and is stored either as a listv or a signal depending on some arguments. Here is a short description of the arguments : - | : the filename or the stream to read from - Then you have several characters separated by single spaces. Each character corresponds to a column found in the file. --> x : is used to skip the corresponding column --> s : is used to store the column as a listv of strings --> f : is used to store the column as a listv of floats --> F : is used to store the column as a signal --> ? : is used to store the column as a listv of either strings or floats whenever the string corresponds to a float --> * : must be used as the last character and will store in a listv any remaining text that was not read on each line --> n : must be used as the first character and does not really corresponds to a column in hte file. It will return a signal with the line numbers of the lines that were read - option -s is used to specify the number of unformatted lines (e.g. header) to be skipped at the beginning of the file - option -f is used to specify the number of formatted lines to be skipped after the header - option -S is used to specify (using a string) all the characters that are used for column separation (default is space and tabulation) - option -c is used to specify (using a string) all the characters that will correspond (when found at the begining of a line) to commented lines - option -F is a very powerful option that is extremely useful to test a file. It allows reading simulation. Whatever happens it will never generate an error and will return information about lines which are formatted as expected ans the ones which are not. It returns a listv of signals, each signal corresponding to each column and the values are either 1 (if argument exists and is of the correct type) and 0 otherwise (as soon as one argument cannot be read, all the other arguments on the same line are considered unreadable). Moreover there is an extra signal (the last one in the listv) that is used to store the number of readable arguments on each line. In the case all the arguments are readable but the line has more arguments than exepected, this number is -1. **************************************************************** ********* ********* LastWave 2.0.4 ---> LastWave 3.0a ********* ********* 28/November/2008 **************************************************************** **** ===> ===> !!!!! MAJOR CHANGE : wxWdigets ===> **** Now LastWave uses wxWidgets for all machine-dependant functions. It is still an alpha version. Let us note that the terminal is very slow and the sound (play/record) is not working. **** ===> ===> !!!!! MAJOR CHANGE in LastWave kernel and packages ===> **** In former LastWave versions, all the numeric script variables were stored using float C-variables. The consequence was that even integer script variables had only 8 significative digits which can be a real problem (e.g., manipulating a signal of size 1e9 for instance...) It is no longer the case. Now in the C-code of LastWave all the float variables use the LWFLOAT type which by default is set to double. It means that, by default you have a double precision for all the numbers in the script language.... that should be sufficient for most cases. This change has been made in all the packages, and all the i/o have been changed accordingly (though in a compatible way with older LastWave's). Now, that means that if you code some C in LastWave, you should never use the type 'float' but always the type 'LWFLOAT'. If you want to disable this feature (and go back to regular float numbers) just add the flag NUMFLOAT in your MakeDefs.xxx (the corresponding line is commented out) *** ===> ===> OTHER CHANGES : ===> *** *** The location of the main script directory is asked (and remembered) the first time you run LastWave. You, later you want to change it, you must use the 'choosestartupscriptdir' command. *** In Kernel : -- You can use the 'prec' command to set/get the precision of the displayed numbers in LastWave -- Now each type you type in a command in the terminal, the result is set in the variable 'ans'. So you can use the result of thre previous command in the current command... "à la matlab" -- The global variable BinaryMode does not exist anymore. The variable is now BinaryNumbers. It is a listv of the form { float/double sizeof(lastwave numbers) sizeof(float) sizeof(double)}. For instance it can be : {'little' 'float' 4 4 8} *** In Graphic Kernel : -- the 'msge ... list' command returns listv instead of (string) list -- the 'window list' command returns listv instead of (string) list *** Current directory : There is now in LastWave a notion of current directory (see command 'file'). The unix syntax is used on all machines. Two useful scripts have been added into the misc package. -- the 'cd' command allows to change current directory (if no argument, it goes back to the home directory) -- the 'ls' command allows to list current directory -- the 'pwd' command returns the current directory *** On the terminal : The terminal in this version is very slow... We are working on a faster one. You can change the font of the terminal using the 'terminal setfont' command. You should use a fixed size font for the terminal (set the chosen font at the begining of the startup file). *** On LISTV's ===> !!!!! MAJOR IMPROVEMENT : A) 'listv cread' and 'listv cwrite' allow to read very general multicolumn files made of numbers or strings. They are very powerful functions. Read the documentation. B) 'listv read' and 'listv write' allow to read/write listv's made of signals/images/numbers/strings/listvs This is very practical to store a bunch of data -- A field 'listv.tosignal' has been added to convert a listv made of signals/ranges/numbers into a signal -- There was a bug that, for instance, made impossible to add a signal s of size N as the last row of an image i of size PxN by doing . This bug was the origin pf several problems that could occur in the <..,..;..> notation. The bug was fixed. *** "(Real)"Time on LastWave Few commands were added to manage time in LastWave. New bindings were also defined to send computations at certain time. -- The 'date' command allows you to do various things on dates. For instance, it allows you to get the current date and compute the 'index', i.e., the number of days between a date and 01/01/1900 -- The 'time' command allows you to do various things on time. Gets the number of seconds (real number) between current time and 01/01/1970 00h00 Gets current date and time Convert a date and time to a number of seconds with 01/01/1970 00h00 -- The 'getchar' command now let's you specify a delay in seconds you are ready to wait for a char to be typed in before it returns. During the waiting time all events are processed -- the 'sendattime' command allows you to execute a script at a given date and time (it is a simple script command that uses the binding described below) -- 2 new binding types have been introduced. One called "delay" (allows the execution of something after a certain delay) and one called "time" (allows the execution of something at a specific time). A simple script file implementing clocks and chron. illustrates these bindings. Just type in source time and click on the different stuffs! *** In Signal package : -- WARNING : by default the 'write' command write a signal using binary coding. In LastWave 2.0, default was ascii coding. -- In the input/output : they were often problems for file compatibility across system (macintosh/linux). This was due to '\n' and '\r' characters. These problems should be solved in this version -- The input/output in files have been improved. You can write/read using a specific coding for numbers : you control both the endian type and the number of bytes used for each number. (e.g., read ... -r 'little' 4) In ascii write, you can control the printf format that is used. (e.g., write ... -f '%.2f' '%g') -- bug in Dirac function was corrected -- kurtosis was not correctly computed in the command 'stats kurtosis'. This is fixed -- The autocorrelation function 'corr' was biased. It has been updated to an unbiased version. *** In Image package : -- In the input/output : they were often problems for file compatibility across system (macintosh/linux). This was due to '\n' and '\r' characters. These problems should be solved in this version -- Now 3 types of image files can be read/write from LastWave : pgm (only P5), LastWave specific (with full header, possibility of binary/ascii/char) and raw (i.e., no header and possibility of binary/ascii/char) DEFAULT is LastWave Binary (i.e., Lastave header and binary coding) -- You can write/read using a specific coding for numbers : you control both the endian type and the number of bytes used for each number. (e.g., iread ... -r 'little' 4) In ascii write, you can control the printf format that is used. (e.g., iwrite ... -a '%.2f') *** In Wtrans1d package : -- Minor bugs fixed *** NEW PACKAGE MRW : This package allows you to deal with Simulation/Estimation of Gaussian Multi- fractal Random Walks. Information about MRW processes can be found on http://www.cmap.polytechnique.fr/ bacry/biblio.html. I recommend the paper Log-Normal continuous cascades: aggregation properties and estimation. Application to financial time- series for a detailed review or the paper Multifractal Random Walks for an introduction. **************************************************************** ********* ********* LastWave 2.0.3 ---> LastWave 2.0.4 ********* ********* 9/Sept/2004 **************************************************************** **** Signal package Updates 1) Minor bugs were corrected **** Image package Updates 2) Minor bugs were corrected **** Unix updates 3) Bug concerning change of window title/position was corrected **** Kernel Updates 4) The batch mode did not work in version 2.0.3 (it did work in 2.0.2). This is fixed. 5) New command 'gclass objlist' to obtain all the graphic objects of a given gclass 6) Several bugs concerning string pattern matching were corrected 7) <1,s,2> did not work with s = <>. Bug was corrected 8) Postscript file should be significantly smaller 9) Line drawings with extremeties outside the window was not working well. Corrected 10) Minor bugs were corrected and some optimizations were done (mainly for graphics) 11) If you compile using int_main.cc instead of the file int_main.c you can mix C++ and C files (more documentation on that later) 12) the "file info" command has changed slightly 13) The new command "file createdir" allows to create directories 14) At startup a "User" variable is created. It should correspond to the (unix) account LastWave was started up with **** (script) disp package Updates 15) new 'dispadd' command that allows to add/remove graphs to an existing window **** (script) misc package Updates 16) The class Shape works better (there were a few bugs) 17) The class Text has a field 'dv' which allows to set an offset. This is very useful when you want some text to be written "close" to a graphic object **** (script) wtrans1d package Updates 18) In the 2.0.3 version, the orthogonal wtrans1d filters disappeared (!!) from the directory scripts/wtrans1d/filters. This is corrected **************************************************************** ********* ********* LastWave 2.0.2 ---> LastWave 2.0.3 ********* ********* 26/June/2003 **************************************************************** **** Signal package Updates 1) There was a bug when a float was divided by a range. It is fixed 2) The 'convol' command did not take care of the border effects properly. It does now. 3) New 'corr' command to compute autocorrelation function between two signals **** Image package Updates 4) Multiplication of a signal (or range) by a matrix (i.e., an image) led to wrong results. It has been fixed. 5) New operator 'diag(signal)' to build diagonal matrix with the values of 'signal' on the diagonal 6) New command "matrix diagsym" for getting eigen vectors and eigen values of symetric matrices **** Disp package Updates 7) Fixed a bug that tried to display graph titles with "10-bold" font even when it did not exist **** Other Updates 8) MakeDefs and MakeRules files for sgi computers (MakeDefs.sg and MakeRules.sg) **************************************************************** ********* ********* LastWave 2.0.1 ---> LastWave 2.0.2 ********* ********* 7/April/2003 **************************************************************** **** Kernel Updates 1) LastWave core dumped when executed in a non-graphic mode. This bug should be fixed. 2) Number Extraction mechanism (e.g., 10a) could core-dumped randomly. This bug should be fixed. **** Signal package Updates 3) syntax like sig+=sig1 core-dumped randomly. It should be fixed. **************************************************************** ********* ********* LastWave 2.0 ---> LastWave 2.0.1 ********* **************************************************************** **** X11 Updates 1) Bug correction: You can now use the mouse (as you usually do) to close a graphic window. It should no longer core-dump 2) When resizing a window fewer resize events are sent and consequently the window is not refreshed as many times as before (which could be very slow if you worked on a slow network!) By default, LastWave waits 0.3 seconds (starting from the last received resize event) before refreshing the window. You can set/get this delay by using the command 'system resizeDelay' 3) Bug correction: sometimes (if you worked on a very fast network!), the newly created windows were not refreshed when first appearing (this was the case sometimes of the graphic help windows). This bug should be fixed. **** Kernel Updates 4) Several bugs (some leading to core-dumps) of the kernel are fixed. 5) the scanf type functions now operate properly 6) corrected some bugs on listv's **** Signal package Updates 7) the commands copy/clear for signals are now available 8) Several bugs (some leading to core-dumps) are fixed. 9) the command 'stats mean' returned 0 whatever the input was. This has been fixed. **** Image package Updates 10) the commands copy/clear for images are now available 11) Several bugs (some leading to core-dumps) are fixed. 12) the command 'istats mean' returned 0 whatever the input was. This has been fixed.