Skip to content

Commit

Permalink
validation warnings set stacklevel=2, fixes mir-evaluation#372
Browse files Browse the repository at this point in the history
  • Loading branch information
bmcfee committed Mar 26, 2024
1 parent 7997fdf commit 724a234
Show file tree
Hide file tree
Showing 11 changed files with 28 additions and 28 deletions.
4 changes: 2 additions & 2 deletions mir_eval/beat.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,9 @@ def validate(reference_beats, estimated_beats):
# If reference or estimated beats are empty,
# warn because metric will be 0
if reference_beats.size == 0:
warnings.warn("Reference beats are empty.")
warnings.warn("Reference beats are empty.", stacklevel=2)
if estimated_beats.size == 0:
warnings.warn("Estimated beats are empty.")
warnings.warn("Estimated beats are empty.", stacklevel=2)
for beats in [reference_beats, estimated_beats]:
util.validate_events(beats, MAX_TIME)

Expand Down
4 changes: 2 additions & 2 deletions mir_eval/chord.py
Original file line number Diff line number Diff line change
Expand Up @@ -642,9 +642,9 @@ def validate(reference_labels, estimated_labels):
validate_chord_label(chord_label)
# When either label list is empty, warn the user
if len(reference_labels) == 0:
warnings.warn("Reference labels are empty")
warnings.warn("Reference labels are empty", stacklevel=2)
if len(estimated_labels) == 0:
warnings.warn("Estimated labels are empty")
warnings.warn("Estimated labels are empty", stacklevel=2)


def weighted_accuracy(comparisons, weights):
Expand Down
2 changes: 1 addition & 1 deletion mir_eval/hierarchy.py
Original file line number Diff line number Diff line change
Expand Up @@ -459,7 +459,7 @@ def validate_hier_intervals(intervals_hier):

if boundaries - new_bounds:
warnings.warn(
"Segment hierarchy is inconsistent " "at level {:d}".format(level)
"Segment hierarchy is inconsistent " "at level {:d}".format(level), stacklevel=2
)
boundaries |= new_bounds

