Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
Returns:
"""
from clinica.iotools.converters.adni_to_bids.adni_utils import replace_sequence_chars, select_image_qc
mri_qc_subj.columns = [x.lower() for x in mri_qc_subj.columns]
sel_image = select_image_qc(list(visit_mri_list.IMAGEUID), mri_qc_subj)
if sel_image is None:
return None
sel_scan = visit_mri_list[visit_mri_list.IMAGEUID == sel_image].iloc[0]
image_dict = {'Subject_ID': subject_id,
'VISCODE': timepoint,
'Visit': visit_str,
'Sequence': replace_sequence_chars(sel_scan.SEQUENCE),
'Scan_Date': sel_scan['SCANDATE'],
'Study_ID': str(int(sel_scan.STUDYID)),
'Series_ID': str(int(sel_scan.SERIESID)),
'Image_ID': str(int(sel_scan.IMAGEUID)),
'Field_Strength': sel_scan.MAGSTRENGTH}
return image_dict
if len(filtered_mprage.MagStrength.unique()) > 1:
filtered_mprage = filtered_mprage[filtered_mprage.MagStrength == preferred_field_strength]
# Sort by Series ID in case there are several images, so we keep the one acquired first
filtered_mprage = filtered_mprage.sort_values('SeriesID')
scan = filtered_mprage.iloc[0]
# Check if selected scan passes QC (if QC exists)
if not check_qc(scan, subject_id, visit_str, mprage_meta_subj, mri_quality_subj):
return None
n3 = scan.Sequence.find('N3')
# Sequence ends in 'N3' or in 'N3m'
sequence = scan.Sequence[:n3 + 2 + int(scan.Sequence[n3 + 2] == 'm')]
sequence = replace_sequence_chars(sequence)
return {'Subject_ID': subject_id,
'VISCODE': timepoint,
'Visit': visit_str,
'Sequence': sequence,
'Scan_Date': scan.ScanDate,
'Study_ID': str(scan.StudyID),
'Series_ID': str(scan.SeriesID),
'Image_ID': str(scan.ImageUID),
'Field_Strength': scan.MagStrength,
'Original': False}
Returns:
"""
from clinica.iotools.converters.adni_to_bids.adni_utils import replace_sequence_chars, select_image_qc
sel_image = select_image_qc(list(visit_mri_list.IMAGEUID), mri_qc_subj)
if sel_image is None:
return None
sel_scan = visit_mri_list[visit_mri_list.IMAGEUID == sel_image].iloc[0]
image_dict = {'Subject_ID': subject_id,
'VISCODE': timepoint,
'Visit': visit_str,
'Sequence': replace_sequence_chars(sel_scan.SEQUENCE),
'Scan_Date': sel_scan['SCANDATE'],
'Study_ID': str(int(sel_scan.STUDYID)),
'Series_ID': str(int(sel_scan.SERIESID)),
'Image_ID': str(int(sel_scan.IMAGEUID)),
'Field_Strength': sel_scan.MAGSTRENGTH}
return image_dict
cond_spgr = ((mprage_meta_subj_orig.Visit == visit_str)
& mprage_meta_subj_orig.Sequence.map(
lambda x: (x.lower().find('spgr') > -1)
& (x.lower().find('acc') < 0)
)
)
filtered_scan = mprage_meta_subj_orig[cond_mprage | cond_spgr]
if filtered_scan.shape[0] < 1:
# TODO - LOG THIS
cprint('NO MPRAGE Meta: ' + subject_id + ' for visit ' + timepoint + ' - ' + visit_str)
return None
scan = select_scan_qc_adni2(filtered_scan, mayo_mri_qc_subj, preferred_field_strength)
sequence = replace_sequence_chars(scan.Sequence)
return {'Subject_ID': subject_id,
'VISCODE': timepoint,
'Visit': visit_str,
'Sequence': sequence,
'Scan_Date': scan.ScanDate,
'Study_ID': str(scan.StudyID),
'Series_ID': str(scan.SeriesID),
'Image_ID': str(scan.ImageUID),
'Field_Strength': scan.MagStrength,
'Original': True}
& (subject_pet_meta['Scan Date'] == qc_visit.EXAMDATE)]
if original_pet_meta.shape[0] < 1:
# TODO Log somewhere subjects with problems
cprint('NO Screening: Subject - ' + subj + ' for visit ' + qc_visit.VISCODE2)
continue
original_image = original_pet_meta.iloc[0]
averaged_pet_meta = subject_pet_meta[(subject_pet_meta['Sequence'] == 'AV45 Co-registered, Averaged') & (
subject_pet_meta['Series ID'] == original_image['Series ID'])]
if averaged_pet_meta.shape[0] < 1:
sel_image = original_image
original = True
else:
sel_image = averaged_pet_meta.iloc[0]
original = False
visit = sel_image.Visit
sequence = replace_sequence_chars(sel_image.Sequence)
date = sel_image['Scan Date']
study_id = sel_image['Study ID']
series_id = sel_image['Series ID']
image_id = sel_image['Image ID']
row_to_append = pd.DataFrame(
[[subj, qc_visit.VISCODE2, str(visit), sequence, date, str(study_id), str(series_id), str(image_id),
original]],
columns=pet_av45_col)
pet_av45_df = pet_av45_df.append(row_to_append, ignore_index=True)
# Exceptions
# ==========
conversion_errors = [ # Eq_1
('128_S_2220', 'm48')]
# Co-registered and Averaged image with the same Series ID of the original image
averaged_pet_meta = subject_pet_meta[(subject_pet_meta['Sequence'] == 'Co-registered, Averaged')
& (subject_pet_meta['Series ID'] == original_image['Series ID'])]
# If an explicit Co-registered, Averaged image does not exist,
# the original image is already in that preprocessing stage.
if averaged_pet_meta.shape[0] < 1:
sel_image = original_image
original = True
else:
sel_image = averaged_pet_meta.iloc[0]
original = False
visit = sel_image.Visit
sequence = replace_sequence_chars(sel_image.Sequence)
date = sel_image['Scan Date']
study_id = sel_image['Study ID']
series_id = sel_image['Series ID']
image_id = sel_image['Image ID']
row_to_append = pd.DataFrame(
[[qc_visit.Phase, subj, qc_visit.VISCODE2, str(visit), sequence, date, str(study_id), str(series_id),
str(image_id), original]],
columns=pet_fdg_col)
pet_fdg_df = pet_fdg_df.append(row_to_append, ignore_index=True)
# Exceptions
# ==========
conversion_errors = [ # NONAME.nii
('031_S_0294', 'bl'),
('037_S_1421', 'm36'),