[Matrix-SIG] Using Python or Java for data analysis(no flame wars please)

Anthony L. Wilson wilsona@earthlink.net
Fri, 02 Apr 1999 15:47:14 -0500

At this time I am posing a question to the readers/users/developers on
these various newsgroups and mailing lists.

At the moment I am contemplating development of a small - medium size
application.  I am contemplating using either Python or Java.  I do not
wish this to be flame war on which is a better language, but I would
like some serious comments on aspects of each language as it applies to
the application that I am trying to develop.

My background consists of Fortran and C programming with some Python and
Java.  Why use Python or Java?  Because I would to have the gui part and
the platform portability given by the two(more on this later) along with
learning a new language.  i have used Python more so then Java.  This
has been on my Macintosh and Linux machine.

Why Python?
In using Python, I have found it to be simple to use and understand, yet
powerful.  With NumPy, for numerical extensions, and access to plotting
libs like DISLIN, PLplot, PGplot, GNU plotutils, BLT, Gist, and Gnuplot
OpenGL(based on website) Python presents several features that I would
like to utilize. Along with the GUI frameworks that Python uses:
Tkinter, wxPython, and PyGtk.The problem here is speed and cross
platform( limitied plotting and GUI libs for Macintosh port of Python)

Why Java?
Java presents several areas that my be utilized with the main one being
the new 2D API.  It also has a standard built in GUI system.  There are
numerical facilities that will be useful.  Plotting may be a problem,
but once its implemented, it should run on any Java VM(right??).
Why not do a mix? Use JPython.  This is a thought that I am
considering.  Please give pros and cons based on criteria/feature list

First, I will give a general overview of what I am thinking about.
Anyone with pointers on something similar please let me know.  I would
hate to re-invent the wheel, unless I had to.

Application Overview:  I would like to develop a data analysis tool for
viewing/manipulating circuit simulation data, i.e. a post processor.
Basically, I need to be able to read-in/parse the data ( all 2-d data)
which is in a general form produced by a simulation run( there is a
common format for all SPICE simulators).  The numbers will mostly be of
type float, but may also be in engineering notation.  I need to be able
to plot the data( 2-d, lin-lin, log-lin, lin-log, log-log, and smith
charts).  I would also need to be able access the data for interactive
analysis( fft, curve fitting, time series analysis, etc).  I would also
need access to the basic math and trig functions(  +, -, *, / , ^, sin,
cos, tan, asin, acos, atan, etc).  This should all be implemented via a
GUI front-end.  If you are familiar with HSPICE(tm) or CADENCE Design
Tools(tm), then this would be similar to their calculator tools.
Basically I am looking at a graphing calculator with data analysis
aspects with a GUI front-end.

General Needs:
GUI Support
Numerial Support with analysis routines
File I/O Support
2-D plotting support

Targeted Platforms:  Macintosh(PowerPC only) and Linux

Current Machine Configurations:
Mac OS 8.5
MRJ 2.1.1 and Metrowerks Codewarrior Pro 4
MacPython 1.5.1 w/ NumPy

RedHat Linux 5.2
Linux Java SDK 1.1.7 from Blackdown.Org
Python 1.5.1 w/ NumPy

Feature List
Things that I would appreciate some comments about in respect to Python
and/or Java implementation.  These are in order of importance.  Please
indicate which platform(Macintosh or Linux), if feature can only be
implemented on that platform, and language implementation.
1).  File Input parsing into some usable form
2).  2 -D plotting.  This would also include interactive labeling and
3).  X-Y labeling
4).  GUI for the calculator front end
5).  Numerical Analysis Support.  for data processing
6). speed
7). Application delivery.  Final product as an application for others to

I know this is a bit much for a single person development, but I would
like to take a shot at developing it using a language that can handle
the task.  I would definitely prefer not to have to start over in a new
language half way through.

At the moment, I am leaning towards using Java because of the cross
platform and new 2D API support.  But Python, I really like and its
easier to program using Python.

I would appreciate any comments on any aspect of this development.
Please only serious commentary.  I would like to use the best language
for the job.

Thanks very much.

-anthony wilson