Using Numeric 24.0b2 with Scientific.IO.NetCDF

2005-06-30 Thread bandw
I am having a problem using Numeric-24.0b2 in conjunction with
the NetCDF module from ScientificPython (version 2.4.9).
This problem does not surface using Numeric-23.8. The problem
arises in using the "min" function on a NetCDF floating array.
In 23.8, the "min" function returns a floating scalar, while in
24.0b2 it returns an *array* of length "1". Below I list a
simple NetCDF file and a Python script that illustrate the
problem. When I run the script using 23.8, I get the result:

1.0 

whereas using 24.0b2 I get:

1.0 

This creates a backward incompatibility that breaks several of
my codes.

NetCDF file simple.cdl (used to create simple.nc with "ncgen")
--

netcdf simple {
dimensions:
num = 3 ;
variables:
float temp(num) ;
data:

temp = 1, 2, 3 ;
}


Python script
-

import Numeric
from Scientific.IO.NetCDF import NetCDFFile

cdf_file1 = NetCDFFile("simple.nc","r")
temp = cdf_file1.variables["temp"][:]
 
print min(temp), type(min(temp))

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Using Numeric 24.0b2 with Scientific.IO.NetCDF

2005-07-05 Thread bandw
Robert,

Thanks for your reply.  However, I am still having problems.  Sometimes
I get a scalar return
and sometimes I get an array.  For example, using the netCDF file:

netcdf simple {
   dimensions:
   num = 3 ;
   variables:
   float temp0(num) ;
   int   temp1(num) ;
   data:

temp0 = 1., 2., 3. ;
temp1 = 1,  2,  3 ;
}

and running:

#
import Numeric
print Numeric.__version__
from Scientific.IO.NetCDF import NetCDFFile

cdf_file1 = NetCDFFile("simple.nc","r")

var1 = cdf_file1.variables["temp0"][:]
var2 = cdf_file1.variables["temp1"][:]
min1 = reduce(Numeric.minimum,var1)
min2 = reduce(Numeric.minimum,var2)

print "Types of var1, min(var1), min1:",type(var1), type(min(var1)),
type(min1)
print "Types of var2, min(var2), min2:",type(var2), type(min(var2)),
type(min2)

I get:

24.0b2
Types of var1, min(var1), min1:   
Types of var2, min(var2), min2:   

Even something like:


>>> import Numeric
>>> a = Numeric.array([1.,2.])
>>> print type(a),type(min(a))
 

does not produce an array.

Any comments woud be appreciated.

Fred Clare

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Using Numeric 24.0b2 with Scientific.IO.NetCDF

2005-07-05 Thread bandw
Thanks again.  I will take your advice.  My concern is in not knowing
where in all
my python code I am assuming a scalar return in certain circumstances.
But I
guess I can take care of the errors as they come up.

Fred

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Using Numeric 24.0b2 with Scientific.IO.NetCDF

2005-07-06 Thread bandw
I am having more problems with 24.0b2.  Consider the NetCDF file:

netcdf very_simple {
dimensions:
num = 2 ;
variables:
float T(num) ;
  T:mv = 5.0f ;
data:
 T = 1., 2. ;
}

and the python script:

import Numeric
from Scientific.IO.NetCDF import NetCDFFile
file = NetCDFFile("simple.nc","r")
T = file.variables["T"]

a = T.mv
print "T.mv = ", a
print "type(T.mv) = ", type(a)
print "len(T.mv) = ", len(a)
print "T.mv[0] = ", a[0]
print "len(T.mv[0]) = ", len(a[0])
print "type(T.mv[0]) = ", type(a[0])

which produces the output:

T.mv =  [ 5.]
type(T.mv) =  
len(T.mv) =  1
T.mv[0] =  5.0
len(T.mv[0]) =  1
type(T.mv[0]) =  

I can see no reason why T.mv[0] should be typed as an array.

-- 
http://mail.python.org/mailman/listinfo/python-list