man phentropy (Commandes) - Zalewskian Phase Space Entropy Viz for OpenQVIS
NAME
phentropy - Zalewskian Phase Space Entropy Viz for OpenQVIS
SYNOPSIS
phentropy [options] file|-
PACKAGE
Paketto Keiretsu 1.0
DESCRIPTION
Phentropy plots an arbitrarily large data source (of arbitrary data) onto a three dimensional volumetric matrix, which may then be parsed by OpenQVIS. Data mapping is accomplished by interpreting the file as a one dimensional stream of integers and progressively mapping quads in phase space. This process is reasonably straightforward: Take four numbers. Make X equal to the second number minus the first number. Make Y equal to the third number minus the second number. Then make Z equal to the last number minus the third number. Given the XYZ coordinate, draw a point. It turns out that many, many non-random datasets will have extraordinarily apparent regions in 3-space with increased density, reflecting common rates of change of the apparently random dataset. These regions are referred to as Strange Attractors, and can be used to predict future values from an otherwise random system.
OPTIONS
- -a
- Samples are in ASCII format, instead of raw bytes. Phentropy can parse both base 10 and, if numbers are preceeded with 0x, base 16.
- -b 1|2|4
- Samples range across 1, 2, or 4 bytes.
- -d 1-255
- When plotting a point, add this amount of density to it. Density will not overflow.
- -m n
- Read, at most, this many values from the dataset. Very useful when reading from stdin. -o filename Output cube and metadata to filename.raw and filename.dat, instead of creating files named after the original input. Note, metadata files reflect the full path specification of any input they're presented with, and this can often problems when OpenQVIS is running on a remote system.
- -s 1-255
- Shift (with overflow) all XYZ coordinates by this amount before plotting them into the cube. Use 127 if your data tends to be clustering at the eight corners and you'd like to see the data integrated in the center.
- -t divisor
- Specify divisor to make output deltas range between 0 and 255. Use -v to see what the deltas are at for your given dataset.
- -v
- Increase verbosity.
BUGS
This isn't necessarily the best way to visualize phase space -- among other things, OpenQVIS was never intended to render what really is a sparse matrix w/ floating point input; by quantizing this into a fixed size matrix w/ integer input, we do lose detail. However, we do gain some degree of predictable performance for arbitrarily massive datasets, as well as a known size for our emitted cubes.
TODO
Arbitrarily sized cubes and arbitrarily ranged datasets would be nice, and the method of implementing them (modulus) is pretty straightforward.
CREDITS
While I didn't have access to his "vseq" implementation of this technique, this code is a direct implementation of the techniques Michel Zalewski (lcamtuf@bos.bindview.com) wrote about in "Strange Attractors and TCP/IP Sequence Number Analysis" (http://razor.bindview.com/publish/papers/tcpseq.html). The existence of a fast volumetric canvas for consumer PC hardware can be credited to Christof Rezk-Salama, Klaus Engel, and a select group of others who have been teasing various SIGGRAPHs with their code. OpenQVIS is Rezk-Salama's implementation, is GPL-licensed, and may be found at: http://www9.informatik.uni-erlangen.de/Persons/Rezk/Research/VolRen
AUTHOR
This work has been done by Dan Kaminsky of DoxPara Research, who may be reached at dan@doxpara.com.