示例#1
0
    def plot_lcurve(self, ax=None, guides=True):
        """
        Make a plot of the data-misfit x regularization values.

        The estimated corner value is shown as a blue triangle.

        Parameters:

        * ax : matplotlib Axes
            If not ``None``, will plot the curve on this Axes instance.
        * guides : True or False
            Plot vertical and horizontal lines across the corner value.

        """
        if ax is None:
            ax = mpl.gca()
        else:
            mpl.sca(ax)
        x, y = self.dnorm, self.mnorm
        if self.loglog:
            mpl.loglog(x, y, '.-k')
        else:
            mpl.plot(x, y, '.-k')
        if guides:
            vmin, vmax = ax.get_ybound()
            mpl.vlines(x[self.corner_], vmin, vmax)
            vmin, vmax = ax.get_xbound()
            mpl.hlines(y[self.corner_], vmin, vmax)
        mpl.plot(x[self.corner_], y[self.corner_], '^b', markersize=10)
        mpl.xlabel('Data misfit')
        mpl.ylabel('Regularization')
示例#2
0
        writer = csv.DictWriter(csvfile,
                                fieldnames=results[0].keys(),
                                delimiter=',',
                                quotechar='|',
                                quoting=csv.QUOTE_MINIMAL)
        writer.writeheader()
        for result in results:
            writer.writerow(result)
        csvfile.close()

    title = '%s, %.3f GHz, %d times: surface %g \n%s %s %s' % \
            (context, frequency[0] * 1e-9, ntimes, se, socket.gethostname(), epoch, basename)
    plt.clf()
    colors = ['b', 'r', 'g', 'y']
    for ifield, field in enumerate(
        ['onsource_maxabs', 'onsource_rms', 'onsource_medianabs']):
        plt.loglog(ses, [1e6 * result[field] for result in results],
                   '-',
                   label=field,
                   color=colors[ifield])

    plt.xlabel('Surface error multiplier')
    plt.ylabel('Error (uJy)')

    plt.title(title)
    plt.legend(fontsize='x-small')
    print('Saving plot to %s' % plotfile)

    plt.savefig(plotfile)
    plt.show(block=False)
