IA: Minor README changes
[pyplotsuite.git] / README.txt
blob47c02c21c0556410058422d81ec073f434439eaa
1 PyPlotSuite README File
2 =======================
4 .Copyright and License
5 *************************************************
6 Copyright (C) 2006-2007 Antonino Ingargiola <tritemio@gmail.com>
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 GNU General Public License for more details.
18 For more information read the file LICENSE.txt in the source directory.
19 *************************************************
22 Project Description
23 -------------------
25 *PyPlotSuite* is a set of graphical tools to quick visualize and explore/analyze
26 monodimentional and bi-dimensional data. The plot created can be saved in a
27 variety of image formats to produce publication quality graphs.
29 At the moment the project is composed by two little stand alone applications:
30 *ImageAnalyzer* and *Plotfile2*. ImageAnalyzer is focused towards images (or any
31 2D data, such as arrays) visualization, analysis, and measurement. Plotfile2
32 focus is towards simple data series visualization, with the possibility to
33 quick modify many plot characteristics. Both applications can save the result
34 on a multitude of image file formats (png, eps, jpeg, pdf, and more).
36 PyPlotSuite is written in python, using the GTK gui toolkit (through the python
37 binding pygtk, and using Glade-2 to layout the windows). All plots are created
38 with the great Matplotlib python 2D graphic library. Matplotlib is such a good
39 tool that the PyPlotSuite applications are only tiny wrapper around Matplotlib
40 functionality. Also some Numpy functionality are used both through Matplotlib
41 (which requires Numpy) and both directly.
43 Home Page::         http://pyplotsuite.sourceforge.net[]
44 *Latest Version*::  0.1-alpha11-dev
47 NEWS 
48 ----
49 0.1-alpha11-dev
50 ~~~~~~~~~~~~~~~
52 Some ImageAnalyzer improovements:
54 * Added buttons to navigate through the images in the current dir
55 * Min and Max range are applied immediately, Apply button removed
58 0.1-alpha10: Bugfix release
59 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
60 Fixed some small bugs presents in alpha9
62 * Show absolute path in "Image Properties"
63 * A trivial numarray.ndimage fix
64 * "Add by" and "Multiply by" little improvements
67 0.1-alpha9
68 ~~~~~~~~~~
69 * New "Sum by" and "Multiply by" functions added.
70 * New Image Properties dialog which shows file name, size, max and min values 
71   and coordinates, and other values (mean, variance, median, ...)
72 * Histogram plot speedups (thanks to the use of ndimage.measurements) and added
73   selectable number of bins.
74 * Added tools to graphically set parameters to calculate integral of a 
75   peak in the image. The integral domain is selected by the pixels inside a 
76   circle that are above a threshold value. The circle center is selectable via 
77   mouse click on the image. The pixels outside the circle that are below the 
78   threshold are used to calculate the offset of the image. The results can be 
79   saved to a text file.
80 * Added "Save file" to save modified images as arrays in pickle format.
81 * Added a virtual binning feature (similar of the binning feature of some 
82   CCD). It reduces the image resolution building each pixel as the sum of the 
83   values of the pixel in a rectangle. Note that this is not a boxcar filter 
84   (and IIRC is not even a linear filter).
85 * Another bugfix from David TrĂ©mouilles (about dialog close button work on Mac)
86   Thanks ;).
89 0.1-alpha8
90 ~~~~~~~~~~
91 * Added multiplatform installer using distutils. Now to install the pyplotsuite
92   system-wide just do "python setup.py install" form the source tree with
93   administrative privileges.
94 * Various bug-fixes thanks to David TrĂ©mouilles' bug reports and patches (now 
95   the open dialog remembers the last dir).
96 * scipy.filters is now only optional to run ImageAnalyzer
97 * ImageAnalyzer: Allow to change aspect ratio for images in ImageAnalyzer (via 
98   the pixel dimension dialog)
99 * ImageAnalyzer: Zemax file format loading fixes and autodetection improvements.
102 0.1-alpha7
103 ~~~~~~~~~~
104 Only Plotfile2 changes in this release. Various speed-up and code optimization, 
105 and the support for changing also the color for all line-plot elements.
107 0.1-alpha6
108 ~~~~~~~~~~
109 This is the first version of PyPlotSuite released as a single tarball. It 
110 includes both ImageAnalyzer and Plotfile2.
112 A new plot property dialog in Plotfile2 allows to change many plot parameters 
113 (line style and width, marker style and size). There's also the GUI for 
114 changing the colors of the various plot elements but this functions is not 
115 implemented in the underlying code yet.
118 Release Notice
119 --------------
121 Early versions of *ImageAnalyzer* and *Plotfile2* were released in separated
122 tarballs with separated version number. Now they are released together in the
123 same tarball with the same version number (and I plan to integrate them more).
124 However they retain separated changelogs, so you can keep track of each
125 application separately.
127 Installation
128 ------------
129 You can decompress the archive where you want and then execute PyPloSuite in 
130 place, entering the directory and typing:
132 --------
133   python imageanalyzer
134 --------
138 --------
139   python plotfile2
140 --------
142 You can install PyPlotSuite system wide with this command:
144 --------
145   python setup.py install
146 --------
149 Development Version
150 -------------------
152 The development version of *PyPlotSuite* is hosted on a
153 http://repo.or.cz/w/pyplotsuite.git[git repository]. To download the latest
154 development version just install http://git.or.cz/[git] 
155 and type:
157 -------------------
158   $ git clone git://repo.or.cz/pyplotsuite.git
159 -------------------
161 Now you have a complete working tree of PyPlotSuite to test/hack on. If git
162 does not work on your OS (I think only windows is affected) look at
163 http://bazaar-vcs.org/[bazar] that is multiplatform SCM with a git plugin too.
166 Requirements
167 ------------
169 You must have this software installed in order to be able to run the program:
171 - Any recent version of Linux, Mac OSX or Windows
173 - Python 2.4 or newer (2.3 may still work, not tested):
174     http://www.python.org[]
176 - PyGTK 2.x:
177     http://www.pygtk.org/[]
179 - NumPy (1.0 or newer)
180     http://numpy.scipy.org/[]
182 - MatPlotLib (0.87 or newer):
183     http://matplotlib.sourceforge.net/[]
185 - SciPy (only the module scipy.ndimage.filters):
186     http://www.scipy.org/[]
188 - Python Image Library (PIL):
189     http://www.pythonware.com/products/pil/[]
191 NOTE: Typically Numpy is a prerequisite for Matplotlib, so you may have
192 installed it in bundle with Matplotlib.
194 NOTE: The Scipy module and the PIL library are a requirement only if you want
195 to run ImageAnalyzer. Plotfile2 does not requires them.
198 Image Analyzer
199 --------------
201 Name::              Image Analyzer
202 Description::       A tool to extract and make measures on scientific images.
205 Description
206 ~~~~~~~~~~~
208 ImageAnalyzer is a python[1] program written with the purpose to analyze
209 scientific images to extract information such dimensions, and to reveal some
210 subtle features. You can also create and save publication quality figures in a
211 variety of hard-copy formats (using Matplotlib[5]).
213 To execute the program type:
215 -------------
216   python imageanalyzer
217 -------------
219 Remember to check the software requirement above.
222 Image formats supported
223 ~~~~~~~~~~~~~~~~~~~~~~~
225 All format supported by the PIL[6] library, with the following pixel formats:
226 - L (Luminance, aka black&white) 8 bit and 14 bit
227 - RBG(A) with 8bit per channel
229 Also 2D arrays saved in python pickle format can be loaded and saved.
232 Features
233 ~~~~~~~~
235 Some features currently implemented are:
237     - Load, zoom and navigate on any RBG(A) or L (Luminance, aka black&white)
238       images.
239     - The possibility to choose one of the following 17 interpolation 
240       algorithms:
241           Bessel, Bicubic, Bilinear, Blackman, Catrom, Gaussian, Hamming,
242           Hanning, Hermite, Kaiser, Lanczos, Mitchell, Nearest, Quadric, Sinc,
243           Spline16, Spline36.
244       The default one is Nearest which is "no interpolation".
245     - Select one of the 14 color-maps (only for L images).
246     - Select a dynamic range either numerically and graphically through an
247       histogram of the image (only for L images).
248     - Grid on/off, black/white (to match various color-maps).
249     - Calculate the distance between two points with the option to set the pixel
250       dimension for the image (x and y separately).
251     - Plot the pixel-precise profile of an arbitrary number of sections of the
252       image (only for L images).
253     - Gaussian filter the image setting different parameters for the X and 
254       the Y direction.
255     - Virtual binning of the image (as the binning feature of the CCD). An 
256       arbitrary rectangular base-block size can be chosen.
257     - Calculate the integral of a peak present in the image selecting the 
258       integration domain using a threshold value (all the pixel with value 
259       greater than the threshold are summed) and circular domain (outside 
260       which no pixel is summed even is they are above the threshold). The 
261       center of the circle can be also selected clicking on the image.
262     - Add or multiply the image by a constant value.
265 ImageAnalyzer TODO
266 ~~~~~~~~~~~~~~~~~~
268 To-do list in no particular order:
270     - Allow to save modified images. *[DONE in pickle format]*
271     - Allow to save/load plot properties (colormap, interpolation, zoom). 
272       Handle this as explained in Plotfile2 TODO (below).
273     - Allow to choose font size for title and labels (separately).
274     - Fix axis aspect ratio in histogram window.
275     - Better handling of failure on file load. *[partially done]*
276     - Use Plotfile2 (instead of the current custom window) to show image 
277       sections.
278     - More image filtering options. *[partially done]*
279     - Add pixel-value picker tool.
280     - Peak integration tool (2d integration on a circular area). *[DONE]*
281     - Noise removal tools (dithering, noise shaping, 2D matched filter, you
282       name it! :D)
285 Plotfile2
286 ---------
288 Name::              Plotfile2
289 Description::       A tool plot 1D data series.
292 Description
293 ~~~~~~~~~~~
295 Plotfile2 is is a python[1] program written with the purpose to quick plot data
296 series stored in standard ascii text files. Multiple data series can be plotted,
297 compared and the resulting plot can be saved in a variety of image file formats
298 with a customizable size and resolution. This feature come particularly handy
299 if you want to embed your plot in a document and you what size the final image
300 will have.
302 Plotfile2 is written using the GTK toolkit[2] and embeds Matplotlib[5] plot
303 facility.
305 To execute the program, enter the Plotfile2 dir and type:
307 --------
308   python plotfile2
309 ---------
311 See also the software requirements above.
314 Features
315 ~~~~~~~~
317 At the moment Plotfile2 can:
319     - Load one or more data series from a two column (spaces or tab separated) 
320       ascii file. Blank lines (only spaces or tabs) are ignored.
321     - Detect if there is an header to automatically set axis labels. The header
322       must be one line with two strings separated by spacing (or tabs). Blank
323       lines before and after the header are ignored. More than two 
324       space-separated string results in an error.
325     - Controls to change the X and Y axis range, scale (linear or 
326       log) and  toggle grid.
327     - Controls to toggle if plot shows points (markers), lines or both. 
328     - Complete customization of plot elements through a dedicated dialog
329       (line style, marker type, colors, etc...).
330     - Set the plot title and axis labels
331     - Set the figure size (both in inches or in cm) and resolution (in dpi).
332       This is useful to export a plot to be included in a document with a know
333       size.
334     - Navigate/explore plots (zoom, un-zoom, pan, etc) thanks to the Matplotlib
335       NavigationToolbar2 (try to click on the crossed arrows icon and then 
336       click and dragg with the right mouse button).
337     - Save the plot in a multitude of image formats (png, jpeg, eps, pdf, ...
338       all the formats supported by Matplotlib). Just click on the floppy icon.
341 Plotfile2 TODO
342 ~~~~~~~~~~~~~~
344 - Possibility to customize plot line style, line color, line width, marker
345   color, marker size, marker type for each series. *[COMPLETED]*
346 - Possibility to use spline interpolation (with various orders), and
347   exponential-spline interpolation '[Work in progress]'.
348 - Add dialogs to choose an arbitrary color for plot elements in 
349   the "Plot Properties" dialog.
350 - Allow font size (and if possible) font style change for labels and title.
351 - Save plots as data (two columns ascii file or csv). This is useful for
352   new data generated by the interpolation.
353 - Allow to save and load plot properties associated with a set of data. This 
354   would allow to load a dataset with associated plot style. To maintain the 
355   data in a compatible format this metadata will be saved in a new file with 
356   same name but different extension (f.e. ".plot"). Maybe the file should 
357   be hidden... (in the same dir of the data of course).
358 - Add basic operators (spectrum, integrate, differentiate: which make sense?).
359 - Embed an (optional) [i]python shell.
362 Plotfile2 Known Problems
363 ~~~~~~~~~~~~~~~~~~~~~~~~
364 - When you change figure size and resolution using the dedicated dialog, the
365   main window may show a scrambled plot (or only a corner of the entire plot).
366   This is only a visualization issue. Therefore, if you save the file (without
367   resizing the window!) you will obtain the image file with the correct size
368   and resolution ready to be included in your documents.
370 NOTE: If you have any suggestion to solve this problem please contact 
371 mailto:tritemio@gmail.com[me] via mail.
374 Links
375 -----
377 1. *Python*: a dynamic object-oriented programming language.
379     * http://www.python.org[]
382 2. *PyGTK*: Python binding for the GTK user interface library.
384     * http://www.pygtk.org/[]
387 3. *Numpy*: The fundamental package needed for numerical computing with Python.
388     It is the successor (and unifier) of all the old projects (Numeric and
389     Numarray) for python numerical computing.
391     * http://numpy.scipy.org/[]
394 4. *SciPy*: Many modules that were not specific to Numpy are gathered under the
395     broader project SciPy:
397     * http://numpy.scipy.org/[]
400 5. *MatPlotLib*: A python 2D plotting library which produces publication quality
401     figures in a variety of hard-copy formats and interactive environments
402     across platforms.
404     * http://matplotlib.sourceforge.net/[]
407 6. *Python Imaging Library* (PIL).
409     * http://www.pythonware.com/products/pil/[]
413 ***********************
414 The html version of this README was generated from the ASCII file with:
416 ---------
417 $ asciidoc -a toc -a icons -a badges README.txt
418 ---------
419 ***********************