def save_results(self): if self.nc is None: return output_file = self.get_output() if output_file is None: print "No output file selected; cannot proceed." return print "Saving the mask to %s" % output_file nc = NC(output_file, 'w') nc.createDimension('x', self.x.size) nc.createDimension('y', self.y.size) x = nc.createVariable("x", 'f8', ('x',)) y = nc.createVariable("y", 'f8', ('y',)) mask = nc.createVariable("ftt_mask", 'i4', ('y', 'x')) mask.long_name = "Drainage basin area for regional modeling" x_orig = self.nc.variables['x'] y_orig = self.nc.variables['y'] for var, old_var in zip([x,y], [x_orig, y_orig]): for attr in old_var.ncattrs(): var.setncattr(attr, old_var.getncattr(attr)) x[:] = self.x y[:] = self.y nc.variables['ftt_mask'][:] = (self.mask == 2) nc.close() print "Done."
thk_var.long_name = "land ice thickness" thk_var.standard_name = "land_ice_thickness" thk_var.grid_mapping = mapping_var thk_var[:] = np.flipud(result) rho_var = nc.createVariable("rho", 'b', dimensions=("y", "x"),fill_value=fill_value) rho_var.long_name = "data density integer mask" rho_var.flag_values = "0b, 1b" rho_var.flag_meanings = "no_data data" rho_var.grid_mapping = mapping_var rho_var[:] = np.flipud(rho) x[:] = easting y[:] = northing # Save the projection information: nc.projection = proj4_str nc.Conventions = "CF-1.5" # writing global attributes import time script_command = ' '.join([time.ctime(), ':', __file__.split('/')[-1], ' '.join([str(l) for l in args])]) nc.history = script_command print "writing to %s ...\n" % out_filename print "run nc2cdo.py to add lat/lon variables" nc.close()
bheatflx_var[:] = qgeo * np.ones_like(x) # generate (somewhat) reasonable acab acab_max = 2.5 # m/a acab_min = -3.0 # m/a np.linspace(acab_max, acab_min, 100) acab = np.ones_like(x) acab[:5] = 0 acab[5:105] = np.linspace(acab_max, acab_min, 100) acab[105:] = acab_min acab_var = nc.createVariable("climatic_mass_balance", 'f', dimensions=("x", )) acab_var.units = "m year-1" acab_var.standard_name = "land_ice_surface_specific_mass_balance" acab_var[:] = acab # Set boundary conditions # ------------------------------------------------------------------------------ # # (A) Surface temperature for temperature equation bc Tma = -6.0 # degC, mean annual air temperature at Tarfala zcts = 1400 # m a.s.l.; altitude where CTS is at the surface artm = np.zeros_like(x) artm[(topg + thk) < zcts] = Tma artm_var = nc.createVariable("ice_surface_temp", 'f', dimensions=("x", )) artm_var.units = "deg_C" artm_var[:] = artm nc.close()
npz_vars[var_name]=data print data.shape out_var[:,:,:]=data[...] for the_att in old_var.ncattrs(): setattr(out_var,the_att,getattr(old_var,the_att).strip()) for var_name in ['x','y','z']: old_var=one_d[var_name] for the_att in old_var.ncattrs(): new_var=out_vars[var_name] setattr(new_var,the_att,getattr(old_var,the_att)) nc_out.description='subset of BOMEX run created with make_subset.py' nc_out.in_file=in_file nc_in.close() nc_out.close() var_descrip={'W':{'long_name':'vertical velocity','units':'m/s'}, 'TABS':{'long_name':'temperature','units':'K'}, 'p':{'long_name':'pressure','units':'hPa'}, 'QV':{'long_name':'vapor mixing ratio','units':'g/kg'}, 'z':{'long_name':'height','units':'m'}, 'x':{'long_name':'xcoord','units':'m'}, 'y':{'long_name':'ycoord','units':'m'}, } var__file="""output from SAM LES run BOMEX_256x256x150_25m_20m_2s_16_0000009240.nc written by make_sub_set.py on 2012/Jan/30""" npz_vars['var_descrip']=var_descrip
if dim_name is None: dim_name='dim_%d' % dim_length try: ncfile.createDimension(dim_name,dim_length) except: pass return dim_name def add_var(ncfile,var_name,var_val): the_dim='dim_%d' % var_val.shape[0] new_var=ncfile.createVariable(var_name,var_val.dtype,(the_dim,'var_cols')) new_var[:,:]=var_val[...] return new_var dimnames=[add_dim(ncfile,item[0]) for item in keep_arrays] ncfile.createDimension('var_cols',6) varnames=[add_var(ncfile,item[2],item[1]) for item in keep_arrays] col_names=array_list[0][2].dtype.names col_units=[array_list[0][2].dtype.fields[name][2] for name in col_names] col_units=[item.split('_')[1] for item in col_units] ncfile.units=','.join(col_units) ncfile.col_names=','.join(col_names) ## array_lengths.sort() ## array_lengths=set(array_lengths) ncfile.close()