示例#3
0
def prompt_MDP(dataname):
    # ---------------数据读取
    dat = []
    bat = []
    xrt = []
    path_png = '../GRB_prompt_MDP(3)_300s/'
    num = 0
    with open(dataname, 'r') as f:
        bat_start = bat_end = xrt_start = xrt_end = 0
        for line in f.readlines():
            num += 1
            if 'batSNR5flux' in line:
                bat_start = num
            if 'batSNR5gamma' in line:
                bat_end = num - 2
            if 'xrtwtflux' in line:
                xrt_start = num
            if 'xrtwtgamma' in line:
                xrt_end = num - 2
    with open(dataname, 'r') as f:
        for line in f.readlines()[bat_start:bat_end]:
            bat.append(re.split(r'\s+', line))
        bat = np.array(bat)
        if len(bat) == 0:
            pass
        else:
            bat = bat[:, :-1]
            bat = bat.astype(np.float)
    with open(dataname, 'r') as f:
        for line in f.readlines()[xrt_start:xrt_end]:
            xrt.append(re.split(r'\s+', line))
        xrt = np.array(xrt)
        xrt = xrt[:, :-1]
        xrt = xrt.astype(np.float)

    #---------------------- 转换光子数
    def N_count(flux, index=xrt_photon_index):
        N = flux * integrate.quad(lambda E: E ** (-index), 2, 10.0)[0] / \
            integrate.quad(lambda E: E * E ** (-index), 0.3, 10)[0] / 1.6e-9
        return N

    #print('%3.3f count/cm2/s'%N_count(2.4e-8))
    if len(bat) == 0:
        pass
    else:
        flux = np.array(bat[:, 3])
        flux_err = np.array(bat[:, 4])
        bat_count = [
            N_count(flux[i], index=bat_photon_index) for i in range(len(flux))
        ]
        bat_count_err = [
            N_count(flux_err[i], index=bat_photon_index)
            for i in range(len(flux_err))
        ]
        bat = np.column_stack((bat, bat_count, bat_count_err))

    xrt_flux = np.array(xrt[:, 3])
    xrt_flux_err = np.array(xrt[:, 4])
    xrt_count = [N_count(xrt_flux[i]) for i in range(len(xrt_flux))]
    xrt_count_err = [
        N_count(xrt_flux_err[i]) for i in range(len(xrt_flux_err))
    ]
    xrt = np.column_stack((xrt, xrt_count, xrt_count_err))
    #print(bat_count)
    # ---------------------------画图
    fig, ax = plt.subplots()
    if len(bat) == 0:
        pass
    else:
        x = bat[:, 0]
        xerr = bat[:, 1]
        xerr_ = bat[:, 2]
        y = bat[:, -2]
        yerr = bat[:, -1]
        plt.errorbar(x,
                     y,
                     yerr=yerr,
                     xerr=xerr,
                     fmt='o',
                     label='BAT(flux to count)')

    xrt_x = xrt[:, 0]
    xrt_xerr = xrt[:, 1]
    xrt_xerr_ = xrt[:, 2]
    xrt_y = xrt[:, -2]
    xrt_yerr = xrt[:, -1]
    plt.errorbar(xrt_x,
                 xrt_y,
                 yerr=xrt_yerr,
                 xerr=xrt_xerr,
                 fmt='o',
                 color='red',
                 label='XRT(flux to count)')
    plt.xlabel('Time since BAT trigger (s)')
    plt.ylabel(r'2-10 keV (Count/cm$^2$/s)')
    plt.title('Swift BAT-XRT data of %s' % dataname)
    plt.loglog()

    #-----------------------------------合并BAT与XRT反推光子的数据
    xrt_x0 = xrt[0, 0]
    print(xrt_x0)
    if len(bat) == 0:
        bat = xrt
    else:
        bat = bat[bat[:, 0] < xrt_x0, :]
        bat = np.row_stack((bat, xrt))

    x = bat[:, 0]
    xerr = bat[:, 1]
    xerr_ = bat[:, 2]
    y = bat[:, -2]
    yerr = bat[:, -1]
    #  plt.errorbar(x, y, yerr=yerr, xerr=xerr, fmt='o',label='BAT')

    # -----------------------------------计算总MPD
    t = xerr - xerr_
    N_cm = sum(y * t)
    N_total = N_cm * eff * area
    #  print(N_cm, N_total)
    MDP = 4.29 / (miu * np.sqrt(N_total)) * 100
    #  print(MDP)
    # ----------------------------t_start 之后观测到的数据点及画图
    bat2 = bat[bat[:, 0] > t_start, :]
    bat2 = bat2[bat2[:, 0] < t_end, :]
    #print(bat2)
    x2 = bat2[:, 0]
    xerr2 = bat2[:, 1]
    xerr2_ = bat2[:, 2]
    y2 = bat2[:, 6]
    yerr2 = bat2[:, 7]
    # plt.errorbar(x2, y2, yerr=yerr2, xerr=xerr2, fmt='*')
    plt.axvline(t_start, label='t=%s s' % t_start, color='green')
    plt.axvline(t_end, label='t=%s s' % t_end, color='green')
    # ----------------------------t_start 之后观测到的MDP
    t2 = xerr2 - xerr2_
    N_cm2 = sum(y2 * t2)
    N_total2 = N_cm2 * eff * area
    # print(N_cm2, N_total2)
    MDP2 = 4.29 / (miu * np.sqrt(N_total2)) * 100
    #  print(MDP2)
    fig.text(0.2,
             0.2,
             'MDP = %2.2f %%' % MDP2,
             color='red',
             fontsize=12,
             fontweight='bold')
    plt.legend(loc='upper left')
    #plt.legend()
    plt.savefig(path_png + dataname + ' %2.2f%%' % MDP2 + '.png')
    plt.show()
    return MDP2
