Compare commits
No commits in common. "f92bd36a76ce27341e3656d64302b78ff68793b7" and "2d7358c0626a8743deb7b057641e1d8d3497f966" have entirely different histories.
f92bd36a76
...
2d7358c062
|
|
@ -8,7 +8,7 @@ import numpy as np
|
||||||
import ucf
|
import ucf
|
||||||
import configparser
|
import configparser
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(description='Packs UCF MPIIO data into a tar archive. The single output file is split into multiple files due to file size restrictions.')
|
parser = argparse.ArgumentParser(description='Reads an ucf.tar archive, downsamples it and saves it to a new ucf.tar archive. Can be used as a pipe.')
|
||||||
parser.add_argument('indir', metavar='dirin', help='input directory')
|
parser.add_argument('indir', metavar='dirin', help='input directory')
|
||||||
parser.add_argument('iseq', metavar='iseq', help='sequence number')
|
parser.add_argument('iseq', metavar='iseq', help='sequence number')
|
||||||
parser.add_argument('base', metavar='base', help='filebase to be archived: "uvwp" or "scal"')
|
parser.add_argument('base', metavar='base', help='filebase to be archived: "uvwp" or "scal"')
|
||||||
|
|
@ -52,7 +52,7 @@ if verbose:
|
||||||
ftar = tarfile.open(name=file_out,mode='w',pax_headers=tarfile.USTAR_FORMAT)
|
ftar = tarfile.open(name=file_out,mode='w',pax_headers=tarfile.USTAR_FORMAT)
|
||||||
|
|
||||||
def transform_filename(filename,iseq):
|
def transform_filename(filename,iseq):
|
||||||
return os.path.basename(filename).replace('_{:04d}'.format(iseq),'')
|
return os.path.basename(file_in).replace('_{:04d}'.format(iseq),'')
|
||||||
|
|
||||||
# Parse parameters to construct file headers, then add it to tar
|
# Parse parameters to construct file headers, then add it to tar
|
||||||
file_in = '{}/parameters_{:04d}.asc'.format(dir_in,iseq)
|
file_in = '{}/parameters_{:04d}.asc'.format(dir_in,iseq)
|
||||||
|
|
|
||||||
|
|
@ -1,66 +0,0 @@
|
||||||
#!/usr/bin/env python3
|
|
||||||
import sys
|
|
||||||
import io
|
|
||||||
import os
|
|
||||||
import tarfile
|
|
||||||
import argparse
|
|
||||||
import numpy as np
|
|
||||||
import ucf
|
|
||||||
import configparser
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(description='Unpacks an UCF tar file as MPIIO input file.')
|
|
||||||
parser.add_argument('infile', metavar='filein', help='input file')
|
|
||||||
parser.add_argument('iseq', metavar='iseq', help='sequence number')
|
|
||||||
#parser.add_argument('base', metavar='base', help='filebase to be archived: "uvwp" or "scal"')
|
|
||||||
parser.add_argument("-o", "--outdir", metavar='directory',nargs='?', default=None, help="name of the output directory", action="store")
|
|
||||||
parser.add_argument("-v", "--verbose", help="activate verbose output", action="store_true")
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
file_in = args.infile
|
|
||||||
iseq = int(args.iseq)
|
|
||||||
#base = args.base
|
|
||||||
verbose = args.verbose
|
|
||||||
|
|
||||||
if args.outdir is None:
|
|
||||||
dir_out = './'
|
|
||||||
else:
|
|
||||||
dir_out = args.outdir
|
|
||||||
|
|
||||||
# Open tar file for input
|
|
||||||
ftar = tarfile.open(name=file_in,mode='r')
|
|
||||||
|
|
||||||
# Extract files
|
|
||||||
def transform_filename(filename,iseq):
|
|
||||||
return filename.replace('.','_{:04d}.'.format(iseq))
|
|
||||||
|
|
||||||
files_all = ftar.getnames()
|
|
||||||
#files_aux = ('parameters.asc','proc.bin','grid.bin','particles.bin')
|
|
||||||
files_aux = [s for s in files_all if not s.startswith('uvwp') or s.startswith('scal')]
|
|
||||||
for files in files_aux:
|
|
||||||
print(files)
|
|
||||||
ucf_bytes = ftar.extractfile(files).read()
|
|
||||||
file_out = dir_out+transform_filename(files,iseq)
|
|
||||||
fidw = open(file_out,'wb')
|
|
||||||
fidw.write(ucf_bytes)
|
|
||||||
fidw.close()
|
|
||||||
|
|
||||||
files_data = [s for s in files_all if s.startswith('uvwp') or s.startswith('scal')]
|
|
||||||
base = files_data[0].split('.')[0]
|
|
||||||
iproc = 0
|
|
||||||
file_out = dir_out+'/'+base+'_{:04d}.bin'.format(iseq)
|
|
||||||
fidw = open(file_out,'wb')
|
|
||||||
for files in files_data:
|
|
||||||
print(files)
|
|
||||||
sproc = files.split('.')[1]
|
|
||||||
if iproc!=int(sproc):
|
|
||||||
raise ValueError('Invalid file order in tar: {}, {}'.format(iproc,files))
|
|
||||||
ucf_bytes = ftar.extractfile(files).read()
|
|
||||||
if iproc==0:
|
|
||||||
fidw.write(ucf_bytes)
|
|
||||||
else:
|
|
||||||
fidw.write(ucf_bytes[64:])
|
|
||||||
iproc += 1
|
|
||||||
fidw.close()
|
|
||||||
|
|
||||||
# Close tar file
|
|
||||||
ftar.close()
|
|
||||||
Loading…
Reference in New Issue