def spatial_transformationx(self, iterator, datasources, image_size):
     """
     The spatial image transformation without random augmentation.
     :param datasources: datasources dict.
     :return: The transformation.
     """
     transformation_list = []
     kwparents = {'image': datasources['image'], 'output_size': image_size}
     if self.translate_to_center_landmarks:
         if 'spine_landmarks' in datasources:
             kwparents['landmarks'] = datasources['spine_landmarks']
         else:
             kwparents['landmarks'] = datasources['landmarks']
         transformation_list.append(translation.InputCenterToOrigin(self.dim, used_dimensions=[False, False, True]))
         transformation_list.append(landmark.Center(self.dim, True, used_dimensions=[True, True, False]))
     elif self.generate_single_vertebrae or self.generate_single_vertebrae_heatmap:
         single_landmark = LambdaNode(lambda id_dict, landmarks: [landmarks[int(id_dict['landmark_id'])]],
                                      parents=[iterator, datasources['landmarks']])
         kwparents['landmarks'] = single_landmark
         transformation_list.append(landmark.Center(self.dim, True))
         transformation_list.append(translation.Fixed(self.dim, [0, 20, 0]))
     else:
         transformation_list.append(translation.InputCenterToOrigin(self.dim))
     transformation_list.append(translation.OriginToOutputCenter(self.dim, None, self.image_spacing))
     comp = composite.Composite(self.dim, transformation_list, name='image', kwparents=kwparents)
     return comp
 def spatial_transformation_augmented(self, iterator, datasources, image_size):
     """
     The spatial image transformation with random augmentation.
     :param datasources: datasources dict.
     :return: The transformation.
     """
     transformation_list = []
     kwparents = {'image': datasources['image'], 'output_size': image_size}
     if self.translate_to_center_landmarks:
         kwparents['start'] = datasources['landmarks_bb_start']
         kwparents['extent'] = datasources['landmarks_bb_extent']
         transformation_list.append(translation.BoundingBoxCenterToOrigin(self.dim, None, self.image_spacing))
     elif self.generate_single_vertebrae or self.generate_single_vertebrae_heatmap:
         single_landmark = LambdaNode(lambda id_dict, landmarks: [landmarks[int(id_dict['landmark_id'])]],
                                      parents=[iterator, datasources['landmarks']])
         kwparents['landmarks'] = single_landmark
         transformation_list.append(landmark.Center(self.dim, True))
         transformation_list.append(translation.Fixed(self.dim, [0, 20, 0]))
     else:
         transformation_list.append(translation.InputCenterToOrigin(self.dim))
     if self.translate_by_random_factor:
         transformation_list.append(translation.RandomCropBoundingBox(self.dim, None, self.image_spacing))
     #    transformation_list.append(translation.RandomFactorInput(self.dim, [0, 0, 0.5], [0, 0, self.image_spacing[2] * image_size[2]]))
     transformation_list.extend([translation.Random(self.dim, [self.random_translation] * self.dim),
                                 rotation.Random(self.dim, [self.random_rotate] * self.dim),
                                 scale.RandomUniform(self.dim, self.random_scale),
                                 scale.Random(self.dim, [self.random_scale] * self.dim),
                                 flip.Random(self.dim, [0.5 if self.random_flip else 0.0, 0.0, 0.0]),
                                 translation.OriginToOutputCenter(self.dim, None, self.image_spacing),
                                 deformation.Output(self.dim, [6, 6, 6], [self.random_deformation] * self.dim, None, self.image_spacing)
                                 ])
     comp = composite.Composite(self.dim, transformation_list, name='image', kwparents=kwparents)
     return LambdaNode(lambda comp, output_size: sitk.DisplacementFieldTransform(sitk.TransformToDisplacementField(comp, sitk.sitkVectorFloat64, size=output_size, outputSpacing=self.image_spacing)),
                       name='image',
                       kwparents={'comp': comp, 'output_size': image_size})