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
예제 #3
0
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 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
예제 #7
0
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)
예제 #9
0
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
예제 #10
0
    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)
예제 #12
0
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
예제 #13
0
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
예제 #15
0
    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"],
예제 #16
0
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()
예제 #18
0
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)),
예제 #19
0
    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"])
예제 #21
0
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(" ")