问题标签 [fits]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - astropy.io 适合大表的高效元素访问
我正在尝试使用 Python 和 astropy.io 从 FITS 文件中的二进制表中提取数据。该表包含一个包含超过 200 万个事件的事件数组。我想要做的是将某些事件的 TIME 值存储在一个数组中,这样我就可以对该数组进行分析。我遇到的问题是,在 fortran(使用 FITSIO)中,相同的操作在慢得多的处理器上可能需要几秒钟,而在 Python 中使用 astropy.io 的完全相同的操作需要几分钟。我想知道瓶颈到底在哪里,以及是否有更有效的方法来访问各个元素以确定是否将每个时间值存储在新数组中。这是我到目前为止的代码:
任何帮助,将不胜感激。我是其他语言的优秀程序员,但我以前不必担心 Python 的效率。我现在选择在 Python 中执行此操作的原因是,我将 fortran 与 FITSIO 和 PGPLOT 以及来自 Numerical Recipes 的一些例程一起使用,但是无法说服我在这台机器上使用的新的 fortran 编译器生成一个正常工作的程序(有一些 32 位与 64 位等问题)。Python 似乎具有我需要的所有功能(FITS I/O、绘图等),但如果访问列表中的各个元素需要很长时间,我将不得不寻找另一个解决方案。
非常感谢。
python - PyFITS:hdulist.writeto()
我正在从多扩展 FITS 文件中提取扩展,操作数据,并将数据(带有扩展的标题信息)保存到新的 FITS 文件中。
据我所知, pyfits.writeto() 完成了这项任务。但是,当我以数组的形式给它一个数据参数时,它给了我错误:
这是我的代码示例:
我很感激这方面的任何帮助。提前致谢。
python - python多处理比正常慢 - 计算太琐碎?
我对python中的并行处理没有太多经验。我有一个脚本,它接收几个 fit 文件,这些文件基本上是图像,将它们读入 3D numpy 数组并对其进行一些计算。我猜“最糟糕”的部分是,我有 2 个 for 循环,遍历数组的两个维度。在循环内部,我基本上得到一个列表,其中包含给定 x 和 y 坐标处的 numpy 数组的第三维。然后我计算最大值,以及最大值所在的索引。然后我将结果写入两个新的二维数组中,它们的 x 和 y 坐标相同。
对于尺寸约为 6000x6000x20 的 fit 文件,这可能需要几分钟才能完成。然后我尝试让这个并行运行,因为每个 2D 视线都是相互独立的,因此可以在单独的过程中计算。
我查看了一些调用多处理的基本教程,但是每次尝试它都需要 10 倍的时间……我在这里读过一些问题,多处理可能会有很多开销。开销所需的处理时间是否可能比过程中的实际计算长得多,这就是它比原来慢得多的原因吗?
谢谢。
这是我放在一起的示例脚本。
第一个版本大约需要 1 秒,第二个版本 12 在我的机器上需要几秒钟。
python - 使用 Astropy 将 3d Numpy 数组写入 FITS 文件
我有一个代表 256x256 图像的 3D NumPy 数组(即 (10, 256, 256))。我想使用 astropy.io.fits 将此数组写入 FITS 文件,以便我可以使用 ds9 -mecube 打开文件并在帧中移动。我的尝试如下所示
这会给我一个 FITS 文件,它实际上包含 3D 数组。但是,如果我用 ds9 -mecube 打开,我只能看到第一张图片。无论如何使用 astropy.io.fits 创建具有此功能的 FITS 文件?还是我缺少 ds9 的某些功能?
fits - 使用 PyFITS 编写布尔结构化数组
我想在 FITS 文件中用 PyFITS 编写一个布尔结构化数组。我有一些问题。这是一个简单的例子。
我创建测试字典并将其转换为结构化数组。
这是我想在 .fit 文件中打印的测试结构化数组。
我使用 pyfits 在 fit 文件中打印测试
但是,所有条目现在都设置为 False 值,如下所示:
此外,pyfits 似乎也以某种方式修改了原始测试数组。
你能帮我解决这个问题吗?非常感谢!
image - 使用指定的边界裁剪非常大的适合文件
我有一个大尺寸文件(超过 30,000 x 30,000)像素。IRAF无法处理这种大小的图像。如何像 IRAF 在使用其标准裁剪模式时那样裁剪这种大小的文件,同时保留正确的标题信息?
python - 如何使用 Python 将拟合表写入输出 LDAC 拟合目录
我有一个LDAC适合目录,在 Python 代码中我需要将两个数组的元素作为两个新列添加到其中。
我在python中打开原始目录:
这两个数组已准备好并称为ra和dec。我给他们键名、格式和其他需要的信息,并将它们转换为列。最后,我将两个新列加入到原始表中(检查newtab.columns和newtab.data显示新列已成功附加)。
当我将新表保存到新目录中时:
它不是我需要的格式。如果我查看每个目录的描述
我看到catalog.cat:
对于新的:
如上所示,在原始目录catalog.cat中有三个表,我尝试在 OBJECTS 表中添加两列。
我需要newcatalog.cat也保持其他程序所需的相同结构,但它没有 OBJECTS 表,并且考虑到“元素数”和“数据字段数”,将 newtab 保存到表中# 2.
是否有任何控制输出适合目录格式的解决方案?
感谢您的帮助,我希望我能正确地构建关于 stackoverflow 的第一个问题。
c++ - 无法链接 CCfits 示例程序
这可能与
从来没有回答。
无论如何,我希望我的问题更容易重现。CCfits 的示例程序位于:
http://heasarc.gsfc.nasa.gov/fitsio/CCfits/html/cookbook.html
我正在尝试使用以下方法编译它:
文件中每个 CCfits 函数的链接都失败:
/tmp/cc7hVaju.o: 在函数
main': cookbook.cpp:(.text+0x14): undefined reference to
writeImage()'cookbook.cpp:(.text+0x31): undefined reference towriteAscii()' cookbook.cpp:(.text+0x4e): undefined reference to
writeBinary()' cookbook.cpp:(.text+0x6b): undefined reference tocopyHDU()' cookbook.cpp:(.text+0x88): undefined reference to
readHeader()' cookbook .cpp:(.text+0xa5): 未定义对readImage()' cookbook.cpp:(.text+0xc2): undefined reference to
readTable()' 的引用 cookbook.cpp:(.text+0xdf): 未定义对readExtendedSyntax()' cookbook.cpp:(.text+0xfc): undefined reference to
selectRows()'collect2 的引用:错误:ld 返回 1 个退出状态
我已经用 Ubuntu 自带的 CCfits 包试过了。我也尝试过自己安装包。同样的错误。
奇怪的是,如果我不在命令行中包含库(即“g++ cookbook.cpp -o cookbook”),我会收到类似的消息。一个区别是我也收到此错误:
/tmp/ccMVMkSB.o: 在函数
CCfits::FITS::setVerboseMode(bool)': cookbook.cpp:(.text._ZN6CCfits4FITS14setVerboseModeEb[_ZN6CCfits4FITS14setVerboseModeEb]+0xf): undefined reference to
CCfits::FITS::s_verboseMode'
这应该是个线索吧?似乎是说我命名的库虽然存在,但并不包含我需要的所有功能。
谢谢你的帮助,
查尔斯
python - 使用 astropy.io 读取 FITS 时出现 OSError 24(打开的文件过多)
我正在尝试使用以下方法将一些 2 000 FITS 加载到内存中astropy.io.fits
:
但是,当达到第 1015 个文件时,OSError: [Errno 24] Too many open
files
会引发。
我有同样的问题:
我怀疑astropy.io.fits
没有正确关闭文件。有没有办法强制关闭文件?
python - 在python中重新调整适合图像的大小
我在 python 中有 5 个天文图像,每个图像都有不同的波长,因此它们具有不同的角分辨率和网格大小,为了比较它们以便我可以创建温度图,我需要它们具有相同的角分辨率和网格大小。
我已经设法将每个图像高斯卷积到与最差图像相同的角度分辨率,但是我很难找到一种方法来重新网格化 python 中的每个图像,并且想知道是否有人知道如何去做?
我希望将图像重新网格化为与最差质量图像相同的网格大小,因此如果需要,我可以将其用作参考图像。谢谢