TypeError при запуске записной книжки Cell Types из AllenSDK

Я запускаю первые строки записной книжки типов клеток:

sweep_number = 30
sweep_data = data_set.get_sweep(sweep_number)

И я получаю эту ошибку:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-8-1ff88b13fc24> in <module>()
      4 
      5 sweep_number = 30
----> 6 sweep_data = data_set.get_sweep(sweep_number)
      7 

C:\ProgramData\Anaconda3\lib\site-packages\allensdk\core\nwb_data_set.py in get_sweep(self, sweep_number)
    112                 unit = stimulus_dataset.attrs["unit"]
    113                 unit_str = None
--> 114                 if unit.startswith('A'):
    115                     unit_str = "Amps"
    116                 elif unit.startswith('V'):

TypeError: startswith first arg must be bytes or a tuple of bytes, not str

1 ответ

Решение

Ошибка, которую вы видите, вызвана тем, что unit переменная является байтовым литералом и allensdk пытается позвонить endswith используя строку на нем. Это не может работать, но это не ваша вина. Это распространенная ошибка при переходе с Python 2 на Python 3 (который ввел тип байтов; подробности см. Здесь). Я предполагаю, что вы используете Python 3, и это вызывает ошибку, так как allensdk не может работать с байтами здесь.

Чтобы обойти это, вы должны либо установить Python 2, так как вы используете conda, создайте среду, которая использует Python 2. Это можно сделать следующим образом:

> conda create -n py2allen python=2.7
> activate py2allen
(py2allen)> pip install allensdk
(py2allen)> jupyter notebook

Более подробную информацию можно найти здесь. Если некоторые требования не найдены, вы можете попробовать установить их вручную.

Другие вопросы по тегам