diff --git a/bin/picca_cf.py b/bin/picca_cf.py index f48408948..bacf8278b 100755 --- a/bin/picca_cf.py +++ b/bin/picca_cf.py @@ -238,6 +238,8 @@ def main(cmdargs): parser.add_argument('--attributes', type=str, default=None, help='Attributes file with VAR_FUNC extension with ' 'lambda, eta, var_lss columns.') + parser.add_argument('--attributes2', type=str, default=None, required=False, + help='Attributes file for 2nd tracer') parser.add_argument('--renormalize-deltas', action="store_true", help="Stacks deltas and renormalizes deltas.") @@ -294,6 +296,8 @@ def main(cmdargs): cf.alpha2 = args.z_evol2 if args.in_dir2 is None: args.in_dir2 = args.in_dir + if args.attributes2 is None: + args.attributes2 = args.attributes if args.lambda_abs2: cf.lambda_abs2 = constants.ABSORBER_IGM[args.lambda_abs2] else: @@ -313,7 +317,7 @@ def main(cmdargs): z_min_qso=args.z_min_sources, z_max_qso=args.z_max_sources, varlss_mod_factor=args.varlss_mod_factor, - attributes=args.attributes, + attributes=args.attributes2, renormalize_deltas=args.renormalize_deltas) del z_max2 cf.data2 = data2 diff --git a/bin/picca_dmat.py b/bin/picca_dmat.py index 959d6bf37..8685d9391 100755 --- a/bin/picca_dmat.py +++ b/bin/picca_dmat.py @@ -249,6 +249,18 @@ def main(cmdargs): action='store_true', help='Ignore redshift evolution when computing distortion matrix') + parser.add_argument('--varlss-mod-factor', type=float, default=None, + help='Modifies weights with this factor. Requires ' + 'IVAR column to be present in deltas and an input' + ' attributes file.') + parser.add_argument('--attributes', type=str, default=None, + help='Attributes file with VAR_FUNC extension with ' + 'lambda, eta, var_lss columns.') + parser.add_argument('--attributes2', type=str, default=None, required=False, + help='Attributes file for 2nd tracer') + parser.add_argument('--renormalize-deltas', action="store_true", + help="Stacks deltas and renormalizes deltas.") + args = parser.parse_args(cmdargs) if args.nproc is None: @@ -310,7 +322,10 @@ def main(cmdargs): nproc=args.nproc, rebin_factor=args.rebin_factor, z_min_qso=args.z_min_sources, - z_max_qso=args.z_max_sources) + z_max_qso=args.z_max_sources, + varlss_mod_factor=args.varlss_mod_factor, + attributes=args.attributes, + renormalize_deltas=args.renormalize_deltas) del z_max cf.data = data cf.num_data = num_data @@ -325,6 +340,8 @@ def main(cmdargs): cf.alpha2 = args.z_evol2 if args.in_dir2 is None: args.in_dir2 = args.in_dir + if args.attributes2 is None: + args.attributes2 = args.attributes if args.lambda_abs2: cf.lambda_abs2 = constants.ABSORBER_IGM[args.lambda_abs2] else: @@ -341,7 +358,10 @@ def main(cmdargs): nproc=args.nproc, rebin_factor=args.rebin_factor, z_min_qso=args.z_min_sources, - z_max_qso=args.z_max_sources) + z_max_qso=args.z_max_sources, + varlss_mod_factor=args.varlss_mod_factor, + attributes=args.attributes2, + renormalize_deltas=args.renormalize_deltas) del z_max2 cf.data2 = data2 cf.num_data2 = num_data2 diff --git a/bin/picca_xdmat.py b/bin/picca_xdmat.py index 1da22d49b..b1daf5787 100755 --- a/bin/picca_xdmat.py +++ b/bin/picca_xdmat.py @@ -248,6 +248,17 @@ def main(cmdargs): action='store_true', help='Ignore redshift evolution when computing distortion matrix') + + parser.add_argument('--varlss-mod-factor', type=float, default=None, + help='Modifies weights with this factor. Requires ' + 'IVAR column to be present in deltas and an input' + ' attributes file.') + parser.add_argument('--attributes', type=str, default=None, + help='Attributes file with VAR_FUNC extension with ' + 'lambda, eta, var_lss columns.') + parser.add_argument('--renormalize-deltas', action="store_true", + help="Stacks deltas and renormalizes deltas.") + args = parser.parse_args(cmdargs) if args.nproc is None: args.nproc = cpu_count() // 2 @@ -303,7 +314,10 @@ def main(cmdargs): nproc=args.nproc, rebin_factor=args.rebin_factor, z_min_qso=args.z_min_sources, - z_max_qso=args.z_max_sources) + z_max_qso=args.z_max_sources, + varlss_mod_factor=args.varlss_mod_factor, + attributes=args.attributes, + renormalize_deltas=args.renormalize_deltas) xcf.data = data xcf.num_data = num_data userprint("\n") diff --git a/py/picca/utils.py b/py/picca/utils.py index a7b063f00..d2609b573 100644 --- a/py/picca/utils.py +++ b/py/picca/utils.py @@ -13,6 +13,7 @@ import sys import numpy as np import fitsio +from astropy.io import fits import iminuit from scipy import interpolate @@ -507,15 +508,19 @@ def modify_weights_with_varlss_factor(data, attributes, varlss_mod_factor): varlss_mod_factor: float Multiplicative factor for var_lss """ + att = fits.open(attributes) # need astropy's case-insensitivity to work with qsonic and picca attributes files try: - varfunc = fitsio.read(attributes, ext="VAR_FUNC") + varfunc = att['VAR_FUNC'] except OSError: - varfunc = fitsio.read(attributes, ext="VAR_FUNC-fit") - varfunc['lambda'] = np.log10(varfunc['lambda']) + varfunc = att['VAR_FUNC-fit'] + try: + loglam = np.log10(varfunc.data['lambda']) + except KeyError: + loglam = varfunc.data['loglam'] interp_eta = interpolate.interp1d( - varfunc['lambda'], varfunc['eta'], fill_value='extrapolate', kind='cubic') + loglam, varfunc.data['eta'], fill_value='extrapolate', kind='cubic') interp_varlss = interpolate.interp1d( - varfunc['lambda'], varfunc['var_lss'], fill_value='extrapolate', kind='cubic') + loglam, varfunc.data['var_lss'], fill_value='extrapolate', kind='cubic') for delta in data: if delta.ivar is None: