def load_dataset(self, filename, dataset_params): from getdist import IniFile ini = IniFile(filename) ini.params.update(dataset_params) self.indices = [] self.used_indices = [] self.used_items = [] self.fullcov = np.loadtxt(ini.relativeFileName('cov_file')) ntheta = ini.int('num_theta_bins') self.theta_bins = np.loadtxt(ini.relativeFileName('theta_bins_file')) self.iintrinsic_alignment_model = ini.string( 'intrinsic_alignment_model') self.data_types = ini.string('data_types').split() self.used_types = ini.list('used_data_types', self.data_types) with open(ini.relativeFileName('data_selection')) as f: header = f.readline() assert ('# type bin1 bin2 theta_min theta_max' == header.strip()) lines = f.readlines() ranges = {} for tp in self.data_types: ranges[tp] = np.empty((6, 6), dtype=object) for line in lines: items = line.split() if items[0] in self.used_types: bin1, bin2 = [int(x) - 1 for x in items[1:3]] ranges[items[0]][bin1][bin2] = [ np.float64(x) for x in items[3:] ] self.ranges = ranges self.nzbins = ini.int('num_z_bins') # for lensing sources self.nwbins = ini.int('num_gal_bins', 0) # for galaxies maxbin = max(self.nzbins, self.nwbins) cov_ix = 0 self.bin_pairs = [] self.data_arrays = [] self.thetas = [] for i, tp in enumerate(self.data_types): xi = np.loadtxt(ini.relativeFileName('measurements[%s]' % tp)) bin1 = xi[:, 0].astype(np.int) - 1 bin2 = xi[:, 1].astype(np.int) - 1 tbin = xi[:, 2].astype(np.int) - 1 corr = np.empty((maxbin, maxbin), dtype=np.object) corr[:, :] = None self.data_arrays.append(corr) self.bin_pairs.append([]) for f1, f2, ix, dat in zip(bin1, bin2, tbin, xi[:, 3]): self.indices.append((i, f1, f2, ix)) if not (f1, f2) in self.bin_pairs[i]: self.bin_pairs[i].append((f1, f2)) corr[f1, f2] = np.zeros(ntheta) corr[f1, f2][ix] = dat if ranges[tp][f1, f2] is not None: mn, mx = ranges[tp][f1, f2] if self.theta_bins[ix] > mn and self.theta_bins[ix] < mx: self.thetas.append(self.theta_bins[ix]) self.used_indices.append(cov_ix) self.used_items.append(self.indices[-1]) cov_ix += 1 nz_source = np.loadtxt(ini.relativeFileName('nz_file')) self.zmid = nz_source[:, 1] self.zbin_sp = [] for b in range(self.nzbins): self.zbin_sp += [ UnivariateSpline(self.zmid, nz_source[:, b + 3], s=0) ] nz_lens = np.loadtxt(ini.relativeFileName('nz_gal_file')) assert (np.array_equal(nz_lens[:, 1], self.zmid)) self.zbin_w_sp = [] for b in range(self.nwbins): self.zbin_w_sp += [ UnivariateSpline(self.zmid, nz_lens[:, b + 3], s=0) ] self.zmax = self.zmid[-1] self.kmax = ini.float( 'kmax', 15) # Actually computed, assumes extrapolated beyond that self._initialize()
def load_dataset(self, filename, dataset_params): from getdist import IniFile ini = IniFile(filename) ini.params.update(dataset_params) self.indices = [] self.used_indices = [] self.used_items = [] self.fullcov = np.loadtxt(ini.relativeFileName('cov_file')) ntheta = ini.int('num_theta_bins') self.theta_bins = np.loadtxt(ini.relativeFileName('theta_bins_file')) self.iintrinsic_alignment_model = ini.string('intrinsic_alignment_model') self.data_types = ini.string('data_types').split() self.used_types = ini.list('used_data_types', self.data_types) with open(ini.relativeFileName('data_selection')) as f: header = f.readline() assert ('# type bin1 bin2 theta_min theta_max' == header.strip()) lines = f.readlines() ranges = {} for tp in self.data_types: ranges[tp] = np.empty((6, 6), dtype=object) for line in lines: items = line.split() if items[0] in self.used_types: bin1, bin2 = [int(x) - 1 for x in items[1:3]] ranges[items[0]][bin1][bin2] = [np.float64(x) for x in items[3:]] self.ranges = ranges self.nzbins = ini.int('num_z_bins') # for lensing sources self.nwbins = ini.int('num_gal_bins', 0) # for galaxies maxbin = max(self.nzbins, self.nwbins) cov_ix = 0 self.bin_pairs = [] self.data_arrays = [] self.thetas = [] for i, tp in enumerate(self.data_types): xi = np.loadtxt(ini.relativeFileName('measurements[%s]' % tp)) bin1 = xi[:, 0].astype(np.int) - 1 bin2 = xi[:, 1].astype(np.int) - 1 tbin = xi[:, 2].astype(np.int) - 1 corr = np.empty((maxbin, maxbin), dtype=np.object) corr[:, :] = None self.data_arrays.append(corr) self.bin_pairs.append([]) for f1, f2, ix, dat in zip(bin1, bin2, tbin, xi[:, 3]): self.indices.append((i, f1, f2, ix)) if not (f1, f2) in self.bin_pairs[i]: self.bin_pairs[i].append((f1, f2)) corr[f1, f2] = np.zeros(ntheta) corr[f1, f2][ix] = dat if ranges[tp][f1, f2] is not None: mn, mx = ranges[tp][f1, f2] if self.theta_bins[ix] > mn and self.theta_bins[ix] < mx: self.thetas.append(self.theta_bins[ix]) self.used_indices.append(cov_ix) self.used_items.append(self.indices[-1]) cov_ix += 1 nz_source = np.loadtxt(ini.relativeFileName('nz_file')) self.zmid = nz_source[:, 1] self.zbin_sp = [] for b in range(self.nzbins): self.zbin_sp += [UnivariateSpline(self.zmid, nz_source[:, b + 3], s=0)] nz_lens = np.loadtxt(ini.relativeFileName('nz_gal_file')) assert (np.array_equal(nz_lens[:, 1], self.zmid)) self.zbin_w_sp = [] for b in range(self.nwbins): self.zbin_w_sp += [UnivariateSpline(self.zmid, nz_lens[:, b + 3], s=0)] self.zmax = self.zmid[-1] self.kmax = ini.float('kmax', 15) # Actually computed, assumes extrapolated beyond that self._initialize()