Skip to content

Commit a62861e

Browse files
committed
Update PPPlot slice plotting to use logging_utils.
1 parent d0ee140 commit a62861e

File tree

3 files changed

+22
-17
lines changed

3 files changed

+22
-17
lines changed

ppafm/PPPlot.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
#!/usr/bin/python
22

3-
import sys
4-
53
import matplotlib.pyplot as plt
64
import numpy as np
75
from matplotlib.colors import LinearSegmentedColormap
86

7+
from .logging_utils import ProgressLogger
8+
99
# =========== defaults
1010

1111
default_figsize = (8, 8)
@@ -58,11 +58,6 @@ def colorize_XY2RG(Xs, Ys):
5858
return c, vmax
5959

6060

61-
def write_plotting_slice(i):
62-
sys.stdout.write(f"\r plotting slice # {i}")
63-
sys.stdout.flush()
64-
65-
6661
# =========== plotting functions
6762

6863

@@ -85,8 +80,9 @@ def plotImages(
8580
V0=0.0,
8681
cbar_label=None,
8782
):
83+
progress_logger = ProgressLogger("plot", pre_message="Plotting slice # ")
8884
for ii, i in enumerate(slices):
89-
write_plotting_slice(i)
85+
progress_logger.print_message(i, is_last=ii == (len(slices) - 1))
9086
if symmetric_map:
9187
limit = max(abs(np.min(F[i] - V0)), abs(np.max(F[i] - V0)))
9288
vmin = -limit + V0
@@ -115,8 +111,9 @@ def plotImages(
115111
def plotVecFieldRG(
116112
prefix, dXs, dYs, slices, extent=None, zs=None, figsize=default_figsize, interpolation=default_interpolation, atoms=None, bonds=None, atomSize=default_atom_size
117113
):
114+
progress_logger = ProgressLogger("plot", pre_message="Plotting slice # ")
118115
for ii, i in enumerate(slices):
119-
write_plotting_slice(i)
116+
progress_logger.print_message(i, is_last=ii == (len(slices) - 1))
120117
plt.figure(figsize=(10, 10))
121118
HSBs, vmax = colorize_XY2RG(dXs[i], dYs[i])
122119
plt.imshow(HSBs, extent=extent, origin="lower", interpolation=interpolation)
@@ -151,8 +148,9 @@ def plotDistortions(
151148
bonds=None,
152149
atomSize=default_atom_size,
153150
):
151+
progress_logger = ProgressLogger("plot", pre_message="Plotting slice # ")
154152
for ii, i in enumerate(slices):
155-
write_plotting_slice(i)
153+
progress_logger.print_message(i, is_last=ii == (len(slices) - 1))
156154
plt.figure(figsize=figsize)
157155
plt.plot(X[i, ::by, ::by].flat, Y[i, ::by, ::by].flat, "r.", markersize=markersize)
158156
if BG is not None:
@@ -193,8 +191,9 @@ def plotArrows(
193191
bonds=None,
194192
atomSize=default_atom_size,
195193
):
194+
progress_logger = ProgressLogger("plot", pre_message="Plotting slice # ")
196195
for ii, i in enumerate(slices):
197-
write_plotting_slice(i)
196+
progress_logger.print_message(i, is_last=ii == (len(slices) - 1))
198197
plt.figure(figsize=figsize)
199198
plt.quiver(Xs[::by, ::by], Ys[::by, ::by], dX[::by, ::by], dY[::by, ::by], color="k", headlength=10, headwidth=10, scale=15)
200199
if BG is not None:

ppafm/data.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ def _common_parent(paths):
4747
def _extract_members(archive_handle, members, target_dir):
4848
progress_logger = ProgressLogger(logger_name=_progress_logger_name, pre_message=f"Extracting dataset to `{target_dir}`: ")
4949
for i, m in enumerate(members):
50-
progress_logger.print_progress(i, 1, len(members))
50+
progress_logger.print_percent(i, 1, len(members))
5151
archive_handle.extract(m, target_dir)
52-
progress_logger.print_progress(len(members), 1, len(members))
52+
progress_logger.print_percent(len(members), 1, len(members))
5353

5454

5555
def _extract_targz(archive_path, target_dir):
@@ -119,7 +119,7 @@ def download_dataset(name: str, target_dir: Union[Path, str]):
119119
with TemporaryDirectory() as temp_dir:
120120
temp_file = Path(temp_dir) / f"dataset_{name}"
121121
progress_logger = ProgressLogger(logger_name=_progress_logger_name, pre_message=f"Downloading dataset `{name}`: ")
122-
_, response = urlretrieve(dataset_url, temp_file, reporthook=progress_logger.print_progress)
122+
_, response = urlretrieve(dataset_url, temp_file, reporthook=progress_logger.print_percent)
123123
original_file_name = response.get_filename()
124124
target_dir.mkdir(exist_ok=True, parents=True)
125125
if original_file_name.endswith(".tar.gz"):

ppafm/logging_utils.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import logging
22
import os
33
import sys
4-
from typing import Optional, Union
4+
from typing import Any, Optional, Union
55

66
# Setup the root logger for the ppafm package. All other loggers will be derived from this one.
77
_root_logger = logging.getLogger("ppafm")
@@ -113,7 +113,7 @@ def perf_log_enabled() -> bool:
113113

114114

115115
class ProgressLogger:
116-
"""Print gradual progress as a percent number."""
116+
"""Print gradual progress messages."""
117117

118118
def __init__(self, logger_name: str = "progress", pre_message: str = ""):
119119

@@ -143,7 +143,7 @@ def __init__(self, logger_name: str = "progress", pre_message: str = ""):
143143
self.pre_message = pre_message
144144
self._previous_percent = -self._percent_increment
145145

146-
def print_progress(self, block_num: int, block_size: int, total_size: int):
146+
def print_percent(self, block_num: int, block_size: int, total_size: int):
147147
if total_size == -1:
148148
return
149149
current_size = block_num * block_size
@@ -158,3 +158,9 @@ def print_progress(self, block_num: int, block_size: int, total_size: int):
158158
if self._print_to_terminal:
159159
msg += "\n"
160160
self.logger.info(msg)
161+
162+
def print_message(self, message: Any, is_last: bool):
163+
message = f"{self.pre_message}{message}"
164+
if is_last and self._print_to_terminal:
165+
message += "\n"
166+
self.logger.info(message)

0 commit comments

Comments
 (0)