def runTarget(gridParam): locationID = gridParam.locationID apogeeID = gridParam.apogeeID badheader, header = apread.apStar(locationID, apogeeID, ext=0, header=True, dr='13') specs = apread.apStar(locationID, apogeeID, ext=1, header=False, dr='13') specerrs = apread.apStar(locationID, apogeeID, ext=2, header=False, dr='13') nvisits = header['NVISITS'] gridParamVists = [] for visit in range(1, nvisits + 1): print('Visit ' + str(visit) + '/' + str(nvisits)) if nvisits is 1: spec = specs specerr = specerrs else: spec = specs[1 + nvisits] specerr = specerrs[ 1+ nvisits] aspec= np.reshape(spec,(1, len(spec))) aspecerr= np.reshape(specerr,(1, len(specerr))) cont= spec / continuum.fit(aspec, aspecerr, type='aspcap')[0] conterr = specerr / continuum.fit(aspec, aspecerr, type='aspcap')[0] gridParam = GridParam(locationID, apogeeID) gridParam.constructParams() gridParam.spec = bm.shiftFlux(cont, header['VHELIO' + str(visit)]) gridParam.specErr = bm.shiftFlux(conterr, header['VHELIO' + str(visit)]) gridParam.getRVs(visit) gridParam.visit = visit nSteps = 200 sampler = MCMC(gridParam, nSteps=nSteps) circular_samples = sampler.chain[:, :, :].reshape((-1, 5)) results = np.asarray(list(map(lambda v: (v[1], v[2]-v[1], v[1]-v[0]), zip(*np.percentile(circular_samples, [16, 50, 84], axis=0))))) fig, ax = plt.subplots(5, 1, sharex='col') for i in range(5): for j in range(len(sampler.chain[:, 0, i])): ax[i].plot(np.linspace(0, nSteps, num=nSteps), sampler.chain[j, :, i], 'k', alpha=0.2) ax[i].plot(np.linspace(0, nSteps, num=nSteps) , np.ones(nSteps)*results[i][0], 'b', lw=2) fig.set_figheight(20) fig.set_figwidth(15) if not os.path.exists('plots/walker/' + str(locationID) + '/' + str(apogeeID) + '/'): os.makedirs('plots/walker/' + str(locationID) + '/' + str(apogeeID) + '/') plt.savefig('plots/walker/' + str(locationID) + '/' + str(apogeeID) + '/' + str(visit) + '.png') plt.close('all') gridParam.modelParamA.teff = results[0][0] gridParam.modelParamB.teff = results[1][0] gridParam.modelParamB.fluxRatio = results[2][0] gridParam.modelParamA.rv = results[3][0] gridParam.modelParamB.rv = results[4][0] gridParam.chi2 = -1.0 * fitModel(None, gridParam, plot=True) gridParamVists.append(gridParam) if not os.path.exists('lists/chi2/' + str(locationID) + '/'): os.makedirs('lists/chi2/' + str(locationID) + '/') filename = 'lists/chi2/' + str(locationID) + '/' + str(apogeeID) + '.tbl' writeGridToFile(gridParamVists, filename=filename)