Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
# Get the sessions list to get the different variables needed:
session_list = self.get_sessions(projectid)
sess_id2mod = dict((sess['session_id'], [sess['subject_label'],
sess['type'], sess['handedness'], sess['gender'],
sess['yob'], sess['age'], sess['last_modified'],
sess['last_updated']]) for sess in session_list)
if has_fs_datatypes(self):
# First get FreeSurfer
post_uri = SE_ARCHIVE_URI
post_uri += ASSESSOR_FS_PROJ_POST_URI.format(
project=projectid, fstype=DEFAULT_FS_DATATYPE)
assessor_list = self._get_json(post_uri)
pfix = DEFAULT_FS_DATATYPE.lower()
for asse in assessor_list:
if asse['label']:
key = asse['label']
if assessors_dict.get(key):
res = '%s/out/file/label' % pfix
assessors_dict[key]['resources'].append(asse[res])
else:
anew = {}
anew['ID'] = asse['ID']
anew['label'] = asse['label']
anew['uri'] = asse['URI']
anew['assessor_id'] = asse['ID']
anew['assessor_label'] = asse['label']
anew['assessor_uri'] = asse['URI']
anew['project_id'] = projectid
anew['project_label'] = projectid
def create_assessor(self, xnatsession, inputs, relabel=False):
attempts = 0
while attempts < 100:
guid = str(uuid4())
assessor = xnatsession.assessor(guid)
if not assessor.exists():
kwargs = {}
if self.xsitype.lower() == DEFAULT_FS_DATATYPE.lower():
fsversion = '{}/fsversion'.format(self.xsitype.lower())
kwargs[fsversion] = 0
elif self.xsitype.lower() == DEFAULT_DATATYPE.lower():
proctype = '{}/proctype'.format(self.xsitype.lower())
kwargs[proctype] = self.name
procversion = '{}/procversion'.format(self.xsitype.lower())
kwargs[procversion] = self.version
input_key = '{}/inputs'.format(self.xsitype.lower())
kwargs[input_key] = self._serialize_inputs(inputs)
if relabel:
_proj = assessor.parent().parent().parent().label()
_subj = assessor.parent().parent().label()
_sess = assessor.parent().label()
label = '-x-'.join([_proj, _subj, _sess, self.name, guid])
else:
label = guid
assr_info['inputs'] = parse_assessor_inputs(
self.get('proc:inputs'))
assr_info['ID'] = self.get('ID')
assr_info['label'] = self.get('label')
assr_info['assessor_id'] = assr_info['ID']
assr_info['assessor_label'] = assr_info['label']
assr_info['project_id'] = self.get('project')
assr_info['project_label'] = assr_info['project_id']
assr_info['subject_id'] = self.parent().get('xnat:subject_ID')
assr_info['subject_label'] = self.parent().subject
assr_info['session_id'] = self.parent().get('ID')
assr_info['session_label'] = self.parent().get('label')
xmltype = '{http://www.w3.org/2001/XMLSchema-instance}type'
assr_info['xsiType'] = self.get(xmltype).lower()
if assr_info['xsiType'].lower() == DEFAULT_FS_DATATYPE.lower():
# FreeSurfer
assr_info['procstatus'] = self.get('fs:procstatus')
assr_info['qcstatus'] = self.get('xnat:validation/status')
assr_info['qcnotes'] = self.get('xnat:validation/notes')
assr_info['version'] = self.get('fs:procversion')
assr_info['jobid'] = self.get('fs:jobid')
assr_info['jobstartdate'] = self.get('fs:jobstartdate')
assr_info['memused'] = self.get('fs:memused')
assr_info['walltimeused'] = self.get('fs:walltimeused')
assr_info['jobnode'] = self.get('fs:jobnode')
assr_info['proctype'] = 'FreeSurfer'
elif assr_info['xsiType'].lower() == DEFAULT_DATATYPE.lower():
# genProcData
assr_info['procstatus'] = self.get('proc:procstatus')
assr_info['proctype'] = self.get('proc:proctype')
"""
if cached_sessions:
for csess in cached_sessions:
for cassr in csess.assessors():
if cassr.label() == self.assessor_label:
pstatus = cassr.info()['procstatus']
qstatus = cassr.info()['qcstatus']
jobid = cassr.info()['jobid']
return pstatus, qstatus, jobid
if not self.assessor.exists():
xnat_status = DOES_NOT_EXIST
qcstatus = DOES_NOT_EXIST
jobid = ''
elif self.atype.lower() in [DEFAULT_DATATYPE.lower(),
DEFAULT_FS_DATATYPE.lower()]:
xnat_status, qcstatus, jobid = self.assessor.attrs.mget([
'%s/procstatus' % self.atype,
'%s/validation/status' % self.atype,
'%s/jobid' % self.atype
])
else:
xnat_status = 'UNKNOWN_xsiType: %s' % self.atype
qcstatus = 'UNKNOWN_xsiType: %s' % self.atype
jobid = ''
return xnat_status, qcstatus, jobid
# Get the sessions list to get the different variables needed:
session_list = self.get_sessions(projectid)
sess_id2mod = dict((sess['session_id'], [sess['subject_label'],
sess['type'], sess['handedness'], sess['gender'],
sess['yob'], sess['age'], sess['last_modified'],
sess['last_updated']]) for sess in session_list)
if has_fs_datatypes(self):
# First get FreeSurfer
post_uri = SE_ARCHIVE_URI
post_uri += ASSESSOR_FS_PROJ_POST_URI.format(
project=projectid, fstype=DEFAULT_FS_DATATYPE)
assessor_list = self._get_json(post_uri)
pfix = DEFAULT_FS_DATATYPE.lower()
for asse in assessor_list:
if asse['label']:
key = asse['label']
if assessors_dict.get(key):
res = '%s/out/file/label' % pfix
assessors_dict[key]['resources'].append(asse[res])
else:
anew = {}
anew['ID'] = asse['ID']
anew['label'] = asse['label']
anew['uri'] = asse['URI']
anew['assessor_id'] = asse['ID']
anew['assessor_label'] = asse['label']
anew['assessor_uri'] = asse['URI']
anew['project_id'] = projectid
anew['project_label'] = projectid
def get_status(self):
"""
Get the procstatus of an assessor
:return: The string of the procstatus of the assessor.
DOES_NOT_EXIST if the assessor does not exist
"""
if not self.assessor.exists():
xnat_status = DOES_NOT_EXIST
elif self.atype.lower() in [DEFAULT_DATATYPE.lower(),
DEFAULT_FS_DATATYPE.lower()]:
xnat_status = self.assessor.attrs.get('%s/procstatus'
% self.atype.lower())
else:
xnat_status = 'UNKNOWN_xsiType: %s' % self.atype
return xnat_status
:param projectid: ID of a project on XNAT
:param subjectid: ID/label of a subject
:param sessionid: ID/label of a session
:return: List of all the assessors
"""
new_list = list()
if has_fs_datatypes(self):
# First get FreeSurfer
post_uri = ASSESSORS_URI.format(project=projectid,
subject=subjectid,
session=sessionid)
post_uri += ASSESSOR_FS_POST_URI.format(fstype=DEFAULT_FS_DATATYPE)
assessor_list = self._get_json(post_uri)
pfix = DEFAULT_FS_DATATYPE.lower()
for asse in assessor_list:
anew = {}
anew['ID'] = asse['ID']
anew['label'] = asse['label']
anew['uri'] = asse['URI']
anew['assessor_id'] = asse['ID']
anew['assessor_label'] = asse['label']
anew['assessor_uri'] = asse['URI']
anew['project_id'] = projectid
anew['project_label'] = projectid
anew['subject_id'] = asse['xnat:imagesessiondata/subject_id']
anew['session_id'] = asse['session_ID']
anew['session_label'] = asse['session_label']
anew['procstatus'] = asse['%s/procstatus' % pfix]
anew['qcstatus'] = asse['%s/validation/status' % pfix]
anew['proctype'] = 'FreeSurfer'