У меня есть код для загрузки в файлы 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 МБ), который я разрезал для совместного использования. Он также дает ошибку типа. Есть идеи? Спасибо.