Skip to content

Commit

Permalink
Merge pull request #1269 from UV-CDAT/vcs3D-fix_release_issues
Browse files Browse the repository at this point in the history
Vcs3 d fix release issues
  • Loading branch information
doutriaux1 committed May 4, 2015
2 parents 32f3893 + 3c0155b commit 77bcd01
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 40 deletions.
101 changes: 67 additions & 34 deletions Packages/DV3D/MultiVarPointCollection.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ def getCoordIndex( self, var, coord ):
return axis_order.index(coord)
except ValueError, err:
print>>sys.stderr, "Can't find axis %s in axis order spec '%s' " % ( coord, axis_order )
return None


def getCoordDataBlock( self, var ):
Expand All @@ -109,42 +110,74 @@ def getCoordDataBlock( self, var ):
def getDataBlock( self, var ):
np_var_data_block = None
iTimeIndex = self.getCoordIndex( var, 't' )
if iTimeIndex <> 0:
print>>sys.stderr, "Unimplemented axis order: %s " % var.getOrder()
else:
if self.lev == None:
if len( var.shape ) == 2:
np_var_data_block = var[ self.iTimeStep, self.istart::self.istep ].data
if self.roi_mask <> None:
np_var_data_block = numpy.compress( self.roi_mask, np_var_data_block )
elif len( var.shape ) == 3:
np_var_data_block = var[ self.iTimeStep, :, self.istart::self.istep ].data
np_var_data_block = np_var_data_block.reshape( [ np_var_data_block.shape[0] * np_var_data_block.shape[1], ] )
self.nLevels = 1
try:
if iTimeIndex > 0:
print>>sys.stderr, "Unimplemented axis order: %s " % var.getOrder()
elif iTimeIndex is None:
if self.lev == None:
if len( var.shape ) == 1:
np_var_data_block = var[ self.istart::self.istep ].data
if self.roi_mask <> None:
np_var_data_block = numpy.compress( self.roi_mask, np_var_data_block )
elif len( var.shape ) == 2:
np_var_data_block = var[ :, self.istart::self.istep ].data
np_var_data_block = np_var_data_block.reshape( [ np_var_data_block.shape[0] * np_var_data_block.shape[1], ] )
self.nLevels = 1
else:
iLevIndex = self.getCoordIndex( var, 'z' )
if len( var.shape ) == 2:
if iLevIndex == 0:
np_var_data_block = var[ :, self.istart::self.istep ].data
elif iLevIndex == 1:
np_var_data_block = var[ self.istart::self.istep, : ].data
np_var_data_block = numpy.swapaxes( np_var_data_block, 0, 1 )
else:
print>>sys.stderr, "Unimplemented axis order: %s " % var.getOrder()
if not isNone( np_var_data_block ):
if not isNone( self.roi_mask ):
np_var_data_block = numpy.compress( self.roi_mask, np_var_data_block, axis = 1 )
elif len( var.shape ) == 3:
lev_data_arrays = []
for ilev in range( var.shape[1] ):
data_z_slice = var[ ilev ].flatten()
lev_data_arrays.append( data_z_slice[self.istart::self.istep] )
np_var_data_block = numpy.concatenate( lev_data_arrays ).astype( numpy.float32 )
else:
iLevIndex = self.getCoordIndex( var, 'z' )
if len( var.shape ) == 3:
if iLevIndex == 1:
if self.lev == None:
if len( var.shape ) == 2:
np_var_data_block = var[ self.iTimeStep, self.istart::self.istep ].data
if self.roi_mask <> None:
np_var_data_block = numpy.compress( self.roi_mask, np_var_data_block )
elif len( var.shape ) == 3:
np_var_data_block = var[ self.iTimeStep, :, self.istart::self.istep ].data
elif iLevIndex == 2:
np_var_data_block = var[ self.iTimeStep, self.istart::self.istep, : ].data
np_var_data_block = numpy.swapaxes( np_var_data_block, 0, 1 )
else:
print>>sys.stderr, "Unimplemented axis order: %s " % var.getOrder()
if not isNone( np_var_data_block ):
if not isNone( self.roi_mask ):
np_var_data_block = numpy.compress( self.roi_mask, np_var_data_block, axis = 1 )
elif len( var.shape ) == 4:
lev_data_arrays = []
for ilev in range( var.shape[1] ):
data_z_slice = var[ self.iTimeStep, ilev ].flatten()
lev_data_arrays.append( data_z_slice[self.istart::self.istep] )
np_var_data_block = numpy.concatenate( lev_data_arrays ).astype( numpy.float32 )
# print " GetDataBlock, var.shape = %s, grid = %s, ts = %d, newshape = %s, type = %s " % ( str(var.shape), str((self.istart,self.istep)), self.iTimeStep, str(np_var_data_block.shape), np_var_data_block.__class__.__name__ )

if not isNone( np_var_data_block ):
if self.missing_value: np_var_data_block = numpy.ma.masked_equal( np_var_data_block, self.missing_value, False ).flatten()
else: np_var_data_block = np_var_data_block.flatten()
np_var_data_block = np_var_data_block.reshape( [ np_var_data_block.shape[0] * np_var_data_block.shape[1], ] )
self.nLevels = 1
else:
iLevIndex = self.getCoordIndex( var, 'z' )
if len( var.shape ) == 3:
if iLevIndex == 1:
np_var_data_block = var[ self.iTimeStep, :, self.istart::self.istep ].data
elif iLevIndex == 2:
np_var_data_block = var[ self.iTimeStep, self.istart::self.istep, : ].data
np_var_data_block = numpy.swapaxes( np_var_data_block, 0, 1 )
else:
print>>sys.stderr, "Unimplemented axis order: %s " % var.getOrder()
if not isNone( np_var_data_block ):
if not isNone( self.roi_mask ):
np_var_data_block = numpy.compress( self.roi_mask, np_var_data_block, axis = 1 )
elif len( var.shape ) == 4:
lev_data_arrays = []
for ilev in range( var.shape[1] ):
data_z_slice = var[ self.iTimeStep, ilev ].flatten()
lev_data_arrays.append( data_z_slice[self.istart::self.istep] )
np_var_data_block = numpy.concatenate( lev_data_arrays ).astype( numpy.float32 )
except Exception, err:
print " Error in GetDataBlock, var.shape = %s, grid = %s, ts = %d " % ( str(var.shape), str((self.istart,self.istep)), self.iTimeStep )
print str(err)

if not isNone( np_var_data_block ):
if self.missing_value: np_var_data_block = numpy.ma.masked_equal( np_var_data_block, self.missing_value, False ).flatten()
else: np_var_data_block = np_var_data_block.flatten()

return np_var_data_block

Expand Down
11 changes: 5 additions & 6 deletions Packages/DV3D/StructuredVariableReader.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
from StructuredDataset import *

def getVarName( var ):
if hasattr( var,'outvar'): return var.outvar.name
if hasattr( var,'name'): return var.name
if hasattr( var,'name_in_file'): return var.name_in_file
if hasattr( var,'id'): return var.id
Expand Down Expand Up @@ -110,10 +109,10 @@ def __init__(self, **args):
self.varSpecs = [ var.name_in_file for var in self.vars ]
self.df = cdms2.open( self.fileSpecs )
else:
self.varSpecs = [ var.name for var in self.vars ]
self.varSpecs = [ var.id for var in self.vars ]
plot_attributes = args.get( 'plot_attributes', None )
if plot_attributes <> None:
self.datasetId = plot_attributes.get( 'filename', self.vars[0].name )
self.datasetId = plot_attributes.get( 'filename', self.vars[0].id )
for file_attribute_name in ['url', 'filename', 'file' ]:
self.fileSpecs = plot_attributes.get( file_attribute_name, None )
if self.fileSpecs <> None: break
Expand All @@ -122,8 +121,8 @@ def __init__(self, **args):
print>>sys.stderr, "Warning, can't open data file '%s'" % self.fileSpecs
self.df = None
else:
self.datasetId = self.vars[0].name
self.fileSpecs = self.vars[0].name
self.datasetId = self.vars[0].id
self.fileSpecs = self.vars[0].id
self.df = None

self.referenceTimeUnits = None
Expand Down Expand Up @@ -371,7 +370,7 @@ def getPortData( self, **args ):

def generateVariableOutput( self, cdms_var ):
print str(cdms_var.var)
self.set3DOutput( name=cdms_var.name, output=cdms_var.var )
self.set3DOutput( name=cdms_var.id, output=cdms_var.var )

def refreshVersion(self):
portData = self.getPortData()
Expand Down
16 changes: 16 additions & 0 deletions Packages/DV3D/demo/demo_plots/gallery_vector_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import vcs, cdms2, sys

x = vcs.init()
f = cdms2.open( sys.prefix+"/sample_data/geos5-sample.nc" )
dv3d = vcs.get3d_vector()
dv3d.VerticalScaling = 4.0
dv3d.BasemapOpacity = 0.5
dv3d.ScaleColormap = [50.0, 75.0, 1]
dv3d.ZSlider = [26.0], vcs.on
dv3d.GlyphDensity = 3.0
dv3d.GlyphSize = 0.6
dv3d = vcs.get3d_vector()
v0 = f["uwnd"]
v1 = f["vwnd"]
x.plot( v0, v1, dv3d )
x.interact()

0 comments on commit 77bcd01

Please sign in to comment.