def test_spin_magnitude_normalised(self):
     norms = list()
     for ii in range(self.n_test):
         parameters = self.prior.sample()
         temp = spin.iid_spin_magnitude_beta(self.test_data, **parameters)
         norms.append(trapz(trapz(temp, self.a_array), self.a_array))
     self.assertAlmostEqual(float(xp.max(xp.abs(1 - xp.asarray(norms)))), 0, 1)
Exemple #2
0
 def test_spin_orientation_normalised(self):
     norms = list()
     for ii in range(self.n_test):
         parameters = self.prior.sample()
         temp = spin.iid_spin_orientation_gaussian_isotropic(
             self.test_data, **parameters)
         norms.append(trapz(trapz(temp, self.costilts), self.costilts))
     self.assertAlmostEqual(float(xp.max(xp.abs(1 - xp.asarray(norms)))), 0, 5)
 def test_broken_power_law_peak_normalised(self):
     norms = list()
     for ii in range(self.n_test):
         parameters = self.broken_power_peak_prior.sample()
         parameters.update(self.smooth_prior.sample())
         p_m = mass.BrokenPowerLawPeakSmoothedMassDistribution()(
             self.dataset, **parameters)
         norms.append(trapz(trapz(p_m, self.m1s), self.qs))
     self.assertAlmostEqual(_max_abs_difference(norms, 1.0), 0.0, 2)
 def test_normalised(self):
     norms = list()
     for ii in range(self.n_test):
         parameters = self.power_prior.sample()
         parameters.update(self.gauss_prior.sample())
         parameters.update(self.smooth_prior.sample())
         p_m = mass.smoothed_two_component_primary_mass_ratio(
             self.dataset, **parameters)
         norms.append(trapz(trapz(p_m, self.m1s), self.qs))
     self.assertAlmostEqual(_max_abs_difference(norms, 1.0), 0.0, 2)
Exemple #5
0
    def compute_branching_ratio(
        self,
        alpha,
        beta,
        mmin,
        mmax,
        lam,
        mpp,
        sigpp,
        alpha_chi,
        beta_chi,
        delta_chi,
        a_max=1,
    ):

        probability = xp.einsum(
            "i,j,k->ijk",
            self.first_generation_mass_ratio(
                alpha=alpha,
                beta=beta,
                mmin=mmin,
                mmax=mmax,
                lam=lam,
                mpp=mpp,
                sigpp=sigpp,
            ),
            first_generation_spin_magnitude_grid(
                self.a_1_array,
                alpha=alpha_chi,
                beta=beta_chi,
                delta=delta_chi,
                a_max=a_max,
            ),
            first_generation_spin_magnitude_grid(
                self.a_2_array,
                alpha=alpha_chi,
                beta=beta_chi,
                delta=delta_chi,
                a_max=a_max,
            ),
        )
        branching_ratio = trapz(
            trapz(
                trapz(
                    probability * self.retention_fraction,
                    self.mass_ratio_array,
                ),
                self.a_2_array,
            ),
            self.a_1_array,
        )
        branching_ratio = min(branching_ratio, 1)
        return branching_ratio
Exemple #6
0
 def _initialize_attributes(self):
     self._yy /= trapz(self._yy, self.xx)
     self.YY = cumtrapz(self._yy, self.xx, initial=0)
     self.YY[-1] = 1
     self.probability_density = Interp(self.xx, self._yy)
     self.cumulative_distribution = Interp(self.xx, self.YY)
     self.inverse_cumulative_distribution = Interp(self.YY, self.xx)
Exemple #7
0
 def test_fhf_normalised(self):
     norms = list()
     for _ in range(self.n_test):
         lamb = np.random.uniform(-15, 15)
         p_z = redshift.power_law_redshift(self.test_data, lamb)
         norms.append(trapz(p_z, self.zs))
     self.assertAlmostEqual(xp.max(xp.abs(xp.asarray(norms) - 1)), 0.0)
Exemple #8
0
 def first_generation_mass_ratio(self, alpha, beta, mmin, mmax, lam, mpp,
                                 sigpp):
     first_generation_mass = two_component_primary_mass_ratio(
         dataset=self.first_generation_data,
         alpha=alpha,
         beta=beta,
         mmin=mmin,
         mmax=mmax,
         lam=lam,
         mpp=mpp,
         sigpp=sigpp,
     )
     return trapz(first_generation_mass, self.mass_1s, axis=0)
Exemple #9
0
    def first_generation_mass_ratio(self, alpha, beta, mmin, mmax, lam, mpp,
                                    sigpp):
        grid_shift = (mmin - self.mass_1s[0] - self.dm / 2) % self.dm

        self.first_generation_data['mass_1'] += grid_shift
        first_generation_mass = two_component_primary_mass_ratio(
            dataset=self.first_generation_data,
            alpha=alpha,
            beta=beta,
            mmin=mmin,
            mmax=mmax,
            lam=lam,
            mpp=mpp,
            sigpp=sigpp,
        )
        self.first_generation_data['mass_1'] -= grid_shift
        return trapz(first_generation_mass, self.mass_1s, axis=0)
Exemple #10
0
def low_spin_component_big_grid(spin, spin_array):
    delta = xp.asarray(spin == 0).astype(float)
    delta_norm = xp.asarray(spin_array == 0).astype(float)
    return delta / trapz(delta_norm, spin_array)
Exemple #11
0
def low_spin_component_grid(spin):
    delta = xp.asarray(spin == 0).astype(float)
    return delta / trapz(delta, spin)
 def _run_model_normalisation(self, model, priors):
     norms = list()
     for _ in range(self.n_test):
         p_z = model(self.test_data, **priors.sample())
         norms.append(trapz(p_z, self.zs))
     self.assertAlmostEqual(xp.max(xp.abs(xp.asarray(norms) - 1)), 0.0)