Re: Remaining numpy 1.24 issues on 32bit architectures
Hi,
I made some tiny steps forward ("only" 84 failures instead of 89 when I
wrote my first mail) in the numpy 1.24 migration for 32bit architectures
but I'm facing issues I do not have a real clue for. In
https://salsa.debian.org/med-team/python-skbio/-/blob/master/debian/patches/numpy-1.24.patch#L123-L126
I tried three variants how I could fix
_______________________ AlphaDiversityTests.test_no_ids ________________________
self = <skbio.diversity.tests.test_driver.AlphaDiversityTests testMethod=test_no_ids>
def test_no_ids(self):
# expected values hand-calculated
expected = pd.Series([3, 3, 3, 3])
# All this does not help
# expected = pd.Series(np.array([3, 3, 3, 3], int32))
# actual = np.int64(alpha_diversity('observed_otus', self.table1))
# actual = np.dtype('int64').type(alpha_diversity('observed_otus', self.table1))
actual = alpha_diversity('observed_otus', self.table1)
> assert_series_almost_equal(actual, expected)
skbio/diversity/tests/test_driver.py:260:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
left = 0 3
1 3
2 3
3 3
dtype: int32
right = 0 3
1 3
2 3
3 3
dtype: int64
def assert_series_almost_equal(left, right):
# pass all kwargs to ensure this function has consistent behavior even if
# `assert_series_equal`'s defaults change
> pdt.assert_series_equal(left, right,
check_dtype=True,
check_index_type=True,
check_series_type=True,
check_names=True,
check_exact=False,
check_datetimelike_compat=False,
obj='Series')
E AssertionError: Attributes of Series are different
E
E Attribute "dtype" are different
E [left]: int32
E [right]: int64
skbio/util/_testing.py:323: AssertionError
____________________ AlphaDiversityTests.test_observed_otus ____________________
self = <skbio.diversity.tests.test_driver.AlphaDiversityTests testMethod=test_observed_otus>
def test_observed_otus(self):
# expected values hand-calculated
expected = pd.Series([3, 3, 3, 3], index=self.sids1)
actual = alpha_diversity('observed_otus', self.table1, self.sids1)
> assert_series_almost_equal(actual, expected)
skbio/diversity/tests/test_driver.py:223:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
left = A 3
B 3
C 3
D 3
dtype: int32
right = A 3
B 3
C 3
D 3
dtype: int64
def assert_series_almost_equal(left, right):
# pass all kwargs to ensure this function has consistent behavior even if
# `assert_series_equal`'s defaults change
> pdt.assert_series_equal(left, right,
check_dtype=True,
check_index_type=True,
check_series_type=True,
check_names=True,
check_exact=False,
check_datetimelike_compat=False,
obj='Series')
E AssertionError: Attributes of Series are different
E
E Attribute "dtype" are different
E [left]: int32
E [right]: int64
skbio/util/_testing.py:323: AssertionError
______________________ AlphaDiversityTests.test_optimized ______________________
self = <skbio.diversity.tests.test_driver.AlphaDiversityTests testMethod=test_optimized>
def test_optimized(self):
# calling optimized faith_pd gives same results as calling unoptimized
# version
> optimized = alpha_diversity('faith_pd', self.table1, tree=self.tree1,
otu_ids=self.oids1)
skbio/diversity/tests/test_driver.py:265:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
which obviosly[2] failed. I wonder whether someone might give some
hints how to get dtypes consistently to one integer representation which
is the background of nearly all these test suite issues.
Kind regards
Andreas.
[2] https://salsa.debian.org/med-team/python-skbio/-/jobs/3868951
Am Sun, Jan 29, 2023 at 12:11:15PM +0100 schrieb Andreas Tille:
> Hi,
>
> I think there are some remaining issues with numpy 1.24 migration on 32
> bit architectures[1].
>
> Here is one example:
>
> _________ TestSequence.test_getitem_with_slice_has_positional_metadata _________
>
> self = <skbio.sequence.tests.test_sequence.TestSequence testMethod=test_getitem_with_slice_has_positional_metadata>
>
> def test_getitem_with_slice_has_positional_metadata(self):
> s = "0123456789abcdef"
> length = len(s)
> seq = Sequence(s, metadata={'id': 'id3', 'description': 'dsc3'},
> positional_metadata={'quality': np.arange(length)})
>
> eseq = Sequence("012", metadata={'id': 'id3', 'description': 'dsc3'},
> positional_metadata={'quality': np.arange(3)})
> self.assertEqual(seq[0:3], eseq)
> self.assertEqual(seq[:3], eseq)
> self.assertEqual(seq[:3:1], eseq)
>
> eseq = Sequence("def", metadata={'id': 'id3', 'description': 'dsc3'},
> positional_metadata={'quality': [13, 14, 15]})
> > self.assertEqual(seq[-3:], eseq)
> E AssertionError: Seque[128 chars]: int32>
> E Stats:
> E length: 3
> E ----------------[14 chars]0 def != Seque[128 chars]: int64>
> E Stats:
> E length: 3
> E ----------------[14 chars]0 def
>
> skbio/sequence/tests/test_sequence.py:748: AssertionError
>
> How can I ensure that in both cases the arrays have the same type (I think it makes
> no difference whether it is np.int32 or np.int64 as long as they are of same type.
>
> Kind regards
>
> Andreas.
>
> [1] https://buildd.debian.org/status/package.php?p=python-skbio&suite=experimental
>
> --
> http://fam-tille.de
>
>
--
http://fam-tille.de
Reply to: