@@ -43,6 +43,48 @@ def test_Combine_otherdim(left_mask_rate, right_mask_rate):
4343 assert_identical_ndarrays (delayedarray .to_dense_array (x ), safe_concatenate ((y1 , y2 ), axis = 1 ))
4444
4545
46+ def test_Combine_simplified ():
47+ y1 = simulate_ndarray ((30 , 23 ), mask_rate = 0 )
48+ y2 = simulate_ndarray ((50 , 23 ), mask_rate = 0 )
49+ y3 = simulate_ndarray ((30 , 41 ), mask_rate = 0 )
50+
51+ x1 = delayedarray .DelayedArray (y1 )
52+ x2 = delayedarray .DelayedArray (y2 )
53+ x3 = delayedarray .DelayedArray (y3 )
54+
55+ com = numpy .concatenate ((x1 , x2 ))
56+ com2 = numpy .concatenate ((com , x2 ))
57+ assert isinstance (com2 , delayedarray .DelayedArray )
58+ assert isinstance (com2 .seed , delayedarray .Combine )
59+ assert len (com2 .seed .seeds ) == 3
60+ assert [isinstance (s , delayedarray .Combine ) for s in com2 .seed .seeds ] == [False ] * 3
61+ assert_identical_ndarrays (delayedarray .to_dense_array (com2 ), safe_concatenate ((y1 , y2 , y2 )))
62+
63+ com = numpy .concatenate ((x1 , x3 ), axis = 1 )
64+ com2 = numpy .concatenate ((com , x1 ), axis = 1 )
65+ assert isinstance (com2 , delayedarray .DelayedArray )
66+ assert isinstance (com2 .seed , delayedarray .Combine )
67+ assert len (com2 .seed .seeds ) == 3
68+ assert [isinstance (s , delayedarray .Combine ) for s in com2 .seed .seeds ] == [False ] * 3
69+ assert_identical_ndarrays (delayedarray .to_dense_array (com2 ), safe_concatenate ((y1 , y3 , y1 ), axis = 1 ))
70+
71+ # No-ops properly.
72+ com = numpy .concatenate ((x1 ,))
73+ assert isinstance (com , delayedarray .DelayedArray )
74+ assert isinstance (com .seed , numpy .ndarray )
75+ assert_identical_ndarrays (delayedarray .to_dense_array (com ), y1 )
76+
77+ # Doesn't attempt to collapse if the axes are different.
78+ com = numpy .concatenate ((x1 , x2 ))
79+ com2 = numpy .concatenate ((com , com ), axis = 1 )
80+ assert isinstance (com2 , delayedarray .DelayedArray )
81+ assert isinstance (com2 .seed , delayedarray .Combine )
82+ assert len (com2 .seed .seeds ) == 2
83+ assert [isinstance (s , delayedarray .Combine ) for s in com2 .seed .seeds ] == [True ] * 2
84+ ref = numpy .concatenate ((y1 , y2 ))
85+ assert_identical_ndarrays (delayedarray .to_dense_array (com2 ), safe_concatenate ((ref , ref ), axis = 1 ))
86+
87+
4688@pytest .mark .parametrize ("left_mask_rate" , [0 , 0.2 ])
4789@pytest .mark .parametrize ("right_mask_rate" , [0 , 0.2 ])
4890def test_Combine_subset (left_mask_rate , right_mask_rate ):
0 commit comments