From arb@connect.com.au  Thu Oct  1 09:55:32 1998
From: arb@connect.com.au (Anthony Baxter)
Date: Thu, 01 Oct 1998 18:55:32 +1000
Subject: [Matrix-SIG] Int64 type on UltraSparc?
Message-ID: <199810010855.SAA28143@koro.off.connect.com.au>

More numpy newbie questions - is there any particular reason that Numeric
on the UltraSparc doesn't support the Int64 type, but does support Float64
and Complex64? Solaris2.6, compiled on an UltraSparc II system.


From cgw@pgt.com  Fri Oct  2 22:33:29 1998
From: cgw@pgt.com (Charles G Waldman)
Date: Fri, 2 Oct 1998 17:33:29 -0400 (EDT)
Subject: [Matrix-SIG] Problem with integer arrays?
Message-ID: <13845.18089.247036.129551@janus.pgt.com>

Python 1.5 (#5, Sep 14 1998, 17:26:48)  [GCC 2.7.2.3] on linux2
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
>>> import Numeric
>>> Numeric.__version__
'1.4'
>>> a = Numeric.array((0.,0.))
>>> a**2
array([ 0.,  0.])
>>> a = Numeric.array((0,0))
>>> a**2
Traceback (innermost last):
  File "<stdin>", line 1, in ?
OverflowError: math range error



From da@skivs.ski.org  Fri Oct  2 22:45:23 1998
From: da@skivs.ski.org (David Ascher)
Date: Fri, 2 Oct 1998 14:45:23 -0700 (Pacific Daylight Time)
Subject: [Matrix-SIG] Problem with integer arrays?
In-Reply-To: <13845.18089.247036.129551@janus.pgt.com>
Message-ID: <Pine.WNT.4.04.9810021444200.255-100000@rigoletto.ski.org>

On Fri, 2 Oct 1998, Charles G Waldman wrote:

> Python 1.5 (#5, Sep 14 1998, 17:26:48)  [GCC 2.7.2.3] on linux2
> Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
> >>> import Numeric
> >>> Numeric.__version__
> '1.4'
> >>> a = Numeric.array((0.,0.))
> >>> a**2
> array([ 0.,  0.])
> >>> a = Numeric.array((0,0))
> >>> a**2
> Traceback (innermost last):
>   File "<stdin>", line 1, in ?
> OverflowError: math range error

Strange -- it's not a problem for me:

~/py:> python
Python 1.5.1 (#0, Apr 13 1998, 20:22:04) [MSC 32 bit (Intel)] on win32
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
>>> import Numeric
>>> Numeric.__version__
'1.4'
>>> a = Numeric.array((0.0,0.0))
>>> a**2
array([ 0.,  0.])
>>> a = Numeric.array((0,0))
>>> a**2
array([0, 0]) 





From busby@icf.llnl.gov  Sat Oct  3 00:59:36 1998
From: busby@icf.llnl.gov (L. Busby)
Date: Fri, 2 Oct 98 16:59:36 PDT
Subject: [Matrix-SIG] Problem with integer arrays?
Message-ID: <9810022359.AA08771@icf.llnl.gov.llnl.gov>

[ Charles W., on Linux ]
>> >>> a = Numeric.array((0,0))
>> >>> a**2
>> Traceback (innermost last):
>>   File "<stdin>", line 1, in ?
>> OverflowError: math range error

[ David A., on Windows ]
>Strange -- it's not a problem for me:

It blows up for me also, on Linux, but not on Solaris or HP-UX.
Strangely, a*a is not a problem.  It will be investigated.

Lee Busby


From tim.hochberg@ieee.org  Sun Oct  4 18:40:26 1998
From: tim.hochberg@ieee.org (Tim Hochberg)
Date: Sun, 4 Oct 1998 11:40:26 -0600
Subject: [Matrix-SIG] JNumeric 0.1 alpha 4 is available.
Message-ID: <003801bdefbe$16a0bee0$75323fd1@R20CAREY.MAYO.EDU>

From the readme file:
---------------------------

JNumeric-0.1a4

WHAT IS JNUMERIC?
-----------------

JNumeric provides the functionality for JPython that Numeric does for
CPython. As the Numeric documentation states, Numeric is "...a
collection of extension modules to provide high-performance
multidimensional numeric arrays to the Python programming language."
As of JNumeric-0.1a4, JNumeric provides the same functionality as the
core of Numeric module, although it does not provide any of the
Standard extensions to Numeric module (FFT, LinearAlgebra,
RandomArray, Matrix, MLab, and UserArray).

OBTAINING JNUMERIC
------------------

The latest version of JNumeric can be obtained from
http://starship.skyport.net/~hochberg/jnumeric.tgz.  If you plan to
use JNumeric, please subscribe to the jnumeric mailing list
(jnumeric@egroups.com) by sending a blank message to
jnumeric-subscribe@egroups.com. Bug reports, installation, problems,
etc. should be directed to this address. I would also appreciate it if
you send a message to the list if you successfully install and use
JNumeric, so that I have some idea how may people are using JNumeric.

If you have trouble downloading JNumeric as a tgz file (My version of
netscape does horrible things to tgz files), try
http://starship.skyport.net/~hochberg/jnumeric.tar.gz

____
 /im (tim.hochberg@ieee.org)



From dlr@postbox.ius.cs.cmu.edu  Tue Oct  6 17:50:50 1998
From: dlr@postbox.ius.cs.cmu.edu (dlr@postbox.ius.cs.cmu.edu)
Date: Tue, 6 Oct 98 12:50:50 EDT
Subject: [Matrix-SIG] Problem with integer arrays?
Message-ID: <199810061650.MAA02106@python.org>

Charles Waldman wrote:
>> >>> a = Numeric.array((0,0))
>> >>> a**2
>> Traceback (innermost last):
>>   File "<stdin>", line 1, in ?
>> OverflowError: math range error

In umathmodule.c, the function powll() has a range check:

> /* Overflow check: overflow will occur if log2(abs(x)) * n > nbits. */

On my machine, the math range error is happening when we take 
log2(0) = -inf.  I think the best fix is to put a test around the
overflow check so that it's not executed if x == 0.  I've modified my
version of umathmodule.c, and it seems to work fine (diffs appended).

Also, I noticed this strange behavior yesterday:

>>> import Numeric
>>> Numeric.__version__
'1.4'
>>> a = Numeric.ones(5)
>>> a
array([1, 1, 1, 1, 1])
>>> (-1) * a
array([-1, 1, -1, 1, -1])

I've made and mildly tested a change to umathmodule.c which I think
fixes this too (see below).

Of course, I'd welcome corrections or comments.
David LaRose

-------------------------------------
Note: This diff is for Numeric 1.4, from the LLNLPython5 distribution

diff umathmodule.c umathmodule.orig.c
261,271c261,263
< 
<       /******Added by dlr@cs.cmu.edu, 10/6/98**********/
<       if(x != 0) {   /* Range check unnecessary & dangerous if x == 0 */
<       /******End of Addition by dlr@cs.cmu.edu, 10/6/98**********/
<         logtwox = log10 (fabs ( (double) x))/log10 ( (double) 2.0);
<         if (logtwox * (double) n > (double) nbits)
<           PyErr_SetString(PyExc_ArithmeticError, "Integer overflow in power.");
<       /******Added by dlr@cs.cmu.edu, 10/6/98**********/
<       }  /* if(x != 0) */
<       /******End of Addition by dlr@cs.cmu.edu, 10/6/98**********/
< 
---
>       logtwox = log10 (fabs ( (double) x))/log10 ( (double) 2.0);
>       if (logtwox * (double) n > (double) nbits)
>               PyErr_SetString(PyExc_ArithmeticError, "Integer overflow in power.");
439,441d430
<     /********Added by dlr, 10/6/98*******/
<     s = 1;  /* reset sign flag */
<     /********End of addition by dlr, 10/6/98*******/
546,548d534
<     /********Added by dlr, 10/6/98*******/
<     s = 1;  /* reset sign flag */
<     /********End of addition by dlr, 10/6/98*******/
653,655d638
<     /********Added by dlr, 10/6/98*******/
<     s = 1;  /* reset sign flag */
<     /********End of addition by dlr, 10/6/98*******/


From gweon@umich.edu  Tue Oct  6 18:42:57 1998
From: gweon@umich.edu (Gey-Hong Gweon)
Date: Tue, 06 Oct 1998 13:42:57 -0400
Subject: [Matrix-SIG] Problem with integer arrays?
References: <199810061650.MAA02106@python.org>
Message-ID: <361A56A1.DB9D43A2@umich.edu>

dlr@postbox.ius.cs.cmu.edu wrote:

> >>> import Numeric
> >>> Numeric.__version__
> '1.4'
> >>> a = Numeric.ones(5)
> >>> a
> array([1, 1, 1, 1, 1])
> >>> (-1) * a
> array([-1, 1, -1, 1, -1])

I am glad that you point this out! I had the same experience with LLNL
python package version 5. Then I found out that version 4 didn't have
this bug, so I am using this old version right now :( ... If I decide to
go back to version 5 (what are the benefits, I wonder ... pardon me, I
joined this discussion group only yesterday), I will try your fix.
-- 
Gey-Hong Gweon, Ph.D. candidate
The University of Michigan, Physics Department, Ann Arbor, MI 48109
(734) 647-9434 (Office), 763-3417 (Lab), 763-9694 (Fax)


From dlr@postbox.ius.cs.cmu.edu  Tue Oct  6 19:38:57 1998
From: dlr@postbox.ius.cs.cmu.edu (dlr@postbox.ius.cs.cmu.edu)
Date: Tue, 6 Oct 98 14:38:57 EDT
Subject: [Matrix-SIG] Problem with integer arrays?
In-Reply-To: <199810061650.MAA02106@python.org> (dlr@postbox.ius.cs.cmu.edu)
Message-ID: <199810061838.OAA03339@python.org>

Folks, I just reread my previous post, and I think it sounds a little
arrogant.  I think it was uncool for me to start hacking up the code
and posting diffs.  In particular, I see from the README file that
I should have sent any suggestions to support@icf.llnl.gov .

I hope I haven't offended anyone.  I especially hope I haven't
offended the people who've authored, distributed, and maintained this
fantastic package.
David

---

   From: dlr@postbox.ius.cs.cmu.edu
   Date: Tue, 6 Oct 98 12:50:50 EDT

   [...]

   In umathmodule.c, the function powll() has a range check:

   [...]


From da@skivs.ski.org  Tue Oct  6 19:49:06 1998
From: da@skivs.ski.org (David Ascher)
Date: Tue, 6 Oct 1998 11:49:06 -0700 (Pacific Daylight Time)
Subject: [Matrix-SIG] Problem with integer arrays?
In-Reply-To: <199810061838.OAA03339@python.org>
Message-ID: <Pine.WNT.4.04.9810061147010.181-100000@rigoletto.ski.org>

> Folks, I just reread my previous post, and I think it sounds a little
> arrogant.  I think it was uncool for me to start hacking up the code
> and posting diffs.  In particular, I see from the README file that
> I should have sent any suggestions to support@icf.llnl.gov .
> 
> I hope I haven't offended anyone.  I especially hope I haven't
> offended the people who've authored, distributed, and maintained this
> fantastic package.

Geez, I doubt it!  

The only suggestion I would make is to use context diffs, as the source
may have changed since the releases.

I think I can say that all patches are gratefully accepted for review.

The only reason you haven't heard a "thank you" yet is that the LLNL folk
are very busy w/ an upcoming conference.  But I'll say it for them: 
Thanks!

--david [not quite LLNL, but not too far =)]




From just@letterror.com  Tue Oct  6 22:44:18 1998
From: just@letterror.com (Just van Rossum)
Date: Tue, 6 Oct 1998 23:44:18 +0200
Subject: [Matrix-SIG] array.index() in NumPy?
Message-ID: <l03102800b2403f3462a8@[193.78.237.149]>

How do I do the equivalent of

>>> a = range(10)
>>> a.index(5)
5
>>>

with NumPy?

Thanks!

Just




From HYoon@exchange.ml.com  Tue Oct  6 23:32:05 1998
From: HYoon@exchange.ml.com (Yoon, Hoon (CICG - NY Program Trading))
Date: Tue, 6 Oct 1998 18:32:05 -0400
Subject: [Matrix-SIG] array.index() in NumPy?
Message-ID: <A1AFC4253BA3D111BFF70001FA7E9AAC4DDADB@EWFD19>

I do:

  a = arrayrange(10)
  nonzero(equal(a, 5))

  Of course be prepared for mult matches, if you have many 5 in a.
Hope this helps,

Hoon,

> -----Original Message-----
> From:	Just van Rossum 
> Sent:	Tuesday, October 06, 1998 5:44 PM
> To:	matrix-sig@python.org
> Subject:	[Matrix-SIG] array.index() in NumPy?
> 
> How do I do the equivalent of
> 
> >>> a = range(10)
> >>> a.index(5)
> 5
> >>>
> 
> with NumPy?
> 
> Thanks!
> 
> Just
> 
> 
> 
> _______________________________________________
> Matrix-SIG maillist  -  Matrix-SIG@python.org
> http://www.python.org/mailman/listinfo/matrix-sig


From jhauser@ifm.uni-kiel.de  Wed Oct  7 09:43:38 1998
From: jhauser@ifm.uni-kiel.de (Janko Hauser)
Date: Wed, 7 Oct 1998 10:43:38 +0200 (CEST)
Subject: [Matrix-SIG] array.index() in NumPy?
In-Reply-To: <l03102800b2403f3462a8@[193.78.237.149]>
References: <l03102800b2403f3462a8@[193.78.237.149]>
Message-ID: <13851.10609.451228.889843@lisboa.ifm.uni-kiel.de>

>>> a=arange(10)
>>> nonzero(equal(a,5))
array([5])
>>> 


__Janko


From HYoon@exchange.ml.com  Wed Oct  7 19:39:18 1998
From: HYoon@exchange.ml.com (Yoon, Hoon (CICG - NY Program Trading))
Date: Wed, 7 Oct 1998 14:39:18 -0400
Subject: [Matrix-SIG] NaN
Message-ID: <A1AFC4253BA3D111BFF70001FA7E9AAC4DDADE@EWFD19>

Hello,

  I get NaN's inside my array. And I would like to elimiate them using equal
or something like that, but I cannot
figure out how to mark them.

  I tried:
equal(array, NaN)
equal(array, sqrt(-1))

  Thank you,

Hoon,



From zcm@home.com  Wed Oct  7 22:42:31 1998
From: zcm@home.com (Zane C. Motteler)
Date: Wed, 7 Oct 1998 13:42:31 -0800
Subject: [Matrix-SIG] Problem with integer arrays?
In-Reply-To: <361A56A1.DB9D43A2@umich.edu>
References: <199810061650.MAA02106@python.org>
Message-ID: <v04011700b2418e9bfce3@[24.1.90.204]>

>dlr@postbox.ius.cs.cmu.edu wrote:
>
>> >>> import Numeric
>> >>> Numeric.__version__
>> '1.4'
>> >>> a = Numeric.ones(5)
>> >>> a
>> array([1, 1, 1, 1, 1])
>> >>> (-1) * a
>> array([-1, 1, -1, 1, -1])
>
>I am glad that you point this out! I had the same experience with LLNL
>python package version 5. Then I found out that version 4 didn't have
>this bug, so I am using this old version right now :( ... If I decide to
>go back to version 5 (what are the benefits, I wonder ... pardon me, I
>joined this discussion group only yesterday), I will try your fix.

I discovered and fixed this problem some weeks ago and it should be
in our latest or next (?) distribution. Sorry, I've been out of contact
for a couple of weeks, as I'm recovering from intestinal surgery. I
still read my email, but won't be back to work until next week. It
seems as if two weeks ago we were getting ready to release our latest
distribution, but I don't know how far that has got.

Zane
----------
Zane C. Motteler
Computer Scientist
Lawrence Livermore National Laboratory
writing from  home


From Paul F. Dubois" <dubois1@llnl.gov  Wed Oct  7 22:53:55 1998
From: Paul F. Dubois" <dubois1@llnl.gov (Paul F. Dubois)
Date: Wed, 7 Oct 1998 14:53:55 -0700
Subject: [Matrix-SIG] NaN
Message-ID: <001b01bdf23c$fdf519a0$f4160218@c1004579-C.plstn1.sfba.home.com>

This worked for me on one machine.
C:\WINDOWS>python
Python 1.5.1 (#0, Apr 13 1998, 20:22:04) [MSC 32 bit (Intel)] on win32
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
>>> from Numeric import *
>>> infinity=(array([1.0])/array([0.0]))[0]
>>> x=array([1.,2.,3.])
>>> y=array([1.,0.,1.])
>>> z=x/y
>>> print equal(z,infinity)
[0 1 0]
>>>



-----Original Message-----
From: Yoon, Hoon (CICG - NY Program Trading) <HYoon@exchange.ml.com>
To: matrix-sig@python.org <matrix-sig@python.org>
Date: Wednesday, October 07, 1998 11:42 AM
Subject: [Matrix-SIG] NaN


>Hello,
>
>  I get NaN's inside my array. And I would like to elimiate them using
equal
>or something like that, but I cannot
>figure out how to mark them.
>
>  I tried:
>equal(array, NaN)
>equal(array, sqrt(-1))
>
>  Thank you,
>
>Hoon,
>
>
>_______________________________________________
>Matrix-SIG maillist  -  Matrix-SIG@python.org
>http://www.python.org/mailman/listinfo/matrix-sig
>
>



From Paul F. Dubois" <dubois1@llnl.gov  Wed Oct  7 23:05:51 1998
From: Paul F. Dubois" <dubois1@llnl.gov (Paul F. Dubois)
Date: Wed, 7 Oct 1998 15:05:51 -0700
Subject: [Matrix-SIG] Next NumPy release...
Message-ID: <002001bdf23e$a6ddf4a0$f4160218@c1004579-C.plstn1.sfba.home.com>

On September 22 I believed that with one free day I could get the next NumPy
release out.

I still believe that. I'm sorry for those of you who have encountered bugs
we have already fixed. I've asked David Ascher to do it if he gets time,
thus doubling the infintesimal probability of success. Your patience will be
appreciated.

Paul Dubois


-----Original Message-----
From: Zane C. Motteler <zcm@home.com>
To: Gey-Hong Gweon <gweon@umich.edu>
Cc: matrix-sig@python.org <matrix-sig@python.org>
Date: Wednesday, October 07, 1998 1:38 PM
Subject: Re: [Matrix-SIG] Problem with integer arrays?


>>dlr@postbox.ius.cs.cmu.edu wrote:
>>
>>> >>> import Numeric
>>> >>> Numeric.__version__
>>> '1.4'
>>> >>> a = Numeric.ones(5)
>>> >>> a
>>> array([1, 1, 1, 1, 1])
>>> >>> (-1) * a
>>> array([-1, 1, -1, 1, -1])
>>
>>I am glad that you point this out! I had the same experience with LLNL
>>python package version 5. Then I found out that version 4 didn't have
>>this bug, so I am using this old version right now :( ... If I decide to
>>go back to version 5 (what are the benefits, I wonder ... pardon me, I
>>joined this discussion group only yesterday), I will try your fix.
>
>I discovered and fixed this problem some weeks ago and it should be
>in our latest or next (?) distribution. Sorry, I've been out of contact
>for a couple of weeks, as I'm recovering from intestinal surgery. I
>still read my email, but won't be back to work until next week. It
>seems as if two weeks ago we were getting ready to release our latest
>distribution, but I don't know how far that has got.
>
>Zane
>----------
>Zane C. Motteler
>Computer Scientist
>Lawrence Livermore National Laboratory
>writing from  home
>
>_______________________________________________
>Matrix-SIG maillist  -  Matrix-SIG@python.org
>http://www.python.org/mailman/listinfo/matrix-sig
>
>



From HYoon@exchange.ml.com  Wed Oct  7 23:16:10 1998
From: HYoon@exchange.ml.com (Yoon, Hoon (CICG - NY Program Trading))
Date: Wed, 7 Oct 1998 18:16:10 -0400
Subject: [Matrix-SIG] NaN (almost)
Message-ID: <A1AFC4253BA3D111BFF70001FA7E9AAC4DDAE1@EWFD19>

Thanks Paul, but not quite....

>>> excP
array([  9.12500000e+000,   9.27519777e+000,   9.25000000e+000,
9.06250000e+000,
              8.93750000e+000,               NaN,   9.00000000e+000,
              9.00000000e+000,   9.00000000e+000,               NaN,
              9.00000000e+000,               NaN,               NaN,
              9.00000000e+000,               NaN,   9.00000000e+000,
                          NaN,   9.00000000e+000,               NaN,
              8.93750000e+000,   8.93750000e+000,               NaN,
              9.02269591e+000,               NaN,               NaN,
                          NaN,               NaN,   0.00000000e+000])
>>> infini = (array([1.0])/array([0.0]))/[0]
>>> x = array([1.,2.,3.])
>>> y = array([1.,0.,1.])
>>> equal(x/y, infini)
array([0, 1, 0])
>>> NaNv = 1e1000000 - 1e10000000
>>> NaNv = array((1e1000000 - 1e10000000))
>>> NaNv
NaN
>>> NaNv = infini - infini
>>> NaNv
array([              NaN])
>>> equal(excP, NaNv)
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,
            0, 0])

No wonder

equal(NaNv, NaNv)  is 0 too:
Appreciate it neverthless,

Hoon,


From ffjhl@uaf.edu  Wed Oct  7 23:28:22 1998
From: ffjhl@uaf.edu (Jonah Lee)
Date: Wed, 7 Oct 1998 14:28:22 -0800 (AKDT)
Subject: [Matrix-SIG] Numpy array.tolist() memory leak ?
In-Reply-To: <Pine.WNT.4.05.9809272346300.142-100000@david.ski.org>
Message-ID: <Pine.OSF.3.95.981007142403.16420C-100000@mealpha.engr.uaf.edu>

On Sun, 27 Sep 1998, David Ascher wrote:
Hi,

Thanks for the suggestion. I've played with this and other possibilities
for a while but could not get the problem solved. I think one of the
problems may be that the procedure is called recursively which makes the
release of memory less intuitive. I would appreciate it if anyone could
see a solution to this situation. I've used a workaround in my application
code to avoid using this particular method but would still like to see a
solution one day. Thanks.

> 
> 
> On Sun, 27 Sep 1998, Jonah Lee wrote:
> > 
> > There seems to be a memory leak with the following example:
> > 
> > from Numeric import *
> > a=array([[1,2,3],[4,5,6],[7,8,9]], Float)
> > for i in range(100000):
> >     for j in range(100000):
> >         c=a.tolist()
> > 
> > If a=array([1,2,3,4]), then there is no leak.
> > 
> > Any advice on this would be appreciated. Thanks.
> 
> I could be wrong (reference counting was never my forte), but I believe
> that arrayobject.c's PyArray_ToList() should be modified to read:
> 
>         ...
> 
> 	for (i=0; i<sz; i++) {
> !           PyArrayObject *elt;
> !           elt = array_item((PyArrayObject *)self, i);
> !           PyList_SetItem(lp, i, PyArray_ToList(elt));
> !           Py_DECREF(elt);
> 	}
> 
>         ...
> 
> otherwise the subarrays ([1,2,3] etc. in the example above) never get
> DECREF'ed out.
> 
> --david ascher
> 
> 
> _______________________________________________
> Matrix-SIG maillist  -  Matrix-SIG@python.org
> http://www.python.org/mailman/listinfo/matrix-sig
> 

Regards,
Jonah



From tim_one@email.msn.com  Thu Oct  8 04:55:25 1998
From: tim_one@email.msn.com (Tim Peters)
Date: Wed, 7 Oct 1998 23:55:25 -0400
Subject: [Matrix-SIG] NaN (almost)
In-Reply-To: <A1AFC4253BA3D111BFF70001FA7E9AAC4DDAE1@EWFD19>
Message-ID: <000201bdf26f$7aea29a0$6a9e2299@tim>

[Hoon Yoon, trying to identify NaNs]
> ...
> >>> NaNv = 1e1000000 - 1e10000000
> ...
> No wonder
>
> equal(NaNv, NaNv)  is 0 too:

That's interesting!  That's what the IEEE-754 standard says NaN == NaN
should do (believe it or not <wink>), but in core Python NaNv == NaNv
returns 1 (core comparisons test for object identity (and treat "x is y" as
"equal") before delegating to the type-specific comparison implementations).

I don't have Numeric here to test it, but the behavior you show above
suggests that the standard-approved NaN test

    x is a NaN

if and only if

    not x == x

should work reliably for you using Numeric's "equal".  I.e., compare the
array to itself elementwise using equal, and the result will have 1's all &
everywhere a NaN isn't <wink>.

Using core Python ==, I don't think you can do anything *simple* better than

    x is a NaN

if and only if

    not x + 0 == x

But that can fail (by saying something's a NaN that actually isn't) if x is
a denorm and you're on flush-denorm-to-0 hardware.

not-sure-that's-helpful-but-it's-sure-accurate<wink>-ly y'rs  - tim




From jhauser@ifm.uni-kiel.de  Thu Oct  8 09:45:30 1998
From: jhauser@ifm.uni-kiel.de (Janko Hauser)
Date: Thu, 8 Oct 1998 10:45:30 +0200 (CEST)
Subject: [Matrix-SIG] NaN
In-Reply-To: <A1AFC4253BA3D111BFF70001FA7E9AAC4DDADE@EWFD19>
References: <A1AFC4253BA3D111BFF70001FA7E9AAC4DDADE@EWFD19>
Message-ID: <13852.31485.572139.307112@lisboa.ifm.uni-kiel.de>

Try to compare the data to itself. NaN is not_equal NaN

index_of_all_nans=nonzero(not_equal(ravel(data),ravel(data)))

__Janko


From ej@ee.duke.edu  Thu Oct  8 10:00:58 1998
From: ej@ee.duke.edu (eric jones)
Date: Thu, 8 Oct 1998 05:00:58 -0400
Subject: [Matrix-SIG] whats the best way to combine 1D arrays into 2D arrays?
Message-ID: <000101bdf29a$2a927a90$83421098@elsie.duke.edu>

Hello,

I'd like to take two 1D arrays and combine them as the rows of a 2D array.
For example, in Matlab, the following works:

x=1:3;
y=1:3;
z=[x;y]

so that
z= [[1,2,3]
      [1,2,3]]

The way I've done this in NumPy is:

x = arange(1,4)
y = arange(1,4)
z = concatenate( (reshape(x,[1,-1]),reshape(y,[1,-1]) ) )

Is there a more compact way of doing this?

thanks,
eric



From arne@requin.ppm.u-psud.fr  Thu Oct  8 10:28:08 1998
From: arne@requin.ppm.u-psud.fr (Arne Keller)
Date: Thu, 08 Oct 1998 11:28:08 +0200
Subject: [Matrix-SIG] whats the best way to combine 1D arrays into 2D arrays?
References: <000101bdf29a$2a927a90$83421098@elsie.duke.edu>
Message-ID: <361C85A8.C4F5F85B@requin.ppm.u-psud.fr>

eric jones wrote:
> 
> Hello,
> 
> I'd like to take two 1D arrays and combine them as the rows of a 2D array.
> For example, in Matlab, the following works:
> 
> x=1:3;
> y=1:3;
> z=[x;y]
> 
> so that
> z= [[1,2,3]
>       [1,2,3]]
> 
> The way I've done this in NumPy is:
> 
> x = arange(1,4)
> y = arange(1,4)
> z = concatenate( (reshape(x,[1,-1]),reshape(y,[1,-1]) ) )
> 
> Is there a more compact way of doing this?
> 
> thanks,
> eric
> 
> _______________________________________________
> Matrix-SIG maillist  -  Matrix-SIG@python.org
> http://www.python.org/mailman/listinfo/matrix-sig


I use the following:

>>> a = array([1,2,3,4,5])
>>> b = array([6,7,8,9,10])
c = array((a,b))
>>> c
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10]])


-- 
Arne Keller
Laboratoire de Photophysique Moleculaire du CNRS.
Universite de Paris-Sud, 91405 Orsay Cedex, France.
tel.: (33) 1 69 15 82 83 -- fax. : (33) 1 69 15 67 77


From jhauser@ifm.uni-kiel.de  Thu Oct  8 12:30:51 1998
From: jhauser@ifm.uni-kiel.de (Janko Hauser)
Date: Thu, 8 Oct 1998 13:30:51 +0200 (CEST)
Subject: [Matrix-SIG] whats the best way to combine 1D arrays into 2D arrays?
In-Reply-To: <000101bdf29a$2a927a90$83421098@elsie.duke.edu>
References: <000101bdf29a$2a927a90$83421098@elsie.duke.edu>
Message-ID: <13852.41428.127941.226457@lisboa.ifm.uni-kiel.de>

>>> x = arange(1,4)
>>> y = arange(1,4)
>>> transpose(array([x[:], y[:]]))
array([[1, 1],
       [2, 2],
       [3, 3]])

Although transpose makes a copy. A little longer:

>>> xy = array([x[:], y[:]]) 
>>> xy.shape=(len(x),len(xy))
>>> xy
array([[1, 2],
       [3, 1],
       [2, 3]])

__Janko


From HYoon@exchange.ml.com  Thu Oct  8 14:11:03 1998
From: HYoon@exchange.ml.com (Yoon, Hoon (CICG - NY Program Trading))
Date: Thu, 8 Oct 1998 09:11:03 -0400
Subject: [Matrix-SIG] More on NaN and bugs? : was [Matrix-SIG] NaN
Message-ID: <A1AFC4253BA3D111BFF70001FA7E9AAC4DDAE4@EWFD19>

Paul,

   Tried both scalar and vector (tried vector because I was following what
you were doing). Neither works.
A simple answer is multiply the scalar or vector or matrix with
zeros(vec.shape), then equal(org, zeros).
Any 0's should be either NaN or Infinity. That should be close as long as I
don't have infinity in there, but I
can use your inf cmp for that. So, your solution still helps.
  Can anyone think of other exceptions I should worry about?
   Thanks,

Hoon,
 ----

More NaN ?
   There was a movement to get NaN as standard missing on a matrix for both
float and complex. Do anyone
know what happened to that?

Bugs?
   I could not get binaryseach to work in my NumPy (comes back w/ Trace back
Name error) and 
argsort seems to have a bug. It may due to the fact thatI have a very old
version of NumPy 
(still was Beta 1.5 yr ago). 
   Has there been fix for either one since I installed?
How do I find out what version I have? My SA takes care of these things and
it takes me more than some effort
to upgrade my installation. (I am still using 1.4 heaven sakes)
   Thanks,

Hoon,

> -----Original Message-----
> From:	Paul F. Dubois 
> Sent:	Wednesday, October 07, 1998 7:24 PM
> To:	Yoon, Hoon (CICG - NY Program Trading)
> Subject:	Re: [Matrix-SIG] NaN (almost)
> 
> Uh, maybe I'm missing something, but NaNv is a vector, not a scalar; don't
> you want NaNv[0] passed to equal?
> -----Original Message-----
> From: Yoon, Hoon (CICG - NY Program Trading) <HYoon@exchange.ml.com>
> To: 'Paul F. Dubois' <dubois1@llnl.gov>; matrix-sig@python.org
> <matrix-sig@python.org>
> Date: Wednesday, October 07, 1998 3:17 PM
> Subject: RE: [Matrix-SIG] NaN (almost)
> 
> 
> >Thanks Paul, but not quite....
> >
> >>>> excP
> >array([  9.12500000e+000,   9.27519777e+000,   9.25000000e+000,
> >9.06250000e+000,
> >              8.93750000e+000,               NaN,   9.00000000e+000,
> >              9.00000000e+000,   9.00000000e+000,               NaN,
> >              9.00000000e+000,               NaN,               NaN,
> >              9.00000000e+000,               NaN,   9.00000000e+000,
> >                          NaN,   9.00000000e+000,               NaN,
> >              8.93750000e+000,   8.93750000e+000,               NaN,
> >              9.02269591e+000,               NaN,               NaN,
> >                          NaN,               NaN,   0.00000000e+000])
> >>>> infini = (array([1.0])/array([0.0]))/[0]
> >>>> x = array([1.,2.,3.])
> >>>> y = array([1.,0.,1.])
> >>>> equal(x/y, infini)
> >array([0, 1, 0])
> >>>> NaNv = 1e1000000 - 1e10000000
> >>>> NaNv = array((1e1000000 - 1e10000000))
> >>>> NaNv
> >NaN
> >>>> NaNv = infini - infini
> >>>> NaNv
> >array([              NaN])
> >>>> equal(excP, NaNv)
> >array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0,
> >0, 0, 0,
> >            0, 0])
> >
> >No wonder
> >
> >equal(NaNv, NaNv)  is 0 too:
> >Appreciate it neverthless,
> >
> >Hoon,
> >


