0

我正在解决一组耦合 ODE 并面临两个问题:速度和内存存储。因此,我cython_gsl用来创建一个解决我的 ODE 的模块。到目前为止,我只是将数据写入.txt文件,但我认为使用PyTables.

因此,我在我的.pyx文件中定义了类似

from cython_gsl cimport *
from tables import *

def main (parameters for run ):

class vector(IsDescription):
    name= StringCol(16)                     # 16-character String
    i  = Int32Col()                 # 32-bit integer
    j  = Int32Col()             # 32-bit integer
    k  = Int32Col()             # 32-bit integer

h5file = tables.openFile("tutorial1.h5", mode = "r", title = "Test file")
group = h5file.createGroup("/", 'spin_vectors',"Spin vectors of the crust and core")
table = h5file.createTable(group, 'shellvector', vector, "  ")


... Setup the ODEs ...

while (t < t1):
    status = gsl_odeiv_evolve_apply (e, c, s, &sys, &t, t1, &h, y)

    if (status != GSL_SUCCESS):
        break

    #write_file.write("%.16e %.16e %.16e %.16e %.16e %.16e %.16e\n" %(t, y[0], y[1],y[2],y[3], y[4],y[5]) ) 
        shell_table.row['i']=y[0]
        shell_table.row['j']=y[1]
        shell_table.row['k']=y[2]
            shell_table.row.append()

shell_table.flush()

setup.py然后我使用一个输出(成功)文件的文件来编译它.so。不幸的是,在将它导入 Ipython 时,我得到了错误

NameError: Int32

我相信这是 PyTables 的事情。所以它似乎没有正确导入?虽然我认为这是一个很好的方法,如果有人对如何处理来自 python/cython 的数据有更好的建议,我会很高兴听到......谷歌几乎什么都没有!

4

1 回答 1

1

不幸的是,这里没有足够的信息来回答您的问题。您正在尝试做的事情应该有效。但是,我不认为这个错误来自 PyTables(它没有任何单独的“Int32”类,尽管它确实有一个“Int32Atom”和一个“Int32Col”)。相反,我怀疑这是来自 CythonGSL。有什么方法可以请您发布完整的回溯 - 而不仅仅是最后一个错误 - 以便我们可以肯定地知道?

于 2013-05-09T15:17:30.410 回答