Hi All,

The problem is not with fetching the data slice itself, but finding the 
correct indices to specify, particularly with the time dimension. The 
below examples refer to a remote dataset that I can open and slice using 
indices, as in

slice = remoteobj.variables['tas'][:120,20:40,30:50].

However, I have problems when trying to use the syntax in plotsst.py or 
pnganim.py (from the examples) to find time indices:

In [107]: from datetime import datetime as dt
In [108]: date0 = dt(1951,1,1,0)
In [110]: print date0
1951-01-01 00:00:00

In [125]: timedata = remoteobj.variables['time']
In [126]: nt0 = date2index(date0,timedata)
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)

/home/amg/work/nhmm/<ipython console> in <module>()

/usr/local/cdat/trunk/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.pyc
 

in date2index(dates, nctime, calendar)
    3924     Returns an index or a sequence of indices.
    3925     """
-> 3926     return netcdftime.date2index(dates, nctime, calendar=None)
    3927
    3928 def maskoceans(lonsin,latsin,datain,inlands=False):

/usr/local/cdat/trunk/lib/python2.5/site-packages/mpl_toolkits/basemap/netcdftime.pyc
 

in date2index(dates, nctime, calendar)
     986
     987         # Perform check again.
--> 988         _check_index(index, dates, nctime, calendar)
     989
     990     # convert numpy scalars or single element arrays to python
ints.

/usr/local/cdat/trunk/lib/python2.5/site-packages/mpl_toolkits/basemap/netcdftime.pyc
 

in _check_index(indices, dates, nctime, calendar)
     941     for n,i in enumerate(indices):
     942         t[n] = nctime[i]
--> 943     assert numpy.all( num2date(t, nctime.units, calendar) == dates)
     944
     945

AssertionError:

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

It turns out that date0 corresponds best to index 1080:

In [139]: remoteobj.variables['time'][1080]
Out[139]: 32865.5

In [141]: num2date(32865.5,timedata.units,timedata.calendar)
Out[141]: 1951-01-16 12:00:00

This isn't the _exact_ date and time I had specified, but

In [142]: date0 = dt(1951,01,16,12,00,00)
In [143]: print date0
1951-01-16 12:00:00

In [144]: date2index(date0,timedata,timedata.calendar)

produces the same AssertionError. Where is the problem?

What I would _like_ to do is to issue a simple call using coordinates 
rather than the indices, of the form:

slice = variable[date0:date1,[plev],lat0:lat1,lon0:lon1],

or similar, preferably without writing a whole module just to find the 
correct indices. I need to fetch similar slices from a group of models, 
having time axes that may each be defined slightly differently -- 
different calendars, time point set at a different day of the month, 
etc. (It's monthly data and I'm specifying only monthly bounds, even 
though the calendar may be defined as "days since 1860...") I need to 
automate the process so I get back the correct slab regardless.

Suggestions appreciated!

Thx,

Arthur


*^*~*^*~*^*~*^*~*^*~*^*~*^*~*^*~*^*~*^*~*^*~*^*~*^*~*^*~*^*~*
Arthur M. Greene, Ph.D.
The International Research Institute for Climate and Society (IRI)
The Earth Institute, Columbia University, Lamont Campus

amg at iri dot columbia dot edu | http://iri.columbia.edu
*^*~*^*~*^*~*^*~*^*~*^*~*^*~*^*~*^*~*^*~*^*~*^*~*^*~*^*~*^*~*


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to