Ejemplo n.º 1
0
def readGC(file, standard_cosmology=True):

    ra, dec, zs, zp = [], [], [], []
    dl = []
    with open(file, 'r') as f:
        if standard_cosmology:
            omega = lal.CreateCosmologicalParameters(0.7, 0.3, 0.7, -1.0, 0.0,
                                                     0.0)
        for line in f:
            fields = line.split(None)
            if 0.0 < np.float(fields[40]) > 0.0 or np.float(fields[41]) > 0.0:
                if not (standard_cosmology):
                    h = np.random.uniform(0.5, 1.0)
                    om = np.random.uniform(0.0, 1.0)
                    ol = 1.0 - om
                    omega = lal.CreateCosmologicalParameters(
                        h, om, ol, -1.0, 0.0, 0.0)

                ra.append(np.float(fields[0]))
                dec.append(np.float(fields[1]))
                zs.append(np.float(fields[40]))
                zp.append(np.float(fields[41]))
                if not (np.isnan(zs[-1])):
                    dl.append(lal.LuminosityDistance(omega, zs[-1]))
                elif not (np.isnan(zp[-1])):
                    dl.append(lal.LuminosityDistance(omega, zp[-1]))
                else:
                    dl.append(-1)
        f.close()
    return np.column_stack(
        (np.radians(np.array(ra)), np.radians(np.array(dec)), np.array(dl)))
Ejemplo n.º 2
0
def calculate_redshift(distance, h=0.6790, om=0.3065, ol=0.6935, w0=-1.0):
    """
    Calculate the redshift from the luminosity distance measurement using the
    Cosmology Calculator provided in LAL.
    By default assuming cosmological parameters from arXiv:1502.01589 - 'Planck 2015 results. XIII. Cosmological parameters'
    Using parameters from table 4, column 'TT+lowP+lensing+ext'
    This corresponds to Omega_M = 0.3065, Omega_Lambda = 0.6935, H_0 = 67.90 km s^-1 Mpc^-1
    Returns an array of redshifts
    """
    def find_z_root(z, dl, omega):
        return dl - lal.LuminosityDistance(omega, z)

    omega = lal.CreateCosmologicalParameters(h, om, ol, w0, 0.0, 0.0)
    if isinstance(distance, float):
        z = np.array([
            newton(find_z_root,
                   np.random.uniform(0.0, 2.0),
                   args=(distance, omega))
        ])
    else:
        z = np.array([
            newton(find_z_root, np.random.uniform(0.0, 2.0), args=(d, omega))
            for d in distance
        ])
    return z
Ejemplo n.º 3
0
 def __init__(self):
     self.names = ['z', 'ra', 'dec', 'M', 'h', 'om', 'ol']
     self.bounds = [[0.00001, 0.2], [0., 2. * np.pi],
                    [-np.pi / 2., np.pi / 2.], [-30, -10], [0.5, 1.],
                    [0.04, 1.], [0., 1.]]
     self.omega = lal.CreateCosmologicalParameters(0.7, 0.5, 0.5, -1., 0.,
                                                   0.)
    def __init__(self):
        self.names = ['redshift', 'magnitude', 'h', 'om', 'ol']  #,u'ra',u'dec'
        self.bounds = [[0.0, 2], [-30, -10], [0.5, 1.0], [0.04, 1.0],
                       [0.0, 1.0]]

        self.omega = lal.CreateCosmologicalParameters(0.7, 0.5, 0.5, -1.0, 0.0,
                                                      0.0)
Ejemplo n.º 5
0
 def __init__(self, catalog):
     self.names=['z', 'h', 'om', 'ol']
     self.bounds=[[0.001,0.012],
                 [0.5,1.],
                 [0.04,1.],
                 [0.,1.]]
     self.omega = lal.CreateCosmologicalParameters(0.7,0.5,0.5,-1.,0.,0.)
     self.catalog = catalog
Ejemplo n.º 6
0
 def __init__(self,
              h=None,
              om=None,
              ol=None,
              w0=None,
              w1=None,
              w2=None,
              default_maxz=1e5,
              numpoints=1e4):
     default_omega = lal.CreateCosmologicalParameters(
         0., 0., 0., 0., 0., 0.)
     lal.SetCosmologicalParametersDefaultValue(default_omega)
     # if any cosmological parameter was specified, create a custom
     # cosmology
     if any([p is not None for p in [h, om, ol, w0, w1, w2]]):
         h = h if h is not None else default_omega.h
         om = om if om is not None else default_omega.om
         ol = ol if ol is not None else default_omega.ol
         w0 = w0 if w0 is not None else default_omega.w0
         w1 = w1 if w1 is not None else default_omega.w1
         w2 = w2 if w2 is not None else default_omega.w2
         self.omega = lal.CreateCosmologicalParameters(
             h, om, ol, w0, w1, w2)
     else:
         self.omega = default_omega
     self.default_maxz = default_maxz
     self.numpoints = int(numpoints)
     self.z2d = numpy.vectorize(lal.LuminosityDistance)
     # for computing nearby (z < 1) redshifts
     zs = numpy.linspace(0., 1., num=self.numpoints)
     ds = self.z2d(self.omega, zs)
     self.nearby_d2z = interpolate.interp1d(ds,
                                            zs,
                                            kind='linear',
                                            bounds_error=False)
     # for computing far away (z > 1) redshifts
     zs = numpy.logspace(0, numpy.log10(default_maxz), num=self.numpoints)
     ds = self.z2d(self.omega, zs)
     self.faraway_d2z = interpolate.interp1d(ds,
                                             zs,
                                             kind='linear',
                                             bounds_error=False)
     # store the default maximum distance
     self.default_maxdist = ds.max()
Ejemplo n.º 7
0
    def __init__(self, catalog):
        self.names = ['zgw', 'h', 'om', 'ol', 'mgal', 'zgal', 'alpha', 'delta']
        self.bounds = [[0.001, 0.015], [0.5, 2.0], [0.04, 1.0], [0.0, 1.0],
                       [m_threshold, 30.0], [0.001, 0.015],
                       [GW.ra.rad - 0.1, GW.ra.rad + 0.1],
                       [GW.dec.rad - 0.1, GW.dec.rad + 0.1]]

        self.omega = lal.CreateCosmologicalParameters(0.7, 0.5, 0.5, -1., 0.,
                                                      0.)
        self.catalog = catalog
Ejemplo n.º 8
0
        self.dropgal()
        # run
        job = cpnest.CPNest(self, verbose=1, nthreads=4, nlive=1000, maxmcmc=100)
        if run_sampling:
            job.run()
            posteriors = job.get_posterior_samples(filename = 'posterior.dat')
        # Calcolo posterior su z
        posteriors = np.genfromtxt('posterior.dat', names = True)
        just_z = [post[0] for post in posteriors]
        self.pdfz = gaussian_kde(just_z)

        # Calcolo probabilità e ordino le galassie
        prob = self.catalog['z'].apply(self.pdfz)
        prob = prob/prob.max()
        self.catalog['p'] = prob
        self.catalog = self.catalog.sort_values('p', ascending = False)
        # self.get_names()
        self.catalog.to_csv('rank.txt', header=True, index=None, sep='\t', mode='w')
        if show_output:
            self.plot_outputs()

if __name__ == '__main__':

    positions = 'posterior_samples.json'
    # positions = 'GW170817_GWTC-1.hdf5'
    # positions = 'posterior_samples_170817.dat'
    z_bounds = [0.02,0.08]
    omega = lal.CreateCosmologicalParameters(0.7,0.3,0.7,-1.,0.,0.)
    M = ranking(omega, z_bounds)
    M.run(file = positions, run_sampling = False, show_output = True)