24
24
Test cases for the low-level tables used to transfer information
25
25
between simulations and the tree sequence.
26
26
"""
27
- import collections .abc
28
27
import dataclasses
29
28
import io
30
29
import json
@@ -1127,7 +1126,7 @@ def verify_metadata_vector(self, table, key, dtype, default_value=9999):
1127
1126
if dtype is not None :
1128
1127
assert md_vec .dtype == np .dtype (dtype )
1129
1128
assert len (md_vec ) == table .num_rows
1130
- if not isinstance (key , collections . abc . Sequence ):
1129
+ if not isinstance (key , list ):
1131
1130
key = [key ]
1132
1131
for x , row in zip (md_vec , table ):
1133
1132
md = row .metadata
@@ -1170,10 +1169,10 @@ def test_metadata_vector_nodefault(self):
1170
1169
ms = tskit .MetadataSchema ({"codec" : "json" })
1171
1170
table .metadata_schema = ms
1172
1171
metadata_list = [
1173
- {"a " : 4 , "u" : [1 , 2 ]},
1174
- {"a " : 10 , "u" : [3 , 4 ]},
1175
- {"a " : - 3 , "b" : {"c" : 1 }, "u" : [5 , 6 ]},
1176
- {"a " : 1 },
1172
+ {"abc " : 4 , "u" : [1 , 2 ]},
1173
+ {"abc " : 10 , "u" : [3 , 4 ]},
1174
+ {"abc " : - 3 , "b" : {"c" : 1 }, "u" : [5 , 6 ]},
1175
+ {"abc " : 1 },
1177
1176
]
1178
1177
for md in metadata_list :
1179
1178
table .add_row (
@@ -1182,10 +1181,16 @@ def test_metadata_vector_nodefault(self):
1182
1181
"metadata" : md ,
1183
1182
}
1184
1183
)
1184
+ # first the totally obvious test
1185
+ md_vec = table .metadata_vector ("abc" )
1186
+ assert np .all (np .equal (md_vec , [d ["abc" ] for d in metadata_list ]))
1187
+ # now automated ones
1185
1188
for dtype in [None , "int" , "float" , "object" ]:
1186
- self .verify_metadata_vector (table , key = "a" , dtype = dtype , default_value = 9999 )
1187
1189
self .verify_metadata_vector (
1188
- table , key = ["a" ], dtype = dtype , default_value = 9999
1190
+ table , key = "abc" , dtype = dtype , default_value = 9999
1191
+ )
1192
+ self .verify_metadata_vector (
1193
+ table , key = ["abc" ], dtype = dtype , default_value = 9999
1189
1194
)
1190
1195
1191
1196
def test_metadata_vector (self ):
@@ -1208,6 +1213,19 @@ def test_metadata_vector(self):
1208
1213
"metadata" : md ,
1209
1214
}
1210
1215
)
1216
+ # first the totally obvious test
1217
+ md_vec = table .metadata_vector ("abc" , default_value = 0 )
1218
+ assert np .all (
1219
+ np .equal (
1220
+ md_vec ,
1221
+ [
1222
+ d ["abc" ] if (d is not None and "abc" in d ) else 0
1223
+ for d in metadata_list
1224
+ ],
1225
+ )
1226
+ )
1227
+
1228
+ # now some automated ones
1211
1229
for dtype in [None , "int" , "float" , "object" ]:
1212
1230
self .verify_metadata_vector (table , key = "abc" , dtype = dtype , default_value = - 1 )
1213
1231
self .verify_metadata_vector (
0 commit comments