EVLA Atmospheric Phase Interferometer and windspeed plotter

Technical details on the EVLA API hardware and data product can be found in VLA Test Memos 213, 222, and Radford et al. (1996).
Related links: Cumulative monthly plots of suitable observing conditions vs. LST
                       Cumulative monthly plots of API phase rms vs. LST
                       Precipitable Water Vapor map of North America


Standard time ranges: Day view   Week view   Month view   Number of days/weeks/months:
Start date and time: Show latest data   Specify start date   Specify start & end date (overrides Standard time range)
              Local Date (MM/DD/YYYY) :   end:
              Local Time (optional) (HH[:MM:SS]):   end:
              Shade a UT range (HH[:MM:SS]):        end: (Day view only)
X-axis options: UT/Civil time   Scatter plots: LST   Before sunrise   Since sunrise   Before sunset   Since sunset
Y-axis options: Autoscale (if rms data go beyond 50 deg)   Fixed (0-50 deg)   Note: Values > 100 likely indicate a hardware problem.
Server option: Try primary first (then try backup)   Use primary only   Use backup only
 
--> -->
 
 
<type 'exceptions.ValueError'>
Python 2.6.6: /usr/bin/python
Tue Jul 7 20:15:05 2015

A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.

 /home/webtest.aoc.nrao.edu/active/cgi-bin/thunter/apinew.cgi in ()
 2641         return(0)
 2642 
 2643 
 2644 # Run program
 2645 main()
main = <function main>
 /home/webtest.aoc.nrao.edu/active/cgi-bin/thunter/apinew.cgi in main()
 2637             retvalA = process(localdate, localtime, monthoption, pickserver, nPeriods, 
 2638                               localenddate, localendtime, xaxisOption, choice, yaxisOption,
 2639                               queryDatabase, shadeTime, shadeEndTime)
 2640             
 2641         return(0)
queryDatabase = 'yes', shadeTime = '', shadeEndTime = ''
 /home/webtest.aoc.nrao.edu/active/cgi-bin/thunter/apinew.cgi in process(localdate='', localtime='', monthoption='Day view', pickserver='primary', nPeriods='1', localenddate='', localendtime='', xaxisOption='UT', choice='Show latest data', yaxisOption='Autoscale', queryDatabase='yes', shadeTime='', shadeEndTime='')
 2318         (status,server,monthoption) = api(timestring, serverOption, monthoption, nPeriods, 
 2319                                           endTimestring, xaxisOption,yaxisOption,queryDatabase,
 2320                                           shadeTime,shadeEndTime)
 2321         if (status==CANNOT_FIND_DATA_FILE):
 2322           sys.exit()
shadeTime = '', shadeEndTime = ''
 /home/webtest.aoc.nrao.edu/active/cgi-bin/thunter/apinew.cgi in api(timestring=' ', serverOption='', monthoption='Day view', nPeriods='1', endTimestring=' ', xaxisOption='UT', yaxisOption='Autoscale', queryDatabase='yes', shadeTime='', shadeEndTime='')
  976          except:
  977              trh = 0
  978          pl.savefig('%s%s'%(impath,imname), format='png', dpi=108)
  979          chmod('%s%s'%(impath,imname),imageumask)
  980     
global pl = <module 'pylab' from '/usr/lib64/python2.6/site-packages/pylab.pyc'>, pl.savefig = <function savefig>, global impath = '/home/webtest.aoc.nrao.edu/spool/thunter/images/', global imname = 'rmsphase.1436321704.562.png', builtin format = <built-in function format>, dpi undefined
 /usr/lib64/python2.6/site-packages/matplotlib/pyplot.py in savefig(*args=('/home/webtest.aoc.nrao.edu/spool/thunter/images/rmsphase.1436321704.562.png',), **kwargs={'dpi': 108, 'format': 'png'})
  354 def savefig(*args, **kwargs):
  355     fig = gcf()
  356     return fig.savefig(*args, **kwargs)
  357 if Figure.savefig.__doc__ is not None:
  358     savefig.__doc__ = dedent(Figure.savefig.__doc__)
