114114from ._uniform_grid import UniformGrid
115115from .typing_helpers import SingleCellCoaddApCorrMap
116116
117- FILE_FORMAT_VERSION = "0.7 "
117+ FILE_FORMAT_VERSION = "0.8 "
118118"""Version number for the file format as persisted, presented as a string of
119119the form M.m, where M is the major version, m is the minor version.
120120"""
@@ -298,13 +298,22 @@ def readAsMultipleCellCoadd(self) -> MultipleCellCoadd:
298298 )
299299 visit_polygons = {}
300300 if written_version >= version .parse ("0.3" ):
301+ if written_version >= version .parse ("0.6" ):
302+ visit_hdu = hdu_list [hdu_list .index_of ("VISIT_SUMMARY" )].data
303+ else :
304+ visit_hdu = hdu_list [hdu_list .index_of ("VISIT" )].data
305+
301306 visit_dict = {
302307 row ["visit" ]: VisitRecord (
303308 visit = row ["visit" ],
304- physical_filter = row ["physical_filter" ],
305- day_obs = row ["day_obs" ],
309+ physical_filter = (
310+ row ["physical_filter" ]
311+ if written_version >= version .parse ("0.8" )
312+ else header ["FILTER" ]
313+ ),
314+ day_obs = row ["day_obs" ] if written_version >= version .parse ("0.8" ) else 00000000 ,
306315 )
307- for row in hdu_list [ hdu_list . index_of ( "VISIT" )]. data
316+ for row in visit_hdu
308317 }
309318 link_table = hdu_list [hdu_list .index_of ("CELL" )].data
310319
@@ -678,10 +687,20 @@ def writeMultipleCellCoaddAsFits(
678687 format = "I" ,
679688 array = [obs_id .detector for obs_id in multiple_cell_coadd .common .visit_polygons ],
680689 )
690+ physical_filter_column = fits .Column (
691+ name = "physical_filter" ,
692+ format = "32A" ,
693+ array = [obs_id .physical_filter for obs_id in multiple_cell_coadd .common .visit_polygons ],
694+ )
695+ day_obs_column = fits .Column (
696+ name = "day_obs" ,
697+ format = "K" ,
698+ array = [obs_id .day_obs for obs_id in multiple_cell_coadd .common .visit_polygons ],
699+ )
681700 number_of_vertices = []
682701 polygon_vertices_array = []
683702 for obs_id , poly in multiple_cell_coadd .common .visit_polygons .items ():
684- if num_vertices := len (poly .getVertices ()) > MAX_POLYGON_VERTICES :
703+ if ( num_vertices := len (poly .getVertices () )) > MAX_POLYGON_VERTICES :
685704 logger .warning (
686705 "Visit %d, detector %d has a polygon with %d vertices. "
687706 "This geometry should be impossible for two intersecting "
@@ -708,7 +727,14 @@ def writeMultipleCellCoaddAsFits(
708727 array = number_of_vertices ,
709728 )
710729 visit_summary_hdu = fits .BinTableHDU .from_columns (
711- [visit_column , detector_column , number_of_vertices_column , polygon_column ],
730+ [
731+ visit_column ,
732+ detector_column ,
733+ physical_filter_column ,
734+ day_obs_column ,
735+ number_of_vertices_column ,
736+ polygon_column ,
737+ ],
712738 name = "VISIT_SUMMARY" ,
713739 )
714740 visit_summary_hdu .header ["POLYVERT" ] = MAX_POLYGON_VERTICES
0 commit comments