@@ -43,6 +43,48 @@ def test_Combine_otherdim(left_mask_rate, right_mask_rate):
43
43
assert_identical_ndarrays (delayedarray .to_dense_array (x ), safe_concatenate ((y1 , y2 ), axis = 1 ))
44
44
45
45
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
+
46
88
@pytest .mark .parametrize ("left_mask_rate" , [0 , 0.2 ])
47
89
@pytest .mark .parametrize ("right_mask_rate" , [0 , 0.2 ])
48
90
def test_Combine_subset (left_mask_rate , right_mask_rate ):
0 commit comments