를 사용하여. 여기 내 코드는 다음과 같습니다.구문 오류 나는 분포를 다시 사회자 모듈을 사용하기 위해 노력하고있어 사회자
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
종종 구문 오류가 역 추적에 표시되는 내용 전 라인에서 온다 :이이 라인에 닫는 )
누락 올바른 함수를 정의하는 방법 .....
위의 함수의'return' 문 ('inlike') 잘못 들여 쓰기 될 것으로 보인다. I에 유래에 코드를 붙여 넣을 때 무슨 일이 있었 – shaktimaan
@shaktimaan 죄송합니다. – naomig