Missing needed ops for element-wise arithmetic
- Dominant language
- Java
- Stars
- 94
- Forks
- 44
- PR merge metrics
- No merged PRs in 30d
Description
The following script:
```groovy
#@ OpService ops
#@ Dataset im1
#@ Dataset im2
#@ double alpha
#@output Dataset result
vars = [
"im1": im1,
"im2": im2,
"alpha": alpha
]
result = ops.eval("alpha*im1+(1-alpha)*im2", vars)
```
fails with the following error:
```
java.lang.IllegalArgumentException: No matching 'math.multiply' op
Request:
- math.multiply(
Double,
DefaultDataset)
```
Full details of the error
```
Candidates:
1. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$MultiplyByte(
==> ArrayImg arg,
byte value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
2. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$MultiplyDouble(
==> ArrayImg arg,
double value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
3. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$MultiplyFloat(
==> ArrayImg arg,
float value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
4. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$MultiplyInt(
==> ArrayImg arg,
int value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
5. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$MultiplyLong(
==> ArrayImg arg,
long value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
6. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$MultiplyShort(
==> ArrayImg arg,
short value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
7. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$MultiplyUnsignedByte(
==> ArrayImg arg,
byte value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
8. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$MultiplyUnsignedInt(
==> ArrayImg arg,
int value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
9. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$MultiplyUnsignedLong(
==> ArrayImg arg,
long value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
10. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$MultiplyUnsignedShort(
==> ArrayImg arg,
short value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
11. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$MultiplyByte(
==> ArrayImg arg,
byte value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
12. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$MultiplyDouble(
==> ArrayImg arg,
double value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
13. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$MultiplyFloat(
==> ArrayImg arg,
float value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
14. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$MultiplyInt(
==> ArrayImg arg,
int value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
15. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$MultiplyLong(
==> ArrayImg arg,
long value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
16. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$MultiplyShort(
==> ArrayImg arg,
short value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
17. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$MultiplyUnsignedByte(
==> ArrayImg arg,
byte value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
18. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$MultiplyUnsignedInt(
==> ArrayImg arg,
int value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
19. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$MultiplyUnsignedLong(
==> ArrayImg arg,
long value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
20. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$MultiplyUnsignedShort(
==> ArrayImg arg,
short value)
Inconvertible type: java.lang.Double => net.imglib2.img.array.ArrayImg
21. (IterableInterval out?) =
net.imagej.ops.math.IIToIIOutputII$Multiply(
IterableInterval out?,
==> IterableInterval in1,
IterableInterval in2)
Inconvertible type: java.lang.Double => net.imglib2.IterableInterval>
22. (NumericType out?) =
net.imagej.ops.math.NumericTypeBinaryMath$Multiply(
NumericType out?,
==> NumericType in1,
NumericType in2)
Inconvertible type: java.lang.Double => capture of ?
23. (int result) =
net.imagej.ops.math.PrimitiveMath$IntegerMultiply(
int a,
==> int b)
Inconvertible type: net.imagej.DefaultDataset => int
24. (long result) =
net.imagej.ops.math.PrimitiveMath$LongMultiply(
long a,
==> long b)
Inconvertible type: net.imagej.DefaultDataset => long
25. (float result) =
net.imagej.ops.math.PrimitiveMath$FloatMultiply(
float a,
==> float b)
Inconvertible type: net.imagej.DefaultDataset => float
26. (double result) =
net.imagej.ops.math.PrimitiveMath$DoubleMultiply(
double a,
==> double b)
Inconvertible type: net.imagej.DefaultDataset => double
27. (RealType out) =
net.imagej.ops.math.BinaryRealTypeMath$Multiply(
RealType out,
RealType in1,
RealType in2)
Not enough arguments: 2 < 3
28. (IterableInterval out?) =
net.imagej.ops.math.ConstantToIIOutputII$Multiply(
IterableInterval out?,
==> IterableInterval in,
NumericType value)
Inconvertible type: java.lang.Double => net.imglib2.IterableInterval>
29. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$MultiplyByte(
==> PlanarImg arg,
byte value)
Inconvertible type: java.lang.Double => net.imglib2.img.planar.PlanarImg
30. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$MultiplyDouble(
==> PlanarImg arg,
double value)
Inconvertible type: java.lang.Double => net.imglib2.img.planar.PlanarImg
31. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$MultiplyFloat(
==> PlanarImg arg,
float value)
Inconvertible type: java.lang.Double => net.imglib2.img.planar.PlanarImg
32. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$MultiplyInt(
==> PlanarImg arg,
int value)
Inconvertible type: java.lang.Double => net.imglib2.img.planar.PlanarImg
33. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$MultiplyLong(
==> PlanarImg arg,
long value)
Inconvertible type: java.lang.Double => net.imglib2.img.planar.PlanarImg
34. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$MultiplyShort(
==> PlanarImg arg,
short value)
Inconvertible type: java.lang.Double => net.imglib2.img.planar.PlanarImg
35. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$MultiplyUnsignedByte(
==> PlanarImg arg,
byte value)
Inconvertible type: java.lang.Double => net.imglib2.img.planar.PlanarImg
36. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$MultiplyUnsignedInt(
==> PlanarImg arg,
int value)
Inconvertible type: java.lang.Double => net.imglib2.img.planar.PlanarImg
37. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$MultiplyUnsignedLong(
==> PlanarImg arg,
long value)
Inconvertible type: java.lang.Double => net.imglib2.img.planar.PlanarImg
38. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$MultiplyUnsignedShort(
==> PlanarImg arg,
short value)
Inconvertible type: java.lang.Double => net.imglib2.img.planar.PlanarImg
39. (IterableInterval out?) =
net.imagej.ops.math.IIToRAIOutputII$Multiply(
IterableInterval out?,
==> IterableInterval in1,
RandomAccessibleInterval in2)
Inconvertible type: java.lang.Double => net.imglib2.IterableInterval>
40. (RandomAccessibleInterval out) =
net.imagej.ops.math.ConstantToIIOutputRAI$Multiply(
RandomAccessibleInterval out,
IterableInterval in,
NumericType value)
Not enough arguments: 2 < 3
at net.imagej.ops.DefaultOpMatchingService.singleMatch(DefaultOpMatchingService.java:432)
at net.imagej.ops.DefaultOpMatchingService.findMatch(DefaultOpMatchingService.java:97)
at net.imagej.ops.DefaultOpMatchingService.findMatch(DefaultOpMatchingService.java:83)
at net.imagej.ops.OpEnvironment.module(OpEnvironment.java:253)
at net.imagej.ops.OpEnvironment.run(OpEnvironment.java:136)
at net.imagej.ops.eval.OpEvaluator.execute(OpEvaluator.java:147)
at net.imagej.ops.eval.OpEvaluator.execute(OpEvaluator.java:135)
at net.imagej.ops.eval.OpEvaluator.mul(OpEvaluator.java:257)
at org.scijava.parse.eval.AbstractStandardStackEvaluator.execute(AbstractStandardStackEvaluator.java:214)
at net.imagej.ops.eval.OpEvaluator.execute(OpEvaluator.java:405)
at org.scijava.parse.eval.AbstractStackEvaluator.evaluate(AbstractStackEvaluator.java:70)
at org.scijava.parse.eval.AbstractEvaluator.evaluate(AbstractEvaluator.java:87)
at net.imagej.ops.eval.DefaultEval.calculate(DefaultEval.java:69)
at net.imagej.ops.eval.DefaultEval.calculate(DefaultEval.java:51)
at net.imagej.ops.special.function.UnaryFunctionOp.run(UnaryFunctionOp.java:74)
at net.imagej.ops.special.function.AbstractUnaryFunctionOp.run(AbstractUnaryFunctionOp.java:58)
at org.scijava.command.CommandModule.run(CommandModule.java:199)
at net.imagej.ops.OpEnvironment.run(OpEnvironment.java:950)
at net.imagej.ops.OpEnvironment.run(OpEnvironment.java:157)
at net.imagej.ops.OpEnvironment.eval(OpEnvironment.java:335)
at net.imagej.ops.OpEnvironment$eval.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133)
at Script1.run(Script1.groovy:12)
at org.scijava.plugins.scripting.groovy.GroovyScriptEngine.eval(GroovyScriptEngine.java:303)
at org.scijava.plugins.scripting.groovy.GroovyScriptEngine.eval(GroovyScriptEngine.java:122)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
at org.scijava.script.ScriptModule.run(ScriptModule.java:160)
at org.scijava.module.ModuleRunner.run(ModuleRunner.java:168)
at org.scijava.module.ModuleRunner.call(ModuleRunner.java:127)
at org.scijava.module.ModuleRunner.call(ModuleRunner.java:66)
at org.scijava.thread.DefaultThreadService$3.call(DefaultThreadService.java:238)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
```
Switching the order of the arguments of `*` instead yields:
```
java.lang.IllegalArgumentException: No matching 'math.add' op
Request:
- math.add(
PlanarImg,
PlanarImg)
```
Full details of the error
```
Candidates:
1. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$AddByte(
==> ArrayImg arg,
byte value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
2. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$AddDouble(
==> ArrayImg arg,
double value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
3. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$AddFloat(
==> ArrayImg arg,
float value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
4. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$AddInt(
==> ArrayImg arg,
int value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
5. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$AddLong(
==> ArrayImg arg,
long value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
6. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$AddShort(
==> ArrayImg arg,
short value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
7. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$AddUnsignedByte(
==> ArrayImg arg,
byte value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
8. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$AddUnsignedInt(
==> ArrayImg arg,
int value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
9. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$AddUnsignedLong(
==> ArrayImg arg,
long value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
10. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImageP$AddUnsignedShort(
==> ArrayImg arg,
short value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
11. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$AddByte(
==> ArrayImg arg,
byte value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
12. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$AddDouble(
==> ArrayImg arg,
double value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
13. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$AddFloat(
==> ArrayImg arg,
float value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
14. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$AddInt(
==> ArrayImg arg,
int value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
15. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$AddLong(
==> ArrayImg arg,
long value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
16. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$AddShort(
==> ArrayImg arg,
short value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
17. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$AddUnsignedByte(
==> ArrayImg arg,
byte value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
18. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$AddUnsignedInt(
==> ArrayImg arg,
int value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
19. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$AddUnsignedLong(
==> ArrayImg arg,
long value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
20. (ArrayImg arg) =
net.imagej.ops.math.ConstantToArrayImage$AddUnsignedShort(
==> ArrayImg arg,
short value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => net.imglib2.img.array.ArrayImg
21. (IterableInterval out?) =
net.imagej.ops.math.IIToIIOutputII$Add(
IterableInterval out?,
IterableInterval in1,
IterableInterval in2)
Inputs do not conform to op rules
out = null
in1 = PlanarImg [512x512]
in2 = PlanarImg [720x576]
22. (NumericType out?) =
net.imagej.ops.math.NumericTypeBinaryMath$Add(
NumericType out?,
==> NumericType in1,
NumericType in2)
Inconvertible type: net.imglib2.img.planar.PlanarImg => capture of ?
23. (int result) =
net.imagej.ops.math.PrimitiveMath$IntegerAdd(
==> int a,
int b)
Inconvertible type: net.imglib2.img.planar.PlanarImg => int
24. (long result) =
net.imagej.ops.math.PrimitiveMath$LongAdd(
==> long a,
long b)
Inconvertible type: net.imglib2.img.planar.PlanarImg => long
25. (float result) =
net.imagej.ops.math.PrimitiveMath$FloatAdd(
==> float a,
float b)
Inconvertible type: net.imglib2.img.planar.PlanarImg => float
26. (double result) =
net.imagej.ops.math.PrimitiveMath$DoubleAdd(
==> double a,
double b)
Inconvertible type: net.imglib2.img.planar.PlanarImg => double
27. (RealType out) =
net.imagej.ops.math.BinaryRealTypeMath$Add(
RealType out,
RealType in1,
RealType in2)
Not enough arguments: 2 < 3
28. (IterableInterval out?) =
net.imagej.ops.math.ConstantToIIOutputII$Add(
IterableInterval out?,
IterableInterval in,
==> NumericType value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => capture of ?
29. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$AddByte(
PlanarImg arg,
==> byte value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => byte
30. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$AddDouble(
PlanarImg arg,
==> double value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => double
31. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$AddFloat(
PlanarImg arg,
==> float value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => float
32. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$AddInt(
PlanarImg arg,
==> int value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => int
33. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$AddLong(
PlanarImg arg,
==> long value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => long
34. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$AddShort(
PlanarImg arg,
==> short value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => short
35. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$AddUnsignedByte(
PlanarImg arg,
==> byte value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => byte
36. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$AddUnsignedInt(
PlanarImg arg,
==> int value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => int
37. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$AddUnsignedLong(
PlanarImg arg,
==> long value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => long
38. (PlanarImg arg) =
net.imagej.ops.math.ConstantToPlanarImage$AddUnsignedShort(
PlanarImg arg,
==> short value)
Inconvertible type: net.imglib2.img.planar.PlanarImg => short
39. (IterableInterval out?) =
net.imagej.ops.math.IIToRAIOutputII$Add(
IterableInterval out?,
IterableInterval in1,
RandomAccessibleInterval in2)
Inputs do not conform to op rules
out = null
in1 = PlanarImg [512x512]
in2 = PlanarImg [720x576]
40. (RandomAccessibleInterval out) =
net.imagej.ops.math.ConstantToIIOutputRAI$Add(
RandomAccessibleInterval out,
IterableInterval in,
NumericType value)
Not enough arguments: 2 < 3
at net.imagej.ops.DefaultOpMatchingService.singleMatch(DefaultOpMatchingService.java:432)
at net.imagej.ops.DefaultOpMatchingService.findMatch(DefaultOpMatchingService.java:97)
at net.imagej.ops.DefaultOpMatchingService.findMatch(DefaultOpMatchingService.java:83)
at net.imagej.ops.OpEnvironment.module(OpEnvironment.java:253)
at net.imagej.ops.OpEnvironment.run(OpEnvironment.java:136)
at net.imagej.ops.eval.OpEvaluator.execute(OpEvaluator.java:147)
at net.imagej.ops.eval.OpEvaluator.execute(OpEvaluator.java:135)
at net.imagej.ops.eval.OpEvaluator.add(OpEvaluator.java:294)
at org.scijava.parse.eval.AbstractStandardStackEvaluator.execute(AbstractStandardStackEvaluator.java:221)
at net.imagej.ops.eval.OpEvaluator.execute(OpEvaluator.java:405)
at org.scijava.parse.eval.AbstractStackEvaluator.evaluate(AbstractStackEvaluator.java:70)
at org.scijava.parse.eval.AbstractEvaluator.evaluate(AbstractEvaluator.java:87)
at net.imagej.ops.eval.DefaultEval.calculate(DefaultEval.java:69)
at net.imagej.ops.eval.DefaultEval.calculate(DefaultEval.java:51)
at net.imagej.ops.special.function.UnaryFunctionOp.run(UnaryFunctionOp.java:74)
at net.imagej.ops.special.function.AbstractUnaryFunctionOp.run(AbstractUnaryFunctionOp.java:58)
at org.scijava.command.CommandModule.run(CommandModule.java:199)
at net.imagej.ops.OpEnvironment.run(OpEnvironment.java:950)
at net.imagej.ops.OpEnvironment.run(OpEnvironment.java:157)
at net.imagej.ops.OpEnvironment.eval(OpEnvironment.java:335)
at net.imagej.ops.OpEnvironment$eval.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133)
at Script2.run(Script2.groovy:12)
at org.scijava.plugins.scripting.groovy.GroovyScriptEngine.eval(GroovyScriptEngine.java:303)
at org.scijava.plugins.scripting.groovy.GroovyScriptEngine.eval(GroovyScriptEngine.java:122)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
at org.scijava.script.ScriptModule.run(ScriptModule.java:160)
at org.scijava.module.ModuleRunner.run(ModuleRunner.java:168)
at org.scijava.module.ModuleRunner.call(ModuleRunner.java:127)
at org.scijava.module.ModuleRunner.call(ModuleRunner.java:66)
at org.scijava.thread.DefaultThreadService$3.call(DefaultThreadService.java:238)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
```
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reproducing the Groovy script and its math.multiply error. Read the OpEvaluator and DefaultOpMatchingService locations named in the stack trace, then trace the element-wise arithmetic operation matching. Done means the expression alpha*im1+(1-alpha)*im2 runs successfully for Dataset inputs without the reported no-matching-op exception.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- groovy, java
- Domain
- computer-vision
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100