spectral_geomPack is now formatting depending on necessary digits (via additional header information)

This commit is contained in:
Taymor El Achkar 2012-05-02 13:44:12 +00:00
parent e75fc26942
commit 0cb983606f
1 changed files with 14 additions and 6 deletions

View File

@ -15,6 +15,8 @@ def writeKey(outType, begin, counter):
c=str(begin)+'\n' c=str(begin)+'\n'
file['output'].write(c) file['output'].write(c)
# ----------------------------- # -----------------------------
class extendedOption(Option): class extendedOption(Option):
# ----------------------------- # -----------------------------
@ -51,7 +53,7 @@ parser.add_option('-p','--pack', dest='pack', action='store_true', \
parser.add_option('-u','--unpack', dest='unpack', action='store_true', \ parser.add_option('-u','--unpack', dest='unpack', action='store_true', \
help='unpack input file [%default]') help='unpack input file [%default]')
parser.add_option('-l','--linelength', dest='lineLength',type='int', nargs=1, \ parser.add_option('-l','--linelength', dest='lineLength',type='int', nargs=1, \
help='length of line, 0 for auto (resolution[0]) [%default]') help='length of line, leave blank for auto (FPs in x direction)')
parser.set_defaults(pack = False) parser.set_defaults(pack = False)
@ -74,6 +76,7 @@ else:
# ------------------------------------------ loop over input files --------------------------------------- # ------------------------------------------ loop over input files ---------------------------------------
for file in files: for file in files:
digits=2
counter = 1 counter = 1
begin = -1 begin = -1
outType = '' outType = ''
@ -86,6 +89,7 @@ for file in files:
currentLine+=1 currentLine+=1
if('head' in line): headNumber=int(words[0])+1 if('head' in line): headNumber=int(words[0])+1
if(currentLine<=headNumber): if(currentLine<=headNumber):
if('maxgraincount'==words[0].lower()): digits = 1+int(math.log10(int(words[1])))
if(words[0].lower()=='resolution' and words[1].lower()=='a' and options.lineLength==0): if(words[0].lower()=='resolution' and words[1].lower()=='a' and options.lineLength==0):
options.lineLength = int(words[2].lower()) options.lineLength = int(words[2].lower())
file['output'].write(line) file['output'].write(line)
@ -98,7 +102,7 @@ for file in files:
for word in line.split(): for word in line.split():
wordsWritten += 1 wordsWritten += 1
file['output'].write(word+{True:'\n',False:' '}[wordsWritten%options.lineLength == 0]) # newline every options.linelength words file['output'].write(word.zfill(digits)+{True:'\n',False:' '}[wordsWritten%options.lineLength == 0]) # newline every options.linelength words
if options.pack: # packing the geometry file if options.pack: # packing the geometry file
numbers=line.split() numbers=line.split()
@ -109,7 +113,7 @@ for file in files:
if current == last+1 and current==begin+counter: if current == last+1 and current==begin+counter:
counter+=1 counter+=1
outType = 'range' outType = 'range'
elif current == begin: elif current == begin and current == last:
counter+=1 counter+=1
outType = 'copy' outType = 'copy'
else: else:
@ -118,7 +122,11 @@ for file in files:
outType= 'none' outType= 'none'
begin = current begin = current
writeKey(outType, begin, counter) # just for packing (last line), outType not defined for unpacking writeKey(outType, begin, counter) # just for packing (last line), outType not defined for unpacking
file['output'].close() file['output'].close()
file['input'].close() file['input'].close()
os.rename(file['name']+'_tmp',file['name']) os.rename(file['name']+'_tmp',file['name'])