コード例 #1
0
def doubleBrokenPowerLaw(logX, *p):
    '''
    p1 = amplitude of break A
    p2 = break A
    p3 = break B
    p4 = PL inde A
    p5 = PL index A-B
    p6 = PL indec B+
    p7 = deltaA
    p8 = deltaB
    '''
    p1, p2, p3, p4, p5, p6, p7, p8 = p

    if (p7 < 0.001) | (p8 < 0.001) | (p1 < 0) | (p1 > 1.) | (p4 > 0) | (p6 <
                                                                        0):
        return np.zeros(len(logX)) + np.inf

    x = 10**logX

    f =  models.SmoothlyBrokenPowerLaw1D(amplitude=p1, \
            x_break=p2, alpha_1=p4, alpha_2=p5)

    g = models.SmoothlyBrokenPowerLaw1D(amplitude=1., \
            x_break=1., alpha_1=p5, alpha_2=p6)

    f.delta = p7
    g.delta = p8

    y = f(x) * g(x)

    return np.log10(y)
コード例 #2
0
ファイル: astropyPLv1.0.py プロジェクト: MadFisa/Scripts
def calc_flux(t,nu,F_0t,nu_bt,alpha_1t,alpha_2t):
    """Flux as flux[t_i,nu_i] for given arrays of ts and nus. Give other paramters as arrays 
    i.e F_0t[ti]= amplitude for time t_i"""
    flux=np.zeros((n,len(nu)))           
    f=models.SmoothlyBrokenPowerLaw1D()                         
    for i in range(n):
        f.amplitude=F_0t[i]
        f.x_break=nu_bt[i]
        f.alpha_1=alpha_1t[i]
        f.alpha_2=alpha_2t[i]
        flux[i]=f(nu)
    
    return flux
コード例 #3
0
def brokenPowerLaw(x, *p):
    p1, p2, p3, p4, p5 = p

    if (p4 < 0.001) | (p2 > 0) | (p3 < 0):
        return np.zeros(len(x)) + np.inf

    f = models.SmoothlyBrokenPowerLaw1D(amplitude=1.,
                                        x_break=p1,
                                        alpha_1=p2,
                                        alpha_2=p3)

    f.delta = p4
    y = np.log10(f(10**x))

    return y
コード例 #4
0
    astmodels.Plummer1D(mass=10.0, r_plum=5.0),
    astmodels.BrokenPowerLaw1D(amplitude=10,
                               x_break=0.5,
                               alpha_1=2.0,
                               alpha_2=3.5),
    astmodels.ExponentialCutoffPowerLaw1D(10, 0.5, 2.0, 7.),
    astmodels.LogParabola1D(
        amplitude=10,
        x_0=0.5,
        alpha=2.,
        beta=3.,
    ),
    astmodels.PowerLaw1D(amplitude=10., x_0=0.5, alpha=2.0),
    astmodels.SmoothlyBrokenPowerLaw1D(amplitude=10.,
                                       x_break=5.0,
                                       alpha_1=2.0,
                                       alpha_2=3.0,
                                       delta=0.5),
    custom_and_analytical_inverse(),
    custom_inputs_outputs(),
]

if HAS_SCIPY:
    test_models.append(
        astmodels.Spline1D(
            np.array([-3., -3., -3., -3., -1., 0., 1., 3., 3., 3., 3.]),
            np.array([
                0.10412331, 0.07013616, -0.18799552, 1.35953147, -0.15282581,
                0.03923, -0.04297299, 0., 0., 0., 0.
            ]), 3))
コード例 #5
0
    dataset = 6
    data = all_mi[dataset]
    alpha_1 = 0.38215
    alpha_2 = 0.003
    p1 = plt.loglog(np.arange(1, len(data) + 1), data, label="WikiText2 (C)")
    amplitude = all_mi[dataset][break_point + 12]
    x = np.linspace(1, len(data), len(data))
    f = models.BrokenPowerLaw1D(amplitude=amplitude,
                                x_break=break_point,
                                alpha_1=alpha_1,
                                alpha_2=alpha_2)
    fit_sample = f(x)
    p2 = plt.loglog(x, fit_sample, label="Broken Power-Law for WikiText2 (C)")
    amplitude = all_mi[dataset][break_point - 1]
    f = models.SmoothlyBrokenPowerLaw1D(amplitude=amplitude,
                                        x_break=break_point,
                                        alpha_1=alpha_1,
                                        alpha_2=alpha_2)
    f.delta = 0.25
    fit_sample = f(x)
    p3 = plt.loglog(x,
                    fit_sample,
                    label="Smoothly Broken Power-Law for WikiText2 (C)")

    ###################################################################################################################
    # Wiki2 Raw
    ###################################################################################################################
    # break_point = 4
    # dataset = 7
    # data = all_mi[dataset]
    # alpha_1 = 0.421
    # alpha_2 = 0.00281
コード例 #6
0
	return y
#	return b*(freq**alpha)*np.exp((alpha/beta)*freq**(-beta))
'''
#plt.plot(np.linspace(250,450,1024),power_law(np.linspace(250,450),1,)
popt,pcov=curve_fit(power_law,combined_nonec_freq,combined_nonec,absolute_sigma=True)
print (popt,np.sqrt(np.diag(pcov)))

x=np.linspace(min(combined_nonec_freq),max(combined_nonec_freq))
y=power_law(x,popt[0],popt[1],popt[2],popt[3])
plt.plot(np.log10(x),np.log10(y))
plt.errorbar(np.log10(combined_nonec_freq),np.log10(combined_nonec),np.divide(np.array(combined_nonec_err),np.array(combined_nonec))/2.7182818,fmt='o',capsize=5)
plt.show()


'''
f = models.SmoothlyBrokenPowerLaw1D(amplitude=12, x_break=290,alpha_1=-1.5, alpha_2=2.6,delta=0.01)
fit= fitting.LevMarLSQFitter()
fitted_line = fit(f, combined_nonec_freq,combined_nonec)
plt.errorbar((combined_nonec_freq),(combined_nonec),(combined_nonec_err),fmt='o',capsize=5)
x=np.linspace(min(combined_nonec_freq),max(combined_nonec_freq))
alpha1=fitted_line.alpha_1.value
alpha2=fitted_line.alpha_2.value
error=(np.diag(fit.fit_info['param_cov']))
print(fitted_line,error)
alpha1_err=error[2]
alpha2_err=error[3]
plt.plot((x),(fitted_line(x)))
plt.ylim(bottom=0)
plt.xlabel('(Frequency)')
plt.ylabel('(Mean flux density)')
plt.text(250,50,r'$\alpha_1=$'+str(-1*alpha1)[:4]+r'$\pm$'+str(alpha1_err)[:4])