示例#4
0
from numpy import *
import matplotlib as plt

data = loadtxt("data.txt")
plt.figure()
plt.loglog(data[:, 0], abs(data[:, 1] - exp(-4.096)))
plt.axis('equal')
plt.xlabel('dt')
plt.ylabel('error')
示例#5
0
文件: Nch.py 项目: viratupadhyay/ida
c2 = 'r'
xr05,Nr05 = ida.Nch_logscale("../Nch/rgh/rgh05.dat")
xr10,Nr10 = ida.Nch_logscale("../Nch/rgh/rgh10.dat")
xr20,Nr20 = ida.Nch_logscale("../Nch/rgh/rgh20.dat")
xr25,Nr25 = ida.Nch_logscale("../Nch/rgh/rgh25.dat")
xr30,Nr30 = ida.Nch_logscale("../Nch/rgh/rgh30.dat")
xr40,Nr40 = ida.Nch_logscale("../Nch/rgh/rgh40.dat")
xr50,Nr50 = ida.Nch_logscale("../Nch/rgh/rgh50.dat")
xg2,Ng2 = ida.Nch_logscale("../Nch/gamma/gam2-2000.dat")
xg4,Ng4 = ida.Nch_logscale("../Nch/gamma/gam4-2000.dat")
xg10,Ng10 = ida.Nch_logscale("../Nch/gamma/gam10-2000.dat")
xg20,Ng20 = ida.Nch_logscale("../Nch/gamma/gam20.dat")
xg40,Ng40 = ida.Nch_logscale("../Nch/gamma/gam40.dat")
xg100,Ng100 = ida.Nch_logscale("../Nch/gamma/gam100.dat")
xg1000,Ng1000 = ida.Nch_logscale("../Nch/gamma/gam1000.dat")
plt.loglog(xr05/10,Nr05,'d',markersize=8,color=c1,label=r'$\sigma=0.05h_0$')
plt.loglog(xr10/10,Nr10,'o',markersize=8,color=c1,label=r'$\sigma=0.10h_0$')
plt.loglog(xr20/10,Nr20,'s',markersize=8,color=c1,label=r'$\sigma=0.20h_0$')
plt.loglog(xr25/10,Nr25,'^',markersize=8,color=c1,label=r'$\sigma=0.25h_0$')
plt.loglog(xr30/10,Nr30,'v',markersize=8,color=c1,label=r'$\sigma=0.30h_0$')
plt.loglog(xr40/10,Nr40,'<',markersize=8,color=c1,label=r'$\sigma=0.40h_0$')
plt.loglog(xr50/10,Nr50,'>',markersize=8,color=c1,label=r'$\sigma=0.50h_0$')
plt.loglog(xg2/10,Ng2,'d',markersize=8,color=c2,label=r'$\gamma=0.2l_p$')
plt.loglog(xg4/10,Ng4,'o',markersize=8,color=c2,label=r'$\gamma=0.4l_p$')
plt.loglog(xg10/10,Ng10,'s',markersize=8,color=c2,label=r'$\gamma=l_p$')
plt.loglog(xg20/10,Ng20,'^',markersize=8,color=c2,label=r'$\gamma=2l_p$')
plt.loglog(xg40/10,Ng40,'v',markersize=8,color=c2,label=r'$\gamma=4l_p$')
plt.loglog(xg100/10,Ng100,'<',markersize=8,color=c2,label=r'$\gamma=10l_p$')
plt.loglog(xg1000/10,Ng1000,'>',markersize=8,color=c2,label=r'$\gamma=100l_p$')
plt.legend(loc='upper right',prop={'size':17})
plt.xticks((10**0, 10**1, 10**2), (r'$10^{0}$', r'$10^{1}$', r'$10^{2}$'), fontsize=24)