fig = <matplotlib.figure.Figure object>, fig.savefig = <bound method Figure.savefig of <matplotlib.figure.Figure object>>, args = ('/home/webtest.aoc.nrao.edu/spool/thunter/images/rmsphase.1436321704.562.png',), kwargs = {'dpi': 108, 'format': 'png'}
 /usr/lib64/python2.6/site-packages/matplotlib/figure.py in savefig(self=<matplotlib.figure.Figure object>, *args=('/home/webtest.aoc.nrao.edu/spool/thunter/images/rmsphase.1436321704.562.png',), **kwargs={'dpi': 108, 'edgecolor': 'w', 'facecolor': 'w', 'format': 'png'})
 1030                 patch.set_alpha(0.0)
 1031 
 1032         self.canvas.print_figure(*args, **kwargs)
 1033 
 1034         if transparent:
self = <matplotlib.figure.Figure object>, self.canvas = <matplotlib.backends.backend_agg.FigureCanvasAgg instance>, self.canvas.print_figure = <bound method FigureCanvasAgg.print_figure of <m...b.backends.backend_agg.FigureCanvasAgg instance>>, args = ('/home/webtest.aoc.nrao.edu/spool/thunter/images/rmsphase.1436321704.562.png',), kwargs = {'dpi': 108, 'edgecolor': 'w', 'facecolor': 'w', 'format': 'png'}
 /usr/lib64/python2.6/site-packages/matplotlib/backend_bases.py in print_figure(self=<matplotlib.backends.backend_agg.FigureCanvasAgg instance>, filename='/home/webtest.aoc.nrao.edu/spool/thunter/images/rmsphase.1436321704.562.png', dpi=108, facecolor='w', edgecolor='w', orientation='portrait', format='png', **kwargs={})
 1474                 orientation=orientation,
 1475                 bbox_inches_restore=_bbox_inches_restore,
 1476                 **kwargs)
 1477         finally:
 1478             if bbox_inches and restore_bbox:
kwargs = {}
 /usr/lib64/python2.6/site-packages/matplotlib/backends/backend_agg.py in print_png(self=<matplotlib.backends.backend_agg.FigureCanvasAgg instance>, filename_or_obj='/home/webtest.aoc.nrao.edu/spool/thunter/images/rmsphase.1436321704.562.png', *args=(), **kwargs={'bbox_inches_restore': None, 'dpi': 108, 'edgecolor': 'w', 'facecolor': 'w', 'orientation': 'portrait'})
  356 
  357     def print_png(self, filename_or_obj, *args, **kwargs):
  358         FigureCanvasAgg.draw(self)
  359         renderer = self.get_renderer()
  360         original_dpi = renderer.dpi
global FigureCanvasAgg = <class matplotlib.backends.backend_agg.FigureCanvasAgg>, FigureCanvasAgg.draw = <unbound method FigureCanvasAgg.draw>, self = <matplotlib.backends.backend_agg.FigureCanvasAgg instance>
 /usr/lib64/python2.6/site-packages/matplotlib/backends/backend_agg.py in draw(self=<matplotlib.backends.backend_agg.FigureCanvasAgg instance>)
  312 
  313         self.renderer = self.get_renderer()
  314         self.figure.draw(self.renderer)
  315 
  316     def get_renderer(self):
self = <matplotlib.backends.backend_agg.FigureCanvasAgg instance>, self.figure = <matplotlib.figure.Figure object>, self.figure.draw = <bound method Figure.draw of <matplotlib.figure.Figure object>>, self.renderer = <matplotlib.backends.backend_agg.RendererAgg instance>
 /usr/lib64/python2.6/site-packages/matplotlib/artist.py in draw_wrapper(artist=<matplotlib.figure.Figure object>, renderer=<matplotlib.backends.backend_agg.RendererAgg instance>, *kl=())
   44     def draw_wrapper(artist, renderer, *kl):
   45         before(artist, renderer)
   46         draw(artist, renderer, *kl)
   47         after(artist, renderer)
   48 
