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
Более подробную информацию можно найти здесь. Если некоторые требования не найдены, вы можете попробовать установить их вручную.