def DialogGenerate(imageBaseDir, summary): dpi = 300 defaultAspectRatio = 1.33 defaultTileWidth = 15 defaultOriginalWidth = 150 defaultOriginalHeight = 113 defaultTileHeight = round(defaultTileWidth / defaultAspectRatio) gd = GenericDialogPlus("Cover Maker") gd.addMessage("Prepare Image database") gd.addDirectoryField("Select base directory containing images", imageBaseDir, 20) gd.addMessage(summary) gd.addNumericField("Aspect ratio", defaultAspectRatio, 2) gd.addNumericField("Original width", defaultOriginalWidth, 0) gd.addNumericField("Original height", defaultOriginalHeight, 0) gd.addNumericField("minimal tile width", defaultTileWidth, 0) gd.addNumericField("maximal tile width", defaultTileWidth, 0) gd.addNumericField("minimal tile height", defaultTileHeight, 0) gd.addNumericField("maximal tile height", defaultTileHeight, 0) fields = gd.getNumericFields() aspRatio = fields.get(0) minw = fields.get(3) maxw = fields.get(4) minh = fields.get(5) maxh = fields.get(6) # resolution and size listener textListener = RatioToDim(aspRatio, minw, maxw, minh, maxh) aspRatio.addTextListener(textListener) minw.addTextListener(textListener) maxw.addTextListener(textListener) gd.showDialog() if gd.wasCanceled(): print "User canceled dialog!" return imageBaseDir = gd.getNextString() aspectRatio = gd.getNextNumber() majorWidth = gd.getNextNumber() majorHeight = gd.getNextNumber() mintilewidth = gd.getNextNumber() maxtilewidth = gd.getNextNumber() return int(mintilewidth), int(maxtilewidth), imageBaseDir, float( aspectRatio), int(majorWidth), int(majorHeight)
def optionsDialog(): dialog = GenericDialogPlus("Automated Weka Percentages") dialog.addDirectoryField("Image Directory", "") dialog.addFileField("Training Model", "") dialog.addStringField("Output Subdirectory", "output", 20) dialog.addStringField("Probability Threshold", "0.75", 20) dialog.showDialog() # Check if canceled if dialog.wasCanceled(): return None textVals = [x.text for x in dialog.getStringFields()] #boolVals = [x.getState() for x in dialog.getCheckboxes()] return textVals
def optionsDialog(): dialog = GenericDialogPlus("Fluorescent Cell Counting") dialog.addDirectoryField("Image Directory", "") dialog.addFileField("Training Model", "") dialog.addStringField("Output Subdirectory", "output", 20) dialog.addStringField("Probability Threshold", "0.67", 20) dialog.addStringField("Minimum Pixel Size", "2", 20) dialog.showDialog() # Check if canceled if dialog.wasCanceled(): return None textVals = [x.text for x in dialog.getStringFields()] return textVals
def openMainDialogBox(): #od = OpenDialog("Selectionner un fichier") #folder = od.getDirectory() #IJ.log(folder); #filename = od.getFileName() #intérêt de récupérer le nom du fichier -> récupérer l'extension #extension = od.getFileName().split('.').pop() #Array.pop(). Pratique pour faire une fonction getExtension() #IJ.log(folder+filename) # Create an instance of GenericDialogPlus mainDialogBox = GenericDialogPlus("Restack Tiff deconvolved images from Huygens") mainDialogBox.addMessage("Ne fonctionnera correctement que si les noms des fichiers images de sortie de Huygens ont ete laisses intacts. Ne pas les modifier.") #mainDialogBox.addButton("Ouvrir image", imageSelectionListener()) mainDialogBox.addMessage("------------------------------------------") mainDialogBox.addDirectoryField("Choisir un repertoire-cible", "None") mainDialogBox.addMessage("------------------------------------------") mainDialogBox.addDirectoryField("Choisir un repertoire pour deposer les piles d'images", "None") mainDialogBox.addMessage("------------------------------------------") #Select File Type choixType = ["1 fichier par canal (NOM_FICHIER_chXX.tif)", "1 fichier par canal + temps (NOM_FICHIER_tXX_chXX.tif)", "1 fichier par canal et par profondeur (NOM_FICHIER_zXX_chXX.tif)", "1 fichier par canal et par profondeur + temps (NOM_FICHIER_tXX_zXX_chXX.tif)"] selectionType = choixType[0] mainDialogBox.addChoice("Selectionner type de fichiers",choixType,selectionType) mainDialogBox.addMessage("------------------------------------------") choixDisplayMode = ["Color", "Greyscale", "Composite"] selectionDisplayModeDefaut = choixDisplayMode[0] mainDialogBox.addChoice("Color Display Mode",choixDisplayMode,selectionDisplayModeDefaut) mainDialogBox.addMessage("------------------------------------------") #Affichage de la boîte de dialogue mainDialogBox.showDialog(); #Récupération choix folder = mainDialogBox.getNextString() save_folder = mainDialogBox.getNextString() vecteurChoix=mainDialogBox.getChoices() selectionTypeFichier = vecteurChoix[0] valeurSelectionTypeFichier = str(selectionTypeFichier.getSelectedItem()) selectionDisplayMode = vecteurChoix[1] valeurSelectionDisplayMode = str(selectionDisplayMode.getSelectedItem()) if mainDialogBox.wasCanceled() == True: print("Canceled, Values set to None") folder = None save_folder = None valeurSelectionTypeFichier = None valeurSelectionDisplayMode = None return folder, save_folder, valeurSelectionTypeFichier, valeurSelectionDisplayMode
def DialogAnalyze(): dpi = 300 defaultAspectRatio = 1.41 gd = GenericDialogPlus("Cover Maker") gd.addMessage("Prepare Image database") gd.addDirectoryField("Select base directory containing images", "", 20) gd.showDialog() if gd.wasCanceled(): print "User canceled dialog!" return imageBaseDir = gd.getNextString() return imageBaseDir
def optionsDialog(): dialog = GenericDialogPlus("Cilia Sizes") dialog.addDirectoryField("Image Directory", DEFAULT_DIR) dialog.addFileField("Training Model", DEFAULT_TRAIN) dialog.addStringField("Output Subdirectory", "output", 20) dialog.addStringField("Confocal Channel", "1", 20) dialog.addStringField("Probability Threshold", "0.67", 20) dialog.addStringField("Minimum Pixel Size", "2", 20) dialog.showDialog() # Check if canceled if dialog.wasCanceled(): return None textVals = [x.text for x in dialog.getStringFields()] return textVals
def DialogGenerate(imageBaseDir, summary): dpi = 300 defaultAspectRatio = 1.33 defaultTileWidth = 15 defaultOriginalWidth = 150 defaultOriginalHeight = 113 defaultTileHeight = round(defaultTileWidth/defaultAspectRatio) gd = GenericDialogPlus("Cover Maker") gd.addMessage("Prepare Image database") gd.addDirectoryField("Select base directory containing images", imageBaseDir, 20) gd.addMessage(summary) gd.addNumericField("Aspect ratio", defaultAspectRatio, 2) gd.addNumericField("Original width", defaultOriginalWidth, 0) gd.addNumericField("Original height", defaultOriginalHeight, 0) gd.addNumericField("minimal tile width", defaultTileWidth, 0) gd.addNumericField("maximal tile width", defaultTileWidth, 0) gd.addNumericField("minimal tile height", defaultTileHeight, 0) gd.addNumericField("maximal tile height", defaultTileHeight, 0) fields = gd.getNumericFields() aspRatio = fields.get(0) minw = fields.get(3) maxw = fields.get(4) minh = fields.get(5) maxh = fields.get(6) # resolution and size listener textListener = RatioToDim(aspRatio, minw, maxw, minh, maxh) aspRatio.addTextListener(textListener) minw.addTextListener(textListener) maxw.addTextListener(textListener) gd.showDialog() if gd.wasCanceled(): print "User canceled dialog!" return imageBaseDir = gd.getNextString() aspectRatio = gd.getNextNumber() majorWidth = gd.getNextNumber() majorHeight = gd.getNextNumber() mintilewidth = gd.getNextNumber() maxtilewidth = gd.getNextNumber() return int(mintilewidth), int(maxtilewidth), imageBaseDir, float(aspectRatio), int(majorWidth), int(majorHeight)
def get_parameters(p): gd = GenericDialogPlus("Please enter parameters") for k in p['expose_to_gui']['value']: if p[k]['type'] == 'boolean': gd.addCheckbox(k, p[k]['value']) elif p[k]['type'] == 'folder': gd.addDirectoryField(k, p[k]['value'], 100) elif p[k]['type'] == 'file': gd.addFileField(k, p[k]['value'], 100) elif p[k]['type'] == 'string': if p[k]['choices']: gd.addChoice(k, p[k]['choices'], p[k]['value']) else: gd.addStringField(k, p[k]['value']) elif p[k]['type'] == 'int': if p[k]['choices']: gd.addChoice(k, p[k]['choices'], p[k]['value']) else: gd.addNumericField(k, p[k]['value'], 0) elif p[k]['type'] == 'float': gd.addNumericField(k, p[k]['value'], 2) gd.showDialog() if gd.wasCanceled(): return for k in p['expose_to_gui']['value']: if p[k]['type'] == 'boolean': p[k]['value'] = gd.getNextBoolean() elif p[k]['type'] == 'folder' or p[k]['type'] == 'file': p[k]['value'] = gd.getNextString() elif p[k]['type'] == 'string': if p[k]['choices']: p[k]['value'] = gd.getNextChoice() else: p[k]['value'] = gd.getNextString() elif p[k]['type'] == 'int': if p[k]['choices']: p[k]['value'] = int(gd.getNextChoice()) else: p[k]['value'] = int(gd.getNextNumber()) elif p[k]['type'] == 'float': p[k]['value'] = gd.getNextNumber() return p
def getSettings(self): gd = GenericDialogPlus("Settings") gd.addNumericField("Distance in pixel", 600, 0) gd.addNumericField("Distance in cm", 2.54, 2) gd.addNumericField("Min. size (cm^2)", 0.5, 2) gd.addDirectoryField("Directory", IJ.getDirectory("home")) gd.addStringField("File extension", "*.jpg", 8) gd.showDialog() if gd.wasCanceled(): sys.exit() else: distPixel = gd.getNextNumber() distCm = gd.getNextNumber() minSize = gd.getNextNumber() * (distPixel / distCm) ** 2 imageDir = gd.getNextString() ext = gd.getNextString() return (distPixel, distCm, minSize, imageDir, ext)
def get_parameters(p): gd = GenericDialogPlus("Please enter parameters") for k in p['expose_to_gui']['value']: if p[k]['type'] == 'folder': gd.addDirectoryField(k, p[k]['value'], 100) if p[k]['type'] == 'file': gd.addFileField(k, p[k]['value'], 100) elif p[k]['type'] == 'string': if p[k]['choices']: gd.addChoice(k, p[k]['choices'], p[k]['value']) else: gd.addStringField(k, p[k]['value'], 50) elif p[k]['type'] == 'int': if p[k]['choices']: gd.addChoice(k, p[k]['choices'], p[k]['value']) else: gd.addNumericField(k, p[k]['value'], 0) elif p[k]['type'] == 'float': gd.addNumericField(k, p[k]['value'], 2) gd.showDialog() if gd.wasCanceled(): return(0) for k in p['expose_to_gui']['value']: if p[k]['type'] == 'folder' or p[k]['type'] == 'file': p[k]['value'] = gd.getNextString() elif p[k]['type'] == 'string': if p[k]['choices']: p[k]['value'] = gd.getNextChoice() else: p[k]['value'] = gd.getNextString() elif p[k]['type'] == 'int': if p[k]['choices']: p[k]['value'] = int(gd.getNextChoice()) else: p[k]['value'] = int(gd.getNextNumber()) elif p[k]['type'] == 'float': p[k]['value'] = gd.getNextNumber() return(p)
def make_dialog(): parameters = {} gd = GenericDialogPlus("Grid Stitch SDC Data") gd.addMessage( "Warning!\n"\ "In order to display a fused image upon completion of stitching\n"\ "please disable Fiji's ImageJ2 options. When enabled an ImageJ\n"\ "exception will be displayed upon completion. This exception can\n" "be safely ignored.") gd.addMessage( "Information\n"\ "This plugin is a wrapper around the Fiji 'Grid Stitching' plugin.\n"\ "It allows tiles generated in SlideBook to be directly stitched by\n"\ "by first writing out the individual tiles, executing the 'Grid Stitching'\n"\ "plugin and writing the fused image to disk.") gd.addMessage("") gd.addNumericField("grid_size_x", 3, 0) gd.addNumericField("grid_size_y", 3, 0) gd.addCheckbox("Select channel",False) gd.addNumericField("", 0, 0) gd.addCheckbox("Are the Z slices separate files?",False) gd.addDirectoryField("directory", "", 50) gd.showDialog() if (gd.wasCanceled()): return parameters['gridX'] = int(math.ceil(gd.getNextNumber())) parameters['gridY'] = int(math.ceil(gd.getNextNumber())) parameters['select_channel'] = gd.getNextBoolean() parameters['channel'] = None if parameters['select_channel']: parameters['channel'] = int(gd.getNextNumber()) parameters['separate_z'] = gd.getNextBoolean() directory = str(gd.getNextString()) if directory is None: # User canceled the dialog return None else: directory = os.path.abspath(directory) parameters['directory'] = directory + os.path.sep return parameters
def optionsDialog(): dialog = GenericDialogPlus("Automated Size Analysis") dialog.addDirectoryField("Image Directory", "") dialog.addStringField("Output Subdirectory", "output", 20) dialog.addStringField("Minimum Pixel Size", "50000", 20) dialog.addStringField("Minimum Roundness", "0.4", 20) dialog.addStringField("Gaussian Blur", "6", 20) dialog.addStringField("Rotation Steps", "3", 20) dialog.addStringField("Thresholds", ",".join(THRESHOLDS), 20) dialog.addCheckbox("Rotate Images", True) dialog.addCheckbox("Multiple Thresholds", True) dialog.showDialog() # Check if canceled if dialog.wasCanceled(): return None textVals = [x.text for x in dialog.getStringFields()] boolVals = [x.getState() for x in dialog.getCheckboxes()] return textVals + boolVals
def getImgRoiDir(): gui = GenericDialogPlus( "Select directories to process images and ROI sets to apply") default_dir = OpenDialog.getDefaultDirectory() gui.addDirectoryField("Choose a iamge folder to be processed", default_dir) gui.addDirectoryField("Choose a ROI set folder to apply", default_dir) gui.showDialog() if gui.wasOKed(): img_dir = gui.getNextString() if not img_dir.endswith(os.sep): img_dir = img_dir + os.sep roi_dir = gui.getNextString() if not roi_dir.endswith(os.sep): roi_dir = roi_dir + os.sep return img_dir, roi_dir
gd = GenericDialogPlus('CMTK Registration GUI') # 0.1) Identify path to CMTK binaries bindir = cmtkgui.install_dir() print 'bindir is ' + bindir # 0.1) Identify path to munger.pl script #munger='/Users/jefferis/bin/munger.pl' munger = cmtkgui.tool_path('munger') print 'munger is ' + munger gd.addHelp( "http://flybrain.mrc-lmb.cam.ac.uk/dokuwiki/doku.php?id=warping_manual:registration_gui" ) dirFieldWidth = 50 gdMargin = 130 gd.addDirectoryField("Registration Folder", None, dirFieldWidth) regrootf = gd.getStringFields().get(0) # reference brain gd.addFileField("Reference Brain", "", dirFieldWidth) # input directory/image gd.addDirectoryOrFileField("Input Image or Image Directory", None, dirFieldWidth) imgdirf = gd.getStringFields().get(2) gd.setInsets(10, gdMargin, 10) gd.addMessage("Output folders:") outputf = gd.getMessage() # what to do: affine/warp/reformat gd.setInsets(10, 200, 10) gd.addCheckboxGroup(3, 2, ["affine", "01", "warp", "02", "reformat", "03"],
import csv from ij.gui import Roi, PolygonRoi, GenericDialog, TextRoi, NonBlockingGenericDialog import os from fiji.util.gui import GenericDialogPlus import re gdp=GenericDialogPlus("File Derandomizer") gdp.addFileField("'Key' path :", " ") gdp.addFileField("Data file :", " ") gdp.addDirectoryField("Derandomized path", "(optional)") gdp.addDirectoryField("Processed Image Folder", " ") gdp.addCheckbox("Derandomize Data File", True) gdp.addCheckbox("Derandomize Image Folder", False) gdp.showDialog() if gdp.wasOKed(): key_path = gdp.getNextString().strip() data_path = gdp.getNextString().strip() deR_path = gdp.getNextString().strip() pi_path= gdp.getNextString().strip() ddf=gdp.getNextBoolean() dif=gdp.getNextBoolean() if deR_path == "(optional)": deR_path = os.path.dirname(data_path) else: exit() # function to return key for any value def get_key(val): for key, value in random.items():
file_def = default_values['file_def'] # Dumps values into a dictionary json_object = json.dumps(default_values, indent=4) dest = IJ.getDirectory("image") os.chdir(dest) json_selected = os.path.join(dest, json_selected) json_selected = json_selected+'/' # Writing to sample.json with open(json_selected, "w") as outfile: outfile.write(json_object) # sets up a generic dialog box to start the script. dest = IJ.getDirectory("image") gdp = GenericDialogPlus("Transport Assay - "+version) gdp.addDirectoryField("Image Folder:", dest, 40) gdp.addStringField("Processed Image Folder:", ProFolder_def, 40) gdp.addStringField("Transport Output:", Quant_def, 40) gdp.addStringField("Mean_Max Output:", Quant_MM_def, 40) gdp.addMessage("------------------------------------------------------------", italicFont) gdp.addChoice("Transport Channel:", channels_available, tran_def) gdp.addToSameRow() gdp.addStringField("File Type: ", file_def, 5) gdp.addChoice(" Golgi Channel:", channels_available, golgi_def) gdp.addToSameRow() gdp.addStringField("Processed File Extension: ", ext_def, 5) gdp.addMessage(" ", italicFont) gdp.addToSameRow() gdp.addMessage(" ", italicFont) gdp.addChoice(" Zoom: ", zoom, zoom_def) gdp.addToSameRow()
from ij.gui import GenericDialog from fiji.util.gui import GenericDialogPlus import os, shutil gdp = GenericDialogPlus("File Mover") file_type = gdp.getNextString() gdp.addStringField("File Extension ", '.tif', 5) x = gdp.addDirectoryField("Source: ", " ") gdp.addDirectoryField("Destination: ", " ") gdp.showDialog() if gdp.wasOKed(): file_type = gdp.getNextString().strip() source_path = gdp.getNextString() dest_path = gdp.getNextString() print(file_type) print("source " + source_path) print("dest " + dest_path) else: exit() moved = 'Moved Images' path = os.path.join(dest_path, moved) try: dest = os.mkdir(path) except OSError as error: print("Error: Moved Images is already present") exit() def move(): for root, dirs, files in os.walk((os.path.normpath(source_path)),
delIp = cmIp delIp.changes = False delIp.close() cmIp = WindowManager.getImage("CmStain-Closing") IJ.run(cmIp,"Fill Holes", "stack") cmIp.show() IJ.run("Set Measurements...", "stack redirect=None decimal=3") IJ.run(cmIp, "Analyze Particles...", "size={}-Infinity show=[Masks] exclude in_situ stack".format(cmMinSize)) cmMaskIp = cmIp.duplicate() IJ.run(cmIp, "Analyze Particles...", "size={}-Infinity show=[Count Masks] exclude in_situ stack".format(cmMinSize)) cmMaskIp.show(), cmIp.show() return cmIp, cmMaskIp import re preGd = GenericDialog("Output Folder") preGd.addDirectoryField("Output folder", "") preGd.showDialog() outputFolder = preGd.getNextString() os.chdir(outputFolder) folderPath, formatString, groupBy, nucChannel, cmChannel, stitched, analyzeNucStack, brightfield, nucMethod, cmMethod, analyzeCmStack, rowNo, colNo, nucMinSize, cmMinSize =\ "", "", "", "DAPI", "GFP", False, True, False, "Otsu", "Triangle", True, 8, 7, 50, 500 __dict__ = globals() try: with open("savedSettings.json") as f: thing = json.load(f) for k, v in thing.iteritems(): __dict__[k] = v print(thing) except Exception as e: print(e) gd = GenericDialog("Analysis parameters") gd.addDirectoryField("Image folder location", folderPath )
## START! gd = GenericDialogPlus('CMTK Registration GUI') # 0.1) Identify path to CMTK binaries bindir=cmtkgui.install_dir() print 'bindir is ' + bindir # 0.1) Identify path to munger.pl script #munger='/Users/jefferis/bin/munger.pl' munger=cmtkgui.tool_path('munger') print 'munger is ' + munger gd.addHelp("http://flybrain.mrc-lmb.cam.ac.uk/dokuwiki/doku.php?id=warping_manual:registration_gui") dirFieldWidth=50 gdMargin=130 gd.addDirectoryField("Registration Folder",None,dirFieldWidth) regrootf = gd.getStringFields().get(0) # reference brain gd.addFileField("Reference Brain", "",dirFieldWidth) # input directory/image gd.addDirectoryOrFileField("Input Image or Image Directory",None,dirFieldWidth) imgdirf = gd.getStringFields().get(2) gd.setInsets(10,gdMargin,10) gd.addMessage("Output folders:") outputf=gd.getMessage() # what to do: affine/warp/reformat gd.setInsets(10,200,10) gd.addCheckboxGroup(3,2,["affine","01","warp","02","reformat","03"],[True,True,True,True,True,True],["Registration Actions","Reformat Channels"]) #gd.addCheckboxGroup(1,3,["01","02","03"],[True,True,True],["Reformat Channels"])
import os import csv from fiji.util.gui import GenericDialogPlus from loci.formats import ChannelSeparator from ij.io import Opener import json import time boldFont = Font("SansSerif", Font.BOLD, 13) fret_fura = [] fret_fura.append("C1/C2 (FURA)") fret_fura.append("C2/C1 (FRET)") dest = IJ.getDirectory("image") bck_path = 'optional' gdp = GenericDialogPlus("FRET Assay, Version 3.4") gdp.addDirectoryField("Output Location:", dest, 40) gdp.addStringField("Processed Folder:", 'Processed_FRET', 40) gdp.addStringField("FRET Outfile:", 'FRET_Outfile.csv', 40) gdp.addStringField("Selection Radius:", '3', 10) gdp.addStringField("Image interval (sec):", '4', 10) gdp.addStringField("ZeroDivisionErorVal:", 'NA', 10) gdp.addRadioButtonGroup("", fret_fura, 1, 2, "C1/C2 (FURA)") #gdp.addCheckbox("Set Background to value:", False) gdp.addFileField("background file:", bck_path, 40) gdp.addToSameRow() gdp.addStringField("", '0', 5) gdp.addCheckbox("Apply Gaussian blur? Input sigma value:", False) gdp.addToSameRow() gdp.addStringField("", '4', 5) gdp.addMessage(" ")