Source code for galfitools.galin.bestInputParam

import argparse
from pathlib import Path

# Import your real function here
from galfitools.galout.getChiNu import getChiNu


[docs] def read_galfile_list(list_file): """ Read a text file containing one GALFIT file per line. Empty lines and lines starting with '#' are ignored. """ galfiles = [] with open(list_file, "r", encoding="utf-8") as file: for line in file: galfile = line.strip() if not galfile: continue if galfile.startswith("#"): continue galfiles.append(galfile) return galfiles
[docs] def run_get_chinu_for_list(list_file, numcomp, fracrad, regfile, delete): """ Apply getChiNu to each GALFIT file in the input list. Returns ------- results : list of dict List with the results for each GALFIT file. best_result : dict Result with the lowest chi_nu value. """ galfiles = read_galfile_list(list_file) results = [] for galfile in galfiles: chinu, aic, bic, numparfree = getChiNu( galfile, numcomp, fracrad, regfile, delete, ) result = { "galfile": galfile, "chinu": chinu, "aic": aic, "bic": bic, "numparfree": numparfree, } results.append(result) if not results: raise ValueError("The input list does not contain valid GALFIT files.") best_result = min(results, key=lambda item: item["chinu"]) return results, best_result
[docs] def parse_args(): """ Parse command-line arguments. """ parser = argparse.ArgumentParser( description="Find the GALFIT file with the lowest chi_nu value." ) parser.add_argument( "list_file", help="Text file containing one GALFIT file per line.", ) parser.add_argument( "-n", "--numcomp", type=int, default=1, help="Component Number", ) parser.add_argument( "-r", "--regfile", help="DS9 ellipse region file.", ) parser.add_argument( "-d", "--delete", action="store_true", help="deletes the sigma and chisquare image used to compute chinu", ) return parser.parse_args()
[docs] def mainBestInputParam(): """ Main program. """ args = parse_args() fracrad = 0.98 results, best_result = run_get_chinu_for_list( args.list_file, args.numcomp, fracrad, args.regfile, args.delete, ) chinu_list = [item["chinu"] for item in results] print("Chi_nu values:") print(chinu_list) print() print("Best GALFIT file:") print(f"galfile = {best_result['galfile']}") print(f"chi_nu = {best_result['chinu']}") print(f"AIC = {best_result['aic']}") print(f"BIC = {best_result['bic']}") print(f"Nfree = {best_result['numparfree']}") bestfile = best_result["galfile"] print(f"{bestfile}")
if __name__ == "__main__": mainBestInputParam()