@@ -1040,6 +1040,177 @@ def test_power(self):
1040
1040
with self .assertRaises (NotImplementedError ):
1041
1041
x ** x
1042
1042
1043
+ def test_add (self ):
1044
+ orig = np .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
1045
+ x = ds .array (orig , block_size = (2 , 1 ))
1046
+ orig_vector = np .array ([[1 , 2 , 3 ]])
1047
+ vector = ds .array (orig_vector , block_size = (1 , 1 ))
1048
+
1049
+ b = x + vector
1050
+ self .assertTrue (_validate_array (b ))
1051
+ expected = np .array ([[2 , 4 , 6 ], [5 , 7 , 9 ]])
1052
+
1053
+ self .assertTrue (_equal_arrays (expected , b .collect ()))
1054
+
1055
+ orig = sp .csr_matrix ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
1056
+ x = ds .array (orig , block_size = (2 , 1 ))
1057
+ orig_vector = sp .csr_matrix ([[1 , 2 , 3 ]])
1058
+ vector = ds .array (orig_vector , block_size = (1 , 1 ))
1059
+
1060
+ b = x + vector
1061
+ self .assertTrue (_validate_array (b ))
1062
+ expected = sp .csr_matrix ([[2 , 4 , 6 ], [5 , 7 , 9 ]])
1063
+
1064
+ self .assertTrue (_equal_arrays (expected , b .collect ()))
1065
+
1066
+ with self .assertRaises (NotImplementedError ):
1067
+ orig = np .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
1068
+ x = ds .array (orig , block_size = (2 , 1 ))
1069
+ orig_vector = np .array ([[1 , 2 ]])
1070
+ vector = ds .array (orig_vector , block_size = (1 , 1 ))
1071
+ b = x + vector
1072
+
1073
+ def test_sub (self ):
1074
+ orig = np .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
1075
+ x = ds .array (orig , block_size = (2 , 1 ))
1076
+ orig_vector = np .array ([[1 , 2 , 3 ]])
1077
+ vector = ds .array (orig_vector , block_size = (1 , 1 ))
1078
+
1079
+ b = x - vector
1080
+ self .assertTrue (_validate_array (b ))
1081
+ expected = np .array ([[0 , 0 , 0 ], [3 , 3 , 3 ]])
1082
+
1083
+ self .assertTrue (_equal_arrays (expected , b .collect ()))
1084
+
1085
+ with self .assertRaises (NotImplementedError ):
1086
+ orig = np .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
1087
+ x = ds .array (orig , block_size = (2 , 1 ))
1088
+ orig_vector = np .array ([[1 , 3 ]])
1089
+ vector = ds .array (orig_vector , block_size = (1 , 1 ))
1090
+ b = x - vector
1091
+
1092
+ def test_iadd (self ):
1093
+ """ Tests ds-array magic method __iadd__ """
1094
+ orig = np .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
1095
+ x = ds .array (orig , block_size = (2 , 1 ))
1096
+ orig_vector = np .array ([[1 , 2 , 3 ]])
1097
+ vector = ds .array (orig_vector , block_size = (1 , 1 ))
1098
+
1099
+ x += vector
1100
+
1101
+ self .assertTrue (_validate_array (x ))
1102
+ self .assertTrue (_validate_array (vector ))
1103
+
1104
+ expected = np .array ([[2 , 4 , 6 ], [5 , 7 , 9 ]])
1105
+
1106
+ self .assertTrue (_equal_arrays (expected , x .collect ()))
1107
+ self .assertTrue (_equal_arrays (orig_vector , vector .collect ()))
1108
+
1109
+ orig = np .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
1110
+ x = ds .array (orig , block_size = (2 , 1 ))
1111
+ orig_mat = np .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
1112
+ matrix = ds .array (orig_mat , block_size = (2 , 1 ))
1113
+
1114
+ x += matrix
1115
+
1116
+ self .assertTrue (_validate_array (x ))
1117
+ self .assertTrue (_validate_array (matrix ))
1118
+
1119
+ expected = np .array ([[2 , 4 , 6 ], [8 , 10 , 12 ]])
1120
+
1121
+ self .assertTrue (_equal_arrays (expected , x .collect ()))
1122
+ self .assertTrue (_equal_arrays (orig_mat , matrix .collect ()))
1123
+
1124
+ with self .assertRaises (NotImplementedError ):
1125
+ orig = np .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
1126
+ x = ds .array (orig , block_size = (2 , 1 ))
1127
+ orig_vector = np .array ([[1 , 2 ]])
1128
+ vector = ds .array (orig_vector , block_size = (1 , 1 ))
1129
+ x += vector
1130
+
1131
+ with self .assertRaises (NotImplementedError ):
1132
+ orig = np .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
1133
+ x = ds .array (orig , block_size = (2 , 1 ))
1134
+ orig_vector = np .array ([[1 , 2 ], [4 , 5 ]])
1135
+ vector = ds .array (orig_vector , block_size = (2 , 1 ))
1136
+ x += vector
1137
+
1138
+ with self .assertRaises (ValueError ):
1139
+ x1 = ds .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]], (2 , 3 ))
1140
+ x1 .__init__ ([[1 , 2 , 3 ], [4 , 5 , 6 ], [7 , 8 , 9 ], [1 , 2 , 3 ],
1141
+ [4 , 5 , 6 ]], top_left_shape = (1 , 3 ),
1142
+ reg_shape = (2 , 3 ), shape = (5 , 3 ), sparse = False )
1143
+ x2 = ds .array ([[1 , 1 , 1 ], [1 , 1 , 1 ],
1144
+ [1 , 1 , 1 ], [1 , 1 , 1 ],
1145
+ [1 , 1 , 1 ]], (2 , 3 ))
1146
+ x1 += x2
1147
+ with self .assertRaises (ValueError ):
1148
+ orig = np .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
1149
+ x = ds .array (orig , block_size = (2 , 1 ))
1150
+ orig_vector = np .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
1151
+ vector = ds .array (orig_vector , block_size = (2 , 2 ))
1152
+ x += vector
1153
+
1154
+ def test_isub (self ):
1155
+ """ Tests ds-array magic method __isub__ """
1156
+ orig = np .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
1157
+ x = ds .array (orig , block_size = (2 , 1 ))
1158
+ orig_vector = np .array ([[1 , 2 , 3 ]])
1159
+ vector = ds .array (orig_vector , block_size = (1 , 1 ))
1160
+
1161
+ x -= vector
1162
+
1163
+ self .assertTrue (_validate_array (x ))
1164
+ self .assertTrue (_validate_array (vector ))
1165
+
1166
+ expected = np .array ([[0 , 0 , 0 ], [3 , 3 , 3 ]])
1167
+
1168
+ self .assertTrue (_equal_arrays (expected , x .collect ()))
1169
+ self .assertTrue (_equal_arrays (orig_vector , vector .collect ()))
1170
+
1171
+ orig = np .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
1172
+ x = ds .array (orig , block_size = (2 , 1 ))
1173
+ orig_mat = np .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
1174
+ matrix = ds .array (orig_mat , block_size = (2 , 1 ))
1175
+
1176
+ x -= matrix
1177
+
1178
+ self .assertTrue (_validate_array (x ))
1179
+ self .assertTrue (_validate_array (matrix ))
1180
+
1181
+ expected = np .array ([[0 , 0 , 0 ], [0 , 0 , 0 ]])
1182
+
1183
+ self .assertTrue (_equal_arrays (expected , x .collect ()))
1184
+ self .assertTrue (_equal_arrays (orig_mat , matrix .collect ()))
1185
+ with self .assertRaises (NotImplementedError ):
1186
+ orig = np .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
1187
+ x = ds .array (orig , block_size = (2 , 1 ))
1188
+ orig_vector = np .array ([[1 , 2 ]])
1189
+ vector = ds .array (orig_vector , block_size = (1 , 1 ))
1190
+ x -= vector
1191
+ with self .assertRaises (NotImplementedError ):
1192
+ orig = np .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
1193
+ x = ds .array (orig , block_size = (2 , 1 ))
1194
+ orig_vector = np .array ([[1 , 2 ], [4 , 5 ]])
1195
+ vector = ds .array (orig_vector , block_size = (2 , 1 ))
1196
+ x -= vector
1197
+
1198
+ with self .assertRaises (ValueError ):
1199
+ x1 = ds .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]], (2 , 3 ))
1200
+ x1 .__init__ ([[1 , 2 , 3 ], [4 , 5 , 6 ], [7 , 8 , 9 ], [1 , 2 , 3 ],
1201
+ [4 , 5 , 6 ]], top_left_shape = (1 , 3 ),
1202
+ reg_shape = (2 , 3 ), shape = (5 , 3 ), sparse = False )
1203
+ x2 = ds .array ([[1 , 1 , 1 ], [1 , 1 , 1 ],
1204
+ [1 , 1 , 1 ], [1 , 1 , 1 ],
1205
+ [1 , 1 , 1 ]], (2 , 3 ))
1206
+ x1 -= x2
1207
+ with self .assertRaises (ValueError ):
1208
+ orig = np .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
1209
+ x = ds .array (orig , block_size = (2 , 1 ))
1210
+ orig_vector = np .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
1211
+ vector = ds .array (orig_vector , block_size = (2 , 2 ))
1212
+ x -= vector
1213
+
1043
1214
def test_norm (self ):
1044
1215
""" Tests the norm """
1045
1216
x_np = np .array ([[1 , 2 , 3 ], [4 , 5 , 6 ]])
0 commit comments