99"""
1010
1111import os
12- from datetime import datetime
12+ from datetime import datetime
1313from astropy .io import fits
14+ from astropy .io import ascii
1415
1516
16- def write_header_info_sp (primary_header , name = ' unknown' , version = ' unknown' ):
17+ def write_header_info_sp (primary_header , name = " unknown" , version = " unknown" ):
1718 """Write Header Info sp_validation.
1819
1920 Write information about software and run to FITS header
@@ -33,16 +34,16 @@ def write_header_info_sp(primary_header, name='unknown', version='unknown'):
3334 updated FITS header information
3435
3536 """
36- if ' USER' in os .environ :
37- author = os .environ [' USER' ]
37+ if " USER" in os .environ :
38+ author = os .environ [" USER" ]
3839 else :
39- author = ' unknown'
40- primary_header [' AUTHOR' ] = (author , ' Who ran the software' )
41- primary_header [' SOFTNAME' ] = (name , ' Name of the software' )
42- primary_header [' SOFTVERS' ] = (version , ' Version of the software' )
43- primary_header [' DATE' ] = (
44- datetime .now ().strftime (' %Y-%m-%d_%H-%M-%S' ),
45- ' When it was started' ,
40+ author = " unknown"
41+ primary_header [" AUTHOR" ] = (author , " Who ran the software" )
42+ primary_header [" SOFTNAME" ] = (name , " Name of the software" )
43+ primary_header [" SOFTVERS" ] = (version , " Version of the software" )
44+ primary_header [" DATE" ] = (
45+ datetime .now ().strftime (" %Y-%m-%d_%H-%M-%S" ),
46+ " When it was started" ,
4647 )
4748
4849 return primary_header
@@ -68,56 +69,41 @@ def add_shear_bias_to_header(primary_header, R, R_shear, R_select, c):
6869 additive bias
6970
7071 """
71- primary_header ['R' ] = (
72- r'<R>' ,
73- r'Mean full response <R_shear> + <R_select>'
72+ primary_header ["R" ] = (r"<R>" , r"Mean full response <R_shear> + <R_select>" )
73+ primary_header ["R_11" ] = (R [0 , 0 ], "Full response matrix comp 1 1" )
74+ primary_header ["R_12" ] = (R [0 , 1 ], "Full response matrix comp 1 2" )
75+ primary_header ["R_21" ] = (R [1 , 0 ], "Full response matrix comp 2 1" )
76+ primary_header ["R_22" ] = (R [1 , 1 ], "Full response matrix comp 2 2" )
77+
78+ primary_header ["R_g" ] = (r"<R_g>" , r"Mean shear response matrix <R_shear>" )
79+ primary_header ["R_g11" ] = (R_shear [0 , 0 ], "Mean shear resp matrix comp 1 1" )
80+ primary_header ["R_g12" ] = (R_shear [0 , 1 ], "Mean shear resp matrix comp 1 2" )
81+ primary_header ["R_g21" ] = (R_shear [1 , 0 ], "Mean shear resp matrix comp 2 1" )
82+ primary_header ["R_g22" ] = (R_shear [1 , 1 ], "Mean shear resp matrix comp 2 2" )
83+
84+ primary_header ["R_S" ] = (
85+ r"<R_S>" ,
86+ r"Global selection response matrix <R_select>" ,
7487 )
75- primary_header ['R_11' ] = (R [0 , 0 ], 'Full response matrix comp 1 1' )
76- primary_header ['R_12' ] = (R [0 , 1 ], 'Full response matrix comp 1 2' )
77- primary_header ['R_21' ] = (R [1 , 0 ], 'Full response matrix comp 2 1' )
78- primary_header ['R_22' ] = (R [1 , 1 ], 'Full response matrix comp 2 2' )
79-
80- primary_header ['R_g' ] = (r'<R_g>' , r'Mean shear response matrix <R_shear>' )
81- primary_header ['R_g11' ] = (
82- R_shear [0 , 0 ],
83- 'Mean shear resp matrix comp 1 1'
84- )
85- primary_header ['R_g12' ] = (
86- R_shear [0 , 1 ],
87- 'Mean shear resp matrix comp 1 2'
88- )
89- primary_header ['R_g21' ] = (
90- R_shear [1 , 0 ],
91- 'Mean shear resp matrix comp 2 1'
92- )
93- primary_header ['R_g22' ] = (
94- R_shear [1 , 1 ],
95- 'Mean shear resp matrix comp 2 2'
96- )
97-
98- primary_header ['R_S' ] = (
99- r'<R_S>' ,
100- r'Global selection response matrix <R_select>'
101- )
102- primary_header ['R_S11' ] = (
88+ primary_header ["R_S11" ] = (
10389 R_select [0 , 0 ],
104- ' Global selection resp matrix comp 1 1'
90+ " Global selection resp matrix comp 1 1" ,
10591 )
106- primary_header [' R_S12' ] = (
92+ primary_header [" R_S12" ] = (
10793 R_select [0 , 1 ],
108- ' Global selection resp matrix comp 1 2'
94+ " Global selection resp matrix comp 1 2" ,
10995 )
110- primary_header [' R_S21' ] = (
96+ primary_header [" R_S21" ] = (
11197 R_select [1 , 0 ],
112- ' Global selection resp matrix comp 2 1'
98+ " Global selection resp matrix comp 2 1" ,
11399 )
114- primary_header [' R_S22' ] = (
100+ primary_header [" R_S22" ] = (
115101 R_select [1 , 1 ],
116- ' Global selection resp matrix comp 2 2'
102+ " Global selection resp matrix comp 2 2" ,
117103 )
118104
119- primary_header [' c_1' ] = (c [0 ], ' Additive bias 1st comp' )
120- primary_header [' c_2' ] = (c [1 ], ' Additive bias 2nd comp' )
105+ primary_header [" c_1" ] = (c [0 ], " Additive bias 1st comp" )
106+ primary_header [" c_2" ] = (c [1 ], " Additive bias 2nd comp" )
121107
122108
123109def write_fits_BinTable_file (
@@ -159,3 +145,54 @@ def write_fits_BinTable_file(
159145
160146 hdu_list = fits .HDUList ([primary_hdu , table_hdu ])
161147 hdu_list .writeto (output_path , overwrite = True )
148+
149+
150+ def bin_edges2centers (bin_edges ):
151+ """Bin Edges To Centers.
152+
153+ Transform bin edge values to central values.
154+
155+ Parameters
156+ ----------
157+ bin_edges : list
158+ bin edge values
159+
160+ Returns
161+ -------
162+ list
163+ bin central values
164+
165+ """
166+ bin_means = 0.5 * (bin_edges [1 :] + bin_edges [:- 1 ])
167+
168+ return bin_means
169+
170+
171+ def read_dndz (file_path ):
172+ """Read Dndz.
173+
174+ Read redshift histogram from file.
175+
176+ Parameters
177+ ----------
178+ file_path : str
179+ input file path
180+
181+ Returns
182+ -------
183+ list :
184+ redshift bin centers
185+ list :
186+ number densities
187+ list :
188+ redshift bin edges
189+
190+ """
191+ dat = ascii .read (file_path , format = "commented_header" )
192+
193+ # Remove last n(z) value which is zero, to match bin centers
194+ nz = dat ["dn_dz" ][:- 1 ]
195+ z_edges = dat ["z" ]
196+ z_centers = bin_edges2centers (z_edges )
197+
198+ return z_centers , nz , z_edges
0 commit comments