draw = <function draw>, artist = <matplotlib.figure.Figure object>, renderer = <matplotlib.backends.backend_agg.RendererAgg instance>, kl = ()
 /usr/lib64/python2.6/site-packages/matplotlib/figure.py in draw(self=<matplotlib.figure.Figure object>, renderer=<matplotlib.backends.backend_agg.RendererAgg instance>)
  771 
  772         # render the axes
  773         for a in self.axes: a.draw(renderer)
  774 
  775         # render the figure text
a = <matplotlib.axes.AxesSubplot object>, self = <matplotlib.figure.Figure object>, self.axes = [<matplotlib.axes.AxesSubplot object>, <matplotlib.axes.AxesSubplot object>], a.draw = <bound method AxesSubplot.draw of <matplotlib.axes.AxesSubplot object>>, renderer = <matplotlib.backends.backend_agg.RendererAgg instance>
 /usr/lib64/python2.6/site-packages/matplotlib/artist.py in draw_wrapper(artist=<matplotlib.axes.AxesSubplot object>, renderer=<matplotlib.backends.backend_agg.RendererAgg instance>, *kl=())
   44     def draw_wrapper(artist, renderer, *kl):
   45         before(artist, renderer)
   46         draw(artist, renderer, *kl)
   47         after(artist, renderer)
   48 
draw = <function draw>, artist = <matplotlib.axes.AxesSubplot object>, renderer = <matplotlib.backends.backend_agg.RendererAgg instance>, kl = ()
 /usr/lib64/python2.6/site-packages/matplotlib/axes.py in draw(self=<matplotlib.axes.AxesSubplot object>, renderer=<matplotlib.backends.backend_agg.RendererAgg instance>, inframe=False)
 1733 
 1734         for zorder, i, a in dsu:
 1735             a.draw(renderer)
 1736 
 1737         renderer.close_group('axes')
a = <matplotlib.text.Text object>, a.draw = <bound method Text.draw of <matplotlib.text.Text object>>, renderer = <matplotlib.backends.backend_agg.RendererAgg instance>
 /usr/lib64/python2.6/site-packages/matplotlib/text.py in draw(self=<matplotlib.text.Text object>, renderer=<matplotlib.backends.backend_agg.RendererAgg instance>)
  563             renderer.draw_text(gc, x, y, clean_line,
  564                                self._fontproperties, angle,
  565                                ismath=ismath)
  566 
  567         gc.restore()
ismath = False
 /usr/lib64/python2.6/site-packages/matplotlib/backends/backend_agg.py in draw_text(self=<matplotlib.backends.backend_agg.RendererAgg instance>, gc=<matplotlib.backend_bases.GraphicsContextBase instance>, x=nan, y=nan, s='-nan', prop=<matplotlib.font_manager.FontProperties object>, angle=0.0, ismath=False)
  132         #print x, y, int(x), int(y)
  133 
  134         self._renderer.draw_text_image(font.get_image(), int(x), int(y) + 1, angle, gc)
  135 
  136     def get_text_width_height_descent(self, s, prop, ismath):
self = <matplotlib.backends.backend_agg.RendererAgg instance>, self._renderer = <RendererAgg object>, self._renderer.draw_text_image = <built-in method draw_text_image of tuple object>, font = <FT2Font object>, font.get_image = <built-in method get_image of tuple object>, builtin int = <type 'int'>, x = nan, y = nan, angle = 0.0, gc = <matplotlib.backend_bases.GraphicsContextBase instance>

<type 'exceptions.ValueError'>: cannot convert float NaN to integer
      args = ('cannot convert float NaN to integer',)
      message = 'cannot convert float NaN to integer'