summaryrefslogtreecommitdiffstats
path: root/make_tprofile_config.py
diff options
context:
space:
mode:
authorAaron LI <aaronly.me@outlook.com>2016-07-11 22:08:15 +0800
committerAaron LI <aaronly.me@outlook.com>2016-07-11 22:08:15 +0800
commit78462b582ab115b1c78c0a591364c16731154a68 (patch)
tree8a4d8ae2e826ffac9126193a37126bd7e1191d8b /make_tprofile_config.py
parent48eb038dd4e0b9383315a76fb4b739d1671a1714 (diff)
downloadcexcess-78462b582ab115b1c78c0a591364c16731154a68.tar.bz2
Add make_tprofile_config.py: make tprofile.conf
Diffstat (limited to 'make_tprofile_config.py')
-rwxr-xr-xmake_tprofile_config.py92
1 files changed, 92 insertions, 0 deletions
diff --git a/make_tprofile_config.py b/make_tprofile_config.py
new file mode 100755
index 0000000..253a976
--- /dev/null
+++ b/make_tprofile_config.py
@@ -0,0 +1,92 @@
+#!/usr/bin/env python3
+#
+# Aaron LI
+# Created: 2016-07-11
+# Updated: 2016-07-11
+#
+
+"""
+Make the configuration file for `fit_tprofile.py`.
+"""
+
+import argparse
+import glob
+
+from info import get_redshift
+
+
+sample_config = """
+# redshift of the object (for pixel to distance conversion)
+redshift = %(redshift).6f
+
+[model_params]
+ # name = initial, lower, upper, variable (FIXED/False to fix the parameter)
+ A = %(A_val).1f, %(A_min).1f, %(A_max).1f, %(A_vary)s
+ n = %(n_val).1f, %(n_min).1f, %(n_max).1f, %(n_vary)s
+ xi = %(xi_val).1f, %(xi_min).1f, %(xi_max).1f, %(xi_vary)s
+ a2 = %(a2_val).1f, %(a2_min).1f, %(a2_max).1g, %(a2_vary)s
+ a3 = %(a3_val).1f, %(a3_min).1f, %(a3_max).1f, %(a3_vary)s
+ beta = %(beta_val).1f, %(beta_min).1f, %(beta_max).1f, %(beta_vary)s
+ T0 = %(T0_val).1f, %(T0_min).1f, %(T0_max).1f, %(T0_vary)s
+"""
+
+
+def parse_wang2012_param(pfile):
+ """
+ Parse the original configuration for `fit_wang2012_model`.
+ """
+ params = {}
+ for name, value, minimum, maximum, vary in map(str.split,
+ open(pfile).readlines()):
+ par = [
+ name,
+ float(value),
+ float(minimum),
+ float(maximum),
+ {"T": True, "F": False}.get(vary),
+ ]
+ params[name] = par
+ return params
+
+
+def make_config(params, redshift):
+ cfg_data = {"redshift": redshift}
+ for name, value, minimum, maximum, vary in params.values():
+ cfg_data.update({
+ "%s_val" % name: value,
+ "%s_min" % name: minimum,
+ "%s_max" % name: maximum,
+ "%s_vary" % name: vary,
+ })
+ cfg = sample_config % cfg_data
+ return cfg
+
+
+def main():
+ parser = argparse.ArgumentParser(
+ description="Make configuration for 'fit_tprofile.py'")
+ parser.add_argument("-j", "--json", dest="json", required=False,
+ help="the *_INFO.json file " +
+ "(default: find ../*_INFO.json)")
+ parser.add_argument("-i", "--infile", dest="infile",
+ default="wang2012_param.txt",
+ help="original wang2012 model parameter file " +
+ "(default: wang2012_param.txt")
+ parser.add_argument("-o", "--outfile", dest="outfile",
+ default="tprofile.conf",
+ help="output filename")
+ args = parser.parse_args()
+
+ # default "*_INFO.json"
+ info_json = glob.glob("../*_INFO.json")[0]
+ if args.json:
+ info_json = args.json
+ redshift = get_redshift(info_json)
+
+ params = parse_wang2012_param(args.infile)
+ config = make_config(params, redshift)
+ open(args.outfile, "w").write(config)
+
+
+if __name__ == "__main__":
+ main()