Source code for simmer.search_headers
"""Search for issues in FITS file headers similar
to s0512.fits from night 2015_10_26, which did not
contain either/both DATAFILE or/and FRAMENUM in
the header. These issues are only known to occur
with ShARCS data."""
from glob import glob
import astropy.io.fits as pyfits
import logging
logger = logging.getLogger('simmer')
[docs]
def search_headers(raw_dir, write_dir=None):
"""Function to perform search of FITS headers.
Inputs:
:raw_dir: (string) absolute path to directory containing raw data.
:write_dir: (string) absolute path to directory containing raw data.
Defaults to None; if this is the case, it's reassigned to
the `raw_dir` directory.
"""
if not write_dir:
write_dir = raw_dir
file = write_dir + "headers_wrong.txt"
textfile = open(file, "w")
files = glob(raw_dir + "*.fits")
files = [
f
for f in files
if "sky" not in f.split("/")[-1]
and "flat" not in f.split("/")[-1]
and "dark" not in f.split("/")[-1]
]
for file in files:
# load in header
head = pyfits.getheader(file)
keys = head.keys()
# check keywords
key1 = "DATAFILE"
key2 = "FRAMENUM"
if key1 in keys and key2 in keys:
head_k1 = head[key1]
head_k2 = head[key2]
if int(head_k1[1:]) != head_k2:
textfile.write(f"{file}\n")
else:
logger.error(f"Header Incomplete in {file}!!!")
textfile.write(f"{file} HEADER INCOMPLETE\n")
textfile.close()