Projects:ARRA:SlicerEM:AtlasCreator
Contents
Atlas Creator
- "In my eyes, we should add the ability to normalize the values to 0-1" . I agree with you . Just include a flag
- allow the user select the output cast
add funding agency - Acknowledgements are wrong- implement atlas generation that does align to mean of image
- show mean image, be careful during sum (out of range)
Add these points to a wiki list- parallelize atlas creation (using GWE?)
- add help and online documentation (no screenshots)
- shape atlas
***OUTDATED*** PROPOSAL: Running Atlas Creator in a Grid Environment
Right now, we have the following API
def GenerateAtlas(self,inputOriginalsPath,inputManualSegmentationsPath,outputPath,defCase,onlyAffineReg,saveTransforms,saveDeformationFields): inputOriginalsPath: Filepath to the original images inputManualSegmentationsPath: Filepath to the manual segmentations
If we replace the API with lists of filenames instead of filepaths to directories, we get the following API (after renaming the method)
def RegisterAndResample(self,inputOriginalsList,inputManualSegmentationsList,outputPath,defCase,onlyAffineReg,saveTransforms,saveDeformationFields): inputOriginalsList: A list containing filepaths to original images f.e. ['/x/y/case01.nrrd', '/x/y/case02.nrrd'...] inputManualSegmentationsList: A list containing filepaths to the manual segmentations f.e. ['/x/z/case01.nrrd', '/x/z/case02.nrrd'...]
Additionally, we should outsource the final atlas generation in a separate method:
def CombineToAtlas(self,inputOriginalsList,inputManualSegmentationsList,outputPath): parameters declared as above
Then, we could leverage the grid wizard enterprise tool to specify Atlas Creator jobs using P2EL. The following constructs could be used to create the list of input filepaths.
${paths}=$const(/home/user/path1,/home/user/path2,/home/user/path3) ${files}=$dir(/home/user/,path\\d*,.*?[.]log) ${local}=$in(sftp://host/home/user/file)
Workflow
The easiest way would be to first generate one job on a GWE enabled cluster for each case:
- define files and arguments in P2EL loop file in files - start slicer, import Atlas Creator logic - logic.RegisterAndResample(file..) using the P2EL generated filepath end loop
After all registration and resampling is complete, we could then start one job in total which combines all registered and resampled images to the atlas.
- use files and arguments defined in P2EL from above - run 1 time: CombineToAtlas(..) with complete list of filepaths
Downside
We have to split the creation process in two separate tasks.
This means, that the user might have to activate GWE two times.
We could also just create a separate script which runs the second task without GWE since a cluster is not needed.