Source code for mirar.pipelines.winter.fix_headers
"""
Script to fix headers of images based on a log file
"""
import argparse
import numpy as np
import pandas as pd
from astropy.io import fits
from mirar.paths import get_output_path
[docs]
def fix_headers(logfile, night, keyword_list, sub_dir="raw"):
"""
Function to fix headers of images based on a log file
"""
obslog = pd.read_csv(logfile)
for ind, image_basename in enumerate(obslog["BASENAME"]):
for i in range(5):
if f"_{i}.fits" in image_basename:
image_basename = image_basename.replace(f"_{i}.fits", ".fits")
image_filename = get_output_path(
base_name=image_basename, dir_root=sub_dir, sub_dir="winter/" + night
)
with fits.open(image_filename, "update") as img_hdulist:
img_header = img_hdulist[0].header
for key in keyword_list:
if obslog.loc[ind][key] is np.nan:
img_header[key] = ""
else:
img_header[key] = obslog.loc[ind][key]
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Fix headers of images")
parser.add_argument("logfile", type=str, help="CSV file with image metadata")
parser.add_argument("night", type=str, help="Night of observation")
parser.add_argument(
"--sub_dir", type=str, default="raw", help="Subdirectory of images"
)
parser.add_argument("-k", "--keywords", type=str, nargs="+")
args = parser.parse_args()
fix_headers(args.logfile, args.night, args.keywords, args.sub_dir)