def execute(self, **args ): import api from packages.vtDV3D.CDMS_DatasetReaders import CDMSDataset cdms_vars = self.getInputValues( "variable" ) if cdms_vars and len(cdms_vars): iVar = 1 cdms_var = cdms_vars.pop(0) self.cdmsDataset = CDMSDataset() var, dsetId = self.addCDMSVariable( cdms_var, iVar ) self.newDataset = ( self.datasetId <> dsetId ) if self.newDataset: ModuleStore.archiveCdmsDataset( dsetId, self.cdmsDataset ) self.newLayerConfiguration = self.newDataset self.datasetId = dsetId self.designateAxes(var) self.nTimesteps = 1 self.timeRange = [ 0, self.nTimesteps, 0.0, 0.0 ] self.timeAxis = var.getTime() if self.timeAxis: self.nTimesteps = len( self.timeAxis ) if self.timeAxis else 1 try: comp_time_values = self.timeAxis.asComponentTime() t0 = comp_time_values[0].torel(self.referenceTimeUnits).value if (t0 < 0): self.referenceTimeUnits = self.timeAxis.units t0 = comp_time_values[0].torel(self.referenceTimeUnits).value dt = 0.0 if self.nTimesteps > 1: t1 = comp_time_values[-1].torel(self.referenceTimeUnits).value dt = (t1-t0)/(self.nTimesteps-1) self.timeRange = [ 0, self.nTimesteps, t0, dt ] except: values = self.timeAxis.getValue() t0 = values[0] if len(values) > 0 else 0 t1 = values[-1] if len(values) > 1 else t0 dt = ( values[1] - values[0] )/( len(values) - 1 ) if len(values) > 1 else 0 self.timeRange = [ 0, self.nTimesteps, t0, dt ] self.setParameter( "timeRange" , self.timeRange ) self.cdmsDataset.timeRange = self.timeRange self.cdmsDataset.referenceTimeUnits = self.referenceTimeUnits self.timeLabels = self.cdmsDataset.getTimeValues() timeData = args.get( 'timeData', [ self.cdmsDataset.timeRange[2], 0, False ] ) self.timeValue = cdtime.reltime( float(timeData[0]), self.referenceTimeUnits ) self.timeIndex = timeData[1] self.useTimeIndex = timeData[2] # print "Set Time [mid = %d]: %s, NTS: %d, Range: %s, Index: %d (use: %s)" % ( self.moduleID, str(self.timeValue), self.nTimesteps, str(self.timeRange), self.timeIndex, str(self.useTimeIndex) ) # print "Time Step Labels: %s" % str( self.timeLabels ) intersectedRoi = self.cdmsDataset.gridBounds intersectedRoi = self.getIntersectedRoi( cdms_var, intersectedRoi ) while( len(cdms_vars) ): cdms_var2 = cdms_vars.pop(0) if cdms_var2: iVar = iVar+1 self.addCDMSVariable( cdms_var2, iVar ) intersectedRoi = self.getIntersectedRoi( cdms_var2, intersectedRoi ) for iVarInputIndex in range( 2,5 ): cdms_var2 = self.getInputValue( "variable%d" % iVarInputIndex ) if cdms_var2: iVar = iVar+1 self.addCDMSVariable( cdms_var2, iVar ) intersectedRoi = self.getIntersectedRoi( cdms_var2, intersectedRoi ) self.generateOutput(roi=intersectedRoi) # if self.newDataset: self.addAnnotation( "datasetId", self.datasetId ) else: dset = self.getInputValue( "dataset" ) if dset: self.cdmsDataset = dset # dsetid = self.getAnnotation( "datasetId" ) # if dsetid: self.datasetId = dsetid dsetId = self.cdmsDataset.getDsetId() # self.newDataset = ( self.datasetId <> dsetId ) self.newLayerConfiguration = True # self.newDataset self.datasetId = dsetId ModuleStore.archiveCdmsDataset( self.datasetId, self.cdmsDataset ) self.timeRange = self.cdmsDataset.timeRange timeData = args.get( 'timeData', [ self.cdmsDataset.timeRange[2], 0, False ] ) self.timeValue = cdtime.reltime( float(timeData[0]), self.referenceTimeUnits ) self.timeIndex = timeData[1] self.useTimeIndex = timeData[2] self.timeLabels = self.cdmsDataset.getTimeValues() self.nTimesteps = self.timeRange[1] # print "Set Time: %s, NTS: %d, Range: %s, Index: %d (use: %s)" % ( str(self.timeValue), self.nTimesteps, str(self.timeRange), self.timeIndex, str(self.useTimeIndex) ) # print "Time Step Labels: %s" % str( self.timeLabels ) self.generateOutput()