Exemple #1
0
def parallel_datasets(number_of_simulations=n_sim / n_cores):
    print 'Number of simulations per core:' + str(number_of_simulations)
    np.random.seed()  # changes the seed
    Sn_datasets = []

    ra = np.asarray(tdata['RA'])
    dec = np.asarray(tdata['DEC'])
    pa = np.asarray(tdata['position_angle'])
    length = len(tdata)

    max_ra = np.max(ra)
    min_ra = np.min(ra)
    max_dec = np.max(dec)
    min_dec = np.min(dec)

    rdata = Table()
    for i in range(number_of_simulations):
        np.random.shuffle(pa)
        rdata['RA'] = ra
        rdata['DEC'] = dec
        rdata['position_angle'] = pa
        Sn = angular_dispersion_vectorized_n(rdata,
                                             n=n)  # up to n nearest neighbours
        Sn_datasets.append(Sn)

    return Sn_datasets
Exemple #2
0
def parallel_datasets(number_of_simulations=n_sim / n_cores):
    print 'Number of simulations per core:' + str(number_of_simulations)
    np.random.seed()  # changes the seed
    Sn_datasets = []

    ra = np.asarray(tdata['RA'])
    dec = np.asarray(tdata['DEC'])
    pa = np.asarray(tdata['final_PA'])
    length = len(tdata)
    if redshift: z_best = np.asarray(tdata['z_best'])

    max_ra = np.max(ra)
    min_ra = np.min(ra)
    max_dec = np.max(dec)
    min_dec = np.min(dec)

    rdata = Table()
    for i in range(number_of_simulations):
        np.random.shuffle(pa)
        rdata['RA'] = ra
        rdata['DEC'] = dec
        if redshift: rdata['z_best'] = z_best
        rdata['final_PA'] = pa
        if parallel_transport:
            Sn = angular_dispersion_vectorized_n_parallel_transport(
                rdata, n=n, redshift=redshift)  # up to n nearest neighbours
        else:
            Sn = angular_dispersion_vectorized_n(
                rdata, n=n, redshift=redshift)  # up to n nearest neighbours
        Sn_datasets.append(Sn)

    return Sn_datasets
Exemple #3
0
    def produce_Sn_plots():
        Sn_data = angular_dispersion_vectorized_n(tdata, n)

        prop_cycle = plt.rcParamsDefault['axes.prop_cycle']
        colors = prop_cycle.by_key()['color']

        if n == 60:
            plt.hist(Sn_mc['S_%i' % n],
                     bins=25,
                     histtype=u'step',
                     color=colors[0],
                     label=r'$S_{%i}\vert_{MC}$' % n)
        elif n == 140:
            plt.hist(Sn_mc['S_%i' % n],
                     bins=25,
                     histtype=u'step',
                     color=colors[1],
                     label=r'$S_{%i}\vert_{MC}$' % n)

        # print (Sn_data[n-1])
        # plt.axvline(x=Sn_data[n-1],ymin=0,ymax=1,ls='dashed', label='Data no PT')

        Sn_data = angular_dispersion_vectorized_n_parallel_transport(tdata, n)
        print(Sn_data[n - 1])
        if n == 60:
            plt.axvline(x=Sn_data[n - 1],
                        ymin=0,
                        ymax=1,
                        ls='dashed',
                        label=r'$S_{60}$',
                        color=colors[0])
        elif n == 140:
            plt.axvline(x=Sn_data[n - 1],
                        ymin=0,
                        ymax=1,
                        ls='dashed',
                        label=r'$S_{140}$',
                        color=colors[1])

        ax = plt.gca()
        ax.tick_params(labelsize=12)
        ax.set_xlabel(r'$S_n$', fontsize=14)
        ax.set_ylabel(r'Counts', fontsize=14)
        ax.legend(fontsize=14)
        title = 'Distribution of S_%i' % n
        title = ' '
        plt.title(title, fontsize=16)
        # if n == 140: plt.xlim(0.040,0.12151429413439714)

        Sn_mc_n = np.asarray(Sn_mc['S_' + str(n)])
        Sn_data_n = Sn_data[n - 1]
        av_Sn_mc_n = np.mean(Sn_mc_n)
        sigma = np.std(Sn_mc_n)

        print sigma
        print('S_%i = %.3f' % (n, Sn_data_n))

        SL = 1 - norm.cdf((Sn_data_n - av_Sn_mc_n) / (sigma))
        print('log10 SL = %.3f for n= %i, calculated with PT' %
              (np.log10(SL), n))
