前景建模/去除和功率谱生成
ps-eor的Python项目详细描述
用于前景去除和功率谱计算的Python包:
安装
从git(开发版本):
git clone https://gitlab.com/flomertens/ps_eor.git
pip install -f ./ps_eor
来自pypi(最新稳定版本):
^{pr2}$还将安装以下软件包:
- 点击
- numpy公司
- 神经质的
- 阿谀奉承
- matplotlib库
- pytable(用于保存h5格式的加载)
- pyfftw(可选,可节省时间)
- sklearn(用于PCA)
- GPy(用于GPR)
- healpy,reproject(可选)
命令行用法:
ps\u eor包附带一个命令行工具:pstool,它可以:
- 从fits-images立方体生成网格可见性立方体(gen_vus_cube)
- 从网格可见性立方体生成功率谱(make_ps)
- 合并不同的可见性立方体(合并)
- 使用探地雷达移除前景(运行地质雷达)
- 。。。还有几个
pstool的用法如下:
Usage: pstool [OPTIONS] COMMAND [ARGS]...
Options:
--version Show the version and exit.
--help Show this message and exit.
Commands:
combine Combine all datacubes listed in FILE_LIST...
combine_sph Combine all sph datacubes listed in FILE_LIST...
diff_cube Compute the difference between CUBE1 and CUBE2
even_odd_to_sum_diff Create SUM / DIFF datacubes from EVEN / ODD...
gen_vis_cube Create a datacube from image and psf fits files.
make_ps Produce power-spectra of datacubes FILE_I: Input...
run_flagger Run flagger on datacubes and save flag.
run_gpr Run GPR & generate power spectra FILE_I: Input...
simu_noise_img Compute noise fits cube from a simulated UV
coverage...
simu_noise_ps Compute noise PS from a simulated UV coverage...
simu_uv Compute gridded UV coverage.
vis_to_sph Load visibilities datacubes VIS_CUBE, transform to...
要获取任何pstool命令的帮助,请执行:
pstool CMD --help
API用法:
该软件包提供了一个简单的前台删除和PS估计任务的界面,可以完成命令行工具。在
下面,我们将简要介绍可以使用此软件包执行的主要任务:
- 正在加载数据:
data_cube_i = datacube.CartDataCube.load_from_fits_image(files, umin, umax, theta_fov)
这将执行以下步骤:
- 读取适合图像文件
- 将图像修剪到theta_fov
- 使用imager_scale_factor或WSCNORMF将图像从Jy/PSF转换为K 属性获取PSF“solid angle”(否则使用PSF的高斯近似值)
- 每个频率的FFT图像以获得可见性
- 仅在umin和umax之间保持非零可见性。 并返回一个CartDataCube对象,该对象以未筛选的方式存储可见性。在
可以(建议)使用save()/load()方法将其保存/加载为h5格式。在
还可以使用regrid()和image()方法重新生成数据并生成图像。在
- 运行FG删除算法:
主要的FG去除代码是GPR,但也实现了PCA、GMCA(python版本)和多项式拟合。在
要运行GPR,请执行以下操作:
data_cube_i = datacube.CartDataCube.load_from_fits_image(files_i, umin, umax, theta_fov)
data_cube_v = datacube.CartDataCube.load_from_fits_image(files_v, umin, umax, theta_fov)
eor_bin_list = pspec.EorBinList(data_cube_i.freqs)
# Create an EoR bin 122-134 MHz with a 120-136MHz range for the FG fitting
eor_bin_list.add_freq(1, 122, 134, 120, 136)
eor = eor_bin_list.get(1)
gpr_config = fitutil.GprConfig.load(gpr_config_filename)
gpr_fit = fgfit.GprForegroundFit(gpr_config)
gpr_res = gpr_fit.run(eor.get_slice_fg(data_cube_i), eor.get_slice_fg(data_cube_v))
这将返回具有以下属性的GprForegroundResult对象:
- fit:CartDataCube对象形式的FG模型
- sub:残差
- 预拟合:预拟合FG模型
- 后拟合:后拟合FG模型
以及以下方法:
- get_fg_model():返回GPR fg model
- get\u eor\u model():返回GPR eor模型
然后将数据立方体另存为以后处理所需的数据。在
GPR模型和残差的CartDataCube立方体包含误差协方差 在生成 功率谱。在
看看探地雷达_配置解析gpr配置的示例。在
- 生成功率谱:
PS码自动考虑了探地雷达模型的误差协方差。在
可以生成仅空间的PS、柱面平均的PS(2D)或球平均的PS(3D)。在
# Create a PS configuration
el = 2 * np.pi * (np.arange(data_cube.ru.min(), data_cube.ru.max(), du))
ps_conf = pspec.PowerSpectraConfig(el)
pb = datacube.LofarHBAPrimaryBeam()
# Create a PS generation object
ps_gen = pspec.PowerSpectraCart(eor, ps_conf, pb)
# Create a Spatial PS, plot it and save it to a file
ps = ps_gen.get_ps(data_cube)
ps.plot(title='Spatial power spectra')
plt.savefig('ps.pdf')
ps.save_to_txt('ps.txt')
# Create a Cylindrically averaged PS
ps2d = ps_gen.get_ps2d(data_cube)
ps2d.plot(title='Cylindrically averaged power spectra')
plt.savefig('ps2d.pdf')
ps2d.save_to_txt('ps2d.txt')
# Create a Spherically averaged PS
kbins = np.logspace(np.log10(ps_gen.kmin), np.log10(0.5), 10)
ps3d = ps_gen.get_ps3d(kbins, data_cube)
ps3d.plot(title='Spherically averaged power spectra')
plt.savefig('ps3d.pdf')
ps3d.save_to_txt('ps3d.txt')
- 项目
标签: