#!/usr/bin/python # avoid using `/usr/bin/env python' # # convert JSON to CSV format # Ref: http://stackoverflow.com/questions/1871524/convert-from-json-to-csv-using-python ## Ref: http://json.parser.online.fr/ # # LIweitiaNux # August 31, 2012 # # ChangeLogs: # v3.1, 2013/05/18, LIweitiaNux # add key `Feature', corresponding to `collectdata_v3.1' # v3.2, 2013/05/29, LIweitiaNux # add key `XCNTRD_RA, XCNTRD_DEC' # v3.3, 2013/10/14, LIweitiaNux # add key `Unified Name' # import sys import csv import json argc = len(sys.argv) if (argc != 3): print("usage:") print(" "+ sys.argv[0]+ " ") sys.exit(255) infile = open(sys.argv[1], 'r') data = json.load(infile) infile.close() outfile = csv.writer(open(sys.argv[2], "wb+")) # write header {{{ outfile.writerow([ "Obs. ID", "Source Name", "Unified Name", "Obs. Date", "Detector", "Exposure (ks)", "Clean Exposure (ks)", "R. A.", "Dec.", "XCNTRD_RA", "XCNTRD_DEC", "nH (10^22 cm^-2)", "redshift", "E(z)", "T_ref (keV)", "Z_ref (solar)", "Rmax_SBP (pixel)", "Rmax_Tpro (pixel)", "Rmax_SBP (kpc)", "Rmax_Tpro (kpc)", "NFW_Rmin (kpc)", "Model_SBP", "n01", "beta1", "rc1", "rc1_kpc", "n02", "beta2", "rc2", "rc2_kpc", "bkg", "R200 (kpc)", "R200_err_lower (1sigma)", "R200_err_upper (1sigma)", "M200 (M_sun)", "M200_err_lower (1sigma)", "M200_err_upper (1sigma)", "L200 (erg/s)", "L200_err (1sigma)", "M_gas200 (M_sun)", "M_gas200_err_lower (1sigma)", "M_gas200_err_upper (1sigma)", "F_gas200", "F_gas200_err_lower (1sigma)", "F_gas200_err_upper (1sigma)", "R500 (kpc)", "R500_err_lower (1sigma)", "R500_err_upper (1sigma)", "M500 (M_sun)", "M500_err_lower (1sigma)", "M500_err_upper (1sigma)", "L500 (erg/s)", "L500_err (1sigma)", "M_gas500 (M_sun)", "M_gas500_err_lower (1sigma)", "M_gas500_err_upper (1sigma)", "F_gas500", "F_gas500_err_lower (1sigma)", "F_gas500_err_upper (1sigma)", "R1500", "R1500_err_lower", "R1500_err_upper", "M1500", "M1500_err_lower", "M1500_err_upper", "L1500", "L1500_err", "M_gas1500", "M_gas1500_err_lower", "M_gas1500_err_upper", "F_gas1500", "F_gas1500_err_lower", "F_gas1500_err_upper", "R2500", "R2500_err_lower", "R2500_err_upper", "M2500", "M2500_err_lower", "M2500_err_upper", "L2500", "L2500_err", "M_gas2500", "M_gas2500_err_lower", "M_gas2500_err_upper", "F_gas2500", "F_gas2500_err_lower", "F_gas2500_err_upper", "T(0.1-0.5 R500)", "T_err(0.1-0.5 R500)", "T_err_l(0.1-0.5 R500)", "T_err_u(0.1-0.5 R500)", "Z(0.1-0.5 R500)", "Z_err(0.1-0.5 R500)", "Z_err_l(0.1-0.5 R500)", "Z_err_u(0.1-0.5 R500)", "T(0.2-0.5 R500)", "T_err(0.2-0.5 R500)", "T_err_l(0.2-0.5 R500)", "T_err_u(0.2-0.5 R500)", "Z(0.2-0.5 R500)", "Z_err(0.2-0.5 R500)", "Z_err_l(0.2-0.5 R500)", "Z_err_u(0.2-0.5 R500)", "F_gas(R2500-R500)", "F_gas_err_l(R2500-R500)", "F_gas_err_u(R2500-R500)", "R_cool (kpc)", "Cooling_time (Gyr)", "Cool_core", "Feature", "NOTE" ]) ## header }}} # write data {{{ for item in data: outfile.writerow([ item["Obs. ID"], item["Source Name"], item["Unified Name"], item["Obs. Date"], item["Detector"], item["Exposure (ks)"], item["Clean Exposure (ks)"], item["R. A."], item["Dec."], item["XCNTRD_RA"], item["XCNTRD_DEC"], item["nH (10^22 cm^-2)"], item["redshift"], item["E(z)"], item["T_ref (keV)"], item["Z_ref (solar)"], item["Rmax_SBP (pixel)"], item["Rmax_Tpro (pixel)"], item["Rmax_SBP (kpc)"], item["Rmax_Tpro (kpc)"], item["NFW_Rmin (kpc)"], item["Model_SBP"], item["n01"], item["beta1"], item["rc1"], item["rc1_kpc"], item["n02"], item["beta2"], item["rc2"], item["rc2_kpc"], item["bkg"], item["R200 (kpc)"], item["R200_err_lower (1sigma)"], item["R200_err_upper (1sigma)"], item["M200 (M_sun)"], item["M200_err_lower (1sigma)"], item["M200_err_upper (1sigma)"], item["L200 (erg/s)"], item["L200_err (1sigma)"], item["M_gas200 (M_sun)"], item["M_gas200_err_lower (1sigma)"], item["M_gas200_err_upper (1sigma)"], item["F_gas200"], item["F_gas200_err_lower (1sigma)"], item["F_gas200_err_upper (1sigma)"], item["R500 (kpc)"], item["R500_err_lower (1sigma)"], item["R500_err_upper (1sigma)"], item["M500 (M_sun)"], item["M500_err_lower (1sigma)"], item["M500_err_upper (1sigma)"], item["L500 (erg/s)"], item["L500_err (1sigma)"], item["M_gas500 (M_sun)"], item["M_gas500_err_lower (1sigma)"], item["M_gas500_err_upper (1sigma)"], item["F_gas500"], item["F_gas500_err_lower (1sigma)"], item["F_gas500_err_upper (1sigma)"], item["R1500"], item["R1500_err_lower"], item["R1500_err_upper"], item["M1500"], item["M1500_err_lower"], item["M1500_err_upper"], item["L1500"], item["L1500_err"], item["M_gas1500"], item["M_gas1500_err_lower"], item["M_gas1500_err_upper"], item["F_gas1500"], item["F_gas1500_err_lower"], item["F_gas1500_err_upper"], item["R2500"], item["R2500_err_lower"], item["R2500_err_upper"], item["M2500"], item["M2500_err_lower"], item["M2500_err_upper"], item["L2500"], item["L2500_err"], item["M_gas2500"], item["M_gas2500_err_lower"], item["M_gas2500_err_upper"], item["F_gas2500"], item["F_gas2500_err_lower"], item["F_gas2500_err_upper"], item["T(0.1-0.5 R500)"], item["T_err(0.1-0.5 R500)"], item["T_err_l(0.1-0.5 R500)"], item["T_err_u(0.1-0.5 R500)"], item["Z(0.1-0.5 R500)"], item["Z_err(0.1-0.5 R500)"], item["Z_err_l(0.1-0.5 R500)"], item["Z_err_u(0.1-0.5 R500)"], item["T(0.2-0.5 R500)"], item["T_err(0.2-0.5 R500)"], item["T_err_l(0.2-0.5 R500)"], item["T_err_u(0.2-0.5 R500)"], item["Z(0.2-0.5 R500)"], item["Z_err(0.2-0.5 R500)"], item["Z_err_l(0.2-0.5 R500)"], item["Z_err_u(0.2-0.5 R500)"], item["F_gas(R2500-R500)"], item["F_gas_err_l(R2500-R500)"], item["F_gas_err_u(R2500-R500)"], item["R_cool (kpc)"], item["Cooling_time (Gyr)"], item["Cool_core"], item["Feature"], item["NOTE"] ]) ## write data }}} ## EOF