3

Structモジュールを使用してバイナリファイルから浮動小数点数を読み取ろうとしていて、それらをnumpy 3D配列に格納しようとしています.独立したスクリプトとして実行すると、正常に動作します.しかし、別のスクリプトからクラスの関数として呼び出すと( import) 値エラーが発生します これが私のコードです。

import struct
from numpy import *
class DCD_read:
   def read_cord(self,total_atoms,dcd_data):
        cord_data=dcd_data[276:len(dcd_data)]        ##  binary data string
        byte=0
        count=0
       total_frames=info_dict['nset']
       coord=numpy.zeros((total_frames,total_atoms,3))         ## 3d array
       for frames in range(0,total_frames):
           for atoms in range(0,total_atoms):
              x = list(struct.unpack('<f',cord_data[60+byte:64+byte])) ###reading float
              byte+=4
              y = list(struct.unpack('<f',cord_data[60+byte:64+byte]))
              byte+=4
              z = list(struct.unpack('<f',cord_data[60+byte:64+byte]))
              byte+=4
              ls=x
              ls.extend(y)
              ls.extend(z)
              coord[frames][atoms]=ls
     return coord

エラー:

Traceback (most recent call last):
File "C:\Users\Hira\Documents\PROJECT\md.py", line 24, in <module>
coord=dcd.read_cord(total_atoms,dcd_data)
File "C:\Users\Hira\Documents\PROJECT\DCD_read.py", line 51, in read_cord
coord=numpy.zeros((total_frames,total_atoms,3))
File "C:\Python27\numpy\core\numeric.py", line 148, in ones
a = empty(shape, dtype, order)
ValueError: negative dimensions are not allowed

md.py はメイン (呼び出しスクリプト) で、DCD_read.py はモジュールです。md.py (メイン スクリプト) のコードは次のとおりです。

from DCD_read import *
import numpy
dcd_file=open('frame3.dcd',"rb")
dcd_data=dcd_file.read()
dcd=read_dcd()
total_atoms=6141
coord=dcd.read_cord(total_atoms,dcd_data)

誰でも助けてください???? 私はそれを完全かつ明確に説明したことを願っています.Thanks

4

0 に答える 0