对于基于SBML的ODE模型,在python实现的MCMC中使用超过126次迭代时出现IOError

2024-05-12 16:38:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一些代码,在python中执行马尔可夫链蒙特卡罗(MCMC),用于基于SBML的ODE的参数估计。在我尝试执行超过126次迭代之前,实现已经完成并可以正常工作。当使用超过126次迭代时,我得到的错误是:

  File "insert_copasi_parameters.py", line 68, in _read_copasiML_as_string
    with open(self.copasi_file) as f:

IOError: [Errno 24] Too many open files: 'D:\\MPhil\\Model_Building\\Models\\Exercises\\COPASI_API\\_temp.cps'

ODE的集成是使用称为COPASI的软件计算的。这个软件需要一个xml。模块“insert_copasi_parameters”获取一些随机采样的参数并将它们放入xml(这是上面投诉的.cps文件)

算法失败的实际方法(“u read_copasiML_as_string”)是一个简单的with块。i、 e

def _read_copasiML_as_string(self):
    with open(self.copasi_file) as f:
        return f.read()

然后,软件计算ODE轨迹,并将其解析回python以继续使用该算法。因为我使用的是with块,所以在每次迭代之后,这些文件应该被打开,然后再次关闭。不仅如此,上面的“temp.cps”文件实际上是在两次运行之间删除的原始文件的副本。我很感激没有看到实际的代码(太长了),但是有人能告诉我这个错误是从哪里来的吗

提前谢谢


Tags: 文件代码selfreadstring软件as错误