def calc_nonaxi(params, barfile, options, data, logpiso, nlocs, locations, phio): # Average over data and integrate over distance surfmass, meanvr, meanvt, sigmar2, sigmat2, sigmart, vertexdev, surfmass_init, meanvt_init, sigmar2_init, sigmat2_init, ii, jj, grid = read_output( barfile ) xgrid, ygrid = marginalize_phasedist.phiR_input(51, 0.5, 2.0) interpObj = marginalize_phasedist.interp_velocity_field(xgrid, ygrid, surfmass, meanvr, meanvt) interpObjAxi = marginalize_phasedist.interp_velocity_field(xgrid, ygrid, surfmass_init, 0.0, meanvt_init) avg_plate_model = numpy.zeros(nlocs) for ii in range(nlocs): # Calculate vlos | los indx = data["LOCATION"] == locations[ii] thesedata = data[indx] thislogpiso = logpiso[indx, :] if not options.multi is None: mvlos = multi.parallel_map( ( lambda x: mvlosnonaxi( params, interpObj, interpObjAxi, thesedata[x], options, thislogpiso[x, :], phio ) ), range(len(thesedata)), numcores=numpy.amin([len(thesedata), multiprocessing.cpu_count(), options.multi]), ) else: mvlos = numpy.zeros(len(data)) for jj in range(len(thesedata)): print jj mvlos[jj] = mvlosnonaxi( params, interpObj, interpObjAxi, thesedata[jj], options, thislogpiso[jj, :], phio ) # Calculate mean and velocity dispersion avg_plate_model[ii] = numpy.mean(mvlos) return avg_plate_model * _REFV0 * params[0]
def calc_nonaxi(params, barfile, options, data, logpiso, nlocs, locations, phio): #Average over data and integrate over distance surfmass, meanvr, meanvt, sigmar2, sigmat2, sigmart, vertexdev, surfmass_init, meanvt_init, sigmar2_init, sigmat2_init, ii, jj, grid = read_output( barfile) xgrid, ygrid = marginalize_phasedist.phiR_input(51, 0.5, 2.) interpObj = marginalize_phasedist.interp_velocity_field( xgrid, ygrid, surfmass, meanvr, meanvt) interpObjAxi = marginalize_phasedist.interp_velocity_field( xgrid, ygrid, surfmass_init, 0., meanvt_init) avg_plate_model = numpy.zeros(nlocs) for ii in range(nlocs): #Calculate vlos | los indx = (data['LOCATION'] == locations[ii]) thesedata = data[indx] thislogpiso = logpiso[indx, :] if not options.multi is None: mvlos = multi.parallel_map((lambda x: mvlosnonaxi( params, interpObj, interpObjAxi, thesedata[x], options, thislogpiso[x, :], phio)), range(len(thesedata)), numcores=numpy.amin([ len(thesedata), multiprocessing.cpu_count(), options.multi ])) else: mvlos = numpy.zeros(len(data)) for jj in range(len(thesedata)): print jj mvlos[jj] = mvlosnonaxi(params, interpObj, interpObjAxi, thesedata[jj], options, thislogpiso[jj, :], phio) #Calculate mean and velocity dispersion avg_plate_model[ii] = numpy.mean(mvlos) return avg_plate_model * _REFV0 * params[0]
nonAxiFile= 'predict_l_vhelio_nonaxi.sav' if os.path.exists(nonAxiFile): nonaxi_file= open(nonAxiFile,'rb') nonaxils= pickle.load(nonaxi_file) nonaxiEl= pickle.load(nonaxi_file) nonaxiBar= pickle.load(nonaxi_file) nonaxi_file.close() else: print "Working on NonAxi ..." elfile= '/work/bovy/data/bovy/nonaximw/elliptical/el_rect_so_0.2_res_51_grid_101_tform_-150._tsteady_125._cp_0.05_nsigma_4.sav' print "Reading bar file ..." barfile= '/work/bovy/data/bovy/nonaximw/bar/bar_rect_vr_tform-150_tsteady-4pi_51_101.sav' #elliptical surfmass,meanvr,meanvt,sigmar2,sigmat2,sigmart,vertexdev,surfmass_init,meanvt_init,sigmar2_init,sigmat2_init,ii,jj,grid = read_output(elfile) xgrid, ygrid= marginalize_phasedist.phiR_input(51,0.5,2.) interpObj= marginalize_phasedist.interp_velocity_field(xgrid,ygrid,surfmass,meanvr,meanvt) interpObjAxi= marginalize_phasedist.interp_velocity_field(xgrid,ygrid,surfmass_init,0.,meanvt_init) nonaxils= numpy.linspace(30.,330.,501) nonaxiEl= numpy.zeros(len(nonaxils)) phio=70. print "Calculating elliptical perturbation ..." print "WARNING: DOES NOT CORRECTLY USE SURFMASS" for ii in range(len(nonaxils)): print ii nonaxiEl[ii]= marginalize_phasedist.mvlos_l(nonaxils[ii],interpObj,degree=True,phio=phio)-marginalize_phasedist.mvlos_l(nonaxils[ii],interpObjAxi,degree=True,phio=phio) #Bar surfmass,meanvr,meanvt,sigmar2,sigmat2,sigmart,vertexdev,surfmass_init,meanvt_init,sigmar2_init,sigmat2_init,ii,jj,grid = read_output(barfile) interpObj= marginalize_phasedist.interp_velocity_field(xgrid,ygrid,surfmass,meanvr,meanvt) interpObjAxi= marginalize_phasedist.interp_velocity_field(xgrid,ygrid,surfmass_init,0.,meanvt_init) nonaxiBar= numpy.zeros(len(nonaxils)) print "Calculating bar perturbation ..."
if os.path.exists(nonAxiFile): nonaxi_file = open(nonAxiFile, 'rb') nonaxils = pickle.load(nonaxi_file) nonaxiEl = pickle.load(nonaxi_file) nonaxiBar = pickle.load(nonaxi_file) nonaxi_file.close() else: print "Working on NonAxi ..." elfile = '/work/bovy/data/bovy/nonaximw/elliptical/el_rect_so_0.2_res_51_grid_101_tform_-150._tsteady_125._cp_0.05_nsigma_4.sav' print "Reading bar file ..." barfile = '/work/bovy/data/bovy/nonaximw/bar/bar_rect_vr_tform-150_tsteady-4pi_51_101.sav' #elliptical surfmass, meanvr, meanvt, sigmar2, sigmat2, sigmart, vertexdev, surfmass_init, meanvt_init, sigmar2_init, sigmat2_init, ii, jj, grid = read_output( elfile) xgrid, ygrid = marginalize_phasedist.phiR_input(51, 0.5, 2.) interpObj = marginalize_phasedist.interp_velocity_field( xgrid, ygrid, surfmass, meanvr, meanvt) interpObjAxi = marginalize_phasedist.interp_velocity_field( xgrid, ygrid, surfmass_init, 0., meanvt_init) nonaxils = numpy.linspace(30., 330., 501) nonaxiEl = numpy.zeros(len(nonaxils)) phio = 70. print "Calculating elliptical perturbation ..." print "WARNING: DOES NOT CORRECTLY USE SURFMASS" for ii in range(len(nonaxils)): print ii nonaxiEl[ii] = marginalize_phasedist.mvlos_l( nonaxils[ii], interpObj, degree=True, phio=phio) - marginalize_phasedist.mvlos_l( nonaxils[ii], interpObjAxi, degree=True, phio=phio) #Bar surfmass, meanvr, meanvt, sigmar2, sigmat2, sigmart, vertexdev, surfmass_init, meanvt_init, sigmar2_init, sigmat2_init, ii, jj, grid = read_output(