Skip to content

Commit

Permalink
#2285 Restructure python scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
Howard Soh committed Apr 7, 2023
1 parent b1324b2 commit 48c10b4
Show file tree
Hide file tree
Showing 16 changed files with 347 additions and 425 deletions.
8 changes: 3 additions & 5 deletions scripts/python/examples/read_ascii_mpr.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import pandas as pd
import os
import sys
from met.mprbase import mpr_data


########################################################################

Expand All @@ -21,10 +22,7 @@
print("Input File:\t" + repr(input_file))

# Read MPR lines, skipping the header row and first column.
mpr_data = pd.read_csv(input_file, header=None,
delim_whitespace=True, keep_default_na=False,
skiprows=1, usecols=range(1,37),
dtype=str).values.tolist()
mpr_data = mpr_data.read_mpr(input_file)
print("Data Length:\t" + repr(len(mpr_data)))
print("Data Type:\t" + repr(type(mpr_data)))
except NameError:
Expand Down
6 changes: 3 additions & 3 deletions scripts/python/examples/read_ascii_numpy.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import os
import sys
from met.dataplane import load_txt, get_grid_metadata
from met.dataplane import dataplane

###########################################

Expand All @@ -19,8 +19,8 @@
input_file = os.path.expandvars(sys.argv[1])
data_name = sys.argv[2]

met_data = load_txt(input_file, data_name)
met_data = dataplane.load_txt(input_file, data_name)

attrs = get_grid_metadata(data_name)
attrs = dataplane.get_grid_metadata(data_name)

print("Attributes:\t" + repr(attrs))
6 changes: 3 additions & 3 deletions scripts/python/examples/read_ascii_numpy_grid.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import os
import sys
from met.dataplane import load_txt, get_grid_metadata_from_env
from met.dataplane import dataplane

###########################################

Expand All @@ -19,11 +19,11 @@
input_file = os.path.expandvars(sys.argv[1])
data_name = sys.argv[2]

met_data = load_txt(input_file, data_name)
met_data = dataplane.load_txt(input_file, data_name)

## create the metadata dictionary from the environment variable,
## Default env_name = 'PYTHON_GRID'

attrs = get_grid_metadata_from_env(data_name)
attrs = dataplane.get_grid_metadata_from_env(data_name)

print("Attributes:\t" + repr(attrs))
33 changes: 14 additions & 19 deletions scripts/python/examples/read_ascii_point.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import pandas as pd
import os
import sys

sys.path.append(os.path.abspath(os.path.dirname(__file__))) # for standalone
from met_point_obs import convert_point_data
from met.point import met_point_tools as tools

########################################################################

Expand All @@ -14,20 +12,22 @@
## load the data into the numpy array
##

if len(sys.argv) < 2:
arg_cnt = len(sys.argv)
if arg_cnt < 2:
print("ERROR: read_ascii_point.py -> Missing an input file.")
sys.exit(1)

do_convert_to_met_point_data = False
do_convert = False
last_index = 2
if len(sys.argv) > last_index:
if sys.argv[2].lower() == "do_convert" or sys.argv[2].lower() == "convert":
do_convert_to_met_point_data = True
if arg_cnt > last_index:
opt_convert = sys.argv[2]
if opt_convert.lower() == "do_convert" or opt_convert.lower() == "convert":
do_convert = True
last_index += 1

if last_index < len(sys.argv):
print(" INFO: read_ascii_point.py -> Too many argument, ignored {a}.".format(
a=' '.join(sys.argv[last_index:])))
if last_index < arg_cnt:
print(" INFO: read_ascii_point.py -> Too many argument, ignored {o}.".format(
o=' '.join(sys.argv[last_index:])))

# Read the input file as the first argument
input_file = os.path.expandvars(sys.argv[1])
Expand All @@ -47,19 +47,14 @@
# (10) string: QC_String
# (11) numeric: Observation_Value

point_data = pd.read_csv(input_file, header=None, delim_whitespace=True, keep_default_na=False,
names=['typ', 'sid', 'vld', 'lat', 'lon', 'elv', 'var', 'lvl', 'hgt', 'qc', 'obs'],
dtype={'typ':'str', 'sid':'str', 'vld':'str', 'var':'str', 'qc':'str'}).values.tolist()
point_data = tools.read_text_point_obs(input_file)
print(" point_data: Data Length:\t" + repr(len(point_data)))
print(" point_data: Data Type:\t" + repr(type(point_data)))
if do_convert_to_met_point_data:
met_point_data = convert_point_data(point_data)
if do_convert:
met_point_data = tools.convert_point_data(point_data)
print(" met_point_data: Data Type:\t" + repr(type(met_point_data)))
except FileNotFoundError:
print(f"The input file {input_file} does not exist")
sys.exit(1)
except Name`Error:
print(f"Can't find the input file {input_file}")
sys.exit(1)

########################################################################
6 changes: 3 additions & 3 deletions scripts/python/examples/read_ascii_xarray.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import os
import sys
import xarray as xr
from met.dataplane import load_txt, get_grid_metadata
from met.dataplane import dataplane

###########################################

Expand All @@ -20,15 +20,15 @@
input_file = os.path.expandvars(sys.argv[1])
data_name = sys.argv[2]

met_data = load_txt(input_file, data_name)
met_data = dataplane.load_txt(input_file, data_name)

###########################################

##
## create the metadata dictionary
##

attrs = get_grid_metadata(data_name)
attrs = dataplane.get_grid_metadata(data_name)

print("Attributes:\t" + repr(attrs))

Expand Down
66 changes: 16 additions & 50 deletions scripts/python/examples/read_met_point_obs.py
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
#!/usr/bin/env python3
'''
Created on Nov 10, 2021
Expand All @@ -12,78 +11,45 @@
python3 read_met_point_obs.py <space_separated_text_file>
<space_separated_text_file>: 11 columns
'typ', 'sid', 'vld', 'lat', 'lon', 'elv', 'var', 'lvl', 'hgt', 'qc', 'obs'
string columns: 'typ', 'sid', 'vld', 'var', , 'qc'
numeric columns 'lat', 'lon', 'elv', 'lvl', 'hgt', 'qc', 'obs'
python3 read_met_point_obs.py <space_separated_text_file>
string columns: 'typ', 'sid', 'vld', 'var', , 'qc'
numeric columns: 'lat', 'lon', 'elv', 'lvl', 'hgt', 'qc', 'obs'
'''

import os
import sys
from datetime import datetime

met_base_dir = os.getenv('MET_BASE',None)
if met_base_dir is not None:
sys.path.append(os.path.join(met_base_dir, 'python'))

from met_point_obs import met_point_obs, sample_met_point_obs
from met_point_obs_nc import nc_point_obs
from met.point import met_point_tools
from pyembed.python_embedding import pyembed_tools

DO_PRINT_DATA = False
ARG_PRINT_DATA = 'show_data'
DO_PRINT_DATA = ARG_PRINT_DATA == sys.argv[-1]

start_time = datetime.now()

prompt = met_point_obs.get_prompt()
point_obs_data = None
if len(sys.argv) == 1 or ARG_PRINT_DATA == sys.argv[1]:
point_obs_data = sample_met_point_obs()
input_name = sys.argv[1]
prompt = met_point_tools.get_prompt()
if len(sys.argv) == 1 or ARG_PRINT_DATA == input_name:
point_obs_data = met_point_tools.get_sample_met_point_obs()
point_obs_data.read_data([])
elif met_point_obs.is_python_prefix(sys.argv[1]):
import importlib.util

print("{p} Python Script:\t".format(p=prompt) + repr(sys.argv[0]))
print("{p} User Command:\t".format(p=prompt) + repr(' '.join(sys.argv[2:])))

pyembed_module_name = sys.argv[2]
sys.argv = sys.argv[1:]

# append user script dir to system path
pyembed_dir, pyembed_file = os.path.split(pyembed_module_name)
if pyembed_dir:
sys.path.insert(0, pyembed_dir)

if not pyembed_module_name.endswith('.py'):
pyembed_module_name += '.py'
os.environ[met_point_obs.MET_ENV_RUN] = "TRUE"

user_base = os.path.basename(pyembed_module_name).replace('.py','')

spec = importlib.util.spec_from_file_location(user_base, pyembed_module_name)
met_in = importlib.util.module_from_spec(spec)
spec.loader.exec_module(met_in)

met_point_obs = met_in.met_point_obs
print("met_point_obs: ", met_point_obs)
met_point_data = met_in.met_point_data
print("met_point_data: ", met_point_data)
#print(hasattr("met_in: ", dir(met_in)))
#met_point_data = met_point_obs.get_point_data()
#met_point_data = None if met_in.get('met_point_data', None) else met_in.met_point_data
#met_data = None if met_in.get('met_data', None) else met_in.met_data
print(met_point_data)
elif met_point_tools.is_python_prefix(input_name):
point_obs_data = pyembed_tools.call_python(sys.argv)
else:
netcdf_filename = sys.argv[1]
netcdf_filename = os.path.expandvars(input_name)
args = [ netcdf_filename ]
#args = { 'nc_name': netcdf_filename }
point_obs_data = nc_point_obs()
point_obs_data = met_point_tools.get_nc_point_obs()
point_obs_data.read_data(point_obs_data.get_nc_filename(args))

if point_obs_data is not None:
met_point_data = point_obs_data.get_point_data()
met_point_data['met_point_data'] = point_obs_data
print("met_point_data: ", met_point_data)
print(met_point_data)

if DO_PRINT_DATA or ARG_PRINT_DATA == sys.argv[-1]:
if DO_PRINT_DATA:
point_obs_data.dump()

run_time = datetime.now() - start_time
Expand Down
Loading

0 comments on commit 48c10b4

Please sign in to comment.