Difference between revisions of "Projects:ARRA:SlicerEM:AtlasCreator"

From NAMIC Wiki
Jump to: navigation, search
Line 3: Line 3:
 
[[File:Atlascreator.png]]
 
[[File:Atlascreator.png]]
  
# "In my eyes, we should add the ability to normalize the values to 0-1" .  I agree with you . Just include a flag
+
# <strike>"In my eyes, we should add the ability to normalize the values to 0-1" .  I agree with you . Just include a flag</strike>
# allow the user select the output cast
+
# <strike>allow the user select the output cast</strike>
 
# <strike>add funding agency - Acknowledgements are wrong</strike>
 
# <strike>add funding agency - Acknowledgements are wrong</strike>
 
# implement atlas generation that does align to mean of image
 
# implement atlas generation that does align to mean of image

Revision as of 21:45, 31 January 2011

Home < Projects:ARRA:SlicerEM:AtlasCreator

Atlas Creator

Atlascreator.png

  1. "In my eyes, we should add the ability to normalize the values to 0-1" . I agree with you . Just include a flag
  2. allow the user select the output cast
  3. add funding agency - Acknowledgements are wrong
  4. implement atlas generation that does align to mean of image
    1. show mean image, be careful during sum (out of range)
  5. Add these points to a wiki list
  6. parallelize atlas creation (using GWE?)
  7. add help and online documentation (no screenshots)
  8. 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.

Sketch

SketchAtlasCreatorCluster.jpg