2022-03-03 15:44:39 +01:00
import argparse
import configparser
import logging
2022-03-04 10:21:02 +01:00
import pathlib
2022-03-16 07:50:44 +01:00
from multiprocessing . pool import ThreadPool
2022-03-03 15:44:39 +01:00
2022-03-04 10:33:26 +01:00
import numpy as np
2022-03-03 15:44:39 +01:00
2022-03-04 10:21:02 +01:00
from . read_swash import ReadSwash
2022-03-03 15:44:39 +01:00
parser = argparse . ArgumentParser ( description = " Convert swash output to numpy " )
parser . add_argument ( " -v " , " --verbose " , action = " count " , default = 0 )
2022-03-29 09:38:11 +02:00
parser . add_argument ( " -c " , " --config " , default = " config.ini " )
2022-03-03 15:44:39 +01:00
args = parser . parse_args ( )
logging . basicConfig ( level = max ( ( 10 , 20 - 10 * args . verbose ) ) )
2022-03-03 15:52:31 +01:00
log = logging . getLogger ( " sws_npz " )
2022-03-03 15:44:39 +01:00
log . info ( " Starting sws -> npz converter " )
config = configparser . ConfigParser ( )
2022-03-29 09:38:11 +02:00
config . read ( args . config )
2022-03-03 15:44:39 +01:00
sws_out = pathlib . Path ( config . get ( " swash " , " out " ) )
inp = pathlib . Path ( config . get ( " post " , " inp " ) )
log . info ( f " Reading swash output from ' { sws_out } ' " )
2022-03-04 10:21:02 +01:00
rsws = ReadSwash ( )
2022-03-15 11:45:29 +01:00
np . save ( inp . joinpath ( " tsec " ) , rsws . read_time ( sws_out . joinpath ( " tsec.dat " ) ) )
np . save ( inp . joinpath ( " xp " ) , rsws . read_x ( sws_out . joinpath ( " xp.dat " ) ) )
2022-03-04 10:21:02 +01:00
2022-03-15 11:37:59 +01:00
var = {
" dep " : rsws . read_scalar ,
" botl " : rsws . read_const ,
" watl " : rsws . read_scalar ,
" vel " : rsws . read_vector ,
" press " : rsws . read_scalar ,
" zk " : rsws . read_scalar_lay ,
" velk " : rsws . read_vector_lay ,
2022-03-16 07:50:44 +01:00
" vz " : rsws . read_scalar_lay ,
2022-03-15 11:37:59 +01:00
}
2022-03-15 10:43:29 +01:00
inp . mkdir ( exist_ok = True )
2022-03-15 11:46:33 +01:00
with ThreadPool ( ) as pool :
2022-03-15 11:45:29 +01:00
log . info ( " Converting all data " )
2022-03-15 11:37:59 +01:00
pool . map (
2022-03-15 11:45:29 +01:00
lambda x : np . save (
2022-03-16 07:50:44 +01:00
inp . joinpath ( x [ 0 ] ) ,
x [ 1 ] ( sws_out . joinpath ( x [ 0 ] ) . with_suffix ( " .dat " ) ) ,
2022-03-15 11:37:59 +01:00
) ,
var . items ( ) ,
)