Re: [Matplotlib-users] creating mesh data from xyz data

2009-09-09 Thread Timo Spielmann
Hi Giuseppe

you can load your datafile with pylab... see my little function which
i'm using

import pylab as pl

def readXY(filename):

   x,y,z = pl.load(filename, unpack=True)
   return x,y,z

(X, Y, Z) = readXY(datafile.dat)

after that you have your values in the arrays X;Y;Z

kind regards



Giuseppe Aprea wrote:
 Hi list,
 
 I have some files with data stored in columns:
 
 x1 y1 z1
 x2 y2 z2
 x3 y3 z3
 x4 y4 z4
 x5 y5 z5
 ...
 
 and I need to make a contour plot of this data using matplotlib. The
 problem is that contour plot functions usually handle a different kind
 of input:
 
 X=[[x1,x2,x3,x4,x5,x6],
 [x1,x2,x3,x4,x5,x6],
 [x1,x2,x3,x4,x5,x6],...
 
 Y=[[y1,y1,y1,y1,y1,y1],
 [y2,y2,y2,y2,y2,y2],
 [y3,y3,y3,y3,y3,y3],.
 
 Z=[[z1,z2,z3,z4,z5,z6],
 [z7,z8,zz9,z10,z11,z12],
 
 I usually load data using 3 lists: x, y and z; I wonder if there is
 any function which is able to take these 3 lists and return the right
 input for matplotlib functions.
 
 cheers
 
 giuseppe
 
 --
 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


--
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


[Matplotlib-users] mpl 0.99 and py2exe

2009-09-09 Thread Werner F. Bruhin
I have run into a bit of problem using 0.99 and py2exe.

I am getting errors TypeError: unsupported operand type(s) for +=: 
'NoneType' and 'str' in mlab.pyo after py2exe'd my application.

This is caused by this type of code, as one normally uses the optimize 
option with py2exe which means that the docs are stripped from the .pyo 
files.
psd.__doc__ = psd.__doc__ % kwdocd

I changed it to:
if psd.__doc__ is not None:
psd.__doc__ = psd.__doc__ % kwdocd
else:
psd.__doc__ = 

Above is a bit of a hack, if someone can suggest how to correct this in 
a way which would get accepted as a patch I would search all modules 
correct them.

Werner



--
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


Re: [Matplotlib-users] grid on log-plots

2009-09-09 Thread Yann
I can not try your revision but I will do it as soon as it is released.
Nervertheless I try your snippet with an AxesZero. I get the gridlines 
and the axis but the first was over the second. It is not what I expected.
As far as I am concerned, I can wait until matplotlib next release.

Thanks,

Yann

On 09/08/2009 08:13 PM, Jae-Joon Lee wrote:
 On Tue, Sep 8, 2009 at 11:51 AM, Yann
 Goudardmatplotlib-us...@alleeduweb.eu  wrote:

 Hi,

 I have the same behaviour with LocatableAxes. HostAxes, ParasiteAxes and
 LocatableAxes depend on 'mpl_toolkits.axes_grid.axislines.Axes'. It must
 be the matter origin.
  
 Yes, and this was because I forgot to implement some necessary methods.
 This is now fixed in the svn trunk. So if you can,please give it a try.


 This another example should draw a grid but does not:

 import wx
 from wx import Frame
 from matplotlib.backends.backend_wxagg import FigureFrameWxAgg,
 FigureCanvasWxAgg
 from matplotlib.figure import Figure
 from mpl_toolkits.axes_grid.axes_divider import LocatableAxes

 fig = Figure((1, 1), 50)
 axes = LocatableAxes(fig, [0, 0, 1, 1])
 # axes.toggle_axisline(False)
 axes.grid(True)
 fig.add_axes(axes)

 app = wx.PySimpleApp()
 my_viewer = FigureFrameWxAgg(-1, fig)
 my_viewer.Show()
 app.MainLoop()

 If you uncomment axes.toggle_axisline(False), it works cause it uses
 normal 'matplolib.axes.Axes' behaviour. It is not a matter for common
 use but if you need 'AxesZero', this trick does not work.
  
 What the toggle_axisline does is simply to make the xaxis and yaxis
 (which are responsible for drawing ticks, ticklabels, etc  in the
 mainline mpl) visible again, and make axis[bottom] and etc
 invisible.
 One workaround is to make xaxis and yaxis visible but pnly to draw the
 gridlines. Something like below.

 ax.toggle_axisline(True)
 ax.grid(True)
 ax.gridlines.set_visible(False) # this is just to make the code not to
 draw gridlines twice in future release of mpl.
 ax.xaxis.set_visible(True)
 ax.yaxis.set_visible(True)
 for t in ax.xaxis.majorTicks + ax.yaxis.majorTicks:
  t.gridOn = True
  t.tick1On = False
  t.tick2On = False
  t.label1On = False
  t.label2On = False

 Let me know if this does not work, or there is a case that this cannot be 
 used.
 Regards,

 -JJ



 Yann


 On 09/07/2009 10:37 PM, Andreas Fromm wrote:
  
 thanks Sebastian,

 you are right, your code works here too. But i don't get it work in my
 multi y-axes plot from the matplotlib examples
 (http://matplotlib.sourceforge.net/examples/axes_grid/demo_parasite_axes.html).
 Even with linear plots, i get no gridlines.

 Any idea, whats wrong here?

 minimal code example:
 ###
 import matplotlib.pyplot as plt
 from mpl_toolkits.axes_grid.parasite_axes import HostAxes, ParasiteAxes

 fig = plt.figure(1)
 fig.clf()
 #plt.grid(True)
 host = HostAxes(fig, [0.15, 0.1, 0.65, 0.8])
 fig.add_axes(host)

 host.plot([0, 10, 100], [0, 10, 100], label='host')

 host.grid(True)  #?
 host.yaxis.grid(True) #?

 host.yaxis.set_scale('log') #?

 plt.draw()
 plt.show()
 ###

 Greets,
 Andreas


 Sebastian Busch schrieb:


 from matplotlib.pyplot import *

 plot([1,10,100],[1,10,100])
 grid()

 yscale('log')
 xscale('log')

 works here.

 best,
 sebastian.


  
 --
 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





 --
 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

  


--
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


Re: [Matplotlib-users] download

2009-09-09 Thread Michael Droettboom
This change has gone into effect (for me at least on a Liux box).  Can 
anyone test Windows and Mac and report back?

Cheers,
Mike

Michael Droettboom wrote:
 I just went in and changed the default file downloads back to correct 
 values, but alas, it appears to have no effect.  There is some hints in 
 the (many) related SF bugs that there may be a delay associated with 
 these settings, so I will check back again at the end of the day.

 Mike

 On 09/04/2009 05:46 AM, Fabrice Silva wrote:
   
 Le jeudi 03 septembre 2009 à 20:16 -0500, John Hunter a écrit :

 
 On Thu, Sep 3, 2009 at 8:04 PM, Alan G Isaacalan.is...@gmail.com  wrote:
  
   
 The default download from the Matplotlib page
 link to http://sourceforge.net/projects/matplotlib/
 which once again highlights basemap.  (I think
 this was fixed at one point.)

 
 I'm not seeng this, nor am I seeing basemap settings in the File
 Manager which would trigger this.  Of course, the default download is
 platform specific, which may be why I am not seeing this, so please
 give us as much info as possible about your platform (mainly the OS)

 When I click on the green download button at
 http://sourceforge.net/projects/matplotlib using mac OSX 10.5, I get
 redirected to the mpl 0.99 OSX download::


 https://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-0.99/matplotlib-0.99.0-py2.5-macosx10.5.dmg/download
  
   
 Strangely, the green button points to
 http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-0.99/matplotlib-0.99.0-py2.5-macosx-10.3-i386.egg/download
 when I browse on a linux (debian) machine with epiphany (which uses
 gecko, the firefox engine). Why macosx ?


 


 --
 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
   

-- 
Michael Droettboom
Science Software Branch
Operations and Engineering Division
Space Telescope Science Institute
Operated by AURA for NASA


--
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


Re: [Matplotlib-users] mpl 0.99 and py2exe

2009-09-09 Thread Werner F. Bruhin
Werner F. Bruhin wrote:
 I have run into a bit of problem using 0.99 and py2exe.

 I am getting errors TypeError: unsupported operand type(s) for +=: 
 'NoneType' and 'str' in mlab.pyo after py2exe'd my application.

 This is caused by this type of code, as one normally uses the optimize 
 option with py2exe which means that the docs are stripped from the .pyo 
 files.
 psd.__doc__ = psd.__doc__ % kwdocd

 I changed it to:
 if psd.__doc__ is not None:
 psd.__doc__ = psd.__doc__ % kwdocd
 else:
 psd.__doc__ = 

 Above is a bit of a hack, if someone can suggest how to correct this in 
 a way which would get accepted as a patch I would search all modules 
 correct them.
   
Maybe a nicer solution would be:
if __debug__:
psd.__doc__ = psd.__doc__ % kwdocd

Also that would mean that above is not run when running Python as 
python -O script.py or python -OO script.py where the first solution 
means that with -O the it would still be executed.

Werner



--
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


Re: [Matplotlib-users] download

2009-09-09 Thread Jouni K . Seppänen
Michael Droettboom md...@stsci.edu writes:

 This change has gone into effect (for me at least on a Liux box).  Can 
 anyone test Windows and Mac and report back?

Using Firefox 3.5.2 on Mac OS X 10.5, the green download link points to
matplotlib-0.99.0-py2.6-macosx10.5.dmg, and when I change my user agent
header to Internet Explorer, to matplotlib-0.99.0.win32-py2.6.exe.

-- 
Jouni K. Seppänen
http://www.iki.fi/jks


--
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


Re: [Matplotlib-users] mpl 0.99 and py2exe

2009-09-09 Thread Jouni K . Seppänen
Werner F. Bruhin werner.bru...@free.fr writes:

 I am getting errors TypeError: unsupported operand type(s) for +=: 
 'NoneType' and 'str' in mlab.pyo after py2exe'd my application.

I think this has been fixed on the trunk for good, by changing all
docstring modifications to use decorators (defined in docstring.py) that
check for nonexistent docstrings. The changes are perhaps too big to
apply on the 0.99 branch.

 I changed it to:
 if psd.__doc__ is not None:
 psd.__doc__ = psd.__doc__ % kwdocd
 else:
 psd.__doc__ = 

 Above is a bit of a hack, if someone can suggest how to correct this in 
 a way which would get accepted as a patch I would search all modules 
 correct them.

I think either this or something like

psd.__doc__ = psd.__doc__ and (psd.__doc__ % kwdocd)

should be acceptable as a bugfix.

-- 
Jouni K. Seppänen
http://www.iki.fi/jks


--
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


[Matplotlib-users] Error in doc?

2009-09-09 Thread Jorge Scandaliaris
Hi,
I think I found a bug, but I am not sure if it's in the doc or in a method name.
In the doc, there is reference to a method *suptitle* in class
mpl.figure.Figure. The name sounds strange, but the method exists and works. The
example given, though, makes reference to *subtitle*, so either the example or
the method name are wrong. Here's the link to the doc:
http://matplotlib.sourceforge.net/api/figure_api.html?highlight=legend#matplotlib.figure.Figure.suptitle

jorge


--
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


Re: [Matplotlib-users] grid on log-plots

2009-09-09 Thread Jae-Joon Lee
On Wed, Sep 9, 2009 at 4:30 AM, Yanny...@alleeduweb.eu wrote:
 I can not try your revision but I will do it as soon as it is released.
 Nervertheless I try your snippet with an AxesZero. I get the gridlines
 and the axis but the first was over the second. It is not what I expected.

You can rearrange the order of artists by setting the zorder.

 As far as I am concerned, I can wait until matplotlib next release.

Just to clarify, the patch will be included in the 1.0 release, not
the maintenance release of 0.99 version.

Regards,

-JJ



 Thanks,

 Yann

 On 09/08/2009 08:13 PM, Jae-Joon Lee wrote:
 On Tue, Sep 8, 2009 at 11:51 AM, Yann
 Goudardmatplotlib-us...@alleeduweb.eu  wrote:

 Hi,

 I have the same behaviour with LocatableAxes. HostAxes, ParasiteAxes and
 LocatableAxes depend on 'mpl_toolkits.axes_grid.axislines.Axes'. It must
 be the matter origin.

 Yes, and this was because I forgot to implement some necessary methods.
 This is now fixed in the svn trunk. So if you can,please give it a try.


 This another example should draw a grid but does not:

 import wx
 from wx import Frame
 from matplotlib.backends.backend_wxagg import FigureFrameWxAgg,
 FigureCanvasWxAgg
 from matplotlib.figure import Figure
 from mpl_toolkits.axes_grid.axes_divider import LocatableAxes

 fig = Figure((1, 1), 50)
 axes = LocatableAxes(fig, [0, 0, 1, 1])
 # axes.toggle_axisline(False)
 axes.grid(True)
 fig.add_axes(axes)

 app = wx.PySimpleApp()
 my_viewer = FigureFrameWxAgg(-1, fig)
 my_viewer.Show()
 app.MainLoop()

 If you uncomment axes.toggle_axisline(False), it works cause it uses
 normal 'matplolib.axes.Axes' behaviour. It is not a matter for common
 use but if you need 'AxesZero', this trick does not work.

 What the toggle_axisline does is simply to make the xaxis and yaxis
 (which are responsible for drawing ticks, ticklabels, etc  in the
 mainline mpl) visible again, and make axis[bottom] and etc
 invisible.
 One workaround is to make xaxis and yaxis visible but pnly to draw the
 gridlines. Something like below.

 ax.toggle_axisline(True)
 ax.grid(True)
 ax.gridlines.set_visible(False) # this is just to make the code not to
 draw gridlines twice in future release of mpl.
 ax.xaxis.set_visible(True)
 ax.yaxis.set_visible(True)
 for t in ax.xaxis.majorTicks + ax.yaxis.majorTicks:
      t.gridOn = True
      t.tick1On = False
      t.tick2On = False
      t.label1On = False
      t.label2On = False

 Let me know if this does not work, or there is a case that this cannot be 
 used.
 Regards,

 -JJ



 Yann


 On 09/07/2009 10:37 PM, Andreas Fromm wrote:

 thanks Sebastian,

 you are right, your code works here too. But i don't get it work in my
 multi y-axes plot from the matplotlib examples
 (http://matplotlib.sourceforge.net/examples/axes_grid/demo_parasite_axes.html).
 Even with linear plots, i get no gridlines.

 Any idea, whats wrong here?

 minimal code example:
 ###
 import matplotlib.pyplot as plt
 from mpl_toolkits.axes_grid.parasite_axes import HostAxes, ParasiteAxes

 fig = plt.figure(1)
 fig.clf()
 #plt.grid(True)
 host = HostAxes(fig, [0.15, 0.1, 0.65, 0.8])
 fig.add_axes(host)

 host.plot([0, 10, 100], [0, 10, 100], label='host')

 host.grid(True)  #?
 host.yaxis.grid(True) #?

 host.yaxis.set_scale('log') #?

 plt.draw()
 plt.show()
 ###

 Greets,
 Andreas


 Sebastian Busch schrieb:


 from matplotlib.pyplot import *

 plot([1,10,100],[1,10,100])
 grid()

 yscale('log')
 xscale('log')

 works here.

 best,
 sebastian.



 --
 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





 --
 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




 --
 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
 

Re: [Matplotlib-users] Fetching a data slab with NetCDFFile

2009-09-09 Thread Arthur M. Greene

Thanks much for the quick response. I updated both matplotlib and
basemap (now at 0.99.5) via svn and noticed the new netcdftime.py. 
First, from within site-packages/mpl_toolkits/basemap,


$ grep date2index *.py
__init__.py::func:`date2index`: compute a time variable index
corresponding to a date.
__init__.py:def date2index(dates, nctime, calendar='proleptic_gregorian'):
__init__.py:return netcdftime.date2index(dates, nctime, calendar=None)
netcdftime.py:def date2index(dates, nctime, calendar=None, select='exact'):
netcdftime.py:date2index(dates, nctime, calendar=None, select='exact')

so there seems to be some disagreement between __init__.py and
netcdftime.py concerning the presence of the select argument. When I
call date2index with the select keyword arg I get

In [24]: ix0 = date2index(date0,timedata,timedata.calendar,select='nearest')
---
TypeError Traceback (most recent call last)

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

TypeError: date2index() got an unexpected keyword argument 'select'

---

This detail aside, I am still having difficulty with date2index, but
annoyingly, I seem to get different error messages with different 
datasets. I'll illustrate two here, starting with the one I initially 
posted about. (See note below regarding this data.)


In [3]: from mpl_toolkits.basemap import date2index,num2date,NetCDFFile 
as ncf

In [10]: from mpl_toolkits import basemap
In [11]: print basemap.__version__
0.99.5
In [24]: fname0 = 'http://esgcet.llnl.gov/dap/'
In [25]: fname1 = 
'ipcc4/20c3m/gfdl_cm2_1/pcmdi.ipcc4.gfdl_cm2_1.20c3m.run1.atm.mo.xml'

In [26]: fname = fname0+fname1
In [28]: datobj = ncf(fname)
In [33]: datobj.variables['tas'].shape
Out[33]: (1680, 90, 144)
In [34]: timedata = datobj.variables['time']
In [35]: from datetime import datetime as dt
In [36]: date0 = dt(1951,1,16,12,0,0)
In [37]: print date0
1951-01-16 12:00:00
In [38]: nt0 = date2index(date0,timedata)
---
ClientError   Traceback (most recent call last)

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

/home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.pyc 
in date2index(dates, nctime, calendar)

   3931 Returns an index or a sequence of indices.
   3932 
- 3933 return netcdftime.date2index(dates, nctime, calendar=None)
   3934
   3935 def maskoceans(lonsin,latsin,datain,inlands=False):

/home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/mpl_toolkits/basemap/netcdftime.pyc 
in date2index(dates, nctime, calendar, select)

   1006 # If the times do not correspond, then it means that the times
   1007 # are not increasing uniformly and we try the bisection method.
- 1008 if not _check_index(index, dates, nctime, calendar):
   1009
   1010 # Use the bisection method. Assumes the dates are ordered.

/home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/mpl_toolkits/basemap/netcdftime.pyc 
in _check_index(indices, dates, nctime, calendar)

959 return False
960
-- 961 t = nctime[indices]
962 return numpy.all( num2date(t, nctime.units, calendar) == dates)
963

/home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/mpl_toolkits/basemap/netcdf.pyc 
in __getitem__(self, index)

 65
 66 def __getitem__(self, index):
--- 67 datout = squeeze(self._var.__getitem__(index))
 68 # automatically
 69 # - remove singleton dimensions

/home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/dap/dtypes.pyc 
in __getitem__(self, key)

409 def __getitem__(self, key):
410 # Return data from the array.
-- 411 return self.data[key]
412
413 def __setitem__(self, key, item):

/home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/dap/proxy.pyc 
in __getitem__(self, index)

112
113 # Fetch data.
-- 114 resp, data = openurl(url, self.cache, self.username, 
self.password)

115
116 # First lines are ASCII information that end with 
'Data:\n'.


/home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/dap/util/http.pyc 
in openurl(url, cache, username, password)
 19 m = re.search('code = (?Pcode\d+);\s*message = 
(?Pmsg.*)', data, re.DOTALL | re.MULTILINE)

 20 msg =  'Server error %(code)s: %(msg)s' % m.groupdict()
--- 21 raise ClientError(msg)
 22
 23 return resp, data

ClientError: 'Server error 0: invalid literal for int(): [1113'

-

Note that this is a different error than previously reported. Also, the 
correct time index is still 1080:


In [40]: taxvals = datobj.variables['time'][:]

In [41]: num2date(taxvals[1080],timedata.units,timedata.calendar)
Out[41]: 1951-01-16 12:00:00


Re: [Matplotlib-users] Fetching a data slab with NetCDFFile

2009-09-09 Thread Jeff Whitaker
Arthur M. Greene wrote:
 Thanks much for the quick response. I updated both matplotlib and
 basemap (now at 0.99.5) via svn and noticed the new netcdftime.py. 
 First, from within site-packages/mpl_toolkits/basemap,

 $ grep date2index *.py
 __init__.py::func:`date2index`: compute a time variable index
 corresponding to a date.
 __init__.py:def date2index(dates, nctime, 
 calendar='proleptic_gregorian'):
 __init__.py:return netcdftime.date2index(dates, nctime, 
 calendar=None)
 netcdftime.py:def date2index(dates, nctime, calendar=None, 
 select='exact'):
 netcdftime.py:date2index(dates, nctime, calendar=None, 
 select='exact')

 so there seems to be some disagreement between __init__.py and
 netcdftime.py concerning the presence of the select argument. When I
 call date2index with the select keyword arg I get

 In [24]: ix0 = 
 date2index(date0,timedata,timedata.calendar,select='nearest')
 --- 

 TypeError Traceback (most recent call 
 last)

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

 TypeError: date2index() got an unexpected keyword argument 'select'

Arthur:  I forgot to update the wrapper function in __init__.py - that's 
fixed now if you do an svn update.  Concerning your other problems 
below, using your test case exposed a couple of other bugs, but it still 
doesn't work.  The basic problem is that the date2index function was 
designed to work with netCDF4 variable objects 
(http://code.google.com/p/netcdf4-python), and the netcdf file/variable 
objects that are produced by pupynere/pydap (the pure python netcdf /dap 
reader included in basemap) don't quite behave the same way.  Using 
netCDF4, I can get your gfdl_test.nc case to work with

  cat testdate2index.py

#from mpl_toolkits.basemap import date2index,num2date,NetCDFFile as ncf
from netCDF4 import Dataset as ncf
from netCDF4 import date2index, num2date
from mpl_toolkits import basemap
fname0 = 'http://esgcet.llnl.gov/dap/'
fname1 =\
'ipcc4/20c3m/gfdl_cm2_1/pcmdi.ipcc4.gfdl_cm2_1.20c3m.run1.atm.mo.xml'
fname = fname0+fname1
#fname = 'gfdl_test.nc'
print fname
datobj = ncf(fname)
print datobj.variables['tas'].shape
timedata = datobj.variables['time']
from datetime import datetime as dt
date0 = dt(1951,1,16,12,0,0)
print num2date(timedata[:],timedata.units,calendar=timedata.calendar)
print date0
nt0 = date2index(date0,timedata,select='nearest')
print nt0
print \
timedata[nt0],num2date(timedata[nt0],timedata.units,calendar=timedata.calendar)

  python testdate2index.py

gfdl_test.nc
(13, 31, 29)
[1950-08-16 12:00:00 1950-09-16 00:00:00 1950-10-16 12:00:00
 1950-11-16 00:00:00 1950-12-16 12:00:00 1951-01-16 12:00:00
 1951-02-15 00:00:00 1951-03-16 12:00:00 1951-04-16 00:00:00
 1951-05-16 12:00:00 1951-06-16 00:00:00 1951-07-16 12:00:00
 1951-08-16 12:00:00]
1951-01-16 12:00:00
5
[ 32865.5] [1951-01-16 12:00:00]


Your original example doesn't work because the URL is not an opendap 
server, it's some kind of CDAT xml file that presumably only CDAT 
understands.

We will see if we can fix the date2index function included in basemap 
(if not I will remove it), but for now I recommend using 
netcdf4-python.  It's really a much more robust and feature-rich 
solution for netcdf reading and writing. 

-Jeff   
  





 ---

 This detail aside, I am still having difficulty with date2index, but
 annoyingly, I seem to get different error messages with different 
 datasets. I'll illustrate two here, starting with the one I initially 
 posted about. (See note below regarding this data.)

 In [3]: from mpl_toolkits.basemap import 
 date2index,num2date,NetCDFFile as ncf
 In [10]: from mpl_toolkits import basemap
 In [11]: print basemap.__version__
 0.99.5
 In [24]: fname0 = 'http://esgcet.llnl.gov/dap/'
 In [25]: fname1 = 
 'ipcc4/20c3m/gfdl_cm2_1/pcmdi.ipcc4.gfdl_cm2_1.20c3m.run1.atm.mo.xml'
 In [26]: fname = fname0+fname1
 In [28]: datobj = ncf(fname)
 In [33]: datobj.variables['tas'].shape
 Out[33]: (1680, 90, 144)
 In [34]: timedata = datobj.variables['time']
 In [35]: from datetime import datetime as dt
 In [36]: date0 = dt(1951,1,16,12,0,0)
 In [37]: print date0
 1951-01-16 12:00:00
 In [38]: nt0 = date2index(date0,timedata)
 --- 

 ClientError   Traceback (most recent call 
 last)

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

 /home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.pyc
  
 in date2index(dates, nctime, calendar)
3931 Returns an index or a sequence of indices.
3932 
 - 3933 return netcdftime.date2index(dates, nctime, calendar=None)
3934
3935 def maskoceans(lonsin,latsin,datain,inlands=False):

 

Re: [Matplotlib-users] grid on log-plots

2009-09-09 Thread jihi
Hi,

is it enough to overwrite the axesgrid.py file in my matplotlib 0.99 
installation with the file from svn? I tried that, but i see no effects. 
Are there anywhere precompiled matplotlib releases for 1.0_win32_pre?

Andreas


Jae-Joon Lee schrieb:
 On Tue, Sep 8, 2009 at 11:51 AM, Yann
 Goudardmatplotlib-us...@alleeduweb.eu wrote:
   
 Hi,

 I have the same behaviour with LocatableAxes. HostAxes, ParasiteAxes and
 LocatableAxes depend on 'mpl_toolkits.axes_grid.axislines.Axes'. It must
 be the matter origin.
 

 Yes, and this was because I forgot to implement some necessary methods.
 This is now fixed in the svn trunk. So if you can,please give it a try.

   
 This another example should draw a grid but does not:

 import wx
 from wx import Frame
 from matplotlib.backends.backend_wxagg import FigureFrameWxAgg,
 FigureCanvasWxAgg
 from matplotlib.figure import Figure
 from mpl_toolkits.axes_grid.axes_divider import LocatableAxes

 fig = Figure((1, 1), 50)
 axes = LocatableAxes(fig, [0, 0, 1, 1])
 # axes.toggle_axisline(False)
 axes.grid(True)
 fig.add_axes(axes)

 app = wx.PySimpleApp()
 my_viewer = FigureFrameWxAgg(-1, fig)
 my_viewer.Show()
 app.MainLoop()

 If you uncomment axes.toggle_axisline(False), it works cause it uses
 normal 'matplolib.axes.Axes' behaviour. It is not a matter for common
 use but if you need 'AxesZero', this trick does not work.
 

 What the toggle_axisline does is simply to make the xaxis and yaxis
 (which are responsible for drawing ticks, ticklabels, etc  in the
 mainline mpl) visible again, and make axis[bottom] and etc
 invisible.
 One workaround is to make xaxis and yaxis visible but pnly to draw the
 gridlines. Something like below.

 ax.toggle_axisline(True)
 ax.grid(True)
 ax.gridlines.set_visible(False) # this is just to make the code not to
 draw gridlines twice in future release of mpl.
 ax.xaxis.set_visible(True)
 ax.yaxis.set_visible(True)
 for t in ax.xaxis.majorTicks + ax.yaxis.majorTicks:
 t.gridOn = True
 t.tick1On = False
 t.tick2On = False
 t.label1On = False
 t.label2On = False

 Let me know if this does not work, or there is a case that this cannot be 
 used.
 Regards,

 -JJ


   
 Yann


 On 09/07/2009 10:37 PM, Andreas Fromm wrote:
 
 thanks Sebastian,

 you are right, your code works here too. But i don't get it work in my
 multi y-axes plot from the matplotlib examples
 (http://matplotlib.sourceforge.net/examples/axes_grid/demo_parasite_axes.html).
 Even with linear plots, i get no gridlines.

 Any idea, whats wrong here?

 minimal code example:
 ###
 import matplotlib.pyplot as plt
 from mpl_toolkits.axes_grid.parasite_axes import HostAxes, ParasiteAxes

 fig = plt.figure(1)
 fig.clf()
 #plt.grid(True)
 host = HostAxes(fig, [0.15, 0.1, 0.65, 0.8])
 fig.add_axes(host)

 host.plot([0, 10, 100], [0, 10, 100], label='host')

 host.grid(True)  #?
 host.yaxis.grid(True) #?

 host.yaxis.set_scale('log') #?

 plt.draw()
 plt.show()
 ###

 Greets,
 Andreas


 Sebastian Busch schrieb:

   
 from matplotlib.pyplot import *

 plot([1,10,100],[1,10,100])
 grid()

 yscale('log')
 xscale('log')

 works here.

 best,
 sebastian.


 
 --
 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

   


 --
 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

 

 --
 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
   


--
Let Crystal Reports handle the reporting - Free 

Re: [Matplotlib-users] download

2009-09-09 Thread Stan West
 From: Michael Droettboom [mailto:md...@stsci.edu] 
 Sent: Wednesday, September 09, 2009 08:17
 
 This change has gone into effect (for me at least on a Liux 
 box).  Can anyone test Windows and Mac and report back?

On Windows 7RC, Firefox 3.5.2 and IE 8.0 see
matplotlib-0.99.0.win32-py2.6.exe.


--
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


[Matplotlib-users] python make.py html

2009-09-09 Thread Nils Wagner
Hi all,

python make.py html failed with

/home/nwagner/svn/matplotlib/doc/faq/environment_variables_faq.rst:: 
WARNING: document isn't included in any toctree
/home/nwagner/svn/matplotlib/doc/mpl_toolkits/axes_grid/index.rst:: 
WARNING: document isn't included in any toctree
/home/nwagner/svn/matplotlib/doc/mpl_toolkits/mplot3d/index.rst:: 
WARNING: document isn't included in any toctree
/home/nwagner/svn/matplotlib/doc/users/arraydata.rst:: 
WARNING: document isn't included in any toctree
/home/nwagner/svn/matplotlib/doc/users/plotting.rst:: 
WARNING: document isn't included in any toctree
done
preparing documents... done
Exception occurred while building, starting debugger:
Traceback (most recent call last):
   File 
/home/nwagner/local/lib64/python2.6/site-packages/Sphinx-0.6.1-py2.6.egg/sphinx/cmdline.py,
 
line 172, in main
 app.build(all_files, filenames)
   File 
/home/nwagner/local/lib64/python2.6/site-packages/Sphinx-0.6.1-py2.6.egg/sphinx/application.py,
 
line 129, in build
 self.builder.build_update()
   File 
/home/nwagner/local/lib64/python2.6/site-packages/Sphinx-0.6.1-py2.6.egg/sphinx/builders/__init__.py,
 
line 255, in build_update
 'out of date' % len(to_build))
   File 
/home/nwagner/local/lib64/python2.6/site-packages/Sphinx-0.6.1-py2.6.egg/sphinx/builders/__init__.py,
 
line 310,in build
 self.write(docnames, list(updated_docnames), method)
   File 
/home/nwagner/local/lib64/python2.6/site-packages/Sphinx-0.6.1-py2.6.egg/sphinx/builders/__init__.py,
 
line 349,in write
 self.write_doc(docname, doctree)
   File 
/home/nwagner/local/lib64/python2.6/site-packages/Sphinx-0.6.1-py2.6.egg/sphinx/builders/html.py,
 
line 349, in write_doc
 ctx = self.get_doc_context(docname, body, metatags)
   File 
/home/nwagner/local/lib64/python2.6/site-packages/Sphinx-0.6.1-py2.6.egg/sphinx/builders/html.py,
 
line 319, in get_doc_context
 toc = 
self.render_partial(self.env.get_toc_for(docname))['fragment']
   File 
/home/nwagner/local/lib64/python2.6/site-packages/Sphinx-0.6.1-py2.6.egg/sphinx/environment.py,
 
line 921, in get_toc_for
 toc = self.tocs[docname].deepcopy()
KeyError: 'users/annotations'
 /home/nwagner/local/lib64/python2.6/site-packages/Sphinx-0.6.1-py2.6.egg/sphinx/environment.py(921)get_toc_for()
- toc = self.tocs[docname].deepcopy()
(Pdb)

I am using

 matplotlib.__version__
'1.0.svn'

Python 2.6 (r26:66714, Feb  3 2009, 20:49:49)
[GCC 4.3.2 [gcc-4_3-branch revision 141291]] on linux2


--
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


Re: [Matplotlib-users] python make.py html

2009-09-09 Thread Michael Droettboom
I'm not seeing that, but I'm running Sphinx 0.6.3.  It also looks like 
the kind of thing where removing the build directory may help.

Mike

Nils Wagner wrote:
 Hi all,

 python make.py html failed with

 /home/nwagner/svn/matplotlib/doc/faq/environment_variables_faq.rst:: 
 WARNING: document isn't included in any toctree
 /home/nwagner/svn/matplotlib/doc/mpl_toolkits/axes_grid/index.rst:: 
 WARNING: document isn't included in any toctree
 /home/nwagner/svn/matplotlib/doc/mpl_toolkits/mplot3d/index.rst:: 
 WARNING: document isn't included in any toctree
 /home/nwagner/svn/matplotlib/doc/users/arraydata.rst:: 
 WARNING: document isn't included in any toctree
 /home/nwagner/svn/matplotlib/doc/users/plotting.rst:: 
 WARNING: document isn't included in any toctree
 done
 preparing documents... done
 Exception occurred while building, starting debugger:
 Traceback (most recent call last):
File 
 /home/nwagner/local/lib64/python2.6/site-packages/Sphinx-0.6.1-py2.6.egg/sphinx/cmdline.py,
  
 line 172, in main
  app.build(all_files, filenames)
File 
 /home/nwagner/local/lib64/python2.6/site-packages/Sphinx-0.6.1-py2.6.egg/sphinx/application.py,
  
 line 129, in build
  self.builder.build_update()
File 
 /home/nwagner/local/lib64/python2.6/site-packages/Sphinx-0.6.1-py2.6.egg/sphinx/builders/__init__.py,
  
 line 255, in build_update
  'out of date' % len(to_build))
File 
 /home/nwagner/local/lib64/python2.6/site-packages/Sphinx-0.6.1-py2.6.egg/sphinx/builders/__init__.py,
  
 line 310,in build
  self.write(docnames, list(updated_docnames), method)
File 
 /home/nwagner/local/lib64/python2.6/site-packages/Sphinx-0.6.1-py2.6.egg/sphinx/builders/__init__.py,
  
 line 349,in write
  self.write_doc(docname, doctree)
File 
 /home/nwagner/local/lib64/python2.6/site-packages/Sphinx-0.6.1-py2.6.egg/sphinx/builders/html.py,
  
 line 349, in write_doc
  ctx = self.get_doc_context(docname, body, metatags)
File 
 /home/nwagner/local/lib64/python2.6/site-packages/Sphinx-0.6.1-py2.6.egg/sphinx/builders/html.py,
  
 line 319, in get_doc_context
  toc = 
 self.render_partial(self.env.get_toc_for(docname))['fragment']
File 
 /home/nwagner/local/lib64/python2.6/site-packages/Sphinx-0.6.1-py2.6.egg/sphinx/environment.py,
  
 line 921, in get_toc_for
  toc = self.tocs[docname].deepcopy()
 KeyError: 'users/annotations'
   
 /home/nwagner/local/lib64/python2.6/site-packages/Sphinx-0.6.1-py2.6.egg/sphinx/environment.py(921)get_toc_for()
 
 - toc = self.tocs[docname].deepcopy()
 (Pdb)

 I am using

   
 matplotlib.__version__
 
 '1.0.svn'

 Python 2.6 (r26:66714, Feb  3 2009, 20:49:49)
 [GCC 4.3.2 [gcc-4_3-branch revision 141291]] on linux2


 --
 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
   

-- 
Michael Droettboom
Science Software Branch
Operations and Engineering Division
Space Telescope Science Institute
Operated by AURA for NASA


--
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


Re: [Matplotlib-users] Fetching a data slab with NetCDFFile

2009-09-09 Thread Arthur M. Greene

Thanks much. I am able to replicate your results using netcdf4.

FYI, I don't believe the xml file is a CDAT creation; rather, it is 
probably written using CMOR (http://www2-pcmdi.llnl.gov/cmor), which was 
used to standardize the IPCC model output files, presumably so they 
could be accessed by a variety of applications via OpenDAP. H...


At any rate, I can access the remote data object with netcdf4, but no 
luck retrieving either data or a time index.


In [94]: datobj = ncf(fname)
In [95]: timedata = datobj.variables['time']
In [97]: taxvals = timedata[1070:1090]
In [99]: print taxvals
[ 32559.5  32590.   32620.5  32651.   32681.5  32712.5  32743.   32773.5
  32804.   32834.5  32865.5  32895.   32924.5  32955.   32985.5  33016.
  33046.5  33077.5  33108.   33138.5]
In [100]: print 
date2index(date0,timedata.units,timedata.calendar,select='nearest')

---
AttributeErrorTraceback (most recent call last)

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

/home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/netCDF4.so in 
netCDF4.Variable.__getattr__ (netCDF4.c:13593)()


/home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/netCDF4.so in 
netCDF4._get_att (netCDF4.c:1806)()


AttributeError: NetCDF: Attribute not found


In [96]: print datobj.variables['tas'].shape
(1680, 90, 144)
In [101]: testdat = datobj.variables['tas'][0,:,:]
---
RuntimeError  Traceback (most recent call last)

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

/home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/netCDF4.so in 
netCDF4.Variable.__getitem__ (netCDF4.c:14286)()


/home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/netCDF4.so in 
netCDF4.Variable._get (netCDF4.c:18945)()


RuntimeError: NetCDF: Variable has no data in DAP request

--

Well, at least the error messages are different...

Thanks again for all the assistance. It would be useful to access the 
IPCC output with OpenDap at some point.


Best,

Arthur


Jeff Whitaker wrote:

Arthur M. Greene wrote:

Thanks much for the quick response. I updated both matplotlib and
basemap (now at 0.99.5) via svn and noticed the new netcdftime.py. 
First, from within site-packages/mpl_toolkits/basemap,


$ grep date2index *.py
__init__.py::func:`date2index`: compute a time variable index
corresponding to a date.
__init__.py:def date2index(dates, nctime, 
calendar='proleptic_gregorian'):
__init__.py:return netcdftime.date2index(dates, nctime, 
calendar=None)
netcdftime.py:def date2index(dates, nctime, calendar=None, 
select='exact'):
netcdftime.py:date2index(dates, nctime, calendar=None, 
select='exact')


so there seems to be some disagreement between __init__.py and
netcdftime.py concerning the presence of the select argument. When I
call date2index with the select keyword arg I get

In [24]: ix0 = 
date2index(date0,timedata,timedata.calendar,select='nearest')
--- 

TypeError Traceback (most recent call 
last)


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

TypeError: date2index() got an unexpected keyword argument 'select'


Arthur:  I forgot to update the wrapper function in __init__.py - that's 
fixed now if you do an svn update.  Concerning your other problems 
below, using your test case exposed a couple of other bugs, but it still 
doesn't work.  The basic problem is that the date2index function was 
designed to work with netCDF4 variable objects 
(http://code.google.com/p/netcdf4-python), and the netcdf file/variable 
objects that are produced by pupynere/pydap (the pure python netcdf /dap 
reader included in basemap) don't quite behave the same way.  Using 
netCDF4, I can get your gfdl_test.nc case to work with


  cat testdate2index.py

#from mpl_toolkits.basemap import date2index,num2date,NetCDFFile as ncf
from netCDF4 import Dataset as ncf
from netCDF4 import date2index, num2date
from mpl_toolkits import basemap
fname0 = 'http://esgcet.llnl.gov/dap/'
fname1 =\
'ipcc4/20c3m/gfdl_cm2_1/pcmdi.ipcc4.gfdl_cm2_1.20c3m.run1.atm.mo.xml'
fname = fname0+fname1
#fname = 'gfdl_test.nc'
print fname
datobj = ncf(fname)
print datobj.variables['tas'].shape
timedata = datobj.variables['time']
from datetime import datetime as dt
date0 = dt(1951,1,16,12,0,0)
print num2date(timedata[:],timedata.units,calendar=timedata.calendar)
print date0
nt0 = date2index(date0,timedata,select='nearest')
print nt0
print \
timedata[nt0],num2date(timedata[nt0],timedata.units,calendar=timedata.calendar) 



  python testdate2index.py

gfdl_test.nc
(13, 31, 29)
[1950-08-16 12:00:00 1950-09-16 00:00:00 1950-10-16 12:00:00
1950-11-16 00:00:00 1950-12-16 12:00:00 1951-01-16 12:00:00
1951-02-15 00:00:00 1951-03-16 12:00:00 1951-04-16 00:00:00

Re: [Matplotlib-users] Fetching a data slab with NetCDFFile

2009-09-09 Thread Jeff Whitaker
Arthur M. Greene wrote:
 Thanks much. I am able to replicate your results using netcdf4.

 FYI, I don't believe the xml file is a CDAT creation; rather, it is 
 probably written using CMOR (http://www2-pcmdi.llnl.gov/cmor), which 
 was used to standardize the IPCC model output files, presumably so 
 they could be accessed by a variety of applications via OpenDAP. H...

 At any rate, I can access the remote data object with netcdf4, but no 
 luck retrieving either data or a time index.

 In [94]: datobj = ncf(fname)
 In [95]: timedata = datobj.variables['time']
 In [97]: taxvals = timedata[1070:1090]
 In [99]: print taxvals
 [ 32559.5  32590.   32620.5  32651.   32681.5  32712.5  32743.   32773.5
   32804.   32834.5  32865.5  32895.   32924.5  32955.   32985.5  33016.
   33046.5  33077.5  33108.   33138.5]
 In [100]: print 
 date2index(date0,timedata.units,timedata.calendar,select='nearest')

Arthur:  That's because the timedata variable has no attributes (no 
calendar or units), and the date2index function looks for these 
attributes.  That's weird though, since that dataset is supposed to be 
CF compliant.  I wonder if openDAP is not handling that xml file correctly.

-Jeff
 --- 

 AttributeErrorTraceback (most recent call 
 last)

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

 /home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/netCDF4.so 
 in netCDF4.Variable.__getattr__ (netCDF4.c:13593)()

 /home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/netCDF4.so 
 in netCDF4._get_att (netCDF4.c:1806)()

 AttributeError: NetCDF: Attribute not found


 In [96]: print datobj.variables['tas'].shape
 (1680, 90, 144)
 In [101]: testdat = datobj.variables['tas'][0,:,:]
 --- 

 RuntimeError  Traceback (most recent call 
 last)

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

 /home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/netCDF4.so 
 in netCDF4.Variable.__getitem__ (netCDF4.c:14286)()

 /home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/netCDF4.so 
 in netCDF4.Variable._get (netCDF4.c:18945)()

 RuntimeError: NetCDF: Variable has no data in DAP request

 --

 Well, at least the error messages are different...

 Thanks again for all the assistance. It would be useful to access the 
 IPCC output with OpenDap at some point.

 Best,

 Arthur


 Jeff Whitaker wrote:
 Arthur M. Greene wrote:
 Thanks much for the quick response. I updated both matplotlib and
 basemap (now at 0.99.5) via svn and noticed the new netcdftime.py. 
 First, from within site-packages/mpl_toolkits/basemap,

 $ grep date2index *.py
 __init__.py::func:`date2index`: compute a time variable index
 corresponding to a date.
 __init__.py:def date2index(dates, nctime, 
 calendar='proleptic_gregorian'):
 __init__.py:return netcdftime.date2index(dates, nctime, 
 calendar=None)
 netcdftime.py:def date2index(dates, nctime, calendar=None, 
 select='exact'):
 netcdftime.py:date2index(dates, nctime, calendar=None, 
 select='exact')

 so there seems to be some disagreement between __init__.py and
 netcdftime.py concerning the presence of the select argument. When I
 call date2index with the select keyword arg I get

 In [24]: ix0 = 
 date2index(date0,timedata,timedata.calendar,select='nearest')
 --- 

 TypeError Traceback (most recent 
 call last)

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

 TypeError: date2index() got an unexpected keyword argument 'select'

 Arthur:  I forgot to update the wrapper function in __init__.py - 
 that's fixed now if you do an svn update.  Concerning your other 
 problems below, using your test case exposed a couple of other bugs, 
 but it still doesn't work.  The basic problem is that the date2index 
 function was designed to work with netCDF4 variable objects 
 (http://code.google.com/p/netcdf4-python), and the netcdf 
 file/variable objects that are produced by pupynere/pydap (the pure 
 python netcdf /dap reader included in basemap) don't quite behave the 
 same way.  Using netCDF4, I can get your gfdl_test.nc case to work with

   cat testdate2index.py

 #from mpl_toolkits.basemap import date2index,num2date,NetCDFFile as ncf
 from netCDF4 import Dataset as ncf
 from netCDF4 import date2index, num2date
 from mpl_toolkits import basemap
 fname0 = 'http://esgcet.llnl.gov/dap/'
 fname1 =\
 'ipcc4/20c3m/gfdl_cm2_1/pcmdi.ipcc4.gfdl_cm2_1.20c3m.run1.atm.mo.xml'
 fname = fname0+fname1
 #fname = 'gfdl_test.nc'
 print fname
 datobj = ncf(fname)
 print datobj.variables['tas'].shape
 timedata = datobj.variables['time']
 from datetime import datetime as dt
 date0 = dt(1951,1,16,12,0,0)
 print num2date(timedata[:],timedata.units,calendar=timedata.calendar)
 print 

[Matplotlib-users] rate of change for a splice of data

2009-09-09 Thread nbv4

I have a large array that looks like this:

vals=[0,0,1,3,2,1,0,4,2,4,2...]
dates = [datetime.date(...), datetime.date(...)...]

which then is transformed into a cumsum:

acc_vals = np.cumsum(vals)

and then that is sent to maplotlib to be graphed. The resultant graph looks
like this:

http://img171.imageshack.us/img171/8589/linetotal.png

The blue line is the cumsum data, and the red line is the raw values (just
for illustrative purposes). What I want is the red line to represent the
rate of change for the previous month. That is to say at each point in the
graph, the value on the red line represents the total number of flight time
that has occurred over the previous 30 days. Is this something that
matplotlib can handles on it's own? Or am I going to have to write my own
number crunching method to get it working?

-- 
View this message in context: 
http://www.nabble.com/rate-of-change-for-a-splice-of-data-tp25376306p25376306.html
Sent from the matplotlib - users mailing list archive at Nabble.com.


--
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


Re: [Matplotlib-users] Fetching a data slab with NetCDFFile

2009-09-09 Thread Arthur M. Greene
Just to add a little info:

I've been poking around various OPeNDAP servers looking for files to try 
and open (and read), and have had a little success, so the module does 
seem to work, if not all the time for my purposes. At the moment I'm on 
a 64-bit machine (Fedora 10), so this is encouraging. Some details:

I tried several of the IPCC AR4 models at PCMDI, with results similar to 
what I reported earlier. The time object appears with neither units nor 
a calendar. Looking at the metadata shows this not to be correct, for at 
least the three models I investigated (gfdl_cm2_1, mpi_echam5, 
ncar_ccsm3_0). I believe the inclusion of units and a calendar are 
standard procedure for all of these models, and would probably cause the 
dataset to be flagged if they weren't present. Many users (like 
hundreds) have downloaded and analyzed these files.

The IRI data library (http://iridl.ldeo.columbia.edu/) has a large 
collection of datasets, all available using opendap. But I had problems 
with the ones I tried because the calendars seem all to be given as 
360, rather than 360_day. (Perhaps someone is cutting corners with 
the typing, I can't say...) I couldn't correct this by setting 
timedata.calendar='360_day' because the files are opened read-only. 
There must be files on this server with differently-defined calendars, 
since the data come from many different sources. I'll have to root 
around some more to turn some up.

Similarly, the time units in 
http://test.opendap.org/opendap/data/nc/data.nc are given simply as 
'hour', so num2date can't figure out what dates the time values refer 
to. I wouldn't have expected this at this URL, but maybe it's a test? 
Aside from the fact that ... since was missing, netcdf4 also 
complained that 'hour' was not an acceptable unit. Only 'hours' will do. 
(No 'months' or 'years' either, it seems.)

http://test.opendap.org/opendap/data/nc/coads_climatology.nc seems to 
download OK, and there are units, but it's a 12-month climatology, so 
calendar is irrelevant. I could plot the data, although it appeared 
reversed left-to-right. (I didn't add axes, but just plotted it raw.)

The conclusion seems to be that (1) there may be a lot of non-conforming 
datasets out there (and netcdf4 may be a little fussy about what time 
units it will accept, too), but (2) since there seems to be some 
discordance w.r.t. the IPCC data (where we believe the units and 
calendar must actually be present) one cannot be absolutely sure that 
all of the problems experienced are solely due to malformed data 
descriptions. Evidently more detective work will be required to sort 
everything out...

Best, thanks again for the assistance. I've been up too late chasing 
around the web...

Arthur


Jeff Whitaker wrote:
 Arthur M. Greene wrote:
 Thanks much. I am able to replicate your results using netcdf4.

 FYI, I don't believe the xml file is a CDAT creation; rather, it is 
 probably written using CMOR (http://www2-pcmdi.llnl.gov/cmor), which 
 was used to standardize the IPCC model output files, presumably so 
 they could be accessed by a variety of applications via OpenDAP. H...

 At any rate, I can access the remote data object with netcdf4, but no 
 luck retrieving either data or a time index.

 In [94]: datobj = ncf(fname)
 In [95]: timedata = datobj.variables['time']
 In [97]: taxvals = timedata[1070:1090]
 In [99]: print taxvals
 [ 32559.5  32590.   32620.5  32651.   32681.5  32712.5  32743.   32773.5
   32804.   32834.5  32865.5  32895.   32924.5  32955.   32985.5  33016.
   33046.5  33077.5  33108.   33138.5]
 In [100]: print 
 date2index(date0,timedata.units,timedata.calendar,select='nearest')
 
 Arthur:  That's because the timedata variable has no attributes (no 
 calendar or units), and the date2index function looks for these 
 attributes.  That's weird though, since that dataset is supposed to be 
 CF compliant.  I wonder if openDAP is not handling that xml file correctly.
 
 -Jeff
 --- 

 AttributeErrorTraceback (most recent call 
 last)

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

 /home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/netCDF4.so 
 in netCDF4.Variable.__getattr__ (netCDF4.c:13593)()

 /home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/netCDF4.so 
 in netCDF4._get_att (netCDF4.c:1806)()

 AttributeError: NetCDF: Attribute not found


 In [96]: print datobj.variables['tas'].shape
 (1680, 90, 144)
 In [101]: testdat = datobj.variables['tas'][0,:,:]
 --- 

 RuntimeError  Traceback (most recent call 
 last)

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

 /home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/netCDF4.so 
 in netCDF4.Variable.__getitem__ (netCDF4.c:14286)()

 /home/amg/usr/local/cdat/trunk/lib/python2.5/site-packages/netCDF4.so 
 in