我是Python的新手。 我要运行这个TargetFinder script ("Custom Analyses")。
我安装了所有必需的python包,并将代码复制到名为main.py
的脚本中,然后运行它。
我收到了这个错误:
[davide@laptop]$ python main.py
Traceback (most recent call last):
File "main.py", line 8, in <module>
training_df = pd.read_hdf('./paper/targetfinder/K562/output-epw/training.h5', 'training').set_index(['enhancer_name', 'promoter_name'])
File "/usr/lib64/python2.7/site-packages/pandas/io/pytables.py", line 330, in read_hdf
return store.select(key, auto_close=auto_close, **kwargs)
File "/usr/lib64/python2.7/site-packages/pandas/io/pytables.py", line 680, in select
return it.get_result()
File "/usr/lib64/python2.7/site-packages/pandas/io/pytables.py", line 1364, in get_result
results = self.func(self.start, self.stop, where)
File "/usr/lib64/python2.7/site-packages/pandas/io/pytables.py", line 673, in func
columns=columns, **kwargs)
File "/usr/lib64/python2.7/site-packages/pandas/io/pytables.py", line 2786, in read
values = self.read_array('block%d_values' % i)
File "/usr/lib64/python2.7/site-packages/pandas/io/pytables.py", line 2327, in read_array
data = node[:]
File "/usr/lib64/python2.7/site-packages/tables/vlarray.py", line 677, in __getitem__
return self.read(start, stop, step)
File "/usr/lib64/python2.7/site-packages/tables/vlarray.py", line 817, in read
outlistarr = [atom.fromarray(arr) for arr in listarr]
File "/usr/lib64/python2.7/site-packages/tables/atom.py", line 1211, in fromarray
return cPickle.loads(array.tostring())
ValueError: unsupported pickle protocol: 4
我不知道这个泡菜协议意味着什么,而且我的同事也对此一无所知。
如何解决此问题?
我在CentOS Linux版本7.2.1511(核心)操作系统上使用Python 2.7.5
答案 0 :(得分:22)
Pickle协议基本上是文件格式。来自documentation, 协议使用的越高,读取生成的pickle所需的Python版本就越新。 ... 在Python 3.4中添加了Pickle协议版本4 ,你的python版本(2.7.5)不支持这一点。
升级到Python 3.4或更高版本(当前为3.5)或使用第三个参数中的较低协议(2)创建pickle到:=
。
答案 1 :(得分:3)
这有时是由于 redis 数据库中的数据不正确造成的。试试看:
sudo redis-cli flushall
答案 2 :(得分:0)
python版本问题,升级到最新python版本试试。