2017-02-16 1 views
1

У меня есть код для загрузки в файлы Spike2 .smr и их чтение в Jupyter. Мой код работал нормально 2 дня назад и теперь, без каких-либо изменений ни в загружаемом файле, ни в том, что он загружает его, он не работает. Код проблема заключается в следующем ...Python 2: Ошибка типа «только целочисленные скалярные массивы могут быть преобразованы в скалярный индекс», используя pd.read() с neo.Spike2IO

Cell 1 Input (показать версии моих пакетов):

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)) 

Cell 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 

Cell 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 

Теперь я загружаю в .smr файле Spike2 с:

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. Я прочитал эту ошибку типа, и единственные ответы, которые я видел, это то, что файл может быть поврежден. Я удалил свой локальный файл и повторно загрузил его, а также загрузил другой подобный файл, только если главный файл для другого был поврежден. Я повторил мой код в этих двух новых файлах и получил код типа Error для обоих. Как было сказано ранее, код работал безупречно всего два дня назад, и теперь он не будет загружать какой-либо файл .smr. Я прошел и обновил все свои модули, а также pip и anaconda, все это не помогло.

Here is a link в короткий образец файла .smr (всего 3,1 МБ), который я разрезал для совместного использования. Он также дает ошибку типа. Есть идеи? Спасибо.

ответ

1

Я решил эту проблему, обновив модули и сам Anaconda (и все его соответствующие модули). Что-то должно было вернуться к старой версии.

код обновить каждый пакет в анаконда:

conda update --all  

Далее помощь можно найти here на домашней странице Конда. Выключение, а затем перезагрузка компьютера также может помочь обеспечить выполнение всех этих обновлений.

Смежные вопросы

 Смежные вопросы