aboutsummaryrefslogtreecommitdiffstats
path: root/bin/hpx2healpix
diff options
context:
space:
mode:
authorAaron LI <aaronly.me@outlook.com>2016-09-27 11:30:49 +0800
committerAaron LI <aaronly.me@outlook.com>2016-09-27 11:30:49 +0800
commita256581869584f37d5f0ea04cd2907a9604a0d12 (patch)
treec09b483bb0e28dd5ae4fbd07664f676de429b038 /bin/hpx2healpix
parent4485c37132668624bb627d2764b0fd5877c33148 (diff)
downloadfg21sim-a256581869584f37d5f0ea04cd2907a9604a0d12.tar.bz2
Remove ".py" extension for bin scripts
Diffstat (limited to 'bin/hpx2healpix')
-rwxr-xr-xbin/hpx2healpix69
1 files changed, 69 insertions, 0 deletions
diff --git a/bin/hpx2healpix b/bin/hpx2healpix
new file mode 100755
index 0000000..6f83426
--- /dev/null
+++ b/bin/hpx2healpix
@@ -0,0 +1,69 @@
+#!/usr/bin/env python3
+#
+# Copyright (c) 2016 Weitian LI <liweitianux@live.com>
+# MIT license
+
+"""
+Recover the sky map in HPX projection format back into HEALPix table format,
+i.e., the reverse of `healpix2hpx.py`.
+"""
+
+import os
+import sys
+import argparse
+
+import numpy as np
+from astropy.io import fits
+
+import fg21sim
+from fg21sim.utils import hpx2healpix
+
+
+# Reference:
+# http://docs.astropy.org/en/stable/io/fits/usage/table.html#column-creation
+FITS_COLUMN_FORMATS = {
+ np.dtype("int16"): "I",
+ np.dtype("int32"): "J",
+ np.dtype("int64"): "K",
+ np.dtype("float32"): "E",
+ np.dtype("float64"): "D",
+}
+
+
+def main():
+ parser = argparse.ArgumentParser(
+ description="Recover the image in HPX projection to HEALPix data")
+ parser.add_argument("infile", help="input FITS image in HPX projection")
+ parser.add_argument("outfile", help="output HEALPix data file")
+ parser.add_argument("-C", "--clobber", action="store_true",
+ help="overwrite the existing output file")
+ parser.add_argument("-F", "--float", action="store_true",
+ help="use float (single precision) instead of double")
+ args = parser.parse_args()
+
+ tool = os.path.basename(sys.argv[0])
+ history = [
+ "TOOL: {0}".format(tool),
+ "PARAM: {0}".format(" ".join(sys.argv[1:])),
+ ]
+ comments = [
+ 'Tool "{0}" is part of the "{1}" package'.format(tool,
+ fg21sim.__title__),
+ 'distributed under {0} license.'.format(fg21sim.__license__),
+ 'See also {0}'.format(fg21sim.__url__)
+ ]
+
+ hp_data, hp_header = hpx2healpix(args.infile,
+ append_history=history,
+ append_comment=comments)
+ if args.float:
+ hp_data = hp_data.astype(np.float32)
+ hdu = fits.BinTableHDU.from_columns([
+ fits.Column(name="I", array=hp_data,
+ format=FITS_COLUMN_FORMATS.get(hp_data.dtype))
+ ], header=hp_header)
+ hdu.writeto(args.outfile, clobber=args.clobber, checksum=True)
+
+
+if __name__ == "__main__":
+ main()