def test_get_values_below_labels_list_wrong_input():
    omega = [80, 80, 80]
    cube_a_seg = [[10, 60, 55], 11, 1]
    cube_a_anat = [[10, 60, 55], 11, 1.5]
    sky_a = cube_shape(omega,
                       center=cube_a_anat[0],
                       side_length=cube_a_anat[1],
                       foreground_intensity=cube_a_anat[2],
                       dtype=np.float32)
    sky_s = cube_shape(omega,
                       center=cube_a_seg[0],
                       side_length=cube_a_seg[1],
                       foreground_intensity=cube_a_seg[2])

    im_segm = nib.Nifti1Image(sky_s, affine=np.eye(4))
    im_anat = nib.Nifti1Image(sky_a, affine=np.eye(4))

    with assert_raises(IOError):
        get_values_below_labels_list(im_segm, im_anat, [1, [2, 3], '3', '4'])
Exemple #2
0
    def values_below_labels(self,
                            segmentation_filename,
                            anatomy_filename,
                            labels=None):
        """
        :param segmentation_filename:
        :param anatomy_filename:
        :param labels:
        :return: pandas series with label names and corresponding vectors of labels values
        """
        pfi_anat = connect_path_tail_head(self.pfo_in, anatomy_filename)
        pfi_segm = connect_path_tail_head(self.pfo_in, segmentation_filename)
        assert os.path.exists(pfi_anat)
        assert os.path.exists(pfi_segm)
        im_anat = nib.load(pfi_anat)
        im_segm = nib.load(pfi_segm)

        labels_list, labels_names = labels_query(
            labels, segmentation_array=im_segm.get_data())
        labels_values = get_values_below_labels_list(im_segm, im_anat,
                                                     labels_list)
        return pa.Series(labels_values, index=labels_names)
 def get_raw_MD(self):
     labels_names_list = self.single_label_dict.keys()
     labels_list = [self.single_label_dict[l][0] for l in labels_names_list]
     im_segm = nib.load(
         jph(self.pfo_subject, 'stereotaxic', 'segm',
             '{0}_approved_round3.nii.gz'.format(self.subject_name)))
     im_anat = nib.load(
         jph(self.pfo_subject, 'stereotaxic', 'mod',
             '{0}_MD.nii.gz'.format(self.subject_name)))
     FA_values = get_values_below_labels_list(im_segm, im_anat, labels_list)
     for i, (label_name,
             label_id) in enumerate(zip(labels_names_list, labels_list)):
         if i == 0:
             pass
         else:
             fin = '{0}_MD_{1}_{2}'.format(
                 sj,
                 label_name.replace(' ', '').strip(), label_id)
             np.save(jph(self.pfo_report, fin + '.npy'), FA_values[i])
             np.savetxt(jph(self.pfo_report, fin + '.csv'),
                        FA_values[i],
                        delimiter=",")
def test_get_values_below_labels_list():
    omega = [80, 80, 80]

    cube_a_seg = [[10, 60, 55], 11, 1]
    cube_b_seg = [[50, 55, 42], 15, 2]
    cube_c_seg = [[25, 20, 20], 13, 3]
    cube_d_seg = [[55, 16, 9], 7, 4]

    cube_a_anat = [[10, 60, 55], 11, 1.5]
    cube_b_anat = [[50, 55, 42], 15, 2.5]
    cube_c_anat = [[25, 20, 20], 13, 3.5]
    cube_d_anat = [[55, 16, 9], 7, 4.5]

    sky_s = cube_shape(omega,
                       center=cube_a_seg[0],
                       side_length=cube_a_seg[1],
                       foreground_intensity=cube_a_seg[2])
    sky_s += cube_shape(omega,
                        center=cube_b_seg[0],
                        side_length=cube_b_seg[1],
                        foreground_intensity=cube_b_seg[2])
    sky_s += cube_shape(omega,
                        center=cube_c_seg[0],
                        side_length=cube_c_seg[1],
                        foreground_intensity=cube_c_seg[2])
    sky_s += cube_shape(omega,
                        center=cube_d_seg[0],
                        side_length=cube_d_seg[1],
                        foreground_intensity=cube_d_seg[2])

    sky_a = cube_shape(omega,
                       center=cube_a_anat[0],
                       side_length=cube_a_anat[1],
                       foreground_intensity=cube_a_anat[2],
                       dtype=np.float32)
    sky_a += cube_shape(omega,
                        center=cube_b_anat[0],
                        side_length=cube_b_anat[1],
                        foreground_intensity=cube_b_anat[2],
                        dtype=np.float32)
    sky_a += cube_shape(omega,
                        center=cube_c_anat[0],
                        side_length=cube_c_anat[1],
                        foreground_intensity=cube_c_anat[2],
                        dtype=np.float32)
    sky_a += cube_shape(omega,
                        center=cube_d_anat[0],
                        side_length=cube_d_anat[1],
                        foreground_intensity=cube_d_anat[2],
                        dtype=np.float32)

    im_segm = nib.Nifti1Image(sky_s, affine=np.eye(4))
    im_anat = nib.Nifti1Image(sky_a, affine=np.eye(4))

    assert im_segm.shape == im_anat.shape

    labels_list = [[1, 2], [3, 4], 4]

    vals_below = get_values_below_labels_list(im_segm, im_anat, labels_list)

    assert_array_equal(vals_below[0],
                       np.array([
                           1.5,
                       ] * (11**3) + [2.5] * (15**3)))
    assert_array_equal(vals_below[1],
                       np.array([
                           3.5,
                       ] * (13**3) + [4.5] * (7**3)))
    assert_array_equal(vals_below[2], np.array([4.5] * (7**3)))