diff options
author | Aaron LI <aaronly.me@outlook.com> | 2016-10-04 21:18:47 +0800 |
---|---|---|
committer | Aaron LI <aaronly.me@outlook.com> | 2016-10-04 21:22:26 +0800 |
commit | c3e2d564023c30271edbd7651ee3bd07e53ab9d8 (patch) | |
tree | 0b888000e37863c9570ee96027f7b8049ffe3ef5 /bin/fg21sim | |
parent | 085cb258fccb039180e52c8934451673d68e963f (diff) | |
download | fg21sim-c3e2d564023c30271edbd7651ee3bd07e53ab9d8.tar.bz2 |
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
Diffstat (limited to 'bin/fg21sim')
-rwxr-xr-x | bin/fg21sim | 67 |
1 files changed, 67 insertions, 0 deletions
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 <liweitianux@live.com> +# 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() |