2014-07-16 4 views
1

를 사용하여. 여기 내 코드는 다음과 같습니다.구문 오류 나는 분포를 다시 사회자 모듈을 사용하기 위해 노력하고있어 사회자

freq,asd = np.loadtxt('noise.csv',delimiter=',',unpack=True) 


psd = asd**2 

SNRth = 4.5 

d = 600 

dm = 0.9 
#interpolate! 

S = interpolate.interp1d(freq,psd) 

def SNR2(chirp,f): 
    return 5*np.pi**(-4/3)*chirp**(5/3)/(96*d**2)*integrate.quad(lambda f: f**(-7/3)/S(f), 20, 1500, limit=1000)[0] 

def mp(SNR2, x): 
    return integrate.quad(lambda x: np.exp(-0.5*(x+SNR2))*special.iv(0,np.sqrt(x*SNR2)),0,SNRth**2) 

def pp(SNR2, x): 
    return 0.5*np.exp(-0.5*(SNRth**2+SNR2))*special.iv(0,np.sqrt(x*SNR2)) 

def mm(SNR2, x): 
    return 1-np.exp(-SNRth**2/2) 

def pm(SNR2, x): 
    return (1/(2*dm**2))*np.exp(-SNRth**2/2) 

#global variables for the sampler 
nwalkers = 500 
ndim = 2 
nmcmc = 500 #number of mcmc steps...make it a factor of 2 

#variables for the population 
mupop = 0.4 #mean 
sigpop = 0.1 #standard deviation 

#variables for individual events 
Ntrig = 37 #number of individual events. 
Nnoise = 11 
Nsamp = 100 #number of sample points for each individual event 
stdmin = 1e-50 #smallest possible standard deviation 
stdmax = 0.2 #largest possible standard deviation 

#enforce uniform prior on the mean and the variance between (0,1) 
def lnprior(theta): 
    mu, sig = theta 
    if 0 < mu < 1 and 0 < sig < 1: 
     return 0 
    return -np.inf 

#log likelihood for the population 
#seps are single event posteriors 
def lnlike(theta,*seps): 
    mu, sig= theta 
    seps = np.asarray(seps).reshape((Ntrig,Nsamp)) #TODO: find a better way to pass a variable number of arguments to emcee 
return np.prod(pp(SNR2(chirp,f),seps)+pm(SNR2(chirp,f),seps))*np.prod(mp(SNR2(chirp,f),seps[:Nnoise])+mm(SNR2(chirp,f),seps[:Nnoise]) 

def lnpop(theta,*seps): 
    lp = lnprior(theta) 
    if not np.isfinite(lp): 
     return -np.inf 
    seps = np.asarray(seps).reshape((Ntrig,Nsamp)) #TODO: find a better way to pass a variable number of arguments to emcee 
    return lp + lnlike(theta,seps) 

lnpop을 정의 할 때 구문 오류가 발생합니다. 어떤 아이디어가 문제 일 수 있을까요?

return np.prod(pp(SNR2(chirp,f),seps)+pm(SNR2(chirp,f),seps))*np.prod(mp(SNR2(chirp,f),seps[:Nnoise])+mm(SNR2(chirp,f),seps[:Nnoise])) # <-- missing here 

종종 구문 오류가 역 추적에 표시되는 내용 전 라인에서 온다 :이이 라인에 닫는 ) 누락 올바른 함수를 정의하는 방법 .....

+0

위의 함수의'return' 문 ('inlike') 잘못 들여 쓰기 될 것으로 보인다. I에 유래에 코드를 붙여 넣을 때 무슨 일이 있었 – shaktimaan

+0

@shaktimaan 죄송합니다. – naomig

답변

0

이라고 생각 .

+0

아, 감사합니다! – naomig

+0

안녕하세요. –