Hi Patrick-
makeTimeSequence expects an array of single time grids, e.g:
Time->((x,y)->param)
Your changeMapSequence array is the grids without the times, e.g:
(x,y)->param
Thus the error about domain size being 2 (x,y) instead of 1 (Time).
What do you want the result of your final fld to be in terms of
times? Should it be t0 -> timeStepCount-1?
I'd try Bill Fingerhut's suggestion of using the timeStepDifference
function in the latest nightly build.
Don Murray
Patrick Koethur wrote:
Hi everyone,
I've tried to write a Jython method which calculates the changes in the
numeric values of a variable in a netCDF file over time and returns a
time sequence. The method I've written looks like this:
def computeSimpleChangeMap(twoDTimeSeries):
# get the number of time steps
timeStepCount = twoDTimeSeries.getDomainSet().getLength()
changeMapSequence = []
for t in range(timeStepCount):
if t < (timeStepCount-1):
change = twoDTimeSeries.getSample(t+1) -
twoDTimeSeries.getSample(t)
changeMapSequence.append(change)
fld = makeTimeSequence(changeMapSequence)
return fld
However, when I run this method, I get the following error message:
" Traceback (innermost last):
File "<string>", line 1, in ?
File "<string>", line 121, in computeSimpleChangeMap
File "<string>", line 230, in makeTimeSequence
at visad.Set.<init>(Set.java:148)
at visad.SimpleSet.<init>(SimpleSet.java:58)
at visad.SampledSet.<init>(SampledSet.java:47)
at visad.GriddedSet.<init>(GriddedSet.java:72)
at visad.Gridded1DSet.<init>(Gridded1DSet.java:130)
at visad.Gridded1DDoubleSet.<init>(Gridded1DDoubleSet.java:107)
at visad.Gridded1DDoubleSet.create(Gridded1DDoubleSet.java:174)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
visad.UnitException: visad.UnitException: Set: units dimension 1 does
not match Domain dimension 2"
The dumpType() method returns the following information:
dumpType(twoDTimeSeries.getSample(0))
FunctionType:
Domain has 2 components:
0. RealType: Longitude
0. Name = Longitude
0. Unit: deg
1. RealType: Latitude
1. Name = Latitude
1. Unit: deg
Range:
RealType: zo[unit:m]
Name = zo[unit:m]
Unit: m
dumpType(twoDTimeSeries)
FunctionType:
Domain has 1 components:
0. RealType: Time
0. Name = Time
0. Unit: s since 1970-01-01 00:00:00.000 UTC
Range:
FunctionType:
Domain has 2 components:
0. RealType: Longitude
0. Name = Longitude
0. Unit: deg
1. RealType: Latitude
1. Name = Latitude
1. Unit: deg
Range:
RealType: zo[unit:m]
Name = zo[unit:m]
Unit: m
dumpType(changeMapSequence[0])
VisAD MathType analysis
FunctionType:
Domain has 2 components:
0. RealType: Longitude
0. Name = Longitude
0. Unit: deg
1. RealType: Latitude
1. Name = Latitude
1. Unit: deg
Range:
RealType: zo[unit:m]
Name = zo[unit:m]
Unit: m
dumpType(changeMapSequence)
Error: Traceback (innermost last): File "", line 1, in ? TypeError:
dumpType(): 1st arg can't be coerced to visad.Data
I am able to generate the change map sequence manually by using the
"Make a time sequence from single time grids/images" formula in
combination with multiple "Simple difference a-b"formulas. Therefore,
there must be a problem with the changeMapSequence variable. A simple
Python list doesn't seem to be appropriate here. Does anyone know what
kind of data type to use and how to construct it? Any help is much
appreciated.
Best regards,
Patrick Koethur
_______________________________________________
idvusers mailing list
idvusers@xxxxxxxxxxxxxxxx
For list information, to unsubscribe, visit:
http://www.unidata.ucar.edu/mailing_lists/
--
*************************************************************
Don Murray UCAR Unidata Program
dmurray@xxxxxxxxxxxxxxxx P.O. Box 3000
(303) 497-8628 Boulder, CO 80307
http://www.unidata.ucar.edu/staff/donm
*************************************************************