Source code for galfitools.galout.clean_fitlog
#!/usr/bin/env python3
import argparse
import re
from pathlib import Path
SEPARATOR_PATTERN = re.compile(r"^-{20,}\s*$")
ASTERISK_PARAMETER_PATTERN = re.compile(r"\*[^*\n]+\*")
[docs]
def remove_flagged_entries(entries: list[str]) -> tuple[list[str], list[str]]:
"""Separate valid entries from entries containing starred parameters."""
valid_entries = []
removed_entries = []
for entry in entries:
if ASTERISK_PARAMETER_PATTERN.search(entry):
removed_entries.append(entry)
else:
valid_entries.append(entry)
return valid_entries, removed_entries
[docs]
def clean_fit_log(input_file: Path, output_file: Path) -> None:
"""Remove complete GALFIT entries containing starred parameters."""
log_text = input_file.read_text(encoding="utf-8")
separator, entries = extract_entries(log_text)
valid_entries, removed_entries = remove_flagged_entries(entries)
cleaned_text = format_entries(valid_entries, separator)
output_file.write_text(cleaned_text, encoding="utf-8")
print(f"Total entries : {len(entries)}")
print(f"Entries retained: {len(valid_entries)}")
print(f"Entries removed : {len(removed_entries)}")
print(f"Output file : {output_file}")
[docs]
def mainCleanFitlog() -> None:
parser = argparse.ArgumentParser(
description=(
"Remove complete GALFIT fit.log entries containing parameters "
"enclosed by asterisks."
)
)
parser.add_argument(
"input_file",
type=Path,
help="Input GALFIT fit.log file",
)
parser.add_argument(
"output_file",
type=Path,
help="Output cleaned log file",
)
args = parser.parse_args()
if not args.input_file.is_file():
parser.error(f"Input file does not exist: {args.input_file}")
clean_fit_log(args.input_file, args.output_file)
if __name__ == "__main__":
mainCleanFitlog()