前景建模/去除和功率谱生成

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估计任务的界面,可以完成命令行工具。在

下面,我们将简要介绍可以使用此软件包执行的主要任务:

  1. 正在加载数据:

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()方法重新生成数据并生成图像。在

  1. 运行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配置的示例。在

  1. 生成功率谱:

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')

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java GWT对话框从不显示帮助   java在简单的MapReduce作业中带来了极大的开销   javacom。mysql。jdbc。例外情况。jdbc4。MySQLIntegrityConstraintViolationException:列不能为null/onetoone映射   如何通过TCP/IP与Java和Labview进行通信,并发送浮点数据缓冲区?   java Apache camel与spring事件基本示例   java如何使我的秒表应用程序在完全关闭后仍能运行?   java Nutch爬网错误输入路径不存在   java是Mapreduce中按值传递还是按引用传递的键?   正则表达式替换java中的特定字符   Java DOM XML解析   java Eclipse未显示服务器的项目   使用Arraylist进行快速排序的排序Java实现疑难解答   java Split text包含字符串列表中的数字   检查Java中的两个lambda是否执行相同的代码?   java为什么dispatchTouchEvent避免在屏幕上单击?