Skip to content

Commit 77bcd01

Browse files
committed
Merge pull request #1269 from UV-CDAT/vcs3D-fix_release_issues
Vcs3 d fix release issues
2 parents 32f3893 + 3c0155b commit 77bcd01

File tree

3 files changed

+88
-40
lines changed

3 files changed

+88
-40
lines changed

Packages/DV3D/MultiVarPointCollection.py

Lines changed: 67 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ def getCoordIndex( self, var, coord ):
101101
return axis_order.index(coord)
102102
except ValueError, err:
103103
print>>sys.stderr, "Can't find axis %s in axis order spec '%s' " % ( coord, axis_order )
104+
return None
104105

105106

106107
def getCoordDataBlock( self, var ):
@@ -109,42 +110,74 @@ def getCoordDataBlock( self, var ):
109110
def getDataBlock( self, var ):
110111
np_var_data_block = None
111112
iTimeIndex = self.getCoordIndex( var, 't' )
112-
if iTimeIndex <> 0:
113-
print>>sys.stderr, "Unimplemented axis order: %s " % var.getOrder()
114-
else:
115-
if self.lev == None:
116-
if len( var.shape ) == 2:
117-
np_var_data_block = var[ self.iTimeStep, self.istart::self.istep ].data
118-
if self.roi_mask <> None:
119-
np_var_data_block = numpy.compress( self.roi_mask, np_var_data_block )
120-
elif len( var.shape ) == 3:
121-
np_var_data_block = var[ self.iTimeStep, :, self.istart::self.istep ].data
122-
np_var_data_block = np_var_data_block.reshape( [ np_var_data_block.shape[0] * np_var_data_block.shape[1], ] )
123-
self.nLevels = 1
113+
try:
114+
if iTimeIndex > 0:
115+
print>>sys.stderr, "Unimplemented axis order: %s " % var.getOrder()
116+
elif iTimeIndex is None:
117+
if self.lev == None:
118+
if len( var.shape ) == 1:
119+
np_var_data_block = var[ self.istart::self.istep ].data
120+
if self.roi_mask <> None:
121+
np_var_data_block = numpy.compress( self.roi_mask, np_var_data_block )
122+
elif len( var.shape ) == 2:
123+
np_var_data_block = var[ :, self.istart::self.istep ].data
124+
np_var_data_block = np_var_data_block.reshape( [ np_var_data_block.shape[0] * np_var_data_block.shape[1], ] )
125+
self.nLevels = 1
126+
else:
127+
iLevIndex = self.getCoordIndex( var, 'z' )
128+
if len( var.shape ) == 2:
129+
if iLevIndex == 0:
130+
np_var_data_block = var[ :, self.istart::self.istep ].data
131+
elif iLevIndex == 1:
132+
np_var_data_block = var[ self.istart::self.istep, : ].data
133+
np_var_data_block = numpy.swapaxes( np_var_data_block, 0, 1 )
134+
else:
135+
print>>sys.stderr, "Unimplemented axis order: %s " % var.getOrder()
136+
if not isNone( np_var_data_block ):
137+
if not isNone( self.roi_mask ):
138+
np_var_data_block = numpy.compress( self.roi_mask, np_var_data_block, axis = 1 )
139+
elif len( var.shape ) == 3:
140+
lev_data_arrays = []
141+
for ilev in range( var.shape[1] ):
142+
data_z_slice = var[ ilev ].flatten()
143+
lev_data_arrays.append( data_z_slice[self.istart::self.istep] )
144+
np_var_data_block = numpy.concatenate( lev_data_arrays ).astype( numpy.float32 )
124145
else:
125-
iLevIndex = self.getCoordIndex( var, 'z' )
126-
if len( var.shape ) == 3:
127-
if iLevIndex == 1:
146+
if self.lev == None:
147+
if len( var.shape ) == 2:
148+
np_var_data_block = var[ self.iTimeStep, self.istart::self.istep ].data
149+
if self.roi_mask <> None:
150+
np_var_data_block = numpy.compress( self.roi_mask, np_var_data_block )
151+
elif len( var.shape ) == 3:
128152
np_var_data_block = var[ self.iTimeStep, :, self.istart::self.istep ].data
129-
elif iLevIndex == 2:
130-
np_var_data_block = var[ self.iTimeStep, self.istart::self.istep, : ].data
131-
np_var_data_block = numpy.swapaxes( np_var_data_block, 0, 1 )
132-
else:
133-
print>>sys.stderr, "Unimplemented axis order: %s " % var.getOrder()
134-
if not isNone( np_var_data_block ):
135-
if not isNone( self.roi_mask ):
136-
np_var_data_block = numpy.compress( self.roi_mask, np_var_data_block, axis = 1 )
137-
elif len( var.shape ) == 4:
138-
lev_data_arrays = []
139-
for ilev in range( var.shape[1] ):
140-
data_z_slice = var[ self.iTimeStep, ilev ].flatten()
141-
lev_data_arrays.append( data_z_slice[self.istart::self.istep] )
142-
np_var_data_block = numpy.concatenate( lev_data_arrays ).astype( numpy.float32 )
143-
# 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__ )
144-
145-
if not isNone( np_var_data_block ):
146-
if self.missing_value: np_var_data_block = numpy.ma.masked_equal( np_var_data_block, self.missing_value, False ).flatten()
147-
else: np_var_data_block = np_var_data_block.flatten()
153+
np_var_data_block = np_var_data_block.reshape( [ np_var_data_block.shape[0] * np_var_data_block.shape[1], ] )
154+
self.nLevels = 1
155+
else:
156+
iLevIndex = self.getCoordIndex( var, 'z' )
157+
if len( var.shape ) == 3:
158+
if iLevIndex == 1:
159+
np_var_data_block = var[ self.iTimeStep, :, self.istart::self.istep ].data
160+
elif iLevIndex == 2:
161+
np_var_data_block = var[ self.iTimeStep, self.istart::self.istep, : ].data
162+
np_var_data_block = numpy.swapaxes( np_var_data_block, 0, 1 )
163+
else:
164+
print>>sys.stderr, "Unimplemented axis order: %s " % var.getOrder()
165+
if not isNone( np_var_data_block ):
166+
if not isNone( self.roi_mask ):
167+
np_var_data_block = numpy.compress( self.roi_mask, np_var_data_block, axis = 1 )
168+
elif len( var.shape ) == 4:
169+
lev_data_arrays = []
170+
for ilev in range( var.shape[1] ):
171+
data_z_slice = var[ self.iTimeStep, ilev ].flatten()
172+
lev_data_arrays.append( data_z_slice[self.istart::self.istep] )
173+
np_var_data_block = numpy.concatenate( lev_data_arrays ).astype( numpy.float32 )
174+
except Exception, err:
175+
print " Error in GetDataBlock, var.shape = %s, grid = %s, ts = %d " % ( str(var.shape), str((self.istart,self.istep)), self.iTimeStep )
176+
print str(err)
177+
178+
if not isNone( np_var_data_block ):
179+
if self.missing_value: np_var_data_block = numpy.ma.masked_equal( np_var_data_block, self.missing_value, False ).flatten()
180+
else: np_var_data_block = np_var_data_block.flatten()
148181

149182
return np_var_data_block
150183

Packages/DV3D/StructuredVariableReader.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from StructuredDataset import *
1212

1313
def getVarName( var ):
14-
if hasattr( var,'outvar'): return var.outvar.name
1514
if hasattr( var,'name'): return var.name
1615
if hasattr( var,'name_in_file'): return var.name_in_file
1716
if hasattr( var,'id'): return var.id
@@ -110,10 +109,10 @@ def __init__(self, **args):
110109
self.varSpecs = [ var.name_in_file for var in self.vars ]
111110
self.df = cdms2.open( self.fileSpecs )
112111
else:
113-
self.varSpecs = [ var.name for var in self.vars ]
112+
self.varSpecs = [ var.id for var in self.vars ]
114113
plot_attributes = args.get( 'plot_attributes', None )
115114
if plot_attributes <> None:
116-
self.datasetId = plot_attributes.get( 'filename', self.vars[0].name )
115+
self.datasetId = plot_attributes.get( 'filename', self.vars[0].id )
117116
for file_attribute_name in ['url', 'filename', 'file' ]:
118117
self.fileSpecs = plot_attributes.get( file_attribute_name, None )
119118
if self.fileSpecs <> None: break
@@ -122,8 +121,8 @@ def __init__(self, **args):
122121
print>>sys.stderr, "Warning, can't open data file '%s'" % self.fileSpecs
123122
self.df = None
124123
else:
125-
self.datasetId = self.vars[0].name
126-
self.fileSpecs = self.vars[0].name
124+
self.datasetId = self.vars[0].id
125+
self.fileSpecs = self.vars[0].id
127126
self.df = None
128127

129128
self.referenceTimeUnits = None
@@ -371,7 +370,7 @@ def getPortData( self, **args ):
371370

372371
def generateVariableOutput( self, cdms_var ):
373372
print str(cdms_var.var)
374-
self.set3DOutput( name=cdms_var.name, output=cdms_var.var )
373+
self.set3DOutput( name=cdms_var.id, output=cdms_var.var )
375374

376375
def refreshVersion(self):
377376
portData = self.getPortData()
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import vcs, cdms2, sys
2+
3+
x = vcs.init()
4+
f = cdms2.open( sys.prefix+"/sample_data/geos5-sample.nc" )
5+
dv3d = vcs.get3d_vector()
6+
dv3d.VerticalScaling = 4.0
7+
dv3d.BasemapOpacity = 0.5
8+
dv3d.ScaleColormap = [50.0, 75.0, 1]
9+
dv3d.ZSlider = [26.0], vcs.on
10+
dv3d.GlyphDensity = 3.0
11+
dv3d.GlyphSize = 0.6
12+
dv3d = vcs.get3d_vector()
13+
v0 = f["uwnd"]
14+
v1 = f["vwnd"]
15+
x.plot( v0, v1, dv3d )
16+
x.interact()

0 commit comments

Comments
 (0)