Skip to content

Commit ff4a519

Browse files
EliEli
authored andcommitted
Convert nudging.py to standard logging idiom
1 parent 714ac8e commit ff4a519

1 file changed

Lines changed: 35 additions & 28 deletions

File tree

schimpy/nudging.py

Lines changed: 35 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@
2222
import time as timer
2323
from vtools.data.vtime import hours, days
2424
import click
25-
26-
log_file = "log_nudging.out"
25+
from pathlib import Path
26+
from schimpy.logging_config import resolve_loglevel, configure_logging
27+
import logging
28+
logger = logging.getLogger(__name__)
2729

2830

2931
class Nudging(object):
@@ -41,7 +43,7 @@ def read_yaml(self):
4143
read yaml and load mesh grid
4244
"""
4345

44-
write_to_log("---read_yaml---\n")
46+
logger.info("---read_yaml---")
4547

4648
with open(self.input) as file:
4749
info = yaml.load(file, Loader=yaml.FullLoader)
@@ -116,7 +118,7 @@ def create_nudging(self, create_file=True):
116118

117119
def organize_nudging(self, weights_comb, values_comb, imap_comb):
118120

119-
write_to_log("---organize_nudging---\n")
121+
logger.info("---organize_nudging---")
120122

121123
weights_list = [] # dimension [region, var, node]
122124
values_list = [] # dimensino [region, var, time, map_node, nlevel]
@@ -200,7 +202,7 @@ def concatenate_nudge(
200202
self, weights_var, values_var, imap_var, var_newlist, create_file=True
201203
):
202204

203-
write_to_log("---concatenate_nudge---\n")
205+
logger.info("---concatenate_nudge---")
204206
if len(var_newlist) == 0:
205207
print("No new variables to merge. Exiting..")
206208
return
@@ -345,7 +347,7 @@ def create_region_nudging(self, region_info):
345347

346348
def gen_nudge_3dfield(self, region_info):
347349

348-
write_to_log("---gen_nudge_3dfield---\n")
350+
logger.info("---gen_nudge_3dfield---")
349351

350352
rjunk = 9998 # !Define junk value for sid; the test is abs()>rjunk
351353
# used to check area ratios (m) /it used to be 1.e-2 when degree was used as distance.
@@ -417,7 +419,7 @@ def gen_nudge_3dfield(self, region_info):
417419
datetime.date(istart_year, istart_mon, istart_day)
418420
- self.start_date.date()
419421
).days + d
420-
write_to_log("Time out (days)=%d\n" % day)
422+
logger.info("Time out (days)=%d", day)
421423

422424
ncfile = f'{ncfile1}{date.strftime("%Y%m%d")}.nc'
423425
ncdata = xr.open_dataset(ncfile)
@@ -477,7 +479,7 @@ def gen_nudge_3dfield(self, region_info):
477479
continue
478480

479481
irecout2 += 1
480-
write_to_log("irecount: %d\n" % irecout)
482+
logger.debug("irecount: %d", irecout)
481483

482484
# if 'temp' in var_list:
483485
temp = (
@@ -535,7 +537,7 @@ def gen_nudge_3dfield(self, region_info):
535537
wetj = wetij[1]
536538

537539
if wetij[0].size == 0:
538-
write_to_log("no 3dfield data available for: %s\n" % str(ctime))
540+
logger.info("no 3dfield data available for: %s", ctime)
539541
salt = -9999.0 * np.ones_like(salt)
540542
temp = -9999.0 * np.ones_like(temp)
541543
else:
@@ -549,7 +551,7 @@ def gen_nudge_3dfield(self, region_info):
549551
# vvel(i,j,:ilen)=vvel(weti[m],wetj[m],:ilen)
550552
# ssh(i,j)=ssh(weti[m],wetj[m])
551553

552-
write_to_log("dealing with horizontal nan values!\n")
554+
logger.debug("dealing with horizontal nan values!")
553555

554556
if d == 0 and t == time[0]: # the first time step
555557
ixy = np.zeros((self.nnode, 3)) * np.nan
@@ -768,10 +770,8 @@ def gen_nudge_3dfield(self, region_info):
768770
idST = np.where((kbp[ix, iy] != -1) & (self.z[i_in, :].T > -10))
769771
tempout[idST[0], i_in[idST[1]]] = tempout[idST[0], i_in[idST[1]]] - 1
770772

771-
write_to_log("applying spatial interpolation!\n")
772-
write_to_log(
773-
f"outputting at day , {dt.total_seconds()/86400}, {npout}\n"
774-
)
773+
logger.debug("applying spatial interpolation!")
774+
logger.info("outputting at day , %s, %s", dt.total_seconds()/86400, npout)
775775

776776
# only save the nodes with valid values.
777777
tempout_in = [temp_t[imap[:npout]] for temp_t in tempout]
@@ -797,7 +797,7 @@ def gen_nudge_3dfield(self, region_info):
797797
salinity = np.transpose(salinity, (0, 2, 1))
798798
# Enforce lower bound for temp. for eqstate
799799
temperature[temperature < 0] == 0
800-
write_to_log("reorganizing matrix!\n")
800+
logger.info("reorganizing matrix!")
801801
# print("time=%f"%(timer.time() - start))
802802
max_time = self.time[-1].total_seconds() / 3600 / 24
803803
output_day = np.array(output_day)
@@ -827,7 +827,7 @@ def reorder_variables(var_info, var_ordered_list):
827827

828828
def gen_nudge_obs(self, region_info):
829829

830-
write_to_log("---gen_nudge_obs---\n")
830+
logger.info("---gen_nudge_obs---")
831831

832832
cutoff = 1e3 # when weights are less than cutoff, they will be set to zero
833833
weights, obs_df = self.gen_region_weight(
@@ -1042,7 +1042,7 @@ def read_data(self, data):
10421042

10431043
def gen_region_weight(self, attribute, vertices):
10441044

1045-
write_to_log("---gen_region_weight---\n")
1045+
logger.info("---gen_region_weight---")
10461046

10471047
if isinstance(attribute, str):
10481048
if vertices:
@@ -1140,23 +1140,30 @@ def in_vertices(self, vertices):
11401140
return inpoly
11411141

11421142

1143-
def write_to_log(message):
1144-
if type(message) == pd.core.indexes.base.Index:
1145-
message = ", ".join(message.to_list()) + "\n"
1146-
elif type(message) == pd.core.frame.DataFrame:
1147-
message = message.to_string() + "\n"
1148-
global log_file
1149-
1150-
with open(log_file, "a") as f:
1151-
f.write(message)
1152-
11531143

11541144
@click.command()
11551145
@click.argument('input_file', required=False)
11561146
@click.option('--input', 'input_opt', type=str, default=None, help='input yaml file for nudging')
1157-
def create_nudge_cli(input_file, input_opt):
1147+
@click.option("--logdir", type=click.Path(path_type=Path), default=None)
1148+
@click.option("--debug", is_flag=True)
1149+
@click.option("--quiet", is_flag=True)
1150+
@click.help_option("-h", "--help")
1151+
def create_nudge_cli(input_file, input_opt, logdir, debug, quiet):
11581152
"""Create nudging for a schism run"""
1153+
level, console = resolve_loglevel(
1154+
debug=debug,
1155+
quiet=quiet,
1156+
)
1157+
configure_logging(
1158+
package_name="schimpy.nudging",
1159+
level=level,
1160+
console=console,
1161+
logdir=logdir,
1162+
logfile_prefix="nudging"
1163+
)
1164+
11591165
input_path = input_opt if input_opt is not None else input_file
1166+
11601167
if input_path is None:
11611168
raise click.UsageError("Please provide an input file either as an argument or with --input")
11621169

0 commit comments

Comments
 (0)