t, y, dy = data[14752041].T omega0 = 17.217 # focus only on the region with the peak omega1 = np.linspace(17.213, 17.220, 100) omega2 = 0.5 * omega1 #------------------------------------------------------------ # Compute the delta BIC terms = np.arange(1, 21) BIC_max = np.zeros((2, len(terms))) for i, omega in enumerate([omega1, omega2]): for j in range(len(terms)): P = multiterm_periodogram(t, y, dy, omega, terms[j]) BIC = lomb_scargle_BIC(P, y, dy, n_harmonics=terms[j]) BIC_max[i, j] = BIC.max() #---------------------------------------------------------------------- # Plot the results fig = plt.figure(figsize=(5, 3.75)) ax = [ fig.add_axes((0.15, 0.53, 0.8, 0.37)), fig.add_axes((0.15, 0.1, 0.8, 0.37)) ] ax_inset = [ fig.add_axes((0.15 + 7 * 0.04, 0.55, 0.79 - 7 * 0.04, 0.17)), fig.add_axes((0.15 + 7 * 0.04, 0.12, 0.79 - 7 * 0.04, 0.17)) ] ylims = [(22750, 22850), (26675, 26775)]
ax.set_title('Corrected version') # Second panel: periodogram ax = fig.add_subplot(212) ax.plot(omega, P_S, '--k', lw=1, label='standard') ax.plot(omega, P_G, '-k', lw=1, label='generalized') ax.legend(loc=2) # plot the significance lines. xlim = (omega[0], omega[-1]) ax.plot(xlim, [sig1, sig1], ':', c='black') ax.plot(xlim, [sig5, sig5], ':', c='black') # label BIC on the right side ax2 = ax.twinx() ax2.set_ylim(tuple(lomb_scargle_BIC(ax.get_ylim(), y_obs, dy))) ax2.set_ylabel(r'$\Delta BIC$') ax.set_xlabel('$\omega$') ax.set_ylabel(r'$P_{\rm LS}(\omega)$') ax.set_ylim(0, 1.1) ####################################################################### # Redo the plot without the typo # We need a larger data range to actually get significant power # with actual noisy data #------------------------------------------------------------ # Generate data where y is positive np.random.seed(0) N = 300
ax.set_xlim(mag1date[0] - 50, mag1date[-1] + 50) ax.set_ylim(16, max(mag1) + 0.5) # Second panel: the periodogram & significance levels ax1 = fig.add_subplot(212, xscale='log') ax1.plot(period, PS, '-', c='black', lw=1, zorder=1) ax1.plot([period[0], period[-1]], [sig1, sig1], ':', c='black') ax1.plot([period[0], period[-1]], [sig5, sig5], ':', c='black') #ax1.annotate("", (0.3, 0.65), (0.3, 0.85), ha='center', # arrowprops=dict(arrowstyle='->')) ax1.set_xlim(period[0], period[-1]) ax1.set_ylim(-0.05, 0.85) ax1.set_xlabel(r'period (days)') ax1.set_ylabel('power') # Twin axis: label BIC on the right side ax2 = ax1.twinx() ax2.set_ylim(tuple(lomb_scargle_BIC(ax1.get_ylim(), mag1, mag1sig))) ax2.set_ylabel(r'$\Delta BIC$') ax1.xaxis.set_major_formatter(plt.FormatStrFormatter('%.1f')) ax1.xaxis.set_minor_formatter(plt.FormatStrFormatter('%.1f')) ax1.xaxis.set_major_locator(plt.LogLocator(10)) ax1.xaxis.set_major_formatter(plt.FormatStrFormatter('%.3g')) plt.savefig("042817_Lomb_scargle_R_band.pdf")
ax.set_xlabel('time (days)') ax.set_ylabel('flux') ax.set_xlim(-5, 105) # Second panel: the periodogram & significance levels ax1 = fig.add_subplot(212, xscale='log') ax1.plot(period, PS, '-', c='black', lw=1, zorder=1) ax1.plot([period[0], period[-1]], [sig1, sig1], ':', c='black') ax1.plot([period[0], period[-1]], [sig5, sig5], ':', c='black') ax1.annotate(" ", (0.3, 0.65), (0.3, 0.85), ha='center', arrowprops=dict(arrowstyle='->')) ax1.set_xlim(period[0], period[-1]) ax1.set_ylim(-0.05, 0.85) ax1.set_xlabel(r'period (days)') ax1.set_ylabel('power') # Twin axis: label BIC on the right side ax2 = ax1.twinx() ax2.set_ylim(tuple(lomb_scargle_BIC(ax1.get_ylim(), y_obs, dy))) ax2.set_ylabel(r'$\Delta BIC$') ax1.xaxis.set_major_formatter(plt.FormatStrFormatter('%.1f')) ax1.xaxis.set_minor_formatter(plt.FormatStrFormatter('%.1f')) ax1.xaxis.set_major_locator(plt.LogLocator(10)) ax1.xaxis.set_major_formatter(plt.FormatStrFormatter('%.3g')) plt.show()
t, y, dy = data[14752041].T omega0 = 17.217 # focus only on the region with the peak omega1 = np.linspace(17.213, 17.220, 100) omega2 = 0.5 * omega1 #------------------------------------------------------------ # Compute the delta BIC terms = np.arange(1, 21) BIC_max = np.zeros((2, len(terms))) for i, omega in enumerate([omega1, omega2]): for j in range(len(terms)): P = multiterm_periodogram(t, y, dy, omega, terms[j]) BIC = lomb_scargle_BIC(P, y, dy, n_harmonics=terms[j]) BIC_max[i, j] = BIC.max() #---------------------------------------------------------------------- # Plot the results fig = plt.figure() ax = [fig.add_axes((0.15, 0.53, 0.8, 0.37)), fig.add_axes((0.15, 0.1, 0.8, 0.37))] ax_inset = [fig.add_axes((0.15 + 7 * 0.04, 0.55, 0.79 - 7 * 0.04, 0.17)), fig.add_axes((0.15 + 7 * 0.04, 0.12, 0.79 - 7 * 0.04, 0.17))] ylims = [(22750, 22850), (26675, 26775)] omega0 = [17.22, 8.61] for i in range(2):