Commit c12e397
committed
fix: warn when sample_query returns 0 results due to case mismatch
Fixes #1083
## Problem
sample_metadata() silently returns an empty DataFrame when a sample_query
contains case-mismatched string values (e.g., 'uganda' instead of 'Uganda').
pandas query() performs strict case-sensitive comparisons, and since all
country/location names are title-cased, wrong-case queries silently yield
zero rows with no feedback to the user.
## Changes
### malariagen_data/anoph/sample_metadata.py
- Added import re
- After df_samples.query(), check if result is empty on a non-empty input
- If empty: parse query for column names in comparison expressions, collect
valid unique values for string (object dtype) columns, emit UserWarning
with case-sensitivity note and valid values list
### malariagen_data/anoph/base_params.py
- Updated sample_query docstring to note case-sensitivity and exact-match
requirement
### tests/anoph/test_sample_metadata.py
- test_sample_metadata_warns_on_case_mismatch: verifies UserWarning is
emitted with 'case-sensitive' in the message
- test_sample_metadata_no_warning_on_valid_query: verifies no spurious
warning on a correct query1 parent c269768 commit c12e397
3 files changed
Lines changed: 87 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
69 | 69 | | |
70 | 70 | | |
71 | 71 | | |
72 | | - | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
73 | 77 | | |
74 | 78 | | |
75 | 79 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
2 | 3 | | |
3 | 4 | | |
4 | 5 | | |
| |||
781 | 782 | | |
782 | 783 | | |
783 | 784 | | |
| 785 | + | |
| 786 | + | |
| 787 | + | |
| 788 | + | |
| 789 | + | |
784 | 790 | | |
785 | 791 | | |
786 | 792 | | |
787 | 793 | | |
788 | 794 | | |
789 | 795 | | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
| 802 | + | |
| 803 | + | |
| 804 | + | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
| 826 | + | |
790 | 827 | | |
791 | 828 | | |
792 | 829 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1465 | 1465 | | |
1466 | 1466 | | |
1467 | 1467 | | |
| 1468 | + | |
| 1469 | + | |
| 1470 | + | |
| 1471 | + | |
| 1472 | + | |
| 1473 | + | |
| 1474 | + | |
| 1475 | + | |
| 1476 | + | |
| 1477 | + | |
| 1478 | + | |
| 1479 | + | |
| 1480 | + | |
| 1481 | + | |
| 1482 | + | |
| 1483 | + | |
| 1484 | + | |
| 1485 | + | |
| 1486 | + | |
| 1487 | + | |
| 1488 | + | |
| 1489 | + | |
| 1490 | + | |
| 1491 | + | |
| 1492 | + | |
| 1493 | + | |
| 1494 | + | |
| 1495 | + | |
| 1496 | + | |
| 1497 | + | |
| 1498 | + | |
| 1499 | + | |
| 1500 | + | |
| 1501 | + | |
| 1502 | + | |
| 1503 | + | |
| 1504 | + | |
| 1505 | + | |
| 1506 | + | |
| 1507 | + | |
| 1508 | + | |
| 1509 | + | |
| 1510 | + | |
| 1511 | + | |
| 1512 | + | |
0 commit comments