Как динамически переименовать файл hdf5 из iohub вPsychopy

Я использую кодер Psychopy 1.82.01 и его функциональность iohub (в Ubuntu 14.04 LTS). Это работает, но мне было интересно, есть ли способ динамически переименовать файл hdf5, который он создает во время эксперимента (чтобы, в конце концов, я знал, какому участнику он принадлежит, и два участника получат два файла, не перезаписывая один из них) . Мне кажется, что имя файла определяется в этом файле: //github.com/psychopy/psychopy/blob/df68d434973817f92e5df78786da313b35322ae8/psychopy/iohub/default_config.yaml Но есть ли способ изменить это динамически?


person brina    schedule 22.04.2015    source источник


Ответы (1)


Если вы хотите создать отдельный файл hdf5 для каждого запуска эксперимента, параметры зависят от того, как вы запускаете процесс ioHub. Предполагая, что вы используете функцию psychopy.iohub.launchHubServer() для запуска ioHub, вы можете передать kwarg 'experiment_code' в функцию, и он будет использоваться в качестве имени файла hdf5.

Например, если вы создали скрипт со следующим кодом и запустили его:

import psychopy.iohub as iohub

io = iohub.launchHubServer(experiment_code="exp_sess_1")

# your experiment code here ....
# ...

io.quit()

Файл ioHub hdf5 с именем «exp_sess_1.hdf5» будет создан в той же папке, что и файл скрипта.

В качестве примечания: вам не нужно сохранять данные каждого сеанса эксперимента в отдельный файл hdf5. Файловая структура ioHub hdf5 предназначена для сохранения данных нескольких участников/сеансов в одном файле. При каждом запуске эксперимента требуется уникальный код сеанса, а данные каждого запуска сохраняются в файле hdf5 с идентификатором сеанса, связанным с кодом сеанса.

person Sol Simpson    schedule 23.04.2015
comment
Я запускаю iohub, расширяя класс ioHubExperimentRuntime, поэтому, по сути, я реализовал запуск метода и запуск вызова для экземпляра моего класса среды выполнения. Почему я это делаю... это может быть излишне осторожно, но мне удобнее иметь отдельные файлы, так как в этом случае проблема в последнем эксперименте не испортит все мои данные. - person brina; 23.04.2015
comment
Если вы расширяете класс ioHubExperimentRuntime, есть ли у вас также файл iohub_config.yaml в том же каталоге, что и сценарий вашего эксперимента? - Если да, то вы можете загрузить файл до того, как будет установлено соединение с iohub, и изменить параметр data_store:filename: на нужное имя, а затем сохранить обновленный файл yaml. Это, вероятно, больше работы и более уродливо, чем переименование файла на уровне ОС в конце эксперимента. - person Sol Simpson; 23.04.2015
comment
Если у вас нет файла iohub_config.yaml в каталоге эксперимента, вы можете создать его до того, как будет установлено соединение iohub, и записать в него только необходимые настройки data_store:filename:, а затем закрыть файл. соединение создано, оно выберет файл iohub_config.yaml и будет использовать указанное вами имя файла. Опять же, довольно грязно. Так что, вероятно, либо переключитесь на использование функции launchHubServer, либо сделайте, как предложил Джонас, и переименуйте файл hdf5, но после того, как сервер iohub будет закрыт, как вы предложили. - person Sol Simpson; 23.04.2015