目前,我正在分析fits文件图像中的几个星系。拟合文件是一个3D高光谱立方体,其x和y轴表示右上角和赤纬,而z轴表示频率。我也知道每个星系的精确右上角和下偏角。我的目标是将大型拟合文件切成较小的文件,以隔离每个星系,以便我可以对单个星系进行一些进一步的分析。一种粗暴的方法只是简单地手动切割星系周围的配合文件,而我目前的算法是粗略的,只需在银河系周围切割一定数量像素的正方形即可,但是我想问一下是否有一些天花的方法或其他一些数值/数学方法可以更有效地识别和切割星系?
答案 0 :(得分:2)
看看spectral-cube和photutils Python软件包。
spectral-cube具有切出子多维数据集的方法(请参见here),而photutils具有检测源的方法(请参见here)等。测量和分析您的资源。对于photutils,某些方法仅适用于2D,并且您需要执行一些Numpy表达式才能处理3D数据。
通常,所有Python天文软件包(Astropy,spectral-cube,photutils)都可以使用Numpy数组中的像素数据(例如,用astropy.io.fits
读取)以及使用astropy.wcs.WCS
和{{1 }}对象,因此您将不得不学习一些内容。为此,Astropy tutorials是一个不错的起点。
您要求一种有效的剪裁方法。这是通过使用Numpy阵列功能“切片”到大型3D像素数据阵列并创建该切口的“视图”而不进行复制来实现的。如果您是Numpy的新手,那么最好的学习起点是Python data science handbook的“ Numpy数组的基础”页面。
答案 1 :(得分:0)
Astropy has a Cutout2D类对此很有用。虽然它可以读取具有两个以上轴的FITS文件,但只能基于其中两个轴生成切口。