Exemple #4
0
def statistics(filename, tdata, redshift=False):
    if parallel_transport:
        if n < 998:
            Sn_mc = Table(
                fits.open('./data/2D/Sn_monte_carlo_PT' + filename +
                          '.fits')[1].data)
        else:
            Sn_mc = ascii.read('./data/2D/Sn_monte_carlo_PT' + filename +
                               '.csv')

    else:
        if n < 998:
            Sn_mc = Table(
                fits.open('./data/2D/Sn_monte_carlo_' + filename +
                          '.fits')[1].data)
        else:
            Sn_mc = ascii.read('./data/2D/Sn_monte_carlo_' + filename + '.csv')
    # calculate angular radius for number of nn,
    angular_radius = angular_radius_vs_n(tdata, filename, n)
    if parallel_transport:
        Sn_data = angular_dispersion_vectorized_n_parallel_transport(
            tdata, n, redshift)
    else:
        Sn_data = angular_dispersion_vectorized_n(tdata, n, redshift)
    Sn_vs_n(tdata, Sn_mc, Sn_data, filename, angular_radius, n)
Exemple #5
0
    def produce_Sn_plots():
        Sn_data = angular_dispersion_vectorized_n(tdata, n)

        plt.hist(Sn_mc['S_%i' % n],
                 bins=25,
                 histtype=u'step',
                 color='black',
                 label=r'$S_n\vert_{MC}$')

        # print (Sn_data[n-1])
        # plt.axvline(x=Sn_data[n-1],ymin=0,ymax=1,ls='dashed', label='Data no PT')

        Sn_data = angular_dispersion_vectorized_n_parallel_transport(tdata, n)
        print(Sn_data[n - 1])
        plt.axvline(x=Sn_data[n - 1],
                    ymin=0,
                    ymax=1,
                    ls='dashed',
                    color='k',
                    label='Data')

        ax = plt.gca()
        ax.tick_params(labelsize=12)
        ax.set_xlabel(r'$S_{%i}$' % n, fontsize=14)
        ax.set_ylabel(r'Counts', fontsize=14)
        ax.legend(fontsize=14)
        title = 'Distribution of S_%i' % n
        title = ' '
        plt.title(title, fontsize=16)
        if n == 140: plt.xlim(0.040, 0.12151429413439714)
        plt.tight_layout()

        plt.show()

        Sn_mc_n = np.asarray(Sn_mc['S_' + str(n)])
        Sn_data_n = Sn_data[n - 1]
        av_Sn_mc_n = np.mean(Sn_mc_n)
        sigma = np.std(Sn_mc_n)

        print sigma
        print('S_%i = %.3f' % (n, Sn_data_n))

        SL = 1 - norm.cdf((Sn_data_n - av_Sn_mc_n) / (sigma))
        print('log10 SL = %.3f for n= %i, calculated with PT' %
              (np.log10(SL), n))
def statistics(filename, tdata, load=True, redshift=False):
    Sn_mc = Table(
        fits.open('./data/Sn_monte_carlo_' + filename + '.fits')[1].data)

    # calculate angular radius for number of nn (does not include redshift obviously)
    angular_radius = angular_radius_vs_n(tdata, filename, n)
    if redshift:  # same number of sources, so only have to plot this once
        plt.plot((-10, -10), (-10, -10),
                 c='white',
                 label='Num_sources %i' % len(tdata))
    Sn_data = angular_dispersion_vectorized_n(tdata, n, redshift)
    line = Sn_vs_n(tdata,
                   Sn_mc,
                   Sn_data,
                   filename,
                   angular_radius,
                   n,
                   load=load,
                   redshift=redshift)
    plot_additional_info(tdata, filename, redshift)

    return line
Exemple #7
0
    plt.savefig('./angular_radius_vs_n_' + filename + '.pdf', overwrite=True)
    plt.close()

    return median


n = 180

for i in range(5):
    # Open the size data
    filename = 'size_bins2_' + str(i)
    tdata = Table(fits.open('./' + filename + '.fits')[1].data)
    tdata = deal_with_overlap(tdata)
    Sn_mc = Table(fits.open('./Sn_monte_carlo_' + filename + '.fits')[1].data)
    # Calculate the Sn and the plots
    angular_radius = angular_radius_vs_n(tdata, filename, n)
    Sn_data = angular_dispersion_vectorized_n(tdata, n)
    Sn_vs_n(tdata, Sn_mc, Sn_data, filename, angular_radius, n)

    break

    # Open the flux data
    filename = 'flux_bins2_' + str(i)
    tdata = Table(fits.open('./' + filename + '.fits')[1].data)
    tdata = deal_with_overlap(tdata)
    Sn_mc = Table(fits.open('./Sn_monte_carlo_' + filename + '.fits')[1].data)
    # Caluclate the Sn and the plots
    Sn_data = angular_dispersion_vectorized_n(tdata, n)
    Sn_vs_n(tdata, Sn_mc, Sn_data, filename, n)
    angular_radius_vs_n(tdata, filename, n)