Changeset 3349 for nappy/trunk/nappy/contrib
- Timestamp:
- 09/02/08 21:07:03 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
nappy/trunk/nappy/contrib/aircraft/old_na_to_nc_with_aircraft.py
r3344 r3349 49 49 50 50 def cdms2na(ncfile, na_file_names, naVars={}, variables=None, nFilesOnly="no", 51 rule=None, ffi="automatic", spacer=" ", float Format="%g",51 rule=None, ffi="automatic", spacer=" ", float_format="%g", 52 52 rules=None, sizeLimit=None): 53 53 """ … … 118 118 119 119 builder=NAContentCollector(vars, globals, rule=rule, cdmsfile=cdmsfile) 120 #print builder.na Dict["X"]121 builtNADicts=[[builder.na Dict, builder.varIDs]]120 #print builder.na_dict["X"] 121 builtNADicts=[[builder.na_dict, builder.varIDs]] 122 122 if builder.varIDs==None: 123 123 msg="\nNo files created after variables parsed." … … 129 129 builder=NAContentCollector(builder.varBin, globals, rule=rule, cdmsfile=cdmsfile) 130 130 outputMessage=outputMessage+builder.outputMessage 131 if builder.varIDs!=None: builtNADicts.append([builder.na Dict, builder.varIDs])131 if builder.varIDs!=None: builtNADicts.append([builder.na_dict, builder.varIDs]) 132 132 133 133 # Return only filenames if only want to know them now. … … 210 210 newnamePlusLetter="%s-%.3d.na" % (newname[:-3], ivol) 211 211 fileList.append(newnamePlusLetter) 212 general.openNAFile(newnamePlusLetter, 'w', NADictCopy, spacer=spacer, float Format=floatFormat)212 general.openNAFile(newnamePlusLetter, 'w', NADictCopy, spacer=spacer, float_format=float_format) 213 213 msg="\nOutput files split on size limit: %s\nFilename used: %s" % (sizeLimit, newnamePlusLetter) 214 214 print msg … … 219 219 220 220 else: 221 general.openNAFile(newname, 'w', builtNADict, spacer=spacer, float Format=floatFormat)221 general.openNAFile(newname, 'w', builtNADict, spacer=spacer, float_format=float_format) 222 222 223 223 msg="\nWrote the following variables:"+"\n\t"+("\n\t".join(i[1][0])) … … 268 268 self.cdmsfile=cdmsfile 269 269 self.outputMessage=[] 270 self.na Dict={}270 self.na_dict={} 271 271 self.vars=vars 272 272 self.varIDs=None … … 281 281 self.varIDs=[[var.id for var in self.orderedVars],[var.id for var in auxVars], self.rankZeroVarIDs] 282 282 283 self.na Dict["NLHEAD"]="-999"283 self.na_dict["NLHEAD"]="-999" 284 284 285 285 #print [var.id for var in self.orderedVars] … … 291 291 self.defineGeneralHeader() 292 292 # Quick fudge 293 if self.na Dict["FFI"]==1001: self.naDict["X"]=self.naDict["X"][0]293 if self.na_dict["FFI"]==1001: self.na_dict["X"]=self.na_dict["X"][0] 294 294 295 295 … … 347 347 shape=bestVar.shape 348 348 ndims=len(shape) 349 self.na Dict["NIV"]=ndims349 self.na_dict["NIV"]=ndims 350 350 351 351 # Work out which File Format Index is appropriate 352 352 if ndims in (2,3,4): 353 self.na Dict["FFI"]=10+(ndims*1000)353 self.na_dict["FFI"]=10+(ndims*1000) 354 354 elif ndims>4: 355 355 raise "Cannot write variables defined against greater than 4 axes in NASA Ames format." 356 356 else: 357 if len(auxVars4NA)>0 or (self.na Dict.has_key("NAUXV") and self.naDict["NAUXV"]>0):358 self.na Dict["FFI"]=1010357 if len(auxVars4NA)>0 or (self.na_dict.has_key("NAUXV") and self.na_dict["NAUXV"]>0): 358 self.na_dict["FFI"]=1010 359 359 else: 360 self.na Dict["FFI"]=1001361 #print self.na Dict["FFI"]360 self.na_dict["FFI"]=1001 361 #print self.na_dict["FFI"] 362 362 axes=bestVar.getAxisList() 363 363 … … 439 439 associated metadata. 440 440 """ 441 self.na Dict["NV"]=len(vars)442 self.na Dict["VNAME"]=[]443 self.na Dict["VMISS"]=[]444 self.na Dict["VSCAL"]=[]445 self.na Dict["V"]=[]441 self.na_dict["NV"]=len(vars) 442 self.na_dict["VNAME"]=[] 443 self.na_dict["VMISS"]=[] 444 self.na_dict["VSCAL"]=[] 445 self.na_dict["V"]=[] 446 446 for var in vars: 447 447 name=getBestName(var) 448 self.na Dict["VNAME"].append(name)448 self.na_dict["VNAME"].append(name) 449 449 miss=getMissingValue(var) 450 450 if type(miss) not in (float, int, long): miss=miss[0] 451 self.na Dict["VMISS"].append(miss)452 #print self.na Dict["VMISS"]453 self.na Dict["VSCAL"].append(1)451 self.na_dict["VMISS"].append(miss) 452 #print self.na_dict["VMISS"] 453 self.na_dict["VSCAL"].append(1) 454 454 # AND THE ARRAY 455 455 # Populate the variable list 456 456 ######## NOTE - might not have to do this ##### 457 457 ######## It might handle writing from a Numeric array ######## 458 self.na Dict["V"].append(var._data)458 self.na_dict["V"].append(var._data) 459 459 #listOfListsCreator(inlist, var.shape) 460 460 #arrayToList(var, inlist) 461 461 462 if not self.na Dict.has_key("X"):463 self.na Dict["NXDEF"]=[]464 self.na Dict["NX"]=[]462 if not self.na_dict.has_key("X"): 463 self.na_dict["NXDEF"]=[] 464 self.na_dict["NX"]=[] 465 465 # Create independent variable information 466 466 #print var.id, var.getAxis(0) 467 467 self.ax0=var.getAxis(0) 468 self.na Dict["X"]=[list(self.ax0._data_)]469 self.na Dict["XNAME"]=[getBestName(self.ax0)]468 self.na_dict["X"]=[list(self.ax0._data_)] 469 self.na_dict["XNAME"]=[getBestName(self.ax0)] 470 470 if len(self.ax0)==1: 471 self.na Dict["DX"]=[0]471 self.na_dict["DX"]=[0] 472 472 else: 473 473 incr=self.ax0[1]-self.ax0[0] 474 474 # Set default increment as gap between first two 475 self.na Dict["DX"]=[incr]475 self.na_dict["DX"]=[incr] 476 476 # Now overwrite it as zero if non-uniform interval in axis 477 477 for i in range(1, len(self.ax0)): 478 478 if (self.ax0[i]-self.ax0[i-1])!=incr: 479 self.na Dict["DX"]=[0]479 self.na_dict["DX"]=[0] 480 480 break 481 481 … … 490 490 associated metadata. 491 491 """ 492 self.na Dict["NAUXV"]=len(auxVars)493 self.na Dict["ANAME"]=[]494 self.na Dict["AMISS"]=[]495 self.na Dict["ASCAL"]=[]496 self.na Dict["A"]=[]492 self.na_dict["NAUXV"]=len(auxVars) 493 self.na_dict["ANAME"]=[] 494 self.na_dict["AMISS"]=[] 495 self.na_dict["ASCAL"]=[] 496 self.na_dict["A"]=[] 497 497 for var in auxVars: 498 498 name=getBestName(var) 499 self.na Dict["ANAME"].append(name)499 self.na_dict["ANAME"].append(name) 500 500 miss=getMissingValue(var) 501 501 if type(miss)!=float: miss=miss[0] 502 self.na Dict["AMISS"].append(miss)503 self.na Dict["ASCAL"].append(1)502 self.na_dict["AMISS"].append(miss) 503 self.na_dict["ASCAL"].append(1) 504 504 # AND THE ARRAY 505 505 # Populate the variable list 506 506 ######## NOTE - might not have to do this ##### 507 507 ######## It might handle writing from a Numeric array ######## 508 self.na Dict["A"].append(var._data)508 self.na_dict["A"].append(var._data) 509 509 #listOfListsCreator(inlist, var.shape) 510 510 #arrayToList(var, inlist) … … 518 518 """ 519 519 length=len(axis) 520 self.na Dict["NX"].append(length)521 self.na Dict["XNAME"].append(getBestName(axis))520 self.na_dict["NX"].append(length) 521 self.na_dict["XNAME"].append(getBestName(axis)) 522 522 # If only one item in axis values 523 523 if length<2: 524 self.na Dict["DX"].append(0)525 self.na Dict["NXDEF"].append(length)526 self.na Dict["X"].append(list(axis._data_))524 self.na_dict["DX"].append(0) 525 self.na_dict["NXDEF"].append(length) 526 self.na_dict["X"].append(list(axis._data_)) 527 527 return 528 528 … … 530 530 for i in range(1, length): 531 531 if (axis[i]-axis[i-1])!=incr: 532 self.na Dict["DX"].append(0)533 self.na Dict["NXDEF"].append(length)534 self.na Dict["X"].append(list(axis._data_))532 self.na_dict["DX"].append(0) 533 self.na_dict["NXDEF"].append(length) 534 self.na_dict["X"].append(list(axis._data_)) 535 535 break 536 536 else: 537 537 maxLength=length 538 538 if length>3: maxLength=3 539 self.na Dict["DX"].append(incr)540 self.na Dict["NXDEF"].append(maxLength)541 self.na Dict["X"].append(axis[:maxLength])539 self.na_dict["DX"].append(incr) 540 self.na_dict["NXDEF"].append(maxLength) 541 self.na_dict["X"].append(axis[:maxLength]) 542 542 return 543 543 … … 573 573 match=re.match(r"(.*)\s+\(ONAME from NASA Ames file\);\s+(.*)\s+\(ORG from NASA Ames file\)\.", self.globals[key]) 574 574 if match: 575 self.na Dict["ONAME"]=match.groups()[0]576 self.na Dict["ORG"]=match.groups()[1]575 self.na_dict["ONAME"]=match.groups()[0] 576 self.na_dict["ORG"]=match.groups()[1] 577 577 else: 578 self.na Dict["ONAME"]=self.globals[key]579 self.na Dict["ORG"]=self.globals[key]578 self.na_dict["ONAME"]=self.globals[key] 579 self.na_dict["ORG"]=self.globals[key] 580 580 581 581 # NOte: should probably do the following search and replace on all string lines 582 self.na Dict["ONAME"]=self.naDict["ONAME"].replace("\n", " ")583 self.na Dict["ORG"]=self.naDict["ORG"].replace("\n", " ")582 self.na_dict["ONAME"]=self.na_dict["ONAME"].replace("\n", " ") 583 self.na_dict["ORG"]=self.na_dict["ORG"].replace("\n", " ") 584 584 585 585 elif key=="comment": … … 612 612 613 613 elif key=="first_valid_date_of_data": 614 self.na Dict["DATE"]=self.globals[key]614 self.na_dict["DATE"]=self.globals[key] 615 615 616 616 elif key in ("Conventions", "references"): … … 618 618 self.extra_comments[2].append("%s: %s" % (key, self.globals[key])) 619 619 else: 620 self.na Dict[globalmap[key]]=self.globals[key]620 self.na_dict[globalmap[key]]=self.globals[key] 621 621 else: 622 622 self.extra_comments[2].append("%s: %s" % (key, self.globals[key])) … … 741 741 SCOM_cleaned.append(line) 742 742 743 self.na Dict["NCOM"]=NCOM_cleaned744 self.na Dict["NNCOML"]=len(self.naDict["NCOM"])#+hiddenNewLineCount1745 self.na Dict["SCOM"]=SCOM_cleaned746 self.na Dict["NSCOML"]=len(self.naDict["SCOM"])#+hiddenNewLineCount2743 self.na_dict["NCOM"]=NCOM_cleaned 744 self.na_dict["NNCOML"]=len(self.na_dict["NCOM"])#+hiddenNewLineCount1 745 self.na_dict["SCOM"]=SCOM_cleaned 746 self.na_dict["NSCOML"]=len(self.na_dict["SCOM"])#+hiddenNewLineCount2 747 747 return 748 748 … … 755 755 # Check if DATE field previously known in NASA Ames file 756 756 time_now=time.strftime("%Y %m %d", time.localtime(time.time())).split() 757 if not self.na Dict.has_key("RDATE"):758 self.na Dict["RDATE"]=time_now757 if not self.na_dict.has_key("RDATE"): 758 self.na_dict["RDATE"]=time_now 759 759 760 760 if self.ax0.isTime(): … … 763 763 (unit, start_date)=re.match("(\w+)\s+?since\s+?(\d+-\d+-\d+)", self.ax0.units).groups() 764 764 comptime=cdtime.s2c(start_date) 765 first_day=comptime.add(self.na Dict["X"][0][0], getattr(cdtime, unit.capitalize()))766 self.na Dict["DATE"]=string.replace(str(first_day).split(" ")[0], "-", " ").split()765 first_day=comptime.add(self.na_dict["X"][0][0], getattr(cdtime, unit.capitalize())) 766 self.na_dict["DATE"]=string.replace(str(first_day).split(" ")[0], "-", " ").split() 767 767 except: 768 768 msg="Nappy Warning: Could not get the first date in the file. You will need to manually edit the output file." 769 769 print msg 770 770 self.outputMessage.append(msg) 771 self.na Dict["DATE"]=("DATE", "NOT", "KNOWN")771 self.na_dict["DATE"]=("DATE", "NOT", "KNOWN") 772 772 else: 773 if not self.na Dict.has_key("DATE"):773 if not self.na_dict.has_key("DATE"): 774 774 msg="Nappy Warning: Could not get the first date in the file. You will need to manually edit the output file." 775 775 print msg 776 776 self.outputMessage.append(msg) 777 self.na Dict["DATE"]=("DATE", "NOT", "KNOWN")778 self.na Dict["IVOL"]=1779 self.na Dict["NVOL"]=1777 self.na_dict["DATE"]=("DATE", "NOT", "KNOWN") 778 self.na_dict["IVOL"]=1 779 self.na_dict["NVOL"]=1 780 780 for key in header_items.keys(): 781 self.na Dict[key]=header_items[key]781 self.na_dict[key]=header_items[key] 782 782 return 783 783
Note: See TracChangeset
for help on using the changeset viewer.