@@ -221,7 +221,7 @@ def register_session(self, ses_path, file_list=True, projects=None, procedures=N
221221 # assert len({md['IBLRIG_VERSION_TAG'] for md in settings}) == 1
222222
223223 users = []
224- for user in filter (None , map (lambda x : x .get ('PYBPOD_CREATOR' ), settings )):
224+ for user in filter (lambda x : x and x [ 1 ] , map (lambda x : x .get ('PYBPOD_CREATOR' ), settings )):
225225 user = self .assert_exists (user [0 ], 'users' ) # user is list of [username, uuid]
226226 users .append (user ['username' ])
227227
@@ -246,7 +246,7 @@ def register_session(self, ses_path, file_list=True, projects=None, procedures=N
246246 if poo_counts :
247247 json_field ['POOP_COUNT' ] = int (sum (poo_counts ))
248248
249- if not session : # Create session and weighings
249+ if not len ( session ) : # Create session and weighings
250250 ses_ = {'subject' : subject ['nickname' ],
251251 'users' : users or [subject ['responsible_user' ]],
252252 'location' : settings [0 ]['PYBPOD_BOARD' ],
@@ -273,9 +273,13 @@ def register_session(self, ses_path, file_list=True, projects=None, procedures=N
273273 self .register_weight (subject ['nickname' ], md ['SUBJECT_WEIGHT' ],
274274 date_time = md ['SESSION_DATETIME' ], user = user )
275275 else : # if session exists update a few key fields
276- data = {'procedures' : procedures , 'projects' : projects }
276+ data = {'procedures' : procedures , 'projects' : projects ,
277+ 'n_correct_trials' : n_correct_trials , 'n_trials' : n_trials }
277278 if task_protocols :
278279 data ['task_protocol' ] = '/' .join (task_protocols )
280+ if end_time :
281+ data ['end_time' ] = self .ensure_ISO8601 (end_time )
282+
279283 session = self .one .alyx .rest ('sessions' , 'partial_update' , id = session_id [0 ], data = data )
280284 if json_field :
281285 session ['json' ] = self .one .alyx .json_field_update ('sessions' , session ['id' ], data = json_field )
@@ -401,14 +405,16 @@ def _get_session_times(fn, md, ses_data):
401405 """
402406 if isinstance (md , dict ):
403407 start_time = _start_time = isostr2date (md ['SESSION_DATETIME' ])
408+ end_time = isostr2date (md ['SESSION_END_TIME' ]) if md .get ('SESSION_END_TIME' ) else None
404409 else :
405410 start_time = isostr2date (md [0 ]['SESSION_DATETIME' ])
406411 _start_time = isostr2date (md [- 1 ]['SESSION_DATETIME' ])
412+ end_time = isostr2date (md [- 1 ]['SESSION_END_TIME' ]) if md [- 1 ].get ('SESSION_END_TIME' ) else None
407413 assert isinstance (ses_data , (list , tuple )) and len (ses_data ) == len (md )
408414 assert len (md ) == 1 or start_time < _start_time
409415 ses_data = ses_data [- 1 ]
410- if not ses_data :
411- return start_time , None
416+ if not ses_data or end_time is not None :
417+ return start_time , end_time
412418 c = ses_duration_secs = 0
413419 for sd in reversed (ses_data ):
414420 ses_duration_secs = (sd ['behavior_data' ]['Trial end timestamp' ] -
0 commit comments