@@ -142,6 +142,9 @@ class VcfPartition:
142
142
num_records : int = - 1
143
143
144
144
145
+ VCF_METADATA_FORMAT_VERSION = "0.1"
146
+
147
+
145
148
@dataclasses .dataclass
146
149
class VcfMetadata :
147
150
format_version : str
@@ -175,6 +178,11 @@ def num_records(self):
175
178
176
179
@staticmethod
177
180
def fromdict (d ):
181
+ if d ["format_version" ] != VCF_METADATA_FORMAT_VERSION :
182
+ raise ValueError (
183
+ "Exploded metadata format version mismatch: "
184
+ f"{ d ['format_version' ]} != { VCF_METADATA_FORMAT_VERSION } "
185
+ )
178
186
fields = [VcfField .fromdict (fd ) for fd in d ["fields" ]]
179
187
partitions = [VcfPartition (** pd ) for pd in d ["partitions" ]]
180
188
d = d .copy ()
@@ -239,8 +247,7 @@ def scan_vcf(path, target_num_partitions):
239
247
# TODO use the mapping dictionary
240
248
fields = fields ,
241
249
partitions = [],
242
- # FIXME do something systematic with this
243
- format_version = "0.1" ,
250
+ format_version = VCF_METADATA_FORMAT_VERSION ,
244
251
)
245
252
try :
246
253
metadata .contig_lengths = vcf .seqlens
@@ -1060,6 +1067,9 @@ def __post_init__(self):
1060
1067
self .dimensions = tuple (self .dimensions )
1061
1068
1062
1069
1070
+ ZARR_SCHEMA_FORMAT_VERSION = "0.2"
1071
+
1072
+
1063
1073
@dataclasses .dataclass
1064
1074
class ZarrConversionSpec :
1065
1075
format_version : str
@@ -1080,6 +1090,11 @@ def asjson(self):
1080
1090
1081
1091
@staticmethod
1082
1092
def fromdict (d ):
1093
+ if d ["format_version" ] != ZARR_SCHEMA_FORMAT_VERSION :
1094
+ raise ValueError (
1095
+ "Zarr schema format version mismatch: "
1096
+ f"{ d ['format_version' ]} != { ZARR_SCHEMA_FORMAT_VERSION } "
1097
+ )
1083
1098
ret = ZarrConversionSpec (** d )
1084
1099
ret .columns = {
1085
1100
key : ZarrColumnSpec (** value ) for key , value in d ["columns" ].items ()
@@ -1241,8 +1256,7 @@ def fixed_field_spec(
1241
1256
)
1242
1257
1243
1258
return ZarrConversionSpec (
1244
- # TODO do something systematic
1245
- format_version = "0.1" ,
1259
+ format_version = ZARR_SCHEMA_FORMAT_VERSION ,
1246
1260
samples_chunk_size = samples_chunk_size ,
1247
1261
variants_chunk_size = variants_chunk_size ,
1248
1262
columns = {col .name : col for col in colspecs },
0 commit comments