Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions samseg/Samseg.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ def __init__(self,
raise ValueError('number of mode names does not match number of input images')
self.modeNames = modeNames

self.templateFileName = os.path.join(self.atlasDir, 'template.nii.gz')
if (not os.path.isfile(self.templateFileName)):
self.templateFileName = os.path.join(self.atlasDir, 'template.nii')

# Eugenio: there's a bug in ITK that will cause kvlImage to fail if it contqins the string "recon" ...
# If this problem is not exclusive to the photo mode (RGB), we should move this chunk of code outside the if
# While at it, we also create a grayscale version and a version with a bit of noise around the cerebrum (so the
Expand Down Expand Up @@ -98,7 +102,7 @@ def __init__(self,
# Initialize some objects
self.affine = Affine( imageFileName=self.imageFileNames[0],
meshCollectionFileName=os.path.join(self.atlasDir, 'atlasForAffineRegistration.txt.gz'),
templateFileName=os.path.join(self.atlasDir, 'template.nii.gz' ) )
templateFileName=self.templateFileName )
self.probabilisticAtlas = ProbabilisticAtlas()

# Get full model specifications and optimization options (using default unless overridden by user)
Expand Down Expand Up @@ -323,7 +327,7 @@ def preProcess(self):
else:
self.imageBuffers, self.transform, self.voxelSpacing, self.cropping = readCroppedImages(
self.imageFileNames,
os.path.join(self.atlasDir, 'template.nii.gz'),
self.templateFileName,
self.imageToImageTransformMatrix
)

Expand Down Expand Up @@ -597,7 +601,7 @@ def saveWarpField(self, filename):

# extract geometries
source = sf.load_volume(self.imageFileNames[0]).geom
target = sf.load_volume(os.path.join(self.atlasDir, 'template.nii.gz')).geom
target = sf.load_volume(self.templateFileName).geom

# extract vox-to-vox template transform
# TODO: Grabbing the transform from the saved .mat file in either the cross or base
Expand Down
14 changes: 8 additions & 6 deletions samseg/SamsegLongitudinal.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,10 @@ def __init__(self,
for tp in range(self.numberOfTimepoints):
self.tpToBaseTransforms.append(np.eye(4))

self.templateFileName = os.path.join(self.atlasDir, 'template.nii.gz')
if (not os.path.isfile(self.templateFileName)):
self.templateFileName = os.path.join(self.atlasDir, 'template.nii')

# Set image-to-image matrix if provided
self.imageToImageTransformMatrix = imageToImageTransformMatrix

Expand Down Expand Up @@ -209,12 +213,11 @@ def constructAndRegisterSubjectSpecificTemplate(self, initTransformFile=None):
if self.imageToImageTransformMatrix is None:

# Affine atlas registration to sst
templateFileName = os.path.join(self.atlasDir, 'template.nii.gz')
affineRegistrationMeshCollectionFileName = os.path.join(self.atlasDir, 'atlasForAffineRegistration.txt.gz')

affine = Affine(imageFileName=self.sstFileNames[0],
meshCollectionFileName=affineRegistrationMeshCollectionFileName,
templateFileName=templateFileName)
templateFileName=self.templateFileName)
self.imageToImageTransformMatrix, _ = affine.registerAtlas(savePath=sstDir, visualizer=self.visualizer, initTransform=initTransform)


Expand All @@ -229,8 +232,7 @@ def preProcess(self):
#
# =======================================================================================

templateFileName = os.path.join(self.atlasDir, 'template.nii.gz')
self.sstModel.imageBuffers, self.sstModel.transform, self.sstModel.voxelSpacing, self.sstModel.cropping = readCroppedImages(self.sstFileNames, templateFileName, self.imageToImageTransformMatrix)
self.sstModel.imageBuffers, self.sstModel.transform, self.sstModel.voxelSpacing, self.sstModel.cropping = readCroppedImages(self.sstFileNames, self.templateFileName, self.imageToImageTransformMatrix)

self.imageBuffersList = []
self.voxelSpacings = []
Expand All @@ -241,7 +243,7 @@ def preProcess(self):

self.imageBuffersList = []
for imageFileNames in self.imageFileNamesList:
imageBuffers, _, _, _ = readCroppedImages(imageFileNames, templateFileName,
imageBuffers, _, _, _ = readCroppedImages(imageFileNames, self.templateFileName,
self.imageToImageTransformMatrix)
self.imageBuffersList.append(imageBuffers)

Expand Down Expand Up @@ -290,7 +292,7 @@ def preProcess(self):
tmpS = sf.load_volume(os.path.join(self.savePath, "base", "template_coregistered.mgz"))
pToTpTransform = tmpTp.geom.world2vox @ self.tpToBaseTransforms[timepointNumber].inv() @ tmpS.geom.vox2world @ self.imageToImageTransformMatrix

imageBuffers, transform, voxelSpacing, cropping = readCroppedImages(imageFileNames, templateFileName, pToTpTransform.matrix)
imageBuffers, transform, voxelSpacing, cropping = readCroppedImages(imageFileNames, self.templateFileName, pToTpTransform.matrix)

#
self.imageBuffersList.append(imageBuffers)
Expand Down
Loading