Guest User

spooookyghost.py

a guest
May 23rd, 2017
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.48 KB | None | 0 0
  1. # Open a stack
  2. # get number of slices in stack (s)
  3. # ask for window size (w)
  4. # ask for directory (d_a) for substack sequence
  5. # ask for directory (d_b) for z-projection sequence
  6. # iterate (i) from (w) to (s-w)
  7. #     Things to do here:
  8. #     -make a substack from (i-(w/2)) to (i+(w/2))
  9. #     -save substack in (d_a)
  10. # iterate (i) on sequence of substacks (w) to (s-w) in (d)
  11. #     -do a z projection on each substack
  12. #     -save z projection in (d_b)
  13. #
  14. # Or, if stack is already split into images:
  15. # Ask for directory containing images (d_a)
  16. # Ask for directory (d_b) for z-projection sequence
  17. # Determine number of images (s) in (d_a)
  18. # ask for window size (w)
  19. # ask for directory (d_b) for z-projection sequence
  20. # iterate (i) from (w) to (s-w)
  21. #     Things to do here:
  22. #     -make a substack from (i-(w/2)) to (i+(w/2))
  23. #     -do a z projection on substack
  24. #     -save z projection in (d_b)
  25.  
  26. import os
  27. from ij.io import OpenDialog
  28. from ij.io import DirectoryChooser
  29. from ij.plugin import ZProjector
  30. from ij import IJ, ImagePlus, VirtualStack, ImageStack, WindowManager
  31. from ij import Menus
  32. from ij.gui import GenericDialog
  33. from java.awt import FileDialog
  34.  
  35. def run():
  36.     # Choose a source directory
  37.     srcDir = DirectoryChooser("Choose source directory").getDirectory()
  38.     if srcDir is None:
  39.         #if this is true, indicates that cancel was clicked, returns from function
  40.         return
  41.     # Prints source directory to log
  42.     IJ.log("Directory: " + srcDir)
  43.     # Prompts user to choose target directory
  44.     targetdir = DirectoryChooser("Choose target dictionary").getDirectory()
  45.     if targetdir is None:
  46.         #returns, same as for source directory
  47.         return
  48.  
  49.     # Make a preferences dialog box
  50.     gd = GenericDialog('Preferences')
  51.     #initialize window
  52.     window = 0
  53.     #add a numeric field for the window
  54.     gd.addNumericField('Window: ', window, 0)
  55.     #initialize z_proj_choice
  56.     z_proj_choice = ''
  57.     # make a list of Z projection types
  58.     z_proj_types = ['projection=[Average Intensity]','projection=[Max Intensity]','projection=[Min Intensity]','projection=[Sum Slices]','projection=[Standard Deviation]','projection=[Median]']
  59.     # add menu item for z projection types
  60.     gd.addChoice('Z-projection type: ', z_proj_types, 'Average')
  61.     #show dialog box
  62.     gd.showDialog()
  63.     #if user cancels dialog, return
  64.     if gd.wasCanceled():
  65.         IJ.log('User canceled dialog.')
  66.         return
  67.     #put interger form of user input in numeric field into window variable
  68.     window = int(gd.getNextNumber())
  69.     #put z projection choice into z_proj_choice variable
  70.     z_proj_choice = gd.getNextChoice()
  71.     #display window in log box
  72.     IJ.log("Window: " + str(window))
  73.     # display z projection choice in IJ log
  74.     IJ.log("Z projection type: " + z_proj_choice)
  75.  
  76.     #walks through source directory: determines number of files, makes list of files
  77.     walk_result = os.walk(srcDir)
  78.     lst_walk_result = list(walk_result)
  79.     files = lst_walk_result[0][2]
  80.     number_of_files = len(lst_walk_result[0][2])
  81.     IJ.log("Number of files in source directory: " + str(number_of_files))
  82.  
  83.     #iterate over range (window/2), number of files-(window/2):
  84.     for i in range(window, (number_of_files - window + 1)):
  85.         #for each i, open files (i-(w/2)) to (i+(w/2)) indexed in files list
  86.         for n in range((i - window), (i + window)):
  87.             path = os.path.join(srcDir, files[n])
  88.             img = IJ.openImage(path)
  89.             img.show()
  90.         IJ.run("Images to Stack", "stack")
  91.         IJ.run("Z Project...", z_proj_choice)
  92.         imp = IJ.getImage()
  93.         IJ.saveAs(imp, "PNG", targetdir + str(i-(window/2)))
  94.         IJ.run("Close All")
  95.  
  96. run()
Add Comment
Please, Sign In to add comment