33from pathlib import Path
44from typing import Any , Dict , Optional , Sequence , Union
55
6+ from smftools .logging_utils import get_logger
7+
8+ logger = get_logger (__name__ )
9+
610
711def call_hmm_peaks (
812 adata ,
@@ -107,8 +111,10 @@ def call_hmm_peaks(
107111 candidates = [feature_key ]
108112
109113 if not candidates :
110- print (
111- f"[call_hmm_peaks] WARNING: no layers found matching '{ feature_key } ' in ref '{ ref } '. Skipping."
114+ logger .warning (
115+ "[call_hmm_peaks] No layers found matching '%s' in ref '%s'. Skipping." ,
116+ feature_key ,
117+ ref ,
112118 )
113119 continue
114120
@@ -121,17 +127,22 @@ def call_hmm_peaks(
121127
122128 for layer_name in candidates :
123129 if layer_name not in adata .layers :
124- print (
125- f"[call_hmm_peaks] WARNING: layer '{ layer_name } ' not in adata.layers; skipping."
130+ logger .warning (
131+ "[call_hmm_peaks] Layer '%s' not in adata.layers; skipping." ,
132+ layer_name ,
126133 )
127134 continue
128135
129136 # Dense layer data
130137 L = adata .layers [layer_name ]
131138 L = L .toarray () if issparse (L ) else np .asarray (L )
132139 if L .shape != (adata .n_obs , adata .n_vars ):
133- print (
134- f"[call_hmm_peaks] WARNING: layer '{ layer_name } ' has shape { L .shape } , expected ({ adata .n_obs } , { adata .n_vars } ); skipping."
140+ logger .warning (
141+ "[call_hmm_peaks] Layer '%s' has shape %s, expected (%s, %s); skipping." ,
142+ layer_name ,
143+ L .shape ,
144+ adata .n_obs ,
145+ adata .n_vars ,
135146 )
136147 continue
137148
@@ -154,7 +165,11 @@ def call_hmm_peaks(
154165 peak_metric , prominence = peak_prom , distance = min_distance
155166 )
156167 if peak_indices .size == 0 :
157- print (f"[call_hmm_peaks] No peaks for layer '{ layer_name } ' in ref '{ ref } '." )
168+ logger .info (
169+ "[call_hmm_peaks] No peaks for layer '%s' in ref '%s'." ,
170+ layer_name ,
171+ ref ,
172+ )
158173 continue
159174
160175 peak_centers = coordinates [peak_indices ]
@@ -185,7 +200,7 @@ def call_hmm_peaks(
185200 safe_layer = str (layer_name ).replace ("/" , "_" )
186201 fname = output_dir / f"{ tag } _{ safe_layer } _{ safe_ref } _peaks.png"
187202 fig .savefig (fname , bbox_inches = "tight" , dpi = 200 )
188- print ( f "[call_hmm_peaks] Saved plot to { fname } " )
203+ logger . info ( "[call_hmm_peaks] Saved plot to %s" , fname )
189204 plt .close (fig )
190205 else :
191206 fig .tight_layout ()
@@ -285,8 +300,11 @@ def call_hmm_peaks(
285300 else :
286301 adata .var [any_col ] = False
287302
288- print (
289- f"[call_hmm_peaks] Annotated { len (peak_centers )} peaks for layer '{ layer_name } ' in ref '{ ref } '."
303+ logger .info (
304+ "[call_hmm_peaks] Annotated %s peaks for layer '%s' in ref '%s'." ,
305+ len (peak_centers ),
306+ layer_name ,
307+ ref ,
290308 )
291309
292310 # global any-peak across all layers/refs
0 commit comments