Search code examples
macrosjythonimagej

Fiji Jython: Macro.getOptions() returns error "'Macro' is not defined"


I'm trying to pass arguments from a macro to a plugin being run in the macro, but the plugin is returning an error when I try to retrieve the string argument being passed. I believe this means I need to import a class, but everything I've tried to far hasn't worked. Here's the code:

from ij import IJ, ImagePlus, WindowManager, ImageStack
from ij.process import FloatProcessor, ImageProcessor, ByteProcessor
from ij.gui import ProgressBar, PointRoi
from ij.measure import ResultsTable

import ij
import ij.macro.Interpreter

import java.util.ArrayList as ArrayList

#stackOpen = IJ.openImage("/home/srammie/Pictures/Chain_Demo1/chainStack1.tif")
imageOpen = WindowManager.getCurrentImage()
imageOpenTitle = imageOpen.getTitle()
imageOpenTitle = imageOpenTitle.split("-")
amplitude = imageOpenTitle[0]
#imageOpen = IJ.openImage("/home/srammie/Pictures/chain_slap_eval1/summaryImage1.tif")
summaryImage = imageOpen.getProcessor()
print amplitude + " image being analyzed!"

dupImageOpen = imageOpen.createImagePlus()
dupSummaryImage = imageOpen.getProcessor().duplicate()
dupSummaryImageTitle = amplitude + "_resultsImage"
dupImageOpen.setProcessor(dupSummaryImageTitle, dupSummaryImage)

lowerBoundArray = ArrayList()
lowerBoundArrayRight = ArrayList()
lowerBoundArrayLeft = ArrayList()
upperBoundArray = ArrayList()
upperBoundArrayRight = ArrayList()
upperBoundArrayLeft = ArrayList()
deltaArray = ArrayList()
deltaArrayRight = ArrayList()
deltaArrayLeft = ArrayList()
largestDelta = 0
smallestDelta = 100

#print "Break"
pRoi = ArrayList()

arguments = Macro.getOptions()
arg = arguments.split(" ")
for i in range(0, len(arg)-1):
    argString = arg[i].split("=")
    pRoi.add(argString[1])

This script was working for me the first time it was created, but after restarting Fiji, the script started returning the error

NameError: name 'Macro' is not defined.

Any suggestions? Thanks!

Edit: Restarting Fiji again seems to have made this problem go away.


Solution

  • You did not import the Macro class. I changed the imports to:

    from ij import IJ, ImagePlus, WindowManager, ImageStack, Macro
    from ij.process import FloatProcessor, ImageProcessor, ByteProcessor
    from ij.gui import ProgressBar, PointRoi
    from ij.measure import ResultsTable
    from ij.macro import Interpreter
    from java.util import ArrayList