我使用django开发网站,我使用rpy2
来调用R包 - cdkr。
这是我的奇怪问题:
当我刷新网页或再次提交相同的表单时,它无法正常工作,并收到以下错误消息:
.jcall(cn," Ljava / lang / Object;"," get",as.integer(i - 1))出错 java.lang.IndexOutOfBoundsException:索引:0,大小:0
我使用runserver_plus
进行调试,我只能运行一次代码,当我再次运行时,我会得到同样的错误:
我第一次跑" r_result = robjects.r(rcode)"
Start calculate molecular descriptor.
Check packages.
Start interprite molecular smiles.
Start plot structure.
Start calculate descriptors of structure.
Start export descriptors. Start predict CCS values. Start output result.
但是...
我第二次跑" r_result = robjects.r(rcode)"
Start calculate molecular descriptor.
Check packages.
Start interprite molecular smiles.
Start plot structure.
Start calculate descriptors of structure. Traceback (most recent call last):
File "<debugger>", line 1, in <module> robjects.r(rcode) File "/usr/lib64/python2.7/site-packages/rpy2/robjects/__init__.py", line 359, in __call__
s += str.join(os.linesep, tmp)
return s
...
RRuntimeError: Error in .jcall(cn, "Ljava/lang/Object;", "get", as.integer(i - 1)) : java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
这是我的python代码:
def CalculateCCS(para, ccs_type='lipid'):
"""
calculate MetCCS using R package "MetCCSPredictor"
:param para: a string contain all input parameters from user
:param ccs_type: metCCS or lipidCCS
:return: calculation result, a dic
"""
from rpy2.robjects.packages import importr
import rpy2.robjects as robjects
result_dic = {}
name_mapping = NAME_MAPPING_FROM_R_RESULT_TO_PY
if ccs_type=='lipid':
importr('LipCcsPredictor')
rcode = 'LipCCS.Pred(' + para + ')'
r_result = robjects.r(rcode) # trouble is here
column_n = r_result.colnames
for x in range(len(r_result)):
result_dic[name_mapping.get(column_n[x], 'None')] = r_result[x]
return result_dic
我真的想知道两件事: