2016-07-19 27 views
8

Ich bin neu in Python. Ich muss dies TargetFinder script ("Custom Analyses") ausführen.Python, wie behandelt man den Fehler "ValueError: nicht unterstütztes Beizprotokoll: 4"?

Ich habe alle erforderlichen Python-Pakete installiert und den Code in ein Skript namens main.py kopiert und ausgeführt. Ich habe diesen Fehler:

[[email protected]]$ 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 

Ich habe keine Ahnung, was diese Gurke Protokoll bedeutet, und auch nichts darüber meine Kollegen wissen.

Wie kann ich dieses Problem lösen?

Ich verwende Python 2.7.5 auf einem CentOS Linux-Version 1511.07.02 (Core) Betriebssystem

+0

Wie wurde die Datei 'training.h5' erstellt? –

+0

Ich weiß es nicht: die TargetFinder-Skriptentwickler haben es unter allen Dateien bereitgestellt –

+0

In diesem Fall benötigen Sie Python 3.4 oder höher. – cdarke

Antwort

10

Das Pickle-Protokoll ist im Grunde das Dateiformat. Aus der documentation, Je höher das verwendete Protokoll, desto jünger die Version von Python benötigt, um die Gurke zu lesen. ... Pickle-Protokoll Version 4 wurde in Python 3.4 hinzugefügt, Ihre Python-Version (2.7.5) unterstützt dies nicht.

Aktualisieren Sie entweder auf Python 3.4 oder höher (aktuell ist 3.5) oder erstellen Sie die Beize mit einem niedrigeren Protokoll (2) im dritten Parameter pickle.dump().