我开始将python用作天文学家,并且一直在使用numdisplay软件包在SAO ds9上显示和处理图像。
我大学的计算机实验室最近将linux版本更新为Debian 7.1。
我正在用python 0.13.1和numdisplay v.1.5.6,pyds9 v.1.7和pyfits v2.3.1运行python 2.7.3。

我正在使用http://stsdas.stsci.edu/perry/pydatatut.pdf中给出的显示过程。

加载适合图像并打开ds9界面后,我尝试在ds9上显示图像,但ds9崩溃。
此后,我在交互模式下使用的步骤:


  在[2]中:将pyfits导入为pf
  
  在[3]中:将numdisplay导入为nd
  
  在[4]中:导入ds9
  
  在[5]中:ds9.ds9()
  
  Out [5]:位于0xa3e870c的ds9.ds9
  
  在[6]中:im = pf.getdata('M52b.fit')
  
  在[7]中:nd.display(im)


我收到以下错误消息:

    error                                     Traceback (most recent call last)
    <ipython-input-7-6988a1e88909> in <module>()
----> 1 nd.display(im)

    /usr/local/lib/python2.7/dist-packages/numdisplay/__init__.pyc in display(self, pix, name, bufname, z1, z2, transform, zscale, contrast, scale, offset, frame)
    395
    396         # Initialize the specified frame buffer
--> 397         _d.setFrame(self.frame)
    398         _d.eraseFrame()
    399

    /usr/local/lib/python2.7/dist-packages/numdisplay/displaydev.pyc in setFrame(self, frame_num)
    405
    406         code = self._LUT | self._COMMAND
--> 407         self._writeHeader(self._IIS_WRITE, code, -1, 0, 0, 0, 0)
    408
    409         # Update with user specified frame number

    /usr/local/lib/python2.7/dist-packages/numdisplay/displaydev.pyc in _writeHeader(self, tid, subunit, thingct, x, y, z, t)
    540         sum = 0xffff - (sum & 0xffff)
    541         a[3] = sum
--> 542         self._write(a.tostring())
    543
    544     def close(self, os_close=os.close):

/usr/local/lib/python2.7/dist-packages/numdisplay/displaydev.pyc in _write(self, s)
    578             n = len(s)
    579             while n>0:
--> 580                 nwritten = self._socket.send(s[-n:])
    581                 n -= nwritten
    582                 if nwritten <= 0:

error: [Errno 104] Connection reset by peer

In [8]:


有谁能够帮助我?

谢谢

马可

最佳答案

错误消息的意思是“我正在发送数据,但远程端突然关闭了连接。”

因此,您需要检查服务器的错误日志以找出问题所在。这并不意味着客户端正确与否(客户端可能会将非法数据发送到服务器,从而使其崩溃),但是您需要首先调试服务器,以查明连接中断的原因是什么。

08-03 21:36