[docs]classToReferenceSpace(SpatialTransform):"""Modify the spatial metadata so it matches a reference space. This is useful, for example, to set meaningful spatial metadata of a neural network embedding, for visualization or further processing such as resampling a segmentation output. Example: >>> import torchio as tio >>> image = tio.datasets.FPG().t1 >>> embedding_tensor = my_network(image.tensor) # we lose metadata here >>> embedding_image = tio.ToReferenceSpace.from_tensor(embedding_tensor, image) """def__init__(self,reference:Image,**kwargs):super().__init__(**kwargs)ifnotisinstance(reference,Image):raiseTypeError('The reference must be a TorchIO image')self.reference=referencedefapply_transform(self,subject:Subject)->Subject:forimageinself.get_images(subject):new_image=build_image_from_reference(image.data,self.reference)image.set_data(new_image.data)image.affine=new_image.affinereturnsubject@staticmethoddeffrom_tensor(tensor:torch.Tensor,reference:Image)->Image:"""Build a TorchIO image from a tensor and a reference image."""returnbuild_image_from_reference(tensor,reference)