2017-02-16 46 views
1

我有代碼加載Spike2 .smr文件並在Jupyter中讀取它們。我的代碼在2天前和現在工作得很好,對於加載的文件或加載它的代碼絕對沒有變化,它不起作用。問題代碼如下...Python 2:類型錯誤「只有整數標量數組可以轉換爲標量索引」使用pd.read()neo.Spike2IO

單元1輸入(顯示我的包的版本):

import sys 
print("Python version: {}\n\nPackages versions: ".format(sys.version)) 

# which package versions are installed? 
import pip 
all_packages = pip.get_installed_distributions() 
used_packages = ["matplotlib", "neo", "numpy", "OpenElectrophy", "os", "pandas", 
      "pylab", "scipy"] 
for entry in used_packages: 
    for p in all_packages: 
     if entry in str(p): 
      print(str(p)) 

小區1個輸出:

Python version: 2.7.13 |Anaconda custom (64-bit)| (default, Dec 20 2016, 23:09:15) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] 

Packages versions: 
matplotlib 1.4.3 
matplotlib-venn 0.11.3 
neo 0.3.3 
numpy 1.12.0 
pycosat 0.6.1 
nose 1.3.7 
backports.ssl-match-hostname 3.5.0.1 
pandas 0.19.2 
scipy 0.15.1 

小區2輸入(滿載我的模塊):

import pylab 
import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
from scipy import stats as st 
import os 
import tables 
import neo 
import scipy.signal as sg 
from scipy import interpolate as inter 
import h5py as h 
import quantities as q 

plt.style.use('ggplot') 
pd.options.display.max_rows = 999 

%matplotlib inline 

現在,我加載與的Spike2 .smr文件:

r = neo.Spike2IO("Rawdata/143-16/nerve.smr").read()[0]  

,並獲得下列類型的錯誤:

TypeError         Traceback (most recent call last) 
<ipython-input-3-f81fd520a4c5> in <module>() 
----> 1 r = neo.Spike2IO("Rawdata/143-16/nerve.smr").read()[0] 

/home/wolverine/anaconda/lib/python2.7/site-packages/neo/io/baseio.pyc in read(self, lazy, cascade, **kargs) 
    107    if not cascade: 
    108     return bl 
--> 109    seg = self.read_segment(lazy=lazy, cascade=cascade, **kargs) 
    110    bl.segments.append(seg) 
    111    create_many_to_one_relationship(bl) 

/home/wolverine/anaconda/lib/python2.7/site-packages/neo/io/spike2io.pyc in read_segment(self, take_ideal_sampling_rate, lazy, cascade) 
    120    if channelHeader.kind in [1, 9]: 
    121     #~ print 'analogChanel' 
--> 122     anaSigs = self.readOneChannelContinuous(fid, i, header, take_ideal_sampling_rate, lazy = lazy) 
    123     #~ print 'nb sigs', len(anaSigs) , ' sizes : ', 
    124     for anaSig in anaSigs : 

/home/wolverine/anaconda/lib/python2.7/site-packages/neo/io/spike2io.pyc in readOneChannelContinuous(self, fid, channel_num, header, take_ideal_sampling_rate, lazy) 
    240 
    241   anaSigs = [ ] 
--> 242   if channelHeader.unit in unit_convert: 
    243    unit = pq.Quantity(1, unit_convert[channelHeader.unit]) 
    244   else: 

/home/wolverine/anaconda/lib/python2.7/site-packages/neo/io/spike2io.pyc in __getattr__(self, name) 
    444     else: 
    445      l = np.fromstring(self.array[name][0], 'u1') 
--> 446     return self.array[name][1:l+1] 
    447    else: 
    448     return self.array[name] 

TypeError: only integer scalar arrays can be converted to a scalar index  

的 「neo.Spike2IO(」 filename.smr「)工作正常,但只要我添加了 」閱讀()[0]「部分,那是當我得到TypeError。我閱讀了這個類型的錯誤,我看到的唯一答案是該文件可能已損壞。我刪除了我的本地文件並重新下載了它,並且還下載了另一個類似的文件,以防萬一其他文件的主文件損壞。我重試了這兩個新文件的代碼,並收到了兩個類型錯誤代碼。如前所述,代碼在兩天前完美運行,現在不會加載任何.smr文件。我瀏覽並更新了所有的模塊,pip和水蟒,這些都沒有幫助。

Here is a link轉換爲我爲了共享目的而剪切的簡短示例.smr文件(僅3.1 MB)。它也給出了類型錯誤。有任何想法嗎?謝謝。

回答

1

我通過進一步更新我的模塊和Anaconda本身(及其所有模塊)來解決此問題。必須回覆到舊版本。

Anaconda的更新每個包的代碼是:

conda update --all  

更多幫助可以在康達主頁上找到here。關閉,然後重新啓動計算機也可以幫助確保所有這些更新都已實施。

相關問題