From c3e2d564023c30271edbd7651ee3bd07e53ab9d8 Mon Sep 17 00:00:00 2001 From: Aaron LI Date: Tue, 4 Oct 2016 21:18:47 +0800 Subject: Add bin/fg21sim and some updates to galactic/synchrotron * Add new executable "bin/fg21sim" * galactic/synchrotron: update to use "configs.get_path()" * galactic/synchrotron: create output dir if not exists * galactic/synchrotron: add logging support * galactic/synchrotron: append FITS extension to filename * galactic/synchrotron: pass the basic test TODO: * "output()" needs fixes with the FITS header --- bin/fg21sim | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100755 bin/fg21sim (limited to 'bin') diff --git a/bin/fg21sim b/bin/fg21sim new file mode 100755 index 0000000..8098ac3 --- /dev/null +++ b/bin/fg21sim @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 +# -*- mode: python -*- +# +# Copyright (c) 2016 Weitian LI +# MIT license + +""" +Simulate the low-frequency radio foregrounds for the 21cm EoR signal. +""" + +import os +import sys +import argparse +import logging + +import numpy as np + +from fg21sim.configs import configs, validate_configs +from fg21sim.utils import setup_logging +from fg21sim.galactic import Synchrotron as GalacticSynchrotron + + +def main(): + parser = argparse.ArgumentParser( + description="Simulate the radio foregrounds for 21cm EoR signal") + parser.add_argument("config", help="user configuration file") + parser.add_argument("-l", "--log", dest="loglevel", default=None, + choices=["DEBUG", "INFO", "WARNING", + "ERROR", "CRITICAL"], + help="set the log level") + parser.add_argument("-L", "--logfile", default=None, + help="filename where to save the log messages") + parser.add_argument("-Q", "--quiet", action="store_true", + help="be quiet so do not log messages to screen") + args = parser.parse_args() + + configs.read_userconfig(args.config) + validate_configs(configs) + + if args.quiet: + log_stream = "" + else: + log_stream = None + + setup_logging(dict_config=configs.logging, + level=args.loglevel, + stream=log_stream, + logfile=args.logfile) + tool = os.path.basename(sys.argv[0]) + logger = logging.getLogger(tool) + logger.info("COMMAND: {0}".format(" ".join(sys.argv))) + + frequencies = np.array(configs.frequencies, ndmin=1) + freq_unit = configs.getn("frequency/unit") + logger.info("Simulation frequencies: " + "{min:.2f} - {max:.2f} {unit} (#{num:d})".format( + min=frequencies.min(), max=frequencies.max(), + num=len(frequencies), unit=freq_unit)) + + logger.info("Simulating the Galactic synchrotron foreground ...") + gsynchrotron = GalacticSynchrotron(configs) + map_gsync = gsynchrotron.simulate(frequencies) + logger.info("Done simulate Galactic synchrotron foreground!") + + +if __name__ == "__main__": + main() -- cgit v1.2.2