From HYoon@exchange.ml.com  Thu Oct  8 17:16:29 1998
From: HYoon@exchange.ml.com (Yoon, Hoon (CICG - NY Program Trading))
Date: Thu, 8 Oct 1998 12:16:29 -0400
Subject: [Matrix-SIG] binarysearch? & Little more on combine 1D arrays into 2D arrays?
Message-ID: <A1AFC4253BA3D111BFF70001FA7E9AAC4DDAEB@EWFD19>

Hi,

>>> binarysearch(a, 0)
Traceback (innermost last):
  File "<interactive input>", line 0, in ?
NameError: binarysearch

I uploaded latest Window versio of NumPy152.exe from Triple L site. So, I
know
that I am not getting problems due to having old version. I copied the func
Name
from the docs.

-------------------------------

>>> a
array([0, 1, 2])
>>> d
array([[0, 1, 2],
       [3, 4, 5]])

   Just wanted to see I can extend this ? a bit more.
Let's say I wanted to see 
  a | d

Is there a simpler way? (This isn't too bad, but I would like to skip
a.shape = () step).

a.shape = (1,3)
concatenate((a,d),0)
array([[0, 1, 2],
       [0, 1, 2],
       [3, 4, 5]]) 

Thanks,

Hoon,

 P.S: Thanks for all help from Paul, Janko, David, Tim, Eric, etc... for NaN
       clean solutions.




From da@skivs.ski.org  Thu Oct  8 17:18:28 1998
From: da@skivs.ski.org (David Ascher)
Date: Thu, 8 Oct 1998 09:18:28 -0700 (Pacific Daylight Time)
Subject: [Matrix-SIG] binarysearch? & Little more on combine 1D arrays
 into 2D arrays?
In-Reply-To: <A1AFC4253BA3D111BFF70001FA7E9AAC4DDAEB@EWFD19>
Message-ID: <Pine.WNT.4.04.9810080917170.294-100000@rigoletto.ski.org>

On Thu, 8 Oct 1998, Yoon, Hoon (CICG - NY Program Trading) wrote:
>    Just wanted to see I can extend this ? a bit more.
> Let's say I wanted to see 
>   a | d
> 
> Is there a simpler way? (This isn't too bad, but I would like to skip
> a.shape = () step).
> 
> a.shape = (1,3)
> concatenate((a,d),0)
> array([[0, 1, 2],
>        [0, 1, 2],
>        [3, 4, 5]]) 

The trick is to remember to use NewAxis:

>>> a
array([0, 1, 2])
>>> d
array([[0, 1, 2],
       [3, 4, 5]])
>>> concatenate((a[NewAxis,:], d))
array([[0, 1, 2],
       [0, 1, 2],
       [3, 4, 5]])

Whenever you find yourself doing a reshape w/ a 1 somewhere, chances are
you can get away with a NewAxis operation instead, which is quicker and
simpler to read (IMO).

--david



From jhauser@ifm.uni-kiel.de  Thu Oct  8 22:36:54 1998
From: jhauser@ifm.uni-kiel.de (Janko Hauser)
Date: Thu, 8 Oct 1998 23:36:54 +0200 (CEST)
Subject: [Matrix-SIG] More on NaN and bugs? : was [Matrix-SIG] NaN
In-Reply-To: <A1AFC4253BA3D111BFF70001FA7E9AAC4DDAE4@EWFD19>
References: <A1AFC4253BA3D111BFF70001FA7E9AAC4DDAE4@EWFD19>
Message-ID: <13853.12260.642340.812840@lisboa.ifm.uni-kiel.de>

May I add these two functions to this thread?

def isnan(m):
    """
    Returns a condition array, which is true where m has a NaN value.
    """
    return Numeric.not_equal(m,m)

def isinf(m):
    """
    Returns a condition array, which is true where m has an Inf value.
    Does not look for sign of Inf.
    """
    n = isnan(m)
    return isnan(Numeric.where(n,0,m)*0.)


Is there some obvious case, which is not covered?

__Janko


From HYoon@exchange.ml.com  Thu Oct  8 21:46:32 1998
From: HYoon@exchange.ml.com (Yoon, Hoon (CICG - NY Program Trading))
Date: Thu, 8 Oct 1998 16:46:32 -0400
Subject: [Matrix-SIG] More on NaN and bugs? : was [Matrix-SIG] NaN
Message-ID: <A1AFC4253BA3D111BFF70001FA7E9AAC4DDAF1@EWFD19>

In case we are adding functions. I wrote the following.

def packr( M):
	"""
	Returns only rows or colums, which is Not NaN (Packr is Gauss by
Aptech func)
	works for 2d. axis is bit confusing for a Gauss person
	"""
	return take( M, isanx(M))

def  isanx(d, axis=1):
 	if len(d.shape) == 2:
			return nonzero(equal(add.reduce(equal(d,d),axis),
d.shape[axis]))
	elif len(d.shape) == 1:
	      return nonzero(equal(d,d))
	else: raise IndexError, "function : packr is for up to 2D matrix
only"

I can't really make this work for more than 2D. I hope someone can figure
out something better.
Thanks Janko,

Hoon,

> -----Original Message-----
> From:	Janko Hauser 
> Sent:	Thursday, October 08, 1998 5:37 PM
> To:	Yoon, Hoon (CICG - NY Program Trading)
> Cc:	matrix-sig@python.org
> Subject:	[Matrix-SIG] More on NaN and bugs? : was [Matrix-SIG] NaN
> 
> May I add these two functions to this thread?
> 
> def isnan(m):
>     """
>     Returns a condition array, which is true where m has a NaN value.
>     """
>     return Numeric.not_equal(m,m)
> 
> def isinf(m):
>     """
>     Returns a condition array, which is true where m has an Inf value.
>     Does not look for sign of Inf.
>     """
>     n = isnan(m)
>     return isnan(Numeric.where(n,0,m)*0.)
> 
> 
> Is there some obvious case, which is not covered?
> 
> __Janko
> 
> _______________________________________________
> Matrix-SIG maillist  -  Matrix-SIG@python.org
> http://www.python.org/mailman/listinfo/matrix-sig


From HYoon@exchange.ml.com  Thu Oct  8 22:03:27 1998
From: HYoon@exchange.ml.com (Yoon, Hoon (CICG - NY Program Trading))
Date: Thu, 8 Oct 1998 17:03:27 -0400
Subject: [Matrix-SIG] Error NaN on Numpy152.exe
Message-ID: <A1AFC4253BA3D111BFF70001FA7E9AAC4DDAF2@EWFD19>

>>> INF
1.#INF
>>> NA = INF - INF
>>> NA
-1.#IND
>>> equal(NA,NA)
1
>>> 

I hope I am not driving everyone crazy with this, but I get >>> equal(NA,NA)
-> 1 on windows
version of NumPy. Like most people I use windows not as much as Unix, but
this is problematic for cross platform issues. And non of the tricks we
talked
about would work for NaN.

Thanks,

Hoon,

Using:
PythonWin 1.5.1 (#0, Apr 13 1998, 20:22:04) [MSC 32 bit (Intel)] on win32
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
Portions copyright 1994-1998 Mark Hammond (MHammond@skippinet.com.au)
Don't think this is problem, because works fine on my Solaris 1.4Py.


From neves@inf.puc-rio.br  Fri Oct  9 00:01:54 1998
From: neves@inf.puc-rio.br (Paulo Eduardo Neves)
Date: Thu, 08 Oct 1998 20:01:54 -0300
Subject: [Matrix-SIG] Where are the Unsigned Ints?
Message-ID: <361D4462.E4BCBA0C@inf.puc-rio.br>

Hi,
Maybe this is a stupid question, since I'm a new to NumPy.

It looks like in NumPy we just have unsigned integers of 8 bits. Is
there any reason for the inexistence of unsigneds of 32 bits?

Shouldn't it be easy to implement? I still didn't look in the code.
regards,
-- 
Paulo Eduardo Neves
PUC-Rio de Janeiro 
Pager: Central: 292-4499 cod. 213 99 64
ou use a URL:  http://www.learn.fplf.org.br/neves/mensagempager.html


From Paul F. Dubois" <dubois1@llnl.gov  Fri Oct  9 15:58:53 1998
From: Paul F. Dubois" <dubois1@llnl.gov (Paul F. Dubois)
Date: Fri, 9 Oct 1998 07:58:53 -0700
Subject: [Matrix-SIG] Where are the Unsigned Ints?
Message-ID: <000f01bdf395$5768bb00$f4160218@c1004579-C.plstn1.sfba.home.com>

While we volunteered to be the "keepers" of NumPy, we don't have as much
time as we would like to improve it. This is open source software. You are
welcome to add what you want and submit the changes for consideration. Be
aware that the NumPy source is hard to understand.

-----Original Message-----
From: Paulo Eduardo Neves <neves@inf.puc-rio.br>
To: matrix-sig@python.org <matrix-sig@python.org>
Date: Thursday, October 08, 1998 4:01 PM
Subject: [Matrix-SIG] Where are the Unsigned Ints?


>Hi,
>Maybe this is a stupid question, since I'm a new to NumPy.
>
>It looks like in NumPy we just have unsigned integers of 8 bits. Is
>there any reason for the inexistence of unsigneds of 32 bits?
>
>Shouldn't it be easy to implement? I still didn't look in the code.
>regards,
>--
>Paulo Eduardo Neves
>PUC-Rio de Janeiro
>Pager: Central: 292-4499 cod. 213 99 64
>ou use a URL:  http://www.learn.fplf.org.br/neves/mensagempager.html
>
>_______________________________________________
>Matrix-SIG maillist  -  Matrix-SIG@python.org
>http://www.python.org/mailman/listinfo/matrix-sig
>
>



From hinsen@cnrs-orleans.fr  Sun Oct 11 14:48:50 1998
From: hinsen@cnrs-orleans.fr (Konrad Hinsen)
Date: Sun, 11 Oct 1998 15:48:50 +0200
Subject: [Matrix-SIG] Syntactic sugar for constructing arrays
In-Reply-To: <x47lymu9ll.fsf@janus.pgt.com> (message from Charles G Waldman on
 29 Sep 1998 13:12:06 -0400)
References: <x47lymu9ll.fsf@janus.pgt.com>
Message-ID: <199810111348.PAA15472@dirac.cnrs-orleans.fr>

> Since the array is such a useful type, I'd like to see a
> cleaner-looking syntax for creating array objects.  I'd like to be
> able to write, for instance,
> 
> center = <256,256>
> point =  <10,-20>
> 
> What do people think of this suggestion?

I'd like it too, but the only relevant opinion when it comes to 
syntax issues in Python is Guido's ;-)

Moreover, with the current state of Python and NumPy this would be
impossible to implement. The interpreter would have to recognize
the syntax and create the array object - but the array type is defined
in an extension that most Python users don't even have!
-- 
-------------------------------------------------------------------------------
Konrad Hinsen                            | E-Mail: hinsen@cnrs-orleans.fr
Centre de Biophysique Moleculaire (CNRS) | Tel.: +33-2.38.25.55.69
Rue Charles Sadron                       | Fax:  +33-2.38.63.15.17
45071 Orleans Cedex 2                    | Deutsch/Esperanto/English/
France                                   | Nederlands/Francais
-------------------------------------------------------------------------------


From HYoon@exchange.ml.com  Mon Oct 12 14:13:16 1998
From: HYoon@exchange.ml.com (Yoon, Hoon (CICG - NY Program Trading))
Date: Mon, 12 Oct 1998 09:13:16 -0400
Subject: [Matrix-SIG] Syntactic sugar for constructing arrays
Message-ID: <A1AFC4253BA3D111BFF70001FA7E9AAC4DDAFE@EWFD19>

Hi,

  I think there was a long discussion on a very similar issue proposed by
David Ascher. Please read that. You should get a clearer picture of Konrad's
point. Look in David's Starship site and look for keywords in News Archive.
  Hack, I love to see:
A'  (transpose)
A .* B (dotproduct)
A > B (greater(A,B))
A^2    (A**2)
A[ [1,2,13], [2,9] ] = NA
dataframes (Splus)
standard NA (msg values)
  This will make Python on par with Gauss, Splus, Mathlab, etc...
The reason I am trying to do more on Python is still because the data
manipulation (which is about 70%+ of my work) is much much easier on Python.
I can put many things in production without using bulky Stat packages and
still have speed on C on matricies. So, I am happy enough.

Hoon,
> -----Original Message-----
> From:	Konrad Hinsen 
> Sent:	Sunday, October 11, 1998 9:49 AM
> To:	cgw@pgt.com
> Cc:	matrix-sig@python.org
> Subject:	Re: [Matrix-SIG] Syntactic sugar for constructing arrays
> 
> > Since the array is such a useful type, I'd like to see a
> > cleaner-looking syntax for creating array objects.  I'd like to be
> > able to write, for instance,
> > 
> > center = <256,256>
> > point =  <10,-20>
> > 
> > What do people think of this suggestion?
> 
> I'd like it too, but the only relevant opinion when it comes to 
> syntax issues in Python is Guido's ;-)
> 
> Moreover, with the current state of Python and NumPy this would be
> impossible to implement. The interpreter would have to recognize
> the syntax and create the array object - but the array type is defined
> in an extension that most Python users don't even have!
> -- 
> --------------------------------------------------------------------------
> -----
> Konrad Hinsen                            | E-Mail: hinsen@cnrs-orleans.fr
> Centre de Biophysique Moleculaire (CNRS) | Tel.: +33-2.38.25.55.69
> Rue Charles Sadron                       | Fax:  +33-2.38.63.15.17
> 45071 Orleans Cedex 2                    | Deutsch/Esperanto/English/
> France                                   | Nederlands/Francais
> --------------------------------------------------------------------------
> -----
> 
> _______________________________________________
> Matrix-SIG maillist  -  Matrix-SIG@python.org
> http://www.python.org/mailman/listinfo/matrix-sig


From hweaver@pdx.oneworld.com  Mon Oct 12 18:28:16 1998
From: hweaver@pdx.oneworld.com (Harold L. Weaver)
Date: Mon, 12 Oct 1998 10:28:16 -0700
Subject: [Matrix-SIG] Syntactic sugar for constructing arrays
References: <199810121600.MAA17661@python.org>
Message-ID: <36223C30.A4751C3C@pdx.oneworld.com>

Check out OMatrix, http://www.omatrix.com .  I think it may be a Python application, and
there is a free trial version which is not particularly crippled.

- Hal


>   1. RE: Syntactic sugar for constructing arrays (Yoon, Hoon (CICG - NY Program Trading))
>
>   ------------------------------------------------------------------------
>
> Subject: RE: [Matrix-SIG] Syntactic sugar for constructing arrays
> Date: Mon, 12 Oct 1998 09:13:16 -0400
> From: "Yoon, Hoon (CICG - NY Program Trading)" <HYoon@exchange.ml.com>
> CC: matrix-sig@python.org
>
> Hi,
>
>   I think there was a long discussion on a very similar issue proposed by
> David Ascher. Please read that. You should get a clearer picture of Konrad's
> point. Look in David's Starship site and look for keywords in News Archive.
>   Hack, I love to see:
> A'  (transpose)
> A .* B (dotproduct)
> A > B (greater(A,B))
> A^2    (A**2)
> A[ [1,2,13], [2,9] ] = NA
> dataframes (Splus)
> standard NA (msg values)
>   This will make Python on par with Gauss, Splus, Mathlab, etc...
> The reason I am trying to do more on Python is still because the data
> manipulation (which is about 70%+ of my work) is much much easier on Python.
> I can put many things in production without using bulky Stat packages and
> still have speed on C on matricies. So, I am happy enough.
>
> Hoon,





From HYoon@exchange.ml.com  Mon Oct 12 21:22:25 1998
From: HYoon@exchange.ml.com (Yoon, Hoon (CICG - NY Program Trading))
Date: Mon, 12 Oct 1998 16:22:25 -0400
Subject: [Matrix-SIG] Syntactic sugar for constructing arrays
Message-ID: <A1AFC4253BA3D111BFF70001FA7E9AAC4DDB02@EWFD19>

Harold,

I actually know of omatrix. What makes you think it may be Python App?
Windows only, no OO, no COM, DDE only, etc... If I can wrap this around
Python that would be great, because it's probably the speed king on Stat
Packages.
	http://www.informatik.uni-frankfurt.de/~stst/ncrunch.html
Check this site out. Stefan has good info on various stat packages.

Hoon,
> -----Original Message-----
> From:	Harold L. Weaver 
> Sent:	Monday, October 12, 1998 1:28 PM
> To:	matrix-sig@python.org
> Subject:	Re: [Matrix-SIG] Syntactic sugar for constructing arrays
> 
> Check out OMatrix, http://www.omatrix.com .  I think it may be a Python
> application, and
> there is a free trial version which is not particularly crippled.
> 
> 
Andrew Mullhaupt Said,
 >A'  (transpose)

I would do almost anything to stop people from propagating this one. If it
was legal to shoot statisticians, I'd have done it already.
	------
	Andrew, you would have to kill nearly all staticians (a lot of
bullets). This is standard practice in all Econometric books I've seen. I do
realize that this is probably not likely in Python. It would be really
	hard to tell what's inside quote and what's transpose. Again, I do
not quite mind using slight long hand. I heard that better slicing will come
in future version of Python. Still pretty damn good without it.  I was just
illustrating that you don't get everything you want in manner you want and
Python doesn't have to.


From dubois1@llnl.gov  Tue Oct 13 21:04:43 1998
From: dubois1@llnl.gov (Paul F. Dubois)
Date: Tue, 13 Oct 1998 13:04:43 -0700
Subject: [Matrix-SIG] LLNL PyGraphics documentation release
Message-ID: <000b01bdf6e4$b8d84700$f4160218@c1004579-C.plstn1.sfba.home.com>

The LLNL PyGraphics documentation has been updated on our web site,
http://xfiles.llnl.gov. It is now all in Acrobat 3 format. There is a link
to the Adobe site if you need to get the plugin for your browser.

This format has the advantage over our previous HTML format that the reader
comes with good searching, the TOC and Index are all linked, and there are
many fewer problems producing the correct document for the web compared to
our previous tool. You can print a copy of a manual from the reader, too.






From hweaver@pdx.oneworld.com  Tue Oct 13 19:15:55 1998
From: hweaver@pdx.oneworld.com (Harold L. Weaver)
Date: Tue, 13 Oct 1998 11:15:55 -0700
Subject: [Matrix-SIG] Syntactic sugar for constructing arrays
References: <199810131600.MAA00899@python.org>
Message-ID: <362398DB.937AEC0E@pdx.oneworld.com>

Hoon,

I think that OMatrix may be a Python app because it seem to have similar speed performance to
Python when running my program scripts and because OMatrix also has awkward syntax for
constructing arrays.  However I don't know much about Python, and even less about other
scripting languages -- other than OMatrix.

Thanks for the pointer to Steinhaus' web site featuring comparisons of  data analysis programs.

- Hal

>
>
> I actually know of omatrix. What makes you think it may be Python App?
> Windows only, no OO, no COM, DDE only, etc... If I can wrap this around
> Python that would be great, because it's probably the speed king on Stat
> Packages.
>         http://www.informatik.uni-frankfurt.de/~stst/ncrunch.html
> Check this site out. Stefan has good info on various stat packages.
>
> Hoon,
> > -----Original Message-----
> > From: Harold L. Weaver
> > Sent: Monday, October 12, 1998 1:28 PM
> > To:   matrix-sig@python.org
> > Subject:      Re: [Matrix-SIG] Syntactic sugar for constructing arrays
> >
> > Check out OMatrix, http://www.omatrix.com .  I think it may be a Python
> > application, and
> > there is a free trial version which is not particularly crippled.






From dubois1@llnl.gov  Wed Oct 14 18:31:29 1998
From: dubois1@llnl.gov (Paul F. Dubois)
Date: Wed, 14 Oct 1998 10:31:29 -0700
Subject: [Matrix-SIG] LLNLDistribution 6 and NumPy-16.exe available
Message-ID: <003301bdf798$7acbace0$f4160218@c1004579-C.plstn1.sfba.home.com>

At ftp://ftp-icf.llnl.gov/pub/python, you can download LLNLDistribution.tgz
and/or NumPy.exe.

The former is a full source distribution for the LLNL-managed packages
(NumPy, CXX, Gist, Gist3D, OOG, Arrayfns, PyHistory, PyPDB, RNG) while the
latter is a Windows 95/98/NT installer for either binary or binary+source
for NumPy.

The release notes are attached. (Release_Notes.htm).

My thanks to David Ascher for getting this release finalized.

I have removed some of the older versions of the sources and documentation
from the FTP site. The correct site for the documentation that is not
included in the distribution is http://xfiles.llnl.gov.





begin 666 Release_Notes.htm
M/&AT;6P^#0H-"CQH96%D/@T*/'1I=&QE/CPO=&ET;&4^#0H\+VAE860^#0H-
M"CQB;V1Y/@T*#0H\:#$^4F5L96%S92!N;W1E<R!F;W(@3$Q.3%!Y=&AO;B!$
M:7-T<FEB=71I;VX\+V@Q/@T*#0H\<#Y396YD(&)U9R!R97!O<G1S('1O(#QA
M(&AR968](FUA:6QT;SIS=7!P;W)T0&EC9BYL;&YL+F=O=B(^<W5P<&]R=$!I
M8V8N;&QN;"YG;W8\+V$^+@T*4V]U<F-E<R!A<F4@870@9G1P+6EC9BYL;&YL
M+F=O=B]P=6(O<'ET:&]N+B!3964@=&AE(&9I;&4@/&$@:')E9CTB4D5!1$U%
M+FAT;2(^4D5!1$U%+FAT;3PO83XN/"]P/@T*#0H\<#Y&;W(@<W!E8VEF:6,@
M8VAA;F=E(&AI<W1O<FEE<R!A;F0@;W1H97(@<&%C:V%G92US<&5C:69I8R!I
M;F9O<FUA=&EO;BP@<V5E('1H92!214%$344-"F9I;&5S(&9O<B!E86-H('!A
M8VMA9V4Z( T*#0H\=6P^#0H@(#QL:3X\82!H<F5F/2).=6UE<FEC86PO4D5!
M1$U%+FAT;2(^3G5M97)I8V%L/"]A/B \+VQI/@T*(" \;&D^/&$@:')E9CTB
M0UA8+U)%041-12YH=&TB/D-86#PO83X@/"]L:3X-"B @/&QI/CQA(&AR968]
M(E!Y4$1"+U)%041-12YH=&TB/E!Y4$1"/"]A/B \+VQI/@T*(" \;&D^/&$@
M:')E9CTB4'E(:7-T;W)Y+U)%041-12YH=&TB/E!Y2&ES=&]R>3PO83X@/"]L
M:3X-"B @/&QI/CQA(&AR968](E).1R]214%$344N:'1M(CY23D<\+V$^(#PO
M;&D^#0H@(#QL:3X\82!H<F5F/2)'<F%P:&EC<R]214%$344N:'1M(CY'<F%P
M:&EC<SPO83X@/"]L:3X-"CPO=6P^#0H-"CQH<CX-"@T*/&@R/E)E;&5A<V4@
M-B H3V-T;V)E<B W+" Q.3DX*3PO:#(^#0H-"CQU;#X-"B @/&QI/DYU;65R
M:6-A;" M+2!D97-C<FEB960@:6X@/&$@:')E9CTB3G5M97)I8V%L+U)%041-
M12YH=&TB/DYU;65R:6-A;"]214%$344N:'1M/"]A/CPO;&D^#0H@(#QL:3Y'
M<F%P:&EC<R M+2!E>'1E;G-I=F4@8G5G(&9I>&5S(&EN($=I<W0@<&%C:V%G
M92X\+VQI/@T*(" \;&D^4'E01$(@+2T@<F5M;W9E9"!D97!E;F1E;F-Y(&UI
M<W-I;F<@9FEL92!%0BYP>3PO;&D^#0H@(#QL:3Y0>4AI<W1O<GD@+2T@4V5E
M('AF:6QE<RYL;&YL+F=O=B!D;V-U;65N=&%T:6]N+B!C;VQU;6YA<E]H:7-T
M;W)Y(&9O;&1E9"!I;G1O(&AI<W1O<GD-"B @("!M;V1U;&4N/"]L:3X-"B @
M/&QI/D-86" M+2!"971A(')E;&5A<V4L('-T:6QL(&EN(&1E=F5L;W!M96YT
M+CPO;&D^#0H\+W5L/@T*#0H\:#(^4F5L96%S92 U("A!=6=U<W0@,C L(#$Y
M.3@I/"]H,CX-"@T*/'5L/@T*(" \;&D^0VAA;F=E<R!T;R!.=6UE<FEC86PL
M($=I<W0@*'-E92!T:&5I<B!214%$344@9FEL97,I(#PO;&D^#0H@(#QL:3Y2
M96UO=F5D(&UU;'1I87)R87D@8V]M<&%R:7-O;G,L(&%N9"!C:&%N9V5D("9Q
M=6]T.V)I='=I<V5?)G%U;W0[(&]P97)A=&EO;G,@=&\-"B @(" F<75O=#MB
M;V]L96%N7R9Q=6]T.R!O<&5R871I;VYS+"!P97(@;&%T97-T(&-H86YG97,@
M:6X@3G5M4'D@*%IA;F4@36]T=&5L97(I+CPO;&D^#0H@(#QL:3Y!9&1E9"!A
M=71O;6%T:6,@:6YS=&%L;&%T:6]N('-C<FEP=" H9FER<W0@=F5R<VEO;BD@
M*$1A=FED($%S8VAE<BD\+VQI/@T*(" \;&D^0VAA;F=E9"!A;&P@<F5F97)E
M;F-E<R!T;R!,14=!3"Y,3$Y,(&EN("YP>2!A;F0@+F,@9FEL97,@=&\@3&5G
M86PN:'1M("A:86YE($UO='1E;&5R*2X\+VQI/@T*(" \;&D^0VAA;F=E9"!+
M;VYR860@2&EN<V5N)W,@55),(&EN('9A<FEO=7,@9&]C=6UE;G1S(&%N9"!I
M;B!23D=T97-T,BYP>2!T;R!T:&4@<W1A<G-H:7 @;VYE#0H@(" @*%IA;F4@
M36]T=&5L97(I+CPO;&D^#0H@(#QL:3Y0>4AI<W1O<GD@=7!G<F%D960@=&\@
M=F5R<VEO;B R+B!$;V-U;65N=&%T:6]N(&YO=R!A=F%I;&%B;&4@:6X@=&AI
M<R!D:7-T<FEB=71I;VX@87,-"B @("!W96QL(&%S(&]N('=E8B!S:71E+B!&
M=6YC=&EO;B!E=F5N="!C:&%N9V5D('1O(&5V96YT7W1A9R!F;W(@8V]N<VES
M=&5N8WDN($-O;'5M;F%R('1E>'0-"B @("!T86=S(&YO=R!I;B!H:7-T;W)Y
M+G!Y(')A=&AE<B!T:&%N(&$@<V5P87)A=&4@;6]D=6QE+CPO;&D^#0H\+W5L
M/@T*#0H\:#(^4F5L96%S92 T("A*=6YE(#$Y+" Q.3DX*3PO:#(^#0H-"CQU
M;#X-"B @/&QI/D%D9&5D($-O;7!L97@@8VQA<W,@=&\@0UA8+B \+VQI/@T*
M(" \;&D^4F5L96%S92 Q+C,@;V8@3G5M97)I8V%L(&9I>&5S(&)U9W,@:6X@
M3$%086-K+"!-871R:7@N<'DN(%-E92!214%$344@:6X@3G5M97)I8V%L+CPO
M;&D^#0H\+W5L/@T*#0H\:#(^4F5L96%S92 S("A*=6YE(#$R+" Q.3DX*3PO
M:#(^#0H-"CQU;#X-"B @/&QI/D9I>&5S('1O($=I<W0@9FEL97,@<F5Q=6ER
M960@8GD@=&AE(&-H86YG97,@=&\@3G5M4'DN(#PO;&D^#0H@(#QL:3Y"=6<@
M9FEX('1O($YU;65R:6-A;"],:6(O57-E<D%R<F%Y+G!Y+CPO;&D^#0H@(#QL
M:3Y296YA;65D($-86"]C>'AM;V1U;&4N8WAX('1O(&-X>'-U<'!O<G0N8WAX
M('-I;F-E(&ET(&ES;B=T(&$@4'ET:&]N(&UO9'5L92X\+VQI/@T*/"]U;#X-
M"@T*/&@R/E)E;&5A<V4@,B H2G5N92 U+" Q.3DX*3PO:#(^#0H-"CQH,SY'
M96YE<F%L/"]H,SX-"@T*/'5L/@T*(" \;&D^4V5V97)A;" F<75O=#M3971U
M<"9Q=6]T.R!F:6QE<R!H860@82!S<&%C92!A9G1E<B!T:&4@*G-H87)E9"H@
M=VAI8V@@;6EX960@=7 @1G)E94)31"X-"B @(" H5&AO;6%S($=E;&QE:W5M
M*2X\+VQI/@T*/"]U;#X-"@T*/&@S/DYU;5!Y/"]H,SX-"@T*/'5L/@T*(" \
M;&D^4V5E(#QA(&AR968](DYU;65R:6-A;"]214%$344N:'1M(CY.=6UE<FEC
M86PO4D5!1$U%+FAT;3PO83XN/"]L:3X-"CPO=6P^#0H-"CQH,SY':7-T/"]H
M,SX-"@T*/'5L/@T*(" \;&D^0G5G(&9I>&5S(&EN($=I<W0S1"]$96UO+V=I
M<W1D96UO:&EG:"YP>2P@1VES=#-$+TQI8B]Q=6%D;65S:"YP>2 H5&AO;6%S
M($=E;&QE:W5M*2X@/"]L:3X-"CPO=6P^#0H-"CQH,CY296QE87-E(#$@*$UA
M>2P@,3DY."D\+V@R/@T*#0H\<#Y4:&ES(')E;&5A<V4@8V]N=&%I;G,@86QL
M('1H92!0>71H;VX@97AT96YS:6]N('!A8VMA9V5S(&-U<G)E;G1L>2!M86EN
M=&%I;F5D(&)Y($Q,3DPN#0I)="!S=7!E<F-E9&5S('1H92!P<F5V:6]U<R!S
M>7-T96T@;V8@9&ES=')I8G5T:6YG(&]U<B!W;W)K(&%S('!A<G0@;V8@82!C
M;VUP;&5T92!0>71H;VX-"G-O=7)C92!T<F5E+B9N8G-P.R \+W ^#0H\+V)O
.9'D^#0H\+VAT;6P^#0H`
`
end



From dubois1@llnl.gov  Wed Oct 14 22:20:28 1998
From: dubois1@llnl.gov (Paul F. Dubois)
Date: Wed, 14 Oct 1998 14:20:28 -0700
Subject: [Matrix-SIG] LLNLPython6.tgz replaced
Message-ID: <002201bdf7b8$77a6b8a0$f4160218@c1004579-C.plstn1.sfba.home.com>

LLNLPython6.tgz turned out to have its text files in Windows format, due to
a misunderstanding I had with David. It is fixed as of 14:10 PST Weds.
10/14. Our apologies to anyone who was inconvenienced.







From ransom@cfa.harvard.edu  Sun Oct 18 05:36:41 1998
From: ransom@cfa.harvard.edu (Scott M. Ransom)
Date: Sun, 18 Oct 1998 04:36:41 +0000
Subject: [Matrix-SIG] Python interface for PPGPLOT
Message-ID: <36297059.79CB8A5E@cfa.harvard.edu>

Hello all,

As a first Python project, I decided to write Python wrappers
(Pgplot.py) around the 'PPGPLOT' CPython wrappers around the 'cpgplot' C
wrappers around the 'pgplot' Fortran library!  ;)

The reason for doing such a ludicrous sounding thing is to make high
quality 1D and 2D plotting as blatantly easy from Python as it is in
IDL, Matlab, etc...  And the end result is that it does (pretty much)
just that.

And besides, it was a good project to help me learn Python (which I am
now completely addicted to).

I have posted the file at the following URL:

ftp://cfa0.harvard.edu/pub/ransom/Pgplot.py

The code is well commented and includes string comment blocks describing
how each procedure is used.  The code can also be run straight from the
command line (i.e. 'python Pgplot.py') where it will demo a few of its
abilities.

Please feel free to use, modify, or ignore any or all of it as you see
fit.

I would definitely be interested in any feedback, bug reports, or
suggestions that you might have.

Scott Ransom

PS:  I am also interested in seeing if anyone can suggest a better way
of performing the following function (it is included in the demo code):

------------
import Numeric

def distance(width):
    """
    distance(width):
        Return a 'width' x 'width' Numeric Python array with each
            point set to the geometric distance from the array's center.

    """
    x = Numeric.arange(-width/2.0+0.5, width/2.0+0.5, 1.0)
    x = Numeric.resize(x, (width,width))
    return Numeric.sqrt(x**2 + Numeric.transpose(x)**2)
------------

--
Scott M. Ransom
Phone:  (580) 536-7215             Address:  703 SW Chaucer Cir.
email:  ransom@cfa.harvard.edu               Lawton, OK  73505
PGP Fingerprint: D2 0E D0 10 CD 95 06 DA  EF 78 FE 2B CB 3A D3 53




From ransom@cfa.harvard.edu  Sun Oct 18 05:56:21 1998
From: ransom@cfa.harvard.edu (Scott M. Ransom)
Date: Sun, 18 Oct 1998 04:56:21 +0000
Subject: [Matrix-SIG] Python interface for PPGPLOT
References: <36297059.79CB8A5E@cfa.harvard.edu>
Message-ID: <362974F5.CAADB58A@cfa.harvard.edu>

Scott M. Ransom wrote:

> PS:  I am also interested in seeing if anyone can suggest a better way
> of performing the following function (it is included in the demo code):
>
> ------------
> import Numeric
>
> def distance(width):
>     """
>     distance(width):
>         Return a 'width' x 'width' Numeric Python array with each
>             point set to the geometric distance from the array's center.
>
>     """
>     x = Numeric.arange(-width/2.0+0.5, width/2.0+0.5, 1.0)
>     x = Numeric.resize(x, (width,width))
>     return Numeric.sqrt(x**2 + Numeric.transpose(x)**2)
> ------------

Wow I'm stupid.

About 2 seconds after I sent this, I noticed that I could save a bunch of
FLOPs by simply changing the routine to read:

------------
import Numeric

def distance(width):
    """
    distance(width):
        Return a 'width' x 'width' Numeric Python array with each
            point set to the geometric distance from the array's center.

    """
    x = Numeric.arange(-width/2.0+0.5, width/2.0+0.5, 1.0)
    x = x**2
    x = Numeric.resize(x, (width,width))
    return Numeric.sqrt(x + Numeric.transpose(x))
------------

Anyone see anything else?

Scott

--
Scott M. Ransom
Phone:  (580) 536-7215             Address:  703 SW Chaucer Cir.
email:  ransom@cfa.harvard.edu               Lawton, OK  73505
PGP Fingerprint: D2 0E D0 10 CD 95 06 DA  EF 78 FE 2B CB 3A D3 53





From ransom@cfa.harvard.edu  Tue Oct 20 02:09:57 1998
From: ransom@cfa.harvard.edu (Scott M. Ransom)
Date: Tue, 20 Oct 1998 01:09:57 +0000
Subject: [Matrix-SIG] Python interface for PPGPLOT
References: <199810191831.OAA20512@orion.pppl.gov>
Message-ID: <362BE2E5.D5062022@cfa.harvard.edu>

Greg Hammett wrote:

> Hi,
>
> I've done a little dabling with Numerical Python.  I was puzzled by your
> recent message on interfacing to PPGPLOT.  You said you wanted:
>
> > The reason for doing such a ludicrous sounding thing is to make high
> > quality 1D and 2D plotting as blatantly easy from Python as it is in
> > IDL, Matlab, etc...  And the end result is that it does (pretty much)
>
> but Livermore's Numerical Python distribution
> http://xfiles.llnl.gov/python.htm already includes interfaces to at least 2
> different plotting packages (gist and an oop plotting package) that allow
> one to do this.  Is there some advantage to PPGPLOT over those packages, or
> are you just more familiar with the naming conventions in PPGPLOT?  I just
> thought I'd save you some time if you didn't know about these already.
>
> Greg

Good question.  There are a few reasons why I decided to write my own instead
of using the LLNL packages:

1.  I have used PGPLOT before, in both its 'C' and Perl variants, and was
quite impressed with the quality of the output as well as the large number of
device types that it supports (and therefore I also knew the syntax).

2.  PGPLOT is _very_ common in the astronomical community.  And being an
astronomer, almost every single computer I could dream of running Python with
graphics on, already has PGPLOT installed.  (whereas Gist or Yorick are
virtually unheard of).

3.  I wanted to create plotting commands much like IDL's, where you can get a
professional looking plot with only a single command.  This is, of course,
probably possible with Gist/OOG, but I have only dabbled with the demos and
not done much else.

4.  PGPLOT allows you to have a second X or Y axis with different ranges and
labels.  While I know that Gist allows the 2nd label, I am not sure that it
supports the 2nd set of ranges (please correct me if I am wrong).  These
secondary axes are very important for my current work.

5.  I wanted a fairly simple (but useful) project to undertake to help me
learn Python for my current project -- using Parallel Python with graphics and

NumPy on large MPP machines as a glue language for a large 'C' pulsar search
code I have written.

Could I have accomplished all of this with Gist/OOG?  Sure.  Why not?  But now

people using Tim Pearson's PGPLOT along with Nick Patavalis' PPGPLOT under
Python have another little addition to their bag of tricks.  And isn't that
what open source is all about?

Personally, I think that the best bet for a publication-quality plotting
library for Python lies in the already very good GNU Plotutils
(http://www.gnu.org/software/plotutils/plotutils.html).  The use of postscript

fonts allows for terrific looking plot labels/titles.  Once the scripting
language interfaces are in place (I believe their goal is to have calls from
all of the popular scripting languages) I don't think that many other
libraries will be able to touch it (for 2D graphics -- we will still need a
high-quality 3D solution which includes axes and labeling, IMHO).  And of
course it uses GPL and should be portable to any platform on the planet.

Scott

--
Scott M. Ransom
Phone:  (580) 536-7215             Address:  703 SW Chaucer Cir.
email:  ransom@cfa.harvard.edu               Lawton, OK  73505
PGP Fingerprint: D2 0E D0 10 CD 95 06 DA  EF 78 FE 2B CB 3A D3 53





From miller5@uiuc.edu  Tue Oct 20 16:11:46 1998
From: miller5@uiuc.edu (Mike Miller)
Date: 20 Oct 1998 10:11:46 -0500
Subject: [Matrix-SIG] Python interface for PPGPLOT
References: <199810191831.OAA20512@orion.pppl.gov> <362BE2E5.D5062022@cfa.harvard.edu>
Message-ID: <t967df8dzh.fsf@uxf.npl.uiuc.edu>

>>>>> "Scott" == Scott M Ransom <ransom@cfa.harvard.edu> writes:

    >> Greg Hammett wrote:

    >> ... but Livermore's Numerical Python distribution
    >> http://xfiles.llnl.gov/python.htm already includes
    >> interfaces to at least 2 different plotting packages (gist
    >> and an oop plotting package) that allow one to do this.
    >> Is there some advantage to PPGPLOT over those packages ...

    > Good question.  There are a few reasons why I decided to
    > write my own instead of using the LLNL packages:

    > Personally, I think that the best bet for a 
    > publication-quality plotting library for Python lies in the
    > already very good GNU Plotutils
    > (http://www.gnu.org/software/plotutils/plotutils.html).

I agree.  While libplot is not nearly as fast as the llnl
graphics, I find it to be much easier to use to make high quality
graphics.  It is also capable of a larger number of output
formats.  The 2.2 release will include plotting routines that
will do things similar to what graph does.  There's a SWIGed
version of libplot version 2.1.5 at
<http://www.npl.uiuc.edu/~miller/python>.

Mike

-- 
Michael A. Miller                                miller5@uiuc.edu
  Department of Physics, University of Illinois, Urbana-Champaign


From Ted.Horst@wdr.com  Tue Oct 20 16:59:06 1998
From: Ted.Horst@wdr.com (Ted Horst)
Date: Tue, 20 Oct 98 10:59:06 -0500
Subject: [Matrix-SIG] Python interface for PPGPLOT
In-Reply-To: <t967df8dzh.fsf@uxf.npl.uiuc.edu>
References: <199810191831.OAA20512@orion.pppl.gov>
 <362BE2E5.D5062022@cfa.harvard.edu> <t967df8dzh.fsf@uxf.npl.uiuc.edu>
Message-ID: <9810201559.AA01401@ch1d2833nwk>

Can I compile any of these plotting packages on Unix without X windows ?   
2D PostScript output is all I need to start, but it would be nice to get 3D  
as well at some point.


Thanks,

Ted Horst
(not speaking for any Swiss banks)


From miller5@uiuc.edu  Tue Oct 20 19:33:55 1998
From: miller5@uiuc.edu (Mike Miller)
Date: 20 Oct 1998 13:33:55 -0500
Subject: [Matrix-SIG] Python interface for PPGPLOT
References: <199810191831.OAA20512@orion.pppl.gov> <362BE2E5.D5062022@cfa.harvard.edu> <t967df8dzh.fsf@uxf.npl.uiuc.edu> <9810201559.AA01401@ch1d2833nwk>
Message-ID: <t94ssz5bho.fsf@uxf.npl.uiuc.edu>

>>>>> "Ted" == Ted Horst <Ted.Horst@wdr.com> writes:

    > Can I compile any of these plotting packages on Unix
    > without X windows ?  2D PostScript output is all I need to
    > start, but it would be nice to get 3D as well at some
    > point.

For plotutils, you should be able to use the --without-x option
when you configure it. 

Mike

-- 
Michael A. Miller                                miller5@uiuc.edu
  Department of Physics, University of Illinois, Urbana-Champaign


From tim.hochberg@ieee.org  Thu Oct 22 14:39:22 1998
From: tim.hochberg@ieee.org (Tim Hochberg)
Date: Thu, 22 Oct 1998 07:39:22 -0600
Subject: [Matrix-SIG] Bug in convolve.
Message-ID: <009601bdfdc1$6dd60560$2db73fd1@R20CAREY.MAYO.EDU>

While working on JNumeric I found what appears to be a bug in convolve.
Here's an illustration:

CNumeric:
>>> from Numeric import *
>>> a = arange(5)
>>> convolve(a,a,2)
array([ 0,  4, 11, 20, 30, 20, 11,  4,  0])
>>> convolve(a,a[::-1],2)
array([ 0,  0,  1,  4, 10, 20, 25, 24, 16])
>>> convolve(a[::-1],a,2)
array([16, 24, 25, 20, 10,  4,  1,  0,  0])

JNumeric:
>>> from Numeric import *
>>> a = arange(5)
>>> convolve(a,a,2)
array([ 0,  0,  1,  4, 10, 20, 25, 24, 16])
>>> convolve(a, a[::-1], 2)
array([ 0,  4, 11, 20, 30, 20, 11,  4,  0])
>>> convolve(a[::-1], a, 2)
array([ 0,  4, 11, 20, 30, 20, 11,  4,  0])

One of these is obviously wrong. Since convolve(a, b) = convolve(b,a) should
hold, the culprit appears to be CNumeric's convolve. It appears that:

convolve_CNumeric(a, b, mode) = convolve_JNumeric(a, b[::-1], mode)

This means a quick fix could be implemented in Python by defining:

def convolve(a, b, mode=0):
    return convolve(a, b[::-1], mode)

in Numeric.

____
 /im (tim.hochberg@ieee.org)



From alan@groucho.med.jhmi.edu  Fri Oct 23 15:20:01 1998
From: alan@groucho.med.jhmi.edu (Alan Grossfield)
Date: Fri, 23 Oct 1998 10:20:01 -0400
Subject: [Matrix-SIG] problems pickling arrays of PyObjects
Message-ID: <199810231420.KAA01349@groucho.med.jhmi.edu>

    I think I've found a fairly serious problem with Numeric's pickler:
when you try to use it on arrays of arbitrary objects, it sometimes will
cause a core dump either upon unpickling or upon access to the array
after unpickling.

Consider the following test:


m Numeric import *

class test:
    def __init__(self,a,b):
        self.a=a
        self.b=b


if __name__ == '__main__':
    a=5
    b=7
    t=test(a,b)
    print 'Create instance t of class test --'
    print 't.a=',t.a, 't.b=', t.b

    t2=test(b,a)
    print t2.a, t2.b
    print 'Create instance t2 of class test --'
    print 't2.a=',t2.a, 't2.b=', t2.b
    
    arr=array( [t,t2] )
    print 'Create array arr = array( [t,t2] )'
    print arr
    

    file=open('array.pick', 'w')
    p=Pickler(file)
    p.dump(arr)
    file.close()
    print 'Pickle arr using Numeric pickler'
    
# cut here
    file=open('array.pick', 'r')
    u=Unpickler(file)
    arr2=u.load()
    print 'Extract arr to arr2 using Numeric'
    print arr2
    # dump core on the print
    print 'I managed to extract arr2'


If you just run this as a single script, it works fine.  However, if,
after creating the pickle using this script, you then use last piece
(below #cut here) to unpickle, you'll get a core dump either on the load()
or on the print.  There seems to be some architecture dependence here --
using Konrad's latest distribution under Irix 6.2, the core dump comes upon
access, while using the RPMs from Oliver Andrich's page on Redhat 5.0 the dump comes on load.

Thanks,

Alan Grossfield
--------------------------------------------------------------------------
|"In theory, there is no difference between theory and practice.  In     |
|practice, there is."   Jan L.A. van de Snepscheut                       |
--------------------------------------------------------------------------


From hinsen@cnrs-orleans.fr  Fri Oct 23 18:04:53 1998
From: hinsen@cnrs-orleans.fr (Konrad Hinsen)
Date: Fri, 23 Oct 1998 19:04:53 +0200
Subject: [Matrix-SIG] problems pickling arrays of PyObjects
In-Reply-To: <199810231420.KAA01349@groucho.med.jhmi.edu> (message from Alan
 Grossfield on Fri, 23 Oct 1998 10:20:01 -0400)
References: <199810231420.KAA01349@groucho.med.jhmi.edu>
Message-ID: <199810231704.TAA19354@dirac.cnrs-orleans.fr>

>     I think I've found a fairly serious problem with Numeric's pickler:
> when you try to use it on arrays of arbitrary objects, it sometimes will
> cause a core dump either upon unpickling or upon access to the array
> after unpickling.

Now that I understand what the problem really is, the explanation is
fairly simple: There is no provision to pickle general-object arrays
at all in the current NumPy code, as is obvious from a quick glance at
module Numeric. The pickled file contains simply the addresses of the
elements.

Array pickling needs a serious revision anyway (with cPickle support),
so maybe this is a good opportunity to attack that problem. Maybe the
easiest solution for general-object arrays is conversion to a nested
list before pickling and reconversion upon loading. But an explicit
pickle routine for this case is not difficult either.

Konrad.
-- 
-------------------------------------------------------------------------------
Konrad Hinsen                            | E-Mail: hinsen@cnrs-orleans.fr
Centre de Biophysique Moleculaire (CNRS) | Tel.: +33-2.38.25.55.69
Rue Charles Sadron                       | Fax:  +33-2.38.63.15.17
45071 Orleans Cedex 2                    | Deutsch/Esperanto/English/
France                                   | Nederlands/Francais
-------------------------------------------------------------------------------


From alan@groucho.med.jhmi.edu  Tue Oct 27 18:50:59 1998
From: alan@groucho.med.jhmi.edu (Alan Grossfield)
Date: Tue, 27 Oct 1998 13:50:59 -0500
Subject: [Matrix-SIG] problems pickling arrays of PyObjects
In-Reply-To: Your message of "Fri, 23 Oct 1998 19:04:53 +0200."
 <199810231704.TAA19354@dirac.cnrs-orleans.fr>
Message-ID: <199810271850.NAA19220@groucho.med.jhmi.edu>

Konrad>Now that I understand what the problem really is, the explanation is
Konrad>fairly simple: There is no provision to pickle general-object arrays
Konrad>at all in the current NumPy code, as is obvious from a quick glance at
Konrad>module Numeric. The pickled file contains simply the addresses of the
Konrad>elements.
Konrad>
Konrad>Array pickling needs a serious revision anyway (with cPickle support),

Here's a trivial patch to Numeric.py, which makes it complain if
you try to pickle an array of PyObjects.

diff -u Numeric.py.orig Numeric.py
--- Numeric.py.orig     Tue Oct 27 13:15:24 1998
+++ Numeric.py  Tue Oct 27 13:19:50 1998
@@ -186,6 +186,10 @@
 # byte-order issues for  portability.
 
 def DumpArray(m, fp):    
+
+       # patch -- check for array of PyObjects
+       if m.typecode() == 'O': 
+            raise TypeError, "Numeric Pickler can't pickle arrays of Objects"
        s = m.shape
        if LittleEndian: endian = "L"
        else: endian = "B"

Alan Grossfield
--------------------------------------------------------------------------
|"In theory, there is no difference between theory and practice.  In     |
|practice, there is."   Jan L.A. van de Snepscheut                       |
--------------------------------------------------------------------------


From just@letterror.com  Tue Oct 27 19:59:59 1998
From: just@letterror.com (Just van Rossum)
Date: Tue, 27 Oct 1998 20:59:59 +0100
Subject: [Matrix-SIG] ANN: NumPy 1.6 distributions for Mac
Message-ID: <l03102810b25bd1f7188c@[193.78.237.122]>

I've put a binary distribution of NumPy 1.6 for MacPython 1.5.1 at:
    <ftp://starship.skyport.net/pub/crew/just/Numerical_1.6_Mac.sit.hqx>
and CodeWarrior stuff for people who want to build it themselves here:
    <ftp://starship.skyport.net/pub/crew/just/Numerical_CodeWarrior.sit.hqx>

Note that the latter is just a folder containing a CW project and some .exp
files, it merely supplements the official LLNL sources.

Oh, it is PPC-only, sorry.

Just