Expand Down
12 changes: 6 additions & 6 deletions mir_eval/melody.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,13 @@ def validate_voicing(ref_voicing, est_voicing):
"""
if ref_voicing.size == 0:
warnings.warn("Reference voicing array is empty.")
warnings.warn("Reference voicing array is empty.", stacklevel=2)
if est_voicing.size == 0:
warnings.warn("Estimated voicing array is empty.")
warnings.warn("Estimated voicing array is empty.", stacklevel=2)
if ref_voicing.sum() == 0:
warnings.warn("Reference melody has no voiced frames.")
warnings.warn("Reference melody has no voiced frames.", stacklevel=2)
if est_voicing.sum() == 0:
warnings.warn("Estimated melody has no voiced frames.")
warnings.warn("Estimated melody has no voiced frames.", stacklevel=2)
# Make sure they're the same length
if ref_voicing.shape[0] != est_voicing.shape[0]:
raise ValueError(
Expand Down Expand Up @@ -117,9 +117,9 @@ def validate(ref_voicing, ref_cent, est_voicing, est_cent):
"""
if ref_cent.size == 0:
warnings.warn("Reference frequency array is empty.")
warnings.warn("Reference frequency array is empty.", stacklevel=2)
if est_cent.size == 0:
warnings.warn("Estimated frequency array is empty.")
warnings.warn("Estimated frequency array is empty.", stacklevel=2)
# Make sure they're the same length
if (
ref_voicing.shape[0] != ref_cent.shape[0]
Expand Down
8 changes: 4 additions & 4 deletions mir_eval/multipitch.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,17 +72,17 @@ def validate(ref_time, ref_freqs, est_time, est_freqs):
util.validate_events(est_time, max_time=MAX_TIME)

if ref_time.size == 0:
warnings.warn("Reference times are empty.")
warnings.warn("Reference times are empty.", stacklevel=2)
if ref_time.ndim != 1:
raise ValueError("Reference times have invalid dimension")
if len(ref_freqs) == 0:
warnings.warn("Reference frequencies are empty.")
warnings.warn("Reference frequencies are empty.", stacklevel=2)
if est_time.size == 0:
warnings.warn("Estimated times are empty.")
warnings.warn("Estimated times are empty.", stacklevel=2)
if est_time.ndim != 1:
raise ValueError("Estimated times have invalid dimension")
if len(est_freqs) == 0:
warnings.warn("Estimated frequencies are empty.")
warnings.warn("Estimated frequencies are empty.", stacklevel=2)
if ref_time.size != len(ref_freqs):
raise ValueError("Reference times and frequencies have unequal " "lengths.")
if est_time.size != len(est_freqs):
Expand Down
4 changes: 2 additions & 2 deletions mir_eval/onset.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ def validate(reference_onsets, estimated_onsets):
"""
# If reference or estimated onsets are empty, warn because metric will be 0
if reference_onsets.size == 0:
warnings.warn("Reference onsets are empty.")
warnings.warn("Reference onsets are empty.", stacklevel=2)
if estimated_onsets.size == 0:
warnings.warn("Estimated onsets are empty.")
warnings.warn("Estimated onsets are empty.", stacklevel=2)
for onsets in [reference_onsets, estimated_onsets]:
util.validate_events(onsets, MAX_TIME)

Expand Down
4 changes: 2 additions & 2 deletions mir_eval/pattern.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,9 @@ def validate(reference_patterns, estimated_patterns):
"""
# Warn if pattern lists are empty
if _n_onset_midi(reference_patterns) == 0:
warnings.warn("Reference patterns are empty.")
warnings.warn("Reference patterns are empty.", stacklevel=2)
if _n_onset_midi(estimated_patterns) == 0:
warnings.warn("Estimated patterns are empty.")
warnings.warn("Estimated patterns are empty.", stacklevel=2)
for patterns in [reference_patterns, estimated_patterns]:
for pattern in patterns:
if len(pattern) <= 0:
Expand Down
8 changes: 4 additions & 4 deletions mir_eval/segment.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,10 +110,10 @@ def validate_boundary(reference_intervals, estimated_intervals, trim):
min_size = 1

if len(reference_intervals) < min_size:
warnings.warn("Reference intervals are empty.")
warnings.warn("Reference intervals are empty.", stacklevel=2)

if len(estimated_intervals) < min_size:
warnings.warn("Estimated intervals are empty.")
warnings.warn("Estimated intervals are empty.", stacklevel=2)

for intervals in [reference_intervals, estimated_intervals]:
util.validate_intervals(intervals)
Expand Down Expand Up @@ -157,9 +157,9 @@ def validate_structure(
raise ValueError("Segment intervals do not start at 0")

if reference_intervals.size == 0:
warnings.warn("Reference intervals are empty.")
warnings.warn("Reference intervals are empty.", stacklevel=2)
if estimated_intervals.size == 0:
warnings.warn("Estimated intervals are empty.")
warnings.warn("Estimated intervals are empty.", stacklevel=2)
# Check only when intervals are non-empty
if reference_intervals.size > 0 and estimated_intervals.size > 0:
if not np.allclose(reference_intervals.max(), estimated_intervals.max()):
Expand Down
4 changes: 2 additions & 2 deletions mir_eval/separation.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ def validate(reference_sources, estimated_sources):
warnings.warn(
"reference_sources is empty, should be of size "
"(nsrc, nsample). sdr, sir, sar, and perm will all "
"be empty np.ndarrays"
"be empty np.ndarrays", stacklevel=2
)
elif _any_source_silent(reference_sources):
raise ValueError(
Expand All @@ -106,7 +106,7 @@ def validate(reference_sources, estimated_sources):
warnings.warn(
"estimated_sources is empty, should be of size "
"(nsrc, nsample). sdr, sir, sar, and perm will all "
"be empty np.ndarrays"
"be empty np.ndarrays", stacklevel=2
)
elif _any_source_silent(estimated_sources):
raise ValueError(
Expand Down
2 changes: 1 addition & 1 deletion mir_eval/tempo.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ def detection(reference_tempi, reference_weight, estimated_tempi, tol=0.08):
"invalid tolerance {}: must lie in the range " "[0, 1]".format(tol)
)
if tol == 0.0:
warnings.warn("A tolerance of 0.0 may not " "lead to the results you expect.")
warnings.warn("A tolerance of 0.0 may not " "lead to the results you expect.", stacklevel=2)

hits = [False, False]

Expand Down
4 changes: 2 additions & 2 deletions mir_eval/transcription.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,9 +158,9 @@ def validate_intervals(ref_intervals, est_intervals):
"""
# If reference or estimated notes are empty, warn
if ref_intervals.size == 0:
warnings.warn("Reference notes are empty.")
warnings.warn("Reference notes are empty.", stacklevel=2)
if est_intervals.size == 0:
warnings.warn("Estimated notes are empty.")
warnings.warn("Estimated notes are empty.", stacklevel=2)

# Validate intervals
util.validate_intervals(ref_intervals)
Expand Down

0 comments on commit 724a234

Please sign in to comment.