diff options
-rwxr-xr-x | scripts/collect_infodata.sh | 574 | ||||
-rwxr-xr-x | scripts/json2csv.py | 74 |
2 files changed, 0 insertions, 648 deletions
diff --git a/scripts/collect_infodata.sh b/scripts/collect_infodata.sh deleted file mode 100755 index bdda7f7..0000000 --- a/scripts/collect_infodata.sh +++ /dev/null @@ -1,574 +0,0 @@ -#!/bin/sh -## -## Collect the calculated mass data and update them to the INFO json file. -## -## JSON parser: http://json.parser.online.fr/ -## -## Weitian LI <liweitianux@gmail.com> -## August 31, 2012 -## -## Change logs: -## 2017-02-17, Weitian LI -## * Remove cooling time and radius results calculated by 'cooling_time' -## 2017-02-16, Weitian LI -## * Remove luminosity results calculated by 'calc_lx' -## 2017-02-09, Weitian LI -## * Update to use the new style config files -## * Some cleanups -## v3.4, 2015/06/03, Weitian LI -## * Copy needed pfiles to current working directory, and -## set environment variable $PFILES to use these first. -## * Replaced 'grep' with '\grep', 'ls' with '\ls' -## v3.3, 2013/10/14, Weitian LI -## add key `Unified Name' -## v3.2, 2013/05/29, Weitian LI -## add key `XCNTRD_RA, XCNTRD_DEC' -## v3.1, 2013/05/18, Weitian LI -## add key `Feature' -## v3.0, 2013/02/09, Weitian LI -## modified for `new sample info format' -## v2.2, 2012/12/18, Weitian LI -## add `beta' and `cooling time' parameters -## v2.1, 2012/11/07, Weitian LI -## account for `fitting_dbeta' -## v2.0, 2012/10/14, Weitian LI -## add parameters -## v1.1, 2012/09/05, Weitian LI -## add `T_avg(0.2-0.5 R500)' and `T_err' -## - -## error code {{{ -ERR_USG=1 -ERR_DIR=11 -ERR_CFG=12 -ERR_RES=13 -ERR_COSC=14 -ERR_BETA=101 -ERR_BETA2=102 -ERR_JSON=201 -ERR_MLOG=202 -ERR_BLOG=203 -ERR_CLOG=204 -## error code }}} - -## usage, help {{{ -case "$1" in - -[hH]*|--[hH]*) - printf "usage:\n" - printf " `basename $0` json=<info_json> cfg=<main_cfg> res=<final_result> basedir=<repro_dir> massdir=<mass_dir>\n" - exit ${ERR_USG} - ;; -esac -## usage, help }}} - -## default parameters {{{ -# default basedir -DFT_BASEDIR=".." -# default mass dir -DFT_MASSDIR="mass" -# default pattern for json info file -DFT_JSON_PAT="*_INFO.json" -# main config file -DFT_CFG_PAT="mass.conf" -# default result file -DFT_RES_FINAL_PAT="final_result.txt" -# default sbprofile region file -DFT_SBPROFILE_REG="sbprofile.reg" -# default radial spectra region file -DFT_RSPEC_REG="rspec.reg" -## default parameters }}} - -## functions {{{ -# process commandline arguments -# cmdline arg format: `KEY=VALUE' -getopt_keyval() { - until [ -z "$1" ] - do - key=${1%%=*} # extract key - val=${1#*=} # extract value - keyval="${key}=\"${val}\"" - echo "## getopt: eval '${keyval}'" - eval ${keyval} - shift # shift, process next one - done -} -## functions }}} - -## parameters {{{ -# process cmdline args using `getopt_keyval' -getopt_keyval "$@" - -# init directory -INIT_DIR=`pwd -P` - -# check given parameters -# check given dir -if [ -d "${basedir}" ] && \ls ${basedir}/*repro_evt2.fits > /dev/null 2>&1; then - BASEDIR=${basedir} -elif [ -d "${DFT_BASEDIR}" ] && \ls ${DFT_BASEDIR}/*repro_evt2.fits > /dev/null 2>&1; then - BASEDIR=${DFT_BASEDIR} -else - read -p "> basedir (contains info json): " BASEDIR - if [ ! -d "${BASEDIR}" ]; then - printf "ERROR: given \`${BASEDIR}' NOT a directory\n" - exit ${ERR_DIR} - elif ! \ls ${BASEDIR}/*repro_evt2.fits > /dev/null 2>&1; then - printf "ERROR: given \`${BASEDIR}' NOT contains needed evt files\n" - exit ${ERR_DIR} - fi -fi -# remove the trailing '/' -BASEDIR=`( cd ${INIT_DIR}/${BASEDIR} && pwd -P )` -printf "## use basedir: \`${BASEDIR}'\n" -# mass dir -if [ ! -z "${massdir}" ] && [ -d "${BASEDIR}/${massdir}" ]; then - MASS_DIR=`( cd ${BASEDIR}/${massdir} && pwd -P )` -elif [ -d "${BASEDIR}/${DFT_MASSDIR}" ]; then - MASS_DIR=`( cd ${BASEDIR}/${DFT_MASSDIR} && pwd -P )` -else - read -p "> mass dir (relative to basedir): " MASS_DIR - if [ ! -d "${BASEDIR}/${MASS_DIR}" ]; then - printf "ERROR: given \`${BASEDIR}/${MASS_DIR}' NOT a directory\n" - exit ${ERR_DIR} - fi -fi -# remove the trailing '/' -MASS_DIR=`echo ${MASS_DIR} | sed 's/\/*$//'` -printf "## use massdir: \`${MASS_DIR}'\n" -# check json file -if [ ! -z "${json}" ] && [ -r "${BASEDIR}/${json}" ]; then - JSON_FILE="${json}" -elif [ "`\ls ${BASEDIR}/${DFT_JSON_PAT} | wc -l`" -eq 1 ]; then - JSON_FILE=`( cd ${BASEDIR} && \ls ${DFT_JSON_PAT} )` -else - read -p "> info json file: " JSON_FILE - if ! [ -r "${BASEDIR}/${JSON_FILE}" ]; then - printf "ERROR: cannot access given \`${BASEDIR}/${INFO_JSON}' file\n" - exit ${ERR_JSON} - fi -fi -printf "## use info json file: \`${JSON_FILE}'\n" -# check main config file -if [ ! -z "${cfg}" ] && [ -r "${cfg}" ]; then - CFG_FILE="${cfg}" -elif [ -r "${DFT_CFG_PAT}" ]; then - CFG_FILE="${DFT_CFG_PAT}" -else - read -p "> main config file: " CFG_FILE - if [ ! -r "${CFG_FILE}" ]; then - printf "ERROR: cannot access given \`${CFG_JSON}' file\n" - exit ${ERR_CFG} - fi -fi -printf "## use main config file: \`${CFG_FILE}'\n" -SBP_CFG=`\grep '^sbp_cfg' ${CFG_FILE} | awk '{ print $2 }'` -printf "## sbp config file: \`${SBP_CFG}'\n" -# check final result file -if [ ! -z "${res}" ] && [ -r "${res}" ]; then - RES_FINAL="${res}" -elif [ -r "${DFT_RES_FINAL_PAT}" ]; then - RES_FINAL="${DFT_RES_FINAL_PAT}" -else - read -p "> final result file: " RES_FINAL - if [ ! -r "${RES_FINAL}" ]; then - printf "ERROR: cannot access given \`${RES_FINAL}' file\n" - exit ${ERR_RES} - fi -fi -printf "## use final result file: \`${RES_FINAL}'\n" -## parameters }}} - -## directory & file {{{ -BASE_PATH=`dirname $0` -printf "## BASE_PATH: ${BASE_PATH}\n" -EVT_DIR="${BASEDIR}/evt" -SPEC_DIR="${BASEDIR}/spc/profile" -## dir & file }}} - -## prepare parameter files (pfiles) {{{ -CIAO_TOOLS="dmkeypar" - -# Copy necessary pfiles for localized usage -for tool in ${CIAO_TOOLS}; do - pfile=`paccess ${tool}` - [ -n "${pfile}" ] && punlearn ${tool} && cp -Lvf ${pfile} . -done - -# Modify environment variable 'PFILES' to use local pfiles first -export PFILES="./:${PFILES}" -## pfiles }}} - -cd ${BASEDIR} -printf "## enter directory: `pwd -P`\n" - -## in dir `repro' {{{ -punlearn dmkeypar -EVT_RAW=`\ls *repro_evt2.fits` -OBS_ID=`dmkeypar ${EVT_RAW} OBS_ID echo=yes` -DATE_OBS=`dmkeypar ${EVT_RAW} DATE-OBS echo=yes` -EXPOSURE_RAW=`dmkeypar ${EVT_RAW} EXPOSURE echo=yes | awk '{ print $1/1000 }'` -## ACIS_TYPE -DETNAM=`dmkeypar ${EVT_RAW} DETNAM echo=yes` -if echo ${DETNAM} | \grep -q 'ACIS-0123'; then - ACIS_TYPE="ACIS-I" -elif echo ${DETNAM} | \grep -q 'ACIS-[0-6]*7'; then - ACIS_TYPE="ACIS-S" -else - printf "*** ERROR: unknown detector type: ${DETNAM}\n" - ACIS_TYPE="UNKNOWN" - exit 1 -fi -## dir `repro' }}} - -## in dir `repro/evt' {{{ -cd ${EVT_DIR} -EVT_CLEAN=`\ls evt2_c*_clean.fits` -EXPOSURE_CLEAN=`dmkeypar ${EVT_CLEAN} EXPOSURE echo=yes | awk '{ print $1/1000 }'` -## dir `repro/evt' }}} - -## in dir `repro/mass' {{{ -cd ${MASS_DIR} - -# misc {{{ -N_H=`\grep '^nh' ${CFG_FILE} | awk '{ print $2 }'` -ABUND=`\grep '^abund' ${CFG_FILE} | awk '{ print $2 }'` -TPROFILE_DATA=`\grep '^tprofile_data' ${CFG_FILE} | awk '{ print $2 }'` -NFW_RMIN_KPC=`\grep '^nfw_rmin_kpc' ${CFG_FILE} | awk '{ print $2 }'` -Z=`\grep '^z' ${SBP_CFG} | awk '{ print $2 }'` -KPC_PER_PIXEL=`cosmo_calc -b --kpc-per-pix ${Z}` -SBP_DATA=`\grep '^sbp_data' ${SBP_CFG} | awk '{ print $2 }'` -RMAX_SBP_PIX=`tail -n 1 ${SBP_DATA} | awk '{ print $1+$2 }'` -RMAX_SBP_KPC=`echo "${RMAX_SBP_PIX} ${KPC_PER_PIXEL}" | awk '{ printf("%.2f", $1*$2) }'` -SPC_DIR="$(dirname $(readlink ${TPROFILE_DATA}))" -if [ -f "${SPC_DIR}/${DFT_RSPEC_REG}" ]; then - RMAX_TPRO_PIX=`\grep -iE '(pie|annulus)' ${SPC_DIR}/${DFT_RSPEC_REG} | tail -n 1 | awk -F',' '{ print $4 }'` - RMAX_TPRO_KPC=`echo "${RMAX_TPRO_PIX} ${KPC_PER_PIXEL}" | awk '{ printf("%.2f", $1*$2) }'` -fi -[ -z "${NFW_RMIN_KPC}" ] && NFW_RMIN_KPC="null" -[ -z "${RMAX_SBP_PIX}" ] && RMAX_SBP_PIX="null" -[ -z "${RMAX_SBP_KPC}" ] && RMAX_SBP_KPC="null" -# misc }}} - -## determine single/double beta {{{ -if \grep -q '^beta2' ${SBP_CFG}; then - MODEL_SBP="double-beta" - n01=`\grep '^n01' ${RES_FINAL} | awk '{ print $2 }'` - beta1=`\grep '^beta1' ${RES_FINAL} | awk '{ print $2 }'` - rc1=`\grep -E '^rc1\s' ${RES_FINAL} | awk '{ print $2 }'` - rc1_kpc=`\grep '^rc1_kpc' ${RES_FINAL} | awk '{ print $2 }'` - n02=`\grep '^n02' ${RES_FINAL} | awk '{ print $2 }'` - beta2=`\grep '^beta2' ${RES_FINAL} | awk '{ print $2 }'` - rc2=`\grep -E '^rc2\s' ${RES_FINAL} | awk '{ print $2 }'` - rc2_kpc=`\grep '^rc2_kpc' ${RES_FINAL} | awk '{ print $2 }'` - BKG=`\grep '^bkg' ${RES_FINAL} | awk '{ print $2 }'` - # beta1 -> smaller rc; beta2 -> bigger rc - if [ `echo "${rc1} < ${rc2}" | bc -l` -eq 1 ]; then - N01=${n01} - BETA1=${beta1} - RC1=${rc1} - RC1_KPC=${rc1_kpc} - N02=${n02} - BETA2=${beta2} - RC2=${rc2} - RC2_KPC=${rc2_kpc} - else - # beta1 <-> beta2 (swap) - N01=${n02} - BETA1=${beta2} - RC1=${rc2} - RC1_KPC=${rc2_kpc} - N02=${n01} - BETA2=${beta1} - RC2=${rc1} - RC2_KPC=${rc1_kpc} - fi -else - MODEL_SBP="single-beta" - N01="null" - BETA1="null" - RC1="null" - RC1_KPC="null" - N02=`\grep '^n0' ${RES_FINAL} | awk '{ print $2 }'` - BETA2=`\grep '^beta' ${RES_FINAL} | awk '{ print $2 }'` - RC2=`\grep -E '^rc\s' ${RES_FINAL} | awk '{ print $2 }'` - RC2_KPC=`\grep '^rc_kpc' ${RES_FINAL} | awk '{ print $2 }'` - BKG=`\grep '^bkg' ${RES_FINAL} | awk '{ print $2 }'` -fi -## single/double beta }}} - -## get `mass/virial_radius' {{{ -# 200 data {{{ -R200_VAL=`\grep '^r200' ${RES_FINAL} | awk '{ print $2 }'` -R200_ERR_L=`\grep '^r200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -R200_ERR_U=`\grep '^r200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -M200_VAL=`\grep '^m200' ${RES_FINAL} | awk '{ print $2 }'` -M200_ERR_L=`\grep '^m200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -M200_ERR_U=`\grep '^m200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -MGAS200_VAL=`\grep '^gas_m200' ${RES_FINAL} | awk '{ print $2 }'` -MGAS200_ERR_L=`\grep '^gas_m200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -MGAS200_ERR_U=`\grep '^gas_m200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -FGAS200_VAL=`\grep '^gas_fraction200' ${RES_FINAL} | awk '{ print $2 }'` -FGAS200_ERR_L=`\grep '^gas_fraction200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -FGAS200_ERR_U=`\grep '^gas_fraction200' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -[ -z "${R200_VAL}" ] && R200_VAL="null" -[ -z "${R200_ERR_L}" ] && R200_ERR_L="null" -[ -z "${R200_ERR_U}" ] && R200_ERR_U="null" -[ -z "${M200_VAL}" ] && M200_VAL="null" -[ -z "${M200_ERR_L}" ] && M200_ERR_L="null" -[ -z "${M200_ERR_U}" ] && M200_ERR_U="null" -[ -z "${MGAS200_VAL}" ] && MGAS200_VAL="null" -[ -z "${MGAS200_ERR_L}" ] && MGAS200_ERR_L="null" -[ -z "${MGAS200_ERR_U}" ] && MGAS200_ERR_U="null" -[ -z "${FGAS200_VAL}" ] && FGAS200_VAL="null" -[ -z "${FGAS200_ERR_L}" ] && FGAS200_ERR_L="null" -[ -z "${FGAS200_ERR_U}" ] && FGAS200_ERR_U="null" -# 200 }}} -# 500 data {{{ -R500_VAL=`\grep '^r500' ${RES_FINAL} | awk '{ print $2 }'` -R500_ERR_L=`\grep '^r500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -R500_ERR_U=`\grep '^r500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -M500_VAL=`\grep '^m500' ${RES_FINAL} | awk '{ print $2 }'` -M500_ERR_L=`\grep '^m500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -M500_ERR_U=`\grep '^m500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -MGAS500_VAL=`\grep '^gas_m500' ${RES_FINAL} | awk '{ print $2 }'` -MGAS500_ERR_L=`\grep '^gas_m500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -MGAS500_ERR_U=`\grep '^gas_m500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -FGAS500_VAL=`\grep '^gas_fraction500' ${RES_FINAL} | awk '{ print $2 }'` -FGAS500_ERR_L=`\grep '^gas_fraction500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -FGAS500_ERR_U=`\grep '^gas_fraction500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -[ -z "${R500_VAL}" ] && R500_VAL="null" -[ -z "${R500_ERR_L}" ] && R500_ERR_L="null" -[ -z "${R500_ERR_U}" ] && R500_ERR_U="null" -[ -z "${M500_VAL}" ] && M500_VAL="null" -[ -z "${M500_ERR_L}" ] && M500_ERR_L="null" -[ -z "${M500_ERR_U}" ] && M500_ERR_U="null" -[ -z "${MGAS500_VAL}" ] && MGAS500_VAL="null" -[ -z "${MGAS500_ERR_L}" ] && MGAS500_ERR_L="null" -[ -z "${MGAS500_ERR_U}" ] && MGAS500_ERR_U="null" -[ -z "${FGAS500_VAL}" ] && FGAS500_VAL="null" -[ -z "${FGAS500_ERR_L}" ] && FGAS500_ERR_L="null" -[ -z "${FGAS500_ERR_U}" ] && FGAS500_ERR_U="null" -# 500 }}} -# 1500 data {{{ -R1500_VAL=`\grep '^r1500' ${RES_FINAL} | awk '{ print $2 }'` -R1500_ERR_L=`\grep '^r1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -R1500_ERR_U=`\grep '^r1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -M1500_VAL=`\grep '^m1500' ${RES_FINAL} | awk '{ print $2 }'` -M1500_ERR_L=`\grep '^m1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -M1500_ERR_U=`\grep '^m1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -MGAS1500_VAL=`\grep '^gas_m1500' ${RES_FINAL} | awk '{ print $2 }'` -MGAS1500_ERR_L=`\grep '^gas_m1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -MGAS1500_ERR_U=`\grep '^gas_m1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -FGAS1500_VAL=`\grep '^gas_fraction1500' ${RES_FINAL} | awk '{ print $2 }'` -FGAS1500_ERR_L=`\grep '^gas_fraction1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -FGAS1500_ERR_U=`\grep '^gas_fraction1500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -[ -z "${R1500_VAL}" ] && R1500_VAL="null" -[ -z "${R1500_ERR_L}" ] && R1500_ERR_L="null" -[ -z "${R1500_ERR_U}" ] && R1500_ERR_U="null" -[ -z "${M1500_VAL}" ] && M1500_VAL="null" -[ -z "${M1500_ERR_L}" ] && M1500_ERR_L="null" -[ -z "${M1500_ERR_U}" ] && M1500_ERR_U="null" -[ -z "${MGAS1500_VAL}" ] && MGAS1500_VAL="null" -[ -z "${MGAS1500_ERR_L}" ] && MGAS1500_ERR_L="null" -[ -z "${MGAS1500_ERR_U}" ] && MGAS1500_ERR_U="null" -[ -z "${FGAS1500_VAL}" ] && FGAS1500_VAL="null" -[ -z "${FGAS1500_ERR_L}" ] && FGAS1500_ERR_L="null" -[ -z "${FGAS1500_ERR_U}" ] && FGAS1500_ERR_U="null" -# 1500 }}} -# 2500 data {{{ -R2500_VAL=`\grep '^r2500' ${RES_FINAL} | awk '{ print $2 }'` -R2500_ERR_L=`\grep '^r2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -R2500_ERR_U=`\grep '^r2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -M2500_VAL=`\grep '^m2500' ${RES_FINAL} | awk '{ print $2 }'` -M2500_ERR_L=`\grep '^m2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -M2500_ERR_U=`\grep '^m2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -MGAS2500_VAL=`\grep '^gas_m2500' ${RES_FINAL} | awk '{ print $2 }'` -MGAS2500_ERR_L=`\grep '^gas_m2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -MGAS2500_ERR_U=`\grep '^gas_m2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -FGAS2500_VAL=`\grep '^gas_fraction2500' ${RES_FINAL} | awk '{ print $2 }'` -FGAS2500_ERR_L=`\grep '^gas_fraction2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $1 }'` -FGAS2500_ERR_U=`\grep '^gas_fraction2500' ${RES_FINAL} | awk '{ print $3 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -[ -z "${R2500_VAL}" ] && R2500_VAL="null" -[ -z "${R2500_ERR_L}" ] && R2500_ERR_L="null" -[ -z "${R2500_ERR_U}" ] && R2500_ERR_U="null" -[ -z "${M2500_VAL}" ] && M2500_VAL="null" -[ -z "${M2500_ERR_L}" ] && M2500_ERR_L="null" -[ -z "${M2500_ERR_U}" ] && M2500_ERR_U="null" -[ -z "${MGAS2500_VAL}" ] && MGAS2500_VAL="null" -[ -z "${MGAS2500_ERR_L}" ] && MGAS2500_ERR_L="null" -[ -z "${MGAS2500_ERR_U}" ] && MGAS2500_ERR_U="null" -[ -z "${FGAS2500_VAL}" ] && FGAS2500_VAL="null" -[ -z "${FGAS2500_ERR_L}" ] && FGAS2500_ERR_L="null" -[ -z "${FGAS2500_ERR_U}" ] && FGAS2500_ERR_U="null" -# 2500 }}} -FGRR=`\grep '^gas_fraction.*r2500.*r500=' ${RES_FINAL} | sed 's/^.*r500=//' | awk '{ print $1 }'` -FGRR_ERR_L=`\grep '^gas_fraction.*r2500.*r500=' ${RES_FINAL} | sed 's/^.*r500=//' | awk '{ print $2 }' | awk -F'/' '{ print $1 }'` -FGRR_ERR_U=`\grep '^gas_fraction.*r2500.*r500=' ${RES_FINAL} | sed 's/^.*r500=//' | awk '{ print $2 }' | awk -F'/' '{ print $2 }' | tr -d '+'` -[ -z "${FGRR}" ] && FGRR="null" -[ -z "${FGRR_ERR_L}" ] && FGRR_ERR_L="null" -[ -z "${FGRR_ERR_U}" ] && FGRR_ERR_U="null" -## mrl }}} -## repro/mass }}} - -cd ${BASEDIR} -## orig json file {{{ -printf "## collect data from original info file ...\n" -OBJ_NAME=`\grep '"Source\ Name' ${JSON_FILE} | sed 's/.*"Source.*":\ //' | sed 's/^"//' | sed 's/"\ *,$//'` -OBJ_UNAME=`\grep '"Unified\ Name' ${JSON_FILE} | sed 's/.*"Unified.*":\ //' | sed 's/^"//' | sed 's/"\ *,$//'` -OBJ_RA=`\grep '"R\.\ A\.' ${JSON_FILE} | sed 's/.*"R\.\ A\.":\ //' | sed 's/^"//' | sed 's/"\ *,$//'` -OBJ_DEC=`\grep '"Dec\.' ${JSON_FILE} | sed 's/.*"Dec\.":\ //' | sed 's/^"//' | sed 's/"\ *,$//'` -OBJ_XCRA=`\grep '"XCNTRD_RA' ${JSON_FILE} | sed 's/.*"XCNTRD_RA":\ //' | sed 's/^"//' | sed 's/"\ *,$//'` -OBJ_XCDEC=`\grep '"XCNTRD_DEC' ${JSON_FILE} | sed 's/.*"XCNTRD_DEC":\ //' | sed 's/^"//' | sed 's/"\ *,$//'` -REDSHIFT=`\grep '"redshift' ${JSON_FILE} | sed 's/.*"redshift.*":\ //' | sed 's/\ *,$//'` -COOLCORE=`\grep -i '"cool.*core' ${JSON_FILE} | sed 's/.*"[cC]ool.*":\ //' | sed 's/\ *,$//'` -[ -z "${COOLCORE}" ] && COOLCORE="null" -OBJ_FEATURE=`\grep '"Feature' ${JSON_FILE} | sed 's/.*"Feature":\ //' | sed 's/^"//' | sed 's/"\ *,*$//'` -OBJ_NOTE=`\grep '"NOTE' ${JSON_FILE} | sed 's/.*"NOTE":\ //' | sed 's/^"//' | sed 's/"\ *,*$//'` - -# T & Z {{{ -T_1R500=`\grep '"T(0\.1.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` -T_1ERR=`\grep '"T_err(.*0\.1.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` -T_1ERR_L=`\grep '"T_err_l.*0\.1.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` -T_1ERR_U=`\grep '"T_err_u.*0\.1.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` -Z_1R500=`\grep '"Z(0\.1.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` -Z_1ERR=`\grep '"Z_err(.*0\.1.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` -Z_1ERR_L=`\grep '"Z_err_l.*0\.1.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` -Z_1ERR_U=`\grep '"Z_err_u.*0\.1.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` -T_2R500=`\grep '"T(0\.2.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` -T_2ERR=`\grep '"T_err(.*0\.2.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` -T_2ERR_L=`\grep '"T_err_l.*0\.2.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` -T_2ERR_U=`\grep '"T_err_u.*0\.2.*R500' ${JSON_FILE} | sed 's/.*"T.*":\ //' | sed 's/\ *,$//'` -Z_2R500=`\grep '"Z(0\.2.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` -Z_2ERR=`\grep '"Z_err(.*0\.2.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` -Z_2ERR_L=`\grep '"Z_err_l.*0\.2.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` -Z_2ERR_U=`\grep '"Z_err_u.*0\.2.*R500' ${JSON_FILE} | sed 's/.*"Z.*":\ //' | sed 's/\ *,$//'` -[ -z "${T_1R500}" ] && T_1R500="null" -[ -z "${T_1ERR}" ] && T_1ERR="null" -[ -z "${T_1ERR_L}" ] && T_1ERR_L="null" -[ -z "${T_1ERR_U}" ] && T_1ERR_U="null" -[ -z "${Z_1R500}" ] && Z_1R500="null" -[ -z "${Z_1ERR}" ] && Z_1ERR="null" -[ -z "${Z_1ERR_L}" ] && Z_1ERR_L="null" -[ -z "${Z_1ERR_U}" ] && Z_1ERR_U="null" -[ -z "${T_2R500}" ] && T_2R500="null" -[ -z "${T_2ERR}" ] && T_2ERR="null" -[ -z "${T_2ERR_L}" ] && T_2ERR_L="null" -[ -z "${T_2ERR_U}" ] && T_2ERR_U="null" -[ -z "${Z_2R500}" ] && Z_2R500="null" -[ -z "${Z_2ERR}" ] && Z_2ERR="null" -[ -z "${Z_2ERR_L}" ] && Z_2ERR_L="null" -[ -z "${Z_2ERR_U}" ] && Z_2ERR_U="null" -# T & Z }}} -## json data }}} - -## output data to JSON file {{{ -printf "## save collected data into file \`${JSON_FILE}' ...\n" -mv -fv ${JSON_FILE} ${JSON_FILE}_bak -cat > ${JSON_FILE} << _EOF_ -{ - "Obs. ID": ${OBS_ID}, - "Source Name": "${OBJ_NAME}", - "Unified Name": "${OBJ_UNAME}", - "Obs. Date": "${DATE_OBS}", - "Detector": "${ACIS_TYPE}", - "Exposure (ks)": ${EXPOSURE_RAW}, - "Clean Exposure (ks)": ${EXPOSURE_CLEAN}, - "R. A.": "${OBJ_RA}", - "Dec.": "${OBJ_DEC}", - "XCNTRD_RA": "${OBJ_XCRA}", - "XCNTRD_DEC": "${OBJ_XCDEC}", - "nH (10^22 cm^-2)": ${N_H}, - "redshift": ${REDSHIFT}, - "E(z)": null, - "T_ref (keV)": null, - "Z_ref (solar)": ${ABUND}, - "Rmax_SBP (pixel)": ${RMAX_SBP_PIX}, - "Rmax_Tpro (pixel)": ${RMAX_TPRO_PIX}, - "Rmax_SBP (kpc)": ${RMAX_SBP_KPC}, - "Rmax_Tpro (kpc)": ${RMAX_TPRO_KPC}, - "NFW_Rmin (kpc)": ${NFW_RMIN_KPC}, - "Model_SBP": "${MODEL_SBP}", - "n01": ${N01}, - "beta1": ${BETA1}, - "rc1": ${RC1}, - "rc1_kpc": ${RC1_KPC}, - "n02": ${N02}, - "beta2": ${BETA2}, - "rc2": ${RC2}, - "rc2_kpc": ${RC2_KPC}, - "bkg": ${BKG}, - "R200 (kpc)": ${R200_VAL}, - "R200_err_lower (1sigma)": ${R200_ERR_L}, - "R200_err_upper (1sigma)": ${R200_ERR_U}, - "M200 (M_sun)": ${M200_VAL}, - "M200_err_lower (1sigma)": ${M200_ERR_L}, - "M200_err_upper (1sigma)": ${M200_ERR_U}, - "M_gas200 (M_sun)": ${MGAS200_VAL}, - "M_gas200_err_lower (1sigma)": ${MGAS200_ERR_L}, - "M_gas200_err_upper (1sigma)": ${MGAS200_ERR_U}, - "F_gas200": ${FGAS200_VAL}, - "F_gas200_err_lower (1sigma)": ${FGAS200_ERR_L}, - "F_gas200_err_upper (1sigma)": ${FGAS200_ERR_U}, - "R500 (kpc)": ${R500_VAL}, - "R500_err_lower (1sigma)": ${R500_ERR_L}, - "R500_err_upper (1sigma)": ${R500_ERR_U}, - "M500 (M_sun)": ${M500_VAL}, - "M500_err_lower (1sigma)": ${M500_ERR_L}, - "M500_err_upper (1sigma)": ${M500_ERR_U}, - "M_gas500 (M_sun)": ${MGAS500_VAL}, - "M_gas500_err_lower (1sigma)": ${MGAS500_ERR_L}, - "M_gas500_err_upper (1sigma)": ${MGAS500_ERR_U}, - "F_gas500": ${FGAS500_VAL}, - "F_gas500_err_lower (1sigma)": ${FGAS500_ERR_L}, - "F_gas500_err_upper (1sigma)": ${FGAS500_ERR_U}, - "R1500": ${R1500_VAL}, - "R1500_err_lower": ${R1500_ERR_L}, - "R1500_err_upper": ${R1500_ERR_U}, - "M1500": ${M1500_VAL}, - "M1500_err_lower": ${M1500_ERR_L}, - "M1500_err_upper": ${M1500_ERR_U}, - "M_gas1500": ${MGAS1500_VAL}, - "M_gas1500_err_lower": ${MGAS1500_ERR_L}, - "M_gas1500_err_upper": ${MGAS1500_ERR_U}, - "F_gas1500": ${FGAS1500_VAL}, - "F_gas1500_err_lower": ${FGAS1500_ERR_L}, - "F_gas1500_err_upper": ${FGAS1500_ERR_U}, - "R2500": ${R2500_VAL}, - "R2500_err_lower": ${R2500_ERR_L}, - "R2500_err_upper": ${R2500_ERR_U}, - "M2500": ${M2500_VAL}, - "M2500_err_lower": ${M2500_ERR_L}, - "M2500_err_upper": ${M2500_ERR_U}, - "M_gas2500": ${MGAS2500_VAL}, - "M_gas2500_err_lower": ${MGAS2500_ERR_L}, - "M_gas2500_err_upper": ${MGAS2500_ERR_U}, - "F_gas2500": ${FGAS2500_VAL}, - "F_gas2500_err_lower": ${FGAS2500_ERR_L}, - "F_gas2500_err_upper": ${FGAS2500_ERR_U}, - "T(0.1-0.5 R500)": ${T_1R500}, - "T_err(0.1-0.5 R500)": ${T_1ERR}, - "T_err_l(0.1-0.5 R500)": ${T_1ERR_L}, - "T_err_u(0.1-0.5 R500)": ${T_1ERR_U}, - "Z(0.1-0.5 R500)": ${Z_1R500}, - "Z_err(0.1-0.5 R500)": ${Z_1ERR}, - "Z_err_l(0.1-0.5 R500)": ${Z_1ERR_L}, - "Z_err_u(0.1-0.5 R500)": ${Z_1ERR_U}, - "T(0.2-0.5 R500)": ${T_2R500}, - "T_err(0.2-0.5 R500)": ${T_2ERR}, - "T_err_l(0.2-0.5 R500)": ${T_2ERR_L}, - "T_err_u(0.2-0.5 R500)": ${T_2ERR_U}, - "Z(0.2-0.5 R500)": ${Z_2R500}, - "Z_err(0.2-0.5 R500)": ${Z_2ERR}, - "Z_err_l(0.2-0.5 R500)": ${Z_2ERR_L}, - "Z_err_u(0.2-0.5 R500)": ${Z_2ERR_U}, - "F_gas(R2500-R500)": ${FGRR}, - "F_gas_err_l(R2500-R500)": ${FGRR_ERR_L}, - "F_gas_err_u(R2500-R500)": ${FGRR_ERR_U}, - "Cool_core": ${COOLCORE}, - "Feature": "${OBJ_FEATURE}", - "NOTE": "${OBJ_NOTE}" -}, -_EOF_ -## output JSON }}} - -exit 0 diff --git a/scripts/json2csv.py b/scripts/json2csv.py deleted file mode 100755 index a06a135..0000000 --- a/scripts/json2csv.py +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright (c) 2012-2017 Weitian LI <liweitianux@live.com> -# MIT license -# -# Convert JSON to CSV format -# -# References: -# [1] https://docs.python.org/3/library/json.html -# [2] https://docs.python.org/3/library/csv.html -# [3] http://stackoverflow.com/questions/1871524/convert-from-json-to-csv-using-python -# [4] http://json.parser.online.fr/ -# -# -# Weitian LI <liweitianux@live.com> -# Created: 2012-08-31 -# -# Change logs: -# 2017-02-06, Weitian LI -# * Use `argparse` -# * Cleanups -# v3.5, 2015-11-09 -# * Get column keys from the first input json block -# * Use python3 -# v3.4, 2015-11-09 -# * Add keys 'XPEAK_RA', 'XPEAK_DEC', and 'XPEAK_XCNTRD_dist (pix)' -# * Add 'colkeys' to record CSV column keys -# * Update file header description -# v3.3, 2013-10-14 -# * add key `Unified Name' -# v3.2, 2013-05-29 -# * add key `XCNTRD_RA, XCNTRD_DEC' -# v3.1, 2013-05-18 -# * add key `Feature', corresponding to `collectdata_v3.1' - -import os -import argparse -import csv -import json -from collections import OrderedDict - - -def main(): - parser = argparse.ArgumentParser(description="Convert JSON to CSV") - parser.add_argument("infile", help="Input JSON file") - parser.add_argument("outfile", nargs="?", - help="Output CSV file (default to use the same " + - "basename as the input file)") - args = parser.parse_args() - - with open(args.infile) as f: - # Use `OrderedDict` to keep the orders of keys of all json files - data = json.load(f, object_pairs_hook=OrderedDict) - - # Column keys - colkeys = list(data[0].keys()) - - if args.outfile: - outfile = args.outfile - else: - outfile = os.path.splitext(args.infile)[0] + ".csv" - with open(outfile, "w") as csvfile: - outfile_writer = csv.writer(csvfile) - # CSV header row - outfile_writer.writerow(colkeys) - # CSV data rows - for row in data: - outfile_writer.writerow([row.get(key) for key in colkeys]) - - -if __name__ == "__main__": - main() - -# vim: set ts=4 sw=4 tw=0 fenc=utf-8 ft=python: # |