diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/deconvolve/NonCirculantNormalizationFactor.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/deconvolve/NonCirculantNormalizationFactor.java index 91fb194c4..7a0643795 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/deconvolve/NonCirculantNormalizationFactor.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/deconvolve/NonCirculantNormalizationFactor.java @@ -94,7 +94,7 @@ public class NonCirculantNormalizationFactor, O extends Re @OpDependency(name = "filter.correlate") private Computers.Arity7, RandomAccessibleInterval, RandomAccessibleInterval, RandomAccessibleInterval, Boolean, Boolean, ExecutorService, RandomAccessibleInterval> correlater; -// @OpDependency(name = "math.divide") TODO: match an op here? +// @OpDependency(name = "math.divide") TODO: match an Op here? private BiConsumer, RandomAccessibleInterval> divide = (numerResult, denom) -> { final O tmp = Util.getTypeFromInterval(numerResult).createVariable(); LoopBuilder.setImages(numerResult, denom).forEachPixel((n, d) -> { diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/deconvolve/RichardsonLucyCorrection.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/deconvolve/RichardsonLucyCorrection.java index e417a9c4e..d05542538 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/deconvolve/RichardsonLucyCorrection.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/deconvolve/RichardsonLucyCorrection.java @@ -73,7 +73,7 @@ public class RichardsonLucyCorrection, O extends RealType< @OpDependency(name = "copy.rai") private Function, RandomAccessibleInterval> copy; -// @OpDependency(name = "math.divide") TODO: match an op here? +// @OpDependency(name = "math.divide") TODO: match an Op here? private BiConsumer, RandomAccessibleInterval> divide = (denomResult, numer) -> { final O tmp = Util.getTypeFromInterval(denomResult).createVariable(); LoopBuilder.setImages(denomResult, numer).forEachPixel((d, n) -> { diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/eval/OpEvaluator.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/eval/OpEvaluator.java index 64c3a4b23..628614120 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/eval/OpEvaluator.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/eval/OpEvaluator.java @@ -48,7 +48,7 @@ import org.scijava.types.Nil; /** - * A Parsington {@link Evaluator} using available {@link Op}s. + * A Parsington {@link Evaluator} using available Ops. * * @author Curtis Rueden */ diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/filter/tubeness/DefaultTubeness.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/filter/tubeness/DefaultTubeness.java index 01241b795..36581497c 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/filter/tubeness/DefaultTubeness.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/filter/tubeness/DefaultTubeness.java @@ -65,17 +65,17 @@ * the large eigenvalue is negative, we return its absolute value and otherwise * return 0. *
    - *
  • Source image is filtered first by a gaussian with 𝜎 that sets its scale. - *
  • The the Hessian matrix is calculated for each pixel. + *
  • Source image is filtered first by a gaussian with 𝜎 that sets its scale.
  • + *
  • The the Hessian matrix is calculated for each pixel.
  • *
  • We yield the eigenvalues of the Hessian matrix. The output of the - * tubeness filter is a combination of these eigenvalues: + * tubeness filter is a combination of these eigenvalues:
  • *
      *
    • in 2D where λ₂ is the largest eigenvalue: * out = 𝜎 × 𝜎 × |λ₂| if λ₂ is negative, 0 - * otherwise. + * otherwise.
    • *
    • in 3D where λ₂ and λ₃ are the largest * eigenvalues:, out = 𝜎 × 𝜎 × sqrt( λ₂ * λ₃ ) if λ₂ - * and λ₃ are negative, 0 otherwise. + * and λ₃ are negative, 0 otherwise.
    • *
    *
* This results in enhancing filaments of roughly 𝜎 / sqrt(d) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/CentroidII.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/CentroidII.java index eaceecd25..8cfde8d5f 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/CentroidII.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/CentroidII.java @@ -39,7 +39,7 @@ import org.scijava.ops.spi.Op; /** - * This {@link Op} computes the centroid of a {@link IterableRegion} (Label). + * This Op computes the centroid of a {@link IterableRegion} (Label). * * @author Tim-Oliver Buchholz (University of Konstanz) * @implNote op names='geom.centroid', priority='1' diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/CentroidLabelRegion.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/CentroidLabelRegion.java index e34184867..7c29ea629 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/CentroidLabelRegion.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/CentroidLabelRegion.java @@ -39,7 +39,7 @@ import org.scijava.ops.spi.Op; /** - * This {@link Op} computes the centroid of a {@link IterableRegion} (Label). + * This Op computes the centroid of a {@link IterableRegion} (Label). * * @author Tim-Oliver Buchholz (University of Konstanz) * @implNote op names='geom.centroid', priority='2' diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/DefaultCenterOfGravity.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/DefaultCenterOfGravity.java index bb3fc6516..7c2e72d55 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/DefaultCenterOfGravity.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/DefaultCenterOfGravity.java @@ -41,7 +41,7 @@ import org.scijava.ops.spi.Op; /** - * This {@link Op} computes the center of gravity of a {@link IterableRegion} + * This Op computes the center of gravity of a {@link IterableRegion} * (Label). * * @author Daniel Seebacher (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/geom3d/DefaultInertiaTensor3D.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/geom3d/DefaultInertiaTensor3D.java index c99f810ac..3743a3c4f 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/geom3d/DefaultInertiaTensor3D.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/geom3d/DefaultInertiaTensor3D.java @@ -42,7 +42,7 @@ import org.scijava.ops.spi.OpDependency; /** - * This {@link Op} computes the 2nd multi variate of a {@link IterableRegion} + * This Op computes the 2nd multi variate of a {@link IterableRegion} * (Label). * * @author Tim-Oliver Buchholz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/geom3d/DefaultInertiaTensor3DMesh.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/geom3d/DefaultInertiaTensor3DMesh.java index 4279f207f..4e129bdbd 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/geom3d/DefaultInertiaTensor3DMesh.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/geom/geom3d/DefaultInertiaTensor3DMesh.java @@ -42,7 +42,7 @@ import org.scijava.ops.spi.OpDependency; /** - * This {@link Op} computes the 2nd multi variate of a {@link Mesh} (Label). + * This Op computes the 2nd multi variate of a {@link Mesh} (Label). * * @author Tim-Oliver Buchholz (University of Konstanz) *@implNote op names='geom.secondMoment' diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/image/invert/InvertIIInteger.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/image/invert/InvertIIInteger.java index d5f338ba7..96adc8c42 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/image/invert/InvertIIInteger.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/image/invert/InvertIIInteger.java @@ -78,7 +78,7 @@ // } // // public static > T minValue(T type) { -// // TODO: Consider making minValue an op. +// // TODO: Consider making minValue an Op. // final T min = type.createVariable(); // if (type instanceof UnboundedIntegerType) min.setReal(0); // else min.setReal(min.getMinValue()); @@ -87,7 +87,7 @@ // } // // public static > T maxValue(T type) { -// // TODO: Consider making maxValue an op. +// // TODO: Consider making maxValue an Op. // final T max = type.createVariable(); // if (max instanceof Unsigned128BitType) { // final Unsigned128BitType t = (Unsigned128BitType) max; diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/image/invert/Inverters.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/image/invert/Inverters.java index 6c3049389..bdac4acd8 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/image/invert/Inverters.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/image/invert/Inverters.java @@ -118,7 +118,7 @@ private void setBigInteger(T out, BigInteger bi) { } public static > T minValue(T type) { - // TODO: Consider making minValue an op. + // TODO: Consider making minValue an Op. final T min = type.createVariable(); if (type instanceof UnboundedIntegerType) min.setReal(0); @@ -129,7 +129,7 @@ public static > T minValue(T type) { } public static > T maxValue(T type) { - // TODO: Consider making maxValue an op. + // TODO: Consider making maxValue an Op. final T max = type.createVariable(); if (max instanceof Unsigned128BitType) { final Unsigned128BitType t = (Unsigned128BitType) max; diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment00.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment00.java index 529e65526..2fcb43b5d 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment00.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment00.java @@ -38,7 +38,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.centralMoment00}. + * Op to calculate the {@code imageMoments.centralMoment00}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment01.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment01.java index 1b5d5b344..95384c484 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment01.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment01.java @@ -36,7 +36,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code imageMoments.centralMoment01} directly. + * Op to calculate the {@code imageMoments.centralMoment01} directly. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment02.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment02.java index a33967f8c..45dce84dc 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment02.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment02.java @@ -42,7 +42,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.centralMoment02}. + * Op to calculate the {@code imageMoments.centralMoment02}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment03.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment03.java index 788bfe2c0..a479e34e2 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment03.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment03.java @@ -42,7 +42,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.centralMoment03} using + * Op to calculate the {@code imageMoments.centralMoment03} using * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment10.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment10.java index ccca594ff..90beaa0c5 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment10.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment10.java @@ -36,7 +36,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code imageMoments.centralMoment10} directly. + * Op to calculate the {@code imageMoments.centralMoment10} directly. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment11.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment11.java index 87ef119d7..a8aef80fe 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment11.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment11.java @@ -38,7 +38,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.centralMoment11}. + * Op to calculate the {@code imageMoments.centralMoment11}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment12.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment12.java index 9165c85ab..31c8c6d1a 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment12.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment12.java @@ -42,7 +42,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.centralMoment12}. + * Op to calculate the {@code imageMoments.centralMoment12}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment20.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment20.java index d5c3be8f6..c02413a63 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment20.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment20.java @@ -42,7 +42,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.centralMoment20}. + * Op to calculate the {@code imageMoments.centralMoment20}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment21.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment21.java index 929a00610..400429013 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment21.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment21.java @@ -42,7 +42,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.centralMoment21}. + * Op to calculate the {@code imageMoments.centralMoment21}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment30.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment30.java index 4691aa3e6..83823d8bd 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment30.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/DefaultCentralMoment30.java @@ -42,7 +42,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.centralMoment30}. + * Op to calculate the {@code imageMoments.centralMoment30}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/IterableCentralMoment00.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/IterableCentralMoment00.java index 0b17ca7ce..f10cbd6e2 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/IterableCentralMoment00.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/IterableCentralMoment00.java @@ -37,7 +37,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code imageMoments.centralMoment00} directly. + * Op to calculate the {@code imageMoments.centralMoment00} directly. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/IterableCentralMoment11.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/IterableCentralMoment11.java index 94bc72cba..b5cce15b2 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/IterableCentralMoment11.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/centralmoments/IterableCentralMoment11.java @@ -37,7 +37,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code imageMoments.centralMoment11} directly. + * Op to calculate the {@code imageMoments.centralMoment11} directly. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment1.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment1.java index ba6b5639f..a5578aa39 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment1.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment1.java @@ -38,7 +38,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.huMoment1}. + * Op to calculate the {@code imageMoments.huMoment1}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment2.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment2.java index 2ab05db11..1101258a2 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment2.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment2.java @@ -38,7 +38,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.huMoment2}. + * Op to calculate the {@code imageMoments.huMoment2}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment3.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment3.java index 70caa6280..7cbdc9a0b 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment3.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment3.java @@ -38,7 +38,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.huMoment3}. + * Op to calculate the {@code imageMoments.huMoment3}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment4.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment4.java index a885a4a35..9fcc33a1b 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment4.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment4.java @@ -38,7 +38,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.huMoment4}. + * Op to calculate the {@code imageMoments.huMoment4}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment5.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment5.java index 5a6ec08c3..54e2a2fbc 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment5.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment5.java @@ -38,7 +38,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.huMoment5}. + * Op to calculate the {@code imageMoments.huMoment5}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment6.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment6.java index ba1b3ef1c..4066407e6 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment6.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment6.java @@ -38,7 +38,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.huMoment6}. + * Op to calculate the {@code imageMoments.huMoment6}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment7.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment7.java index 565a62eb6..944293a37 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment7.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/hu/DefaultHuMoment7.java @@ -38,7 +38,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.huMoment7}. + * Op to calculate the {@code imageMoments.huMoment7}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/moments/DefaultMoment00.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/moments/DefaultMoment00.java index cfe0d42e1..c5fff192e 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/moments/DefaultMoment00.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/moments/DefaultMoment00.java @@ -39,7 +39,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code imageMoments.moment00}. + * Op to calculate the {@code imageMoments.moment00}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/moments/DefaultMoment01.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/moments/DefaultMoment01.java index a88596617..0a12e745c 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/moments/DefaultMoment01.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/moments/DefaultMoment01.java @@ -40,7 +40,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code imageMoments.moment01}. + * Op to calculate the {@code imageMoments.moment01}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/moments/DefaultMoment10.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/moments/DefaultMoment10.java index 1d2169296..a0890908c 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/moments/DefaultMoment10.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/moments/DefaultMoment10.java @@ -40,7 +40,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code imageMoments.moment10}. + * Op to calculate the {@code imageMoments.moment10}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/moments/DefaultMoment11.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/moments/DefaultMoment11.java index 768d4392e..1b29f7b1f 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/moments/DefaultMoment11.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/moments/DefaultMoment11.java @@ -40,7 +40,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code imageMoments.moment11}. + * Op to calculate the {@code imageMoments.moment11}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment02.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment02.java index 1f13fd1fb..cd3aea415 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment02.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment02.java @@ -38,7 +38,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.normalizedCentralMoment02}. + * Op to calculate the {@code imageMoments.normalizedCentralMoment02}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment03.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment03.java index c1568376b..71bdbddbd 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment03.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment03.java @@ -38,7 +38,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.normalizedCentralMoment03}. + * Op to calculate the {@code imageMoments.normalizedCentralMoment03}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment11.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment11.java index c062d91d4..aae2b9dbd 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment11.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment11.java @@ -38,7 +38,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.normalizedCentralMoment11}. + * Op to calculate the {@code imageMoments.normalizedCentralMoment11}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment12.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment12.java index babedc33f..c2b405b4c 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment12.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment12.java @@ -38,7 +38,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.normalizedCentralMoment12}. + * Op to calculate the {@code imageMoments.normalizedCentralMoment12}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment20.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment20.java index caf8e6506..ec83633a9 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment20.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment20.java @@ -38,7 +38,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.normalizedCentralMoment20}. + * Op to calculate the {@code imageMoments.normalizedCentralMoment20}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment21.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment21.java index 27369fe03..2e61f8b6a 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment21.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment21.java @@ -38,7 +38,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.normalizedCentralMoment21}. + * Op to calculate the {@code imageMoments.normalizedCentralMoment21}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment30.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment30.java index 298227a68..3546431f8 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment30.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/imagemoments/normalizedcentralmoments/DefaultNormalizedCentralMoment30.java @@ -38,7 +38,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code imageMoments.normalizedCentralMoment30}. + * Op to calculate the {@code imageMoments.normalizedCentralMoment30}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultGeometricMean.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultGeometricMean.java index 24463966a..8404bc12f 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultGeometricMean.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultGeometricMean.java @@ -37,7 +37,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code stats.geometricMean} using + * Op to calculate the {@code stats.geometricMean} using * {@code stats.size} and {@code stats.sumOfLogs}. * * @author Daniel Seebacher (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultHarmonicMean.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultHarmonicMean.java index 86da62846..8159b26af 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultHarmonicMean.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultHarmonicMean.java @@ -37,7 +37,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code stats.harmonicMean} using + * Op to calculate the {@code stats.harmonicMean} using * {@code stats.size} and {@code stats.sumOfInverses}. * * @author Daniel Seebacher (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultKurtosis.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultKurtosis.java index 58530b377..817421224 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultKurtosis.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultKurtosis.java @@ -37,7 +37,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code stats.kurtosis} using {@code stats.stdDev} + * Op to calculate the {@code stats.kurtosis} using {@code stats.stdDev} * and {@code stats.moment4AboutMean}. * * @author Daniel Seebacher (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMax.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMax.java index 0f1e6126c..2bf2ce0cf 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMax.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMax.java @@ -40,7 +40,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code stats.max}. Leans on other Ops. + * Op to calculate the {@code stats.max}. Leans on other Ops. * * @author Gabriel Selzer * @param input type diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMean.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMean.java index ccd49a5f1..922e319bd 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMean.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMean.java @@ -37,7 +37,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code stats.max} using {@code stats.sum} and + * Op to calculate the {@code stats.max} using {@code stats.sum} and * {@code stats.size}. * * @author Daniel Seebacher (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMedian.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMedian.java index eaf6617d4..879f79a95 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMedian.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMedian.java @@ -38,7 +38,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code stats.median}. + * Op to calculate the {@code stats.median}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMin.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMin.java index 8b797543a..f61a0f9d8 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMin.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMin.java @@ -40,7 +40,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code stats.max}. Leans on other Ops. + * Op to calculate the {@code stats.max}. Leans on other Ops. * * @author Gabriel Selzer * @param input type diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMinMax.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMinMax.java index 5f4de4274..b794e3708 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMinMax.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMinMax.java @@ -42,7 +42,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.minMax}. + * Op to calculate the {@code stats.minMax}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMoment1AboutMean.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMoment1AboutMean.java index 5cad84f11..051650dc0 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMoment1AboutMean.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMoment1AboutMean.java @@ -36,7 +36,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.moment1AboutMean} + * Op to calculate the {@code stats.moment1AboutMean} *

* Note that by definition Σ(xi-μ)=0, thus the output of the * Op must be 0. diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMoment2AboutMean.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMoment2AboutMean.java index 23122da20..d09a699f8 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMoment2AboutMean.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMoment2AboutMean.java @@ -37,7 +37,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code stats.moment2AboutMean} using + * Op to calculate the {@code stats.moment2AboutMean} using * {@code stats.mean} and {@code stats.size}. * * @author Gabriel Selzer diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMoment3AboutMean.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMoment3AboutMean.java index c8745057e..2cc249222 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMoment3AboutMean.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMoment3AboutMean.java @@ -37,7 +37,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code stats.moment3AboutMean} using + * Op to calculate the {@code stats.moment3AboutMean} using * {@code stats.mean} and {@code stats.size}. * * @author Gabriel Selzer diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMoment4AboutMean.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMoment4AboutMean.java index fb315de32..9fc654f45 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMoment4AboutMean.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMoment4AboutMean.java @@ -37,7 +37,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code stats.moment4AboutMean} using + * Op to calculate the {@code stats.moment4AboutMean} using * {@code stats.mean} and {@code stats.size}. * * @author Gabriel Selzer diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMomentNAboutMean.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMomentNAboutMean.java index 9d9678e12..f5d278918 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMomentNAboutMean.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultMomentNAboutMean.java @@ -41,7 +41,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code stats.momentNAboutMean} using + * Op to calculate the {@code stats.momentNAboutMean} using * {@code stats.mean} and {@code stats.size}. N can be bounded to any positive {@link Integer} * * @author Gabriel Selzer diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultPercentile.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultPercentile.java index 569c3baf9..9fabc6322 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultPercentile.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultPercentile.java @@ -36,7 +36,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the n-th {@code stats.percentile}. + * Op to calculate the n-th {@code stats.percentile}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultQuantile.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultQuantile.java index dd0534a74..bcbd36f88 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultQuantile.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultQuantile.java @@ -40,7 +40,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the n-th {@code stats.percentile}. + * Op to calculate the n-th {@code stats.percentile}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSize.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSize.java index 545543dd3..3c7f363df 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSize.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSize.java @@ -36,7 +36,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.size} of an {@link Interval}. + * Op to calculate the {@code stats.size} of an {@link Interval}. * * @author Gabriel Selzer * @param input type diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSkewness.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSkewness.java index d3207a3dc..39018a33b 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSkewness.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSkewness.java @@ -37,7 +37,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code stats.skewness} using + * Op to calculate the {@code stats.skewness} using * {@code stats.moment3AboutMean} and {@code stats.stdDev}. * * @author Daniel Seebacher (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultStandardDeviation.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultStandardDeviation.java index ea1656bc5..9f093e417 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultStandardDeviation.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultStandardDeviation.java @@ -37,7 +37,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code stats.stdDev} using + * Op to calculate the {@code stats.stdDev} using * {@code stats.variance}. * * @author Gabriel Selzer diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSum.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSum.java index 75c47ad03..29a932e4b 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSum.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSum.java @@ -39,7 +39,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.sum}. + * Op to calculate the {@code stats.sum}. * * @author Gabriel Selzer * @param input type diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSumOfInverses.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSumOfInverses.java index 421ea49ab..8294bea6e 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSumOfInverses.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSumOfInverses.java @@ -41,7 +41,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code stats.sumOfInverses}. + * Op to calculate the {@code stats.sumOfInverses}. * * @author Gabriel Selzer * @param diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSumOfLogs.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSumOfLogs.java index 3090b9d0b..6708b59c6 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSumOfLogs.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSumOfLogs.java @@ -41,7 +41,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code stats.sumOfLogs}. + * Op to calculate the {@code stats.sumOfLogs}. * * @author Gabriel Selzer * @param diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSumOfSquares.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSumOfSquares.java index 40e1564f9..cf265abfa 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSumOfSquares.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultSumOfSquares.java @@ -40,7 +40,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code stats.sumOfSquares}. Leans on other Ops. + * Op to calculate the {@code stats.sumOfSquares}. Leans on other Ops. * * @author Gabriel Selzer * @param input type diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultVariance.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultVariance.java index a92fed01f..e29bfe2d0 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultVariance.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/DefaultVariance.java @@ -42,7 +42,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code stats.variance} using the + * Op to calculate the {@code stats.variance} using the * {@code stats.stdDev} using the two-pass algorithm. * * @author Daniel Seebacher (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IntegralMean.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IntegralMean.java index ff194589a..1f65eec03 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IntegralMean.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IntegralMean.java @@ -42,7 +42,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.mean} from an integral image using a + * Op to calculate the {@code stats.mean} from an integral image using a * specialized {@code Cursor} implementation. * * @param diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IntegralSum.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IntegralSum.java index 12f089d2e..148e71b9e 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IntegralSum.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IntegralSum.java @@ -40,7 +40,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.sum} from an integral image using a + * Op to calculate the {@code stats.sum} from an integral image using a * specialized {@code Cursor} implementation. * * @param diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IntegralVariance.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IntegralVariance.java index 95967ce19..d866957f3 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IntegralVariance.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IntegralVariance.java @@ -42,7 +42,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.variance} from an integral image + * Op to calculate the {@code stats.variance} from an integral image * using a specialized {@code Cursor} implementation. * * @param diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableGeometricMean.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableGeometricMean.java index 921c01101..231211c3d 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableGeometricMean.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableGeometricMean.java @@ -35,7 +35,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.geometricMean} directly. + * Op to calculate the {@code stats.geometricMean} directly. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableHarmonicMean.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableHarmonicMean.java index 0515712e6..f947271fb 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableHarmonicMean.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableHarmonicMean.java @@ -35,7 +35,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.harmonicMean} directly. + * Op to calculate the {@code stats.harmonicMean} directly. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMax.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMax.java index baae03f46..67de1d9da 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMax.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMax.java @@ -35,7 +35,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.max}. + * Op to calculate the {@code stats.max}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMean.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMean.java index 0104bfff5..70e727d92 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMean.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMean.java @@ -35,7 +35,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.mean} directly. + * Op to calculate the {@code stats.mean} directly. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMin.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMin.java index b2a04a074..ad976edac 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMin.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMin.java @@ -35,7 +35,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.min}. + * Op to calculate the {@code stats.min}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMinMax.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMinMax.java index 3a078ff5b..206663e93 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMinMax.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMinMax.java @@ -39,7 +39,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.minMax}. + * Op to calculate the {@code stats.minMax}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMoment3AboutMean.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMoment3AboutMean.java index 6181d58ff..380fda10d 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMoment3AboutMean.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMoment3AboutMean.java @@ -36,7 +36,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code stats.moment3AboutMean} using + * Op to calculate the {@code stats.moment3AboutMean} using * {@code stats.mean} and {@code stats.size}. * * @author Daniel Seebacher (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMoment4AboutMean.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMoment4AboutMean.java index 75da2c299..a4df0b5f9 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMoment4AboutMean.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableMoment4AboutMean.java @@ -36,7 +36,7 @@ import org.scijava.ops.spi.OpDependency; /** - * {@link Op} to calculate the {@code stats.moment4AboutMean} using + * Op to calculate the {@code stats.moment4AboutMean} using * {@code stats.mean} and {@code stats.size}. * * @author Daniel Seebacher (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSize.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSize.java index 42ea422d2..ca70d73b8 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSize.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSize.java @@ -35,7 +35,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.size}. + * Op to calculate the {@code stats.size}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableStandardDeviation.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableStandardDeviation.java index 68f794fc2..91ee99782 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableStandardDeviation.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableStandardDeviation.java @@ -35,7 +35,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.stdDev} directly. + * Op to calculate the {@code stats.stdDev} directly. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSum.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSum.java index 664cf27b7..f9dc4df76 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSum.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSum.java @@ -35,7 +35,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.sum}. + * Op to calculate the {@code stats.sum}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSumOfInverses.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSumOfInverses.java index 7344cc01c..2dae24e7d 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSumOfInverses.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSumOfInverses.java @@ -35,7 +35,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.sumOfInverses}. + * Op to calculate the {@code stats.sumOfInverses}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSumOfLogs.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSumOfLogs.java index f2f1529c9..933f81c91 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSumOfLogs.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSumOfLogs.java @@ -35,7 +35,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.sumOfLogs}. + * Op to calculate the {@code stats.sumOfLogs}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSumOfSquares.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSumOfSquares.java index 045ee9120..7470718ee 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSumOfSquares.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableSumOfSquares.java @@ -35,7 +35,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.sumOfSquares}. + * Op to calculate the {@code stats.sumOfSquares}. * * @author Daniel Seebacher (University of Konstanz) * @author Christian Dietz (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableVariance.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableVariance.java index a03602c2e..8f364cf7d 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableVariance.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/stats/IterableVariance.java @@ -35,7 +35,7 @@ import org.scijava.ops.spi.Op; /** - * {@link Op} to calculate the {@code stats.variance} using the online algorithm + * Op to calculate the {@code stats.variance} using the online algorithm * from Knuth and Welford. * * @author Daniel Seebacher (University of Konstanz) diff --git a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/transform/Transforms.java b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/transform/Transforms.java index 557e16498..9a57e7dd2 100644 --- a/imagej/imagej-ops2/src/main/java/net/imagej/ops2/transform/Transforms.java +++ b/imagej/imagej-ops2/src/main/java/net/imagej/ops2/transform/Transforms.java @@ -36,7 +36,7 @@ import org.scijava.ops.spi.OpCollection; /** - * {@link OpCollection} containing all of the transform {@link Op}s. + * {@link OpCollection} containing all of the transform Ops. * * TODO move these type variables into each Op? * diff --git a/imagej/imagej-ops2/src/test/java/net/imagej/ops2/AbstractOpTest.java b/imagej/imagej-ops2/src/test/java/net/imagej/ops2/AbstractOpTest.java index b7ff6ce3b..39f5d64c0 100644 --- a/imagej/imagej-ops2/src/test/java/net/imagej/ops2/AbstractOpTest.java +++ b/imagej/imagej-ops2/src/test/java/net/imagej/ops2/AbstractOpTest.java @@ -56,9 +56,9 @@ import org.scijava.thread.ThreadService; /** - * Base class for {@link Op} unit testing. + * Base class for Op unit testing. *

- * All {@link Op} unit tests need to have an {@link OpService} instance. + * All Op unit tests need to have an {@link OpService} instance. * Following the DRY principle, we should implement it only once. Here. *

* diff --git a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/Hints.java b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/Hints.java index 0d92130d8..66186c259 100644 --- a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/Hints.java +++ b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/Hints.java @@ -1,53 +1,97 @@ - -package org.scijava.ops.api; - -import java.util.Arrays; - -/** - * A basic interface for storing and accessing Hints. The general structure for - * a Hint is - *

- * {@code hint = hintType.option} - *

- *

    - *
  • {@code hintType} designates the category of hint - *
  • {@code option} designates the preference within the category - *
  • {@code hint} is the combination of {@code hintType} and {@code option} - * with a delimiting {@code .} - *
- *

- * For example, you might want a {@code hintType} to designate preferences on - * lossiness (as a tradeoff for performance). That {@code hintType} might be - * {@code Lossiness}, with {@option}s {@code LOSSLESS} and {@LOSSY}. - * - * @author Gabriel Selzer - */ -public interface Hints { - - Hints plus(String... hints); - - Hints minus(String... hints); - - boolean contains(String hint); - - default boolean containsNone(String... hints) { - return !containsAny(hints); - } - - default boolean containsAny(String... hints) { - return Arrays.stream(hints).anyMatch(hint -> contains(hint)); - } - - default boolean containsAll(String... hints) { - return Arrays.stream(hints).allMatch(hint -> contains(hint)); - } - - /** - * Generates a new {@link Hints} with identical hints. - * - * @return a new {@link Hints} Object with the same hints as this - * {@link Hints} - */ - Hints copy(); - -} + +package org.scijava.ops.api; + +import java.util.Arrays; + +/** + * A basic interface for storing and accessing Hints. The general structure for + * a Hint is + *

+ * {@code hint = hintType.option} + *

+ *

    + *
  • {@code hintType} designates the category of hint
  • + *
  • {@code option} designates the preference within the category
  • + *
  • {@code hint} is the combination of {@code hintType} and {@code option} + * with a delimiting {@code .}
  • + *
+ *

+ * For example, you might write a {@code hintType} to designate preferences on a + * tradeoff between performance and loss. That {@code hintType} might be + * {@code Lossiness}, with options {@code LOSSLESS} and {@code LOSSY}. + * + * @author Gabriel Selzer + */ +public interface Hints { + + /** + * Returns a new {@link Hints} with: + *

    + *
  1. All hints in this {@link Hints}
  2. + *
  3. All hints in {@code hints}
  4. + *
+ * + * @param hints the hints to add to this {@link Hints} + * @return a new {@link Hints} containing the union of the two sets of + * hints + */ + Hints plus(String... hints); + + /** + * Returns a new {@link Hints} with only the hints in this + * {@link Hints} that are not also in {@code hints} + * + * @param hints the hints that should not carry over from this {@link Hints} + * @return a new {@link Hints} containing the hints in this {@link Hints} + * but not in {@code hints} + */ + Hints minus(String... hints); + + /** + * Determines whether {@code hint} is in this {@link Hints} + * + * @param hint a hint + * @return {@code true} iff {@code hint} is in this {@link Hints} + */ + boolean contains(String hint); + + /** + * Determines whether any hints in {@code hints} are also in this {@link Hints} + * + * @param hints an array of hints + * @return true iff each hint in {@code hints} is not in this + * {@link Hints} + */ + default boolean containsNone(String... hints) { + return !containsAny(hints); + } + + /** + * Determines whether any hints in {@code hints} are in this {@link Hints} + * + * @param hints an array of hints + * @return true iff any hint in {@code hints} is in this {@link Hints} + */ + default boolean containsAny(String... hints) { + return Arrays.stream(hints).anyMatch(hint -> contains(hint)); + } + + /** + * Determines whether any hints in {@code hints} are in this {@link Hints} + * + * @param hints an array of hints + * @return true iff each hint in {@code hints} is in this {@link Hints} + */ + default boolean containsAll(String... hints) { + return Arrays.stream(hints).allMatch(hint -> contains(hint)); + } + + /** + * Generates a new {@link Hints} with identical hints. + * + * @return a new {@link Hints} Object with the same hints as this + * {@link Hints} + */ + Hints copy(); + +} diff --git a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/InfoChain.java b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/InfoChain.java index 568b27dfb..4f27e1d61 100644 --- a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/InfoChain.java +++ b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/InfoChain.java @@ -8,9 +8,25 @@ import java.util.stream.Collectors; /** - * A data structure wrangling a hierarchy of {@link OpInfo}s. + * A data structure wrangling a hierarchy of {@link OpInfo}s, created for every + * Op match and called upon to instantiate any number of {@link OpInstance}s. + * + * This {@link InfoChain} contains: + *
    + *
  1. An {@link OpInfo} describing the Op
  2. + *
  3. A {@link List} of {@link OpInfo}s that should be mapped to the Op + * dependencies of this Op, in the order that they are presented by the + * Op.
  4. + *
+ *

+ * This {@link InfoChain} is also able to generate a {@link String} uniquely + * identifying itself. + *

+ * NOTE: This class is not responsible for generating + * {@link RichOp}s. * * @author Gabriel Selzer + * @see RichOp#infoChain() */ public class InfoChain { @@ -63,17 +79,17 @@ public OpInfo info() { return info; } - public OpInstance op() { + public OpInstance newInstance() { return OpInstance.of(generateOp(), this, info.opType()); } - public OpInstance op(Type opType) { + public OpInstance newInstance(Type opType) { return OpInstance.of(generateOp(), this, opType); } protected Object generateOp() { List dependencyInstances = dependencies().stream() // - .map(d -> d.op().op()) // + .map(d -> d.newInstance().op()) // .collect(Collectors.toList()); Object op = info().createOpInstance(dependencyInstances).object(); return op; diff --git a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpCandidate.java b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpCandidate.java index 2eae44d3a..97a84c14a 100644 --- a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpCandidate.java +++ b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpCandidate.java @@ -31,6 +31,7 @@ import java.lang.reflect.Type; import java.lang.reflect.TypeVariable; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -43,10 +44,10 @@ /** * Container class for a possible operation match between an {@link OpRef} and - * an {@link OpInfo}, as computed by the {@link OpMatcher}. + * an {@link OpInfo}. * * @author Curtis Rueden - * @see OpMatcher + * @author Gabriel Selzer */ public class OpCandidate { @@ -89,6 +90,10 @@ public OpCandidate(final OpEnvironment env, final OpRef ref, final OpInfo info, this.reifiedType = getReifiedType(ref, info, typeVarAssigns); } + public OpCandidate(final OpEnvironment env, final OpRef ref, final OpInfo info) { + this(env, ref, info, typeVarAssignsFromRefAndInfo(ref, info)); + } + public static Type getReifiedType(OpRef ref, OpInfo info, Map, Type> typeVarAssigns) { Type exactSuperType = Types.getExactSuperType(info.opType(), Types.raw(ref.getType())); return Types.mapVarToTypes(exactSuperType, typeVarAssigns); @@ -237,4 +242,13 @@ public Object createOp(List dependencies) return createOpInstance(dependencies).object(); } + // -- Helper methods -- // + private static Map, Type> typeVarAssignsFromRefAndInfo(final OpRef ref, final OpInfo info) { + Map, Type> typeVarAssigns = new HashMap<>(); + if (!ref.typesMatch(info.opType(), typeVarAssigns)) + throw new IllegalArgumentException( + "OpInfo " + info + " cannot satisfy the requirements contained within OpRef " + ref); + return typeVarAssigns; + } + } diff --git a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpHistory.java b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpHistory.java index 6d6628a15..df7baaaf7 100644 --- a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpHistory.java +++ b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpHistory.java @@ -7,9 +7,9 @@ * Log describing each execution of an Op. This class is designed to answer two * questions: *
    - *
  1. What Op(s) produced and/or mutated this output? + *
  2. What Op(s) produced and/or mutated this output?
  3. *
  4. Given an {@link Object} op, what {@link OpInfo}s (including dependencies) - * were utilized to implement that Op's functionality? + * were utilized to implement that Op's functionality?
  5. *
* The answers to these two questions allow users to produce an entire * {@code List>}, containing all of the information needed to diff --git a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpInfo.java b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpInfo.java index 01a4647f0..79f2718a4 100644 --- a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpInfo.java +++ b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpInfo.java @@ -13,14 +13,15 @@ import org.scijava.struct.ValidityException; /** - * Metadata about an op implementation. + * Metadata about an Op implementation. * * @author Curtis Rueden * @author David Kolb */ public interface OpInfo extends Comparable { - static final String IMPL_DECLARATION = "|Vanilla:"; + /** Identifier for an unaltered OpInfo in an Op signature **/ + String IMPL_DECLARATION = "|Info:"; /** name(s) of the op. */ List names(); diff --git a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpInstance.java b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpInstance.java index 295278af3..b16c3ae9d 100644 --- a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpInstance.java +++ b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpInstance.java @@ -1,62 +1,66 @@ - -package org.scijava.ops.api; - -import java.lang.reflect.Type; -import java.util.Objects; - -import org.scijava.types.GenericTyped; - -/** - * An instance of an {@link OpInfo} - * - * @author Gabriel Selzer - */ -public class OpInstance implements GenericTyped { - - private final T op; - private final InfoChain info; - private final Type reifiedType; - - public OpInstance(final T op, final InfoChain backingInfo, - final Type reifiedType) - { - this.op = op; - this.info = backingInfo; - this.reifiedType = reifiedType; - } - - public static OpInstance of(T op, InfoChain backingInfo, - final Type reifiedType) - { - return new OpInstance<>(op, backingInfo, reifiedType); - } - - public T op() { - return op; - } - - public InfoChain infoChain() { - return info; - } - - @Override - public boolean equals(Object that) { - if (!(that instanceof OpInstance)) return false; - OpInstance thatInstance = (OpInstance) that; - boolean infosEqual = infoChain().equals(thatInstance.infoChain()); - boolean objectsEqual = op().equals(thatInstance.op()); - boolean typesEqual = getType().equals(thatInstance.getType()); - return infosEqual && objectsEqual && typesEqual; - } - - @Override - public int hashCode() { - return Objects.hash(infoChain(), op(), getType()); - } - - @Override - public Type getType() { - return reifiedType; - } - -} + +package org.scijava.ops.api; + +import java.lang.reflect.Type; +import java.util.Objects; + +import org.scijava.types.GenericTyped; + +/** + * An instance of an {@link OpInfo}. They can be constructed directly, but are + * easily generated from {@link InfoChain}s. + *

+ * Each {@link OpInstance} has an Op and its corresponding {@link OpInfo}. + *

+ * + * @author Gabriel Selzer + */ +public class OpInstance implements GenericTyped { + + private final T op; + private final InfoChain info; + private final Type reifiedType; + + public OpInstance(final T op, final InfoChain backingInfo, + final Type reifiedType) + { + this.op = op; + this.info = backingInfo; + this.reifiedType = reifiedType; + } + + public static OpInstance of(T op, InfoChain backingInfo, + final Type reifiedType) + { + return new OpInstance<>(op, backingInfo, reifiedType); + } + + public T op() { + return op; + } + + public InfoChain infoChain() { + return info; + } + + @Override + public boolean equals(Object that) { + if (!(that instanceof OpInstance)) return false; + OpInstance thatInstance = (OpInstance) that; + boolean infosEqual = infoChain().equals(thatInstance.infoChain()); + boolean objectsEqual = op().equals(thatInstance.op()); + boolean typesEqual = getType().equals(thatInstance.getType()); + return infosEqual && objectsEqual && typesEqual; + } + + @Override + public int hashCode() { + return Objects.hash(infoChain(), op(), getType()); + } + + @Override + public Type getType() { + return reifiedType; + } + +} diff --git a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpMetadata.java b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpMetadata.java index 8109dd17c..c8ada1ed5 100644 --- a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpMetadata.java +++ b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpMetadata.java @@ -2,35 +2,65 @@ import java.lang.reflect.Type; +/** + * Container for metadata pertaining to an Op instance. This data is + * wrapped up with the Op instance into a {@link RichOp} + * + * @author Gabriel Selzer + * @see RichOp#metadata() + */ public class OpMetadata { + /* The functional Type of the Op */ private final Type type; + /* The hierarchy of OpInfos used to make the Op */ private final InfoChain info; + /* The set of Hints used to in the initial Op call */ private final Hints hints; + /* The OpHistory used by the Op */ private final OpHistory history; - public OpMetadata(Type type, InfoChain info, - Hints hints, OpHistory history) - { + public OpMetadata(Type type, InfoChain info, Hints hints, OpHistory history) { this.type = type; this.history = history; this.info = info; this.hints = hints; } - public OpHistory history() { - return history; + /** + * Gets the functional {@link Type} of the Op + * + * @return the functional {@link Type} of the Op + */ + public Type type() { + return type; } + /** + * Gets the hierarchy of {@link OpInfo}s used to make the Op + * + * @return the hierarchy of {@link OpInfo}s used to make the Op + */ public InfoChain info() { return info; } + /** + * Gets the {@link Hints} used in the initial matcher call + * + * @return the {@link Hints} used in the initial matcher call + */ public Hints hints() { return hints; } - public Type type() { - return type; + /** + * Gets the {@link OpHistory} used by this Op + * + * @return the {@link OpHistory} used by this Op + */ + public OpHistory history() { + return history; } + } diff --git a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpRef.java b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpRef.java index 6ee05238b..fb75e924c 100644 --- a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpRef.java +++ b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/OpRef.java @@ -38,7 +38,7 @@ import org.scijava.types.Types; /** - * Data structure which identifies an op by name and/or type(s) and/or argument + * Data structure which identifies an Op by name and/or type(s) and/or argument * type(s), along with a list of input arguments. * * @author Christian Dietz (University of Konstanz) diff --git a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/RichOp.java b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/RichOp.java index 48a3068af..0cbe21896 100644 --- a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/RichOp.java +++ b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/RichOp.java @@ -7,9 +7,13 @@ /** * An {@link OpInstance} with state (i.e. an {@link OpMetadata}) + *

+ * Each {@link RichOp} has one {@link OpInstance}, and one + * {@link OpMetadata}. + *

* * @author Gabriel Selzer - * @param + * @param the functional {@link Type} of the wrapped Op */ public interface RichOp extends GenericTyped { diff --git a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/features/DependencyMatchingException.java b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/features/DependencyMatchingException.java index 1a6137238..9023b8bc7 100644 --- a/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/features/DependencyMatchingException.java +++ b/scijava/scijava-ops-api/src/main/java/org/scijava/ops/api/features/DependencyMatchingException.java @@ -12,8 +12,8 @@ * {@code C} is found to satisfy {@code B}. This will result in an * {@link OpMatchingException} thrown for Op {@code A}. We would want to know: *
    - *
  1. that the request for {@code A} was not fulfilled - *
  2. that no match could be found for {@code C}, which was the cause for (1) + *
  3. that the request for {@code A} was not fulfilled
  4. + *
  5. that no match could be found for {@code C}, which was the cause for (1)
  6. *
* This logic can be generalized for an arbitrarily long Op chain. * diff --git a/scijava/scijava-ops-engine/src/main/java/module-info.java b/scijava/scijava-ops-engine/src/main/java/module-info.java index 229f5abd5..34dc4fb9c 100644 --- a/scijava/scijava-ops-engine/src/main/java/module-info.java +++ b/scijava/scijava-ops-engine/src/main/java/module-info.java @@ -70,7 +70,6 @@ provides org.scijava.ops.api.OpInfoGenerator with org.scijava.ops.engine.impl.OpClassBasedClassOpInfoGenerator, org.scijava.ops.engine.impl.OpCollectionInfoGenerator, - org.scijava.ops.engine.impl.PluginBasedClassOpInfoGenerator, org.scijava.ops.engine.impl.TherapiOpInfoGenerator; provides org.scijava.ops.api.OpWrapper with diff --git a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/OpService.java b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/OpService.java index f13952048..5265b67e3 100644 --- a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/OpService.java +++ b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/OpService.java @@ -44,13 +44,13 @@ public interface OpService extends SciJavaService { /** - * Begins declaration of an op matching request for locating an op with a + * Begins declaration of an Op matching request for locating an Op with a * particular name. Additional criteria are specified as chained method calls * on the returned {@link OpBuilder} object. See {@link OpBuilder} for * examples. * * @param opName The name of the op to be matched. - * @return An {@link OpBuilder} for refining the search criteria for an op. + * @return An {@link OpBuilder} for refining the search criteria for an Op. * @see OpBuilder */ public OpBuilder op(final String opName); diff --git a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/DefaultOpEnvironment.java b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/DefaultOpEnvironment.java index 153dd665d..bbaf081d1 100644 --- a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/DefaultOpEnvironment.java +++ b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/DefaultOpEnvironment.java @@ -245,7 +245,7 @@ public T opFromInfoChain(final InfoChain chain, if (!(specialType.getType() instanceof ParameterizedType)) throw new IllegalArgumentException("TODO"); @SuppressWarnings("unchecked") - OpInstance instance = (OpInstance) chain.op(specialType.getType()); + OpInstance instance = (OpInstance) chain.newInstance(specialType.getType()); Hints hints = getDefaultHints(); RichOp wrappedOp = wrapOp(instance, hints); return wrappedOp.asOpType(); @@ -337,7 +337,7 @@ private Type[] toTypes(Nil... nils) { /** * Creates an Op instance from an {@link OpInfo} with the provided * {@link MatchingConditions} as the guidelines for {@link OpInfo} selection. - * This Op instance is put into the {@code opCache}, and is retrievable via + * This Op instance is put into the {@link #opCache}, and is retrievable via * {@link DefaultOpEnvironment#wrapViaCache(MatchingConditions)} * * @param ref the {@link OpRef} request @@ -353,26 +353,16 @@ private MatchingConditions insertCacheHit(final OpRef ref, final Hints hints, MatchingConditions conditions = MatchingConditions.from(ref, hints); // create new OpCandidate from ref and info - OpCandidate candidate = new ManualOpCandidate(this, ref, info, - this.matcher); + OpCandidate candidate = new OpCandidate(this, ref, info); instantiateAndCache(conditions, candidate); return conditions; } - private RichOp wrapViaCache(MatchingConditions conditions) { - OpInstance instance = getInstance(conditions); - return wrap(instance, conditions.hints()); - } - - private RichOp wrap(OpInstance instance, Hints hints) { - return wrapOp(instance, hints); - } - /** * Finds an Op instance matching the request described by {@link OpRef} - * {@code ref} and stores this Op in {@code opCache}. NB the return must be an + * {@code ref} and stores this Op in {@link #opCache}. NB the return must be an * {@link Object} here (instead of some type variable T where T is the Op * type} since there is no way to ensure that the {@code OpRef} can provide * that T (since the OpRef could require that the Op returned is of multiple @@ -405,10 +395,6 @@ private void instantiateAndCache(MatchingConditions conditions, OpInstance op = instantiateOp(candidate, conditions.hints()); // cache instance - cacheOp(conditions, op); - } - - private void cacheOp(MatchingConditions conditions, OpInstance op) { opCache.putIfAbsent(conditions, op); } @@ -437,15 +423,15 @@ private OpInstance instantiateOp(final OpCandidate candidate, final List> conditions = resolveOpDependencies(candidate, hints); InfoChain adaptorChain = new DependencyRichOpInfoChain(candidate .opInfo(), conditions); - return adaptorChain.op(candidate.getType()); + return adaptorChain.newInstance(candidate.getType()); } /** - * Wraps the matched op into an {@link Op} that knows its generic typing. + * Wraps the matched op into an Op that knows its generic typing. * * @param instance - the {@link OpInstance} to wrap. * @param hints - the {@link Hints} used to create the {@link OpInstance} - * @return an {@link Op} wrapping of op. + * @return an Op wrapping of op. */ @SuppressWarnings("unchecked") private RichOp wrapOp(OpInstance instance, Hints hints) @@ -580,6 +566,16 @@ private OpRef inferOpRef(OpDependencyMember dependency, typeVarAssigns); } + private RichOp wrapViaCache(MatchingConditions conditions) { + OpInstance instance = getInstance(conditions); + return wrap(instance, conditions.hints()); + } + + private RichOp wrap(OpInstance instance, Hints hints) { + return wrapOp(instance, hints); + } + + /** * Tries to infer a {@link OpRef} from a functional Op type. E.g. the type: * diff --git a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/DefaultOpHistory.java b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/DefaultOpHistory.java index cde04d590..fa7409441 100644 --- a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/DefaultOpHistory.java +++ b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/DefaultOpHistory.java @@ -17,9 +17,9 @@ * questions: *
    *
  1. Given an {@link Object} output (e.g. a {@code List}), what Op(s) - * mutated that output? + * mutated that output?
  2. *
  3. Given an {@link Object} op, what {@link OpInfo}s were utilized to - * implement that Op's functionality? + * implement that Op's functionality?
  4. *
* The answers to these two questions allow users to produce an entire * {@code List>}, containing all of the information needed to diff --git a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/DefaultOpService.java b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/DefaultOpService.java index ba49b996a..cf86fe6ab 100644 --- a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/DefaultOpService.java +++ b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/DefaultOpService.java @@ -66,13 +66,13 @@ public class DefaultOpService extends AbstractService implements OpService { private OpHistory history; /** - * Begins declaration of an op matching request for locating an op with a + * Begins declaration of an Op matching request for locating an Op with a * particular name. Additional criteria are specified as chained method calls * on the returned {@link OpBuilder} object. See {@link OpBuilder} for * examples. * * @param opName The name of the op to be matched. - * @return An {@link OpBuilder} for refining the search criteria for an op. + * @return An {@link OpBuilder} for refining the search criteria for an Op. * @see OpBuilder */ @Override diff --git a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/LambdaTypeBaker.java b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/LambdaTypeBaker.java index 4d9ca61e5..a65b8a687 100644 --- a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/LambdaTypeBaker.java +++ b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/LambdaTypeBaker.java @@ -23,7 +23,7 @@ public final class LambdaTypeBaker { /** - * Prevents instantation of this public utility class + * Prevents instantiation of this public utility class */ private LambdaTypeBaker() {} @@ -87,8 +87,8 @@ private static void ensureImplementation(T originalOp, Type reifiedType) { /** * Creates a Class given an Op and the reified {@link Type}. This class: *
    - *
  • is of the same functional type as the given Op - *
  • knows its generic type by nature of being a {@link GenericTyped} + *
  • is of the same functional type as the given Op
  • + *
  • knows its generic type by nature of being a {@link GenericTyped}
  • *
* * @param originalOp - the Op that will be simplified diff --git a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/ManualOpCandidate.java b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/ManualOpCandidate.java deleted file mode 100644 index 383a8009e..000000000 --- a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/ManualOpCandidate.java +++ /dev/null @@ -1,33 +0,0 @@ - -package org.scijava.ops.engine.impl; - -import java.lang.reflect.Type; -import java.lang.reflect.TypeVariable; -import java.util.HashMap; -import java.util.Map; - -import org.scijava.ops.api.OpCandidate; -import org.scijava.ops.api.OpEnvironment; -import org.scijava.ops.api.OpInfo; -import org.scijava.ops.api.OpRef; -import org.scijava.ops.api.features.OpMatcher; - -public class ManualOpCandidate extends OpCandidate { - - public ManualOpCandidate(OpEnvironment env, OpRef ref, OpInfo info, - OpMatcher matcher) - { - super(env, ref, info, generateTypeVarAssigns(ref, info)); - } - - private static Map, Type> generateTypeVarAssigns(OpRef ref, - OpInfo info) - { - Map, Type> typeVarAssigns = new HashMap<>(); - if (!ref.typesMatch(info.opType(), typeVarAssigns)) - throw new IllegalArgumentException("OpInfo " + info + - " cannot satisfy the requirements contained within OpRef " + ref); - return typeVarAssigns; - } - -} diff --git a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/PluginBasedClassOpInfoGenerator.java b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/PluginBasedClassOpInfoGenerator.java deleted file mode 100644 index b5159a570..000000000 --- a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/PluginBasedClassOpInfoGenerator.java +++ /dev/null @@ -1,52 +0,0 @@ - -package org.scijava.ops.engine.impl; - -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -import org.scijava.Priority; -import org.scijava.discovery.Discoverer; -import org.scijava.log2.Logger; -import org.scijava.ops.api.*; -import org.scijava.ops.engine.hint.DefaultHints; -import org.scijava.ops.engine.matcher.impl.OpClassInfo; -import org.scijava.ops.spi.Op; -import org.scijava.plugin.Plugin; -import org.scijava.util.VersionUtils; - -public class PluginBasedClassOpInfoGenerator implements OpInfoGenerator { - private static double priorityFromAnnotation(Class annotationBearer) { - final Plugin opAnnotation = annotationBearer.getAnnotation(Plugin.class); - return opAnnotation == null ? Priority.NORMAL : opAnnotation.priority(); - } - - private Hints formHints(OpHints h) { - if (h == null) - return new DefaultHints(); - return new DefaultHints(h.hints()); - } - - protected List processClass(Class c) { - Plugin p = c.getAnnotation(Plugin.class); - if (p == null) - return Collections.emptyList(); - String[] parsedOpNames = OpUtils.parseOpNames(p.name()); - String version = VersionUtils.getVersion(c); - Hints hints = formHints(c.getAnnotation(OpHints.class)); - double priority = priorityFromAnnotation(c); - return Collections.singletonList(new OpClassInfo(c, version, hints, priority, parsedOpNames)); - } - - @Override - public boolean canGenerateFrom(Object o) { - if (!o.getClass().isAnnotationPresent(Plugin.class)) - return false; - return o.getClass().getAnnotation(Plugin.class).type() == Op.class; - } - - @Override - public List generateInfosFrom(Object o) { - return processClass(o.getClass()); - } -} diff --git a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/TherapiOpInfoDiscoverer.java b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/TherapiOpInfoDiscoverer.java index e08adb95d..e85121658 100644 --- a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/TherapiOpInfoDiscoverer.java +++ b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/TherapiOpInfoDiscoverer.java @@ -15,7 +15,7 @@ *

* {@code @implNote op names= [priority=]} *

- * For example, an op wishing to be discoverable with names "foo.bar" and + * For example, an Op wishing to be discoverable with names "foo.bar" and * "foo.baz", with a priority of 100, should be declared as *

* {@code @implNote op names=foo.bar,foo.baz priority=100} diff --git a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/AdaptationMatchingRoutine.java b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/AdaptationMatchingRoutine.java index bc46abdb0..f42b76f28 100644 --- a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/AdaptationMatchingRoutine.java +++ b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/AdaptationMatchingRoutine.java @@ -56,9 +56,9 @@ public void checkSuitability(MatchingConditions conditions) * examine the applicability of all {@code adapt} Ops with the correct output * type. We need to check all of them because we do not know whether: *

    - *
  • The dependencies will exist for a particular {@code adapt} Op + *
  • The dependencies will exist for a particular {@code adapt} Op
  • *
  • The Op we want exists with the correct type for the input of the - * {@code adapt} Op. + * {@code adapt} Op.
  • *
* * @param conditions the {@link MatchingConditions} the return must satisfy diff --git a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/DefaultOpRef.java b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/DefaultOpRef.java index 73cd78b24..0f60d0ad3 100644 --- a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/DefaultOpRef.java +++ b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/DefaultOpRef.java @@ -42,11 +42,11 @@ import org.scijava.types.inference.GenericAssignability; /** - * Data structure which identifies an op by name and/or type(s) and/or argument + * Data structure which identifies an Op by name and/or type(s) and/or argument * type(s), along with a list of input arguments. *

* With the help of the {@link OpMatcher}, an {@code OpRef} holds all - * information needed to create an appropriate {@link Op}. + * information needed to create an appropriate Op. *

* * @author Christian Dietz (University of Konstanz) diff --git a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/MatchingUtils.java b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/MatchingUtils.java index dd3e33c72..570b1ba60 100644 --- a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/MatchingUtils.java +++ b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/MatchingUtils.java @@ -89,7 +89,7 @@ private MatchingUtils() { * Using a map where N was already bound to Integer (N -> Integer.class). This * method is useful for the following scenario: During ops matching, we first * check if the arguments (inputs) of the requested op are applicable to the - * arguments of an op candidate. During this process, possible type variables + * arguments of an Op candidate. During this process, possible type variables * may be inferred. The can then be used with this method to find out if the * outputs of the op candidate would be assignable to the output of the * requested op. diff --git a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/OpAdaptationInfo.java b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/OpAdaptationInfo.java index d552487fb..cf07250bc 100644 --- a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/OpAdaptationInfo.java +++ b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/OpAdaptationInfo.java @@ -33,6 +33,7 @@ */ public class OpAdaptationInfo implements OpInfo { + /** Identifiers used for an adapted Op in a signature **/ protected static final String IMPL_DECLARATION = "|Adaptation:"; protected static final String ADAPTOR = "|Adaptor:"; protected static final String ORIGINAL = "|OriginalOp:"; @@ -115,7 +116,7 @@ public String implementationName() { public StructInstance createOpInstance(List dependencies) { @SuppressWarnings("unchecked") OpInstance> adaptorInstance = - (OpInstance>) adaptorChain.op( + (OpInstance>) adaptorChain.newInstance( new Nil>() {}.getType()); final Object op = srcInfo.createOpInstance(dependencies).object(); @@ -154,9 +155,9 @@ public String version() { * For an adapted Op, we define the implementation name as the concatenation * of: *
    - *
  1. The signature of the adaptor {@link InfoChain} - *
  2. The adaptation delimiter - *
  3. The implementation name of the original info + *
  4. The signature of the adaptor {@link InfoChain}
  5. + *
  6. The adaptation delimiter
  7. + *
  8. The implementation name of the original info
  9. *
*

* For example, for a source {@code com.example.foo.Bar@1.0.0} with adaptor diff --git a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/OpClassInfo.java b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/OpClassInfo.java index f7fd1ac5d..7e5a7601d 100644 --- a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/OpClassInfo.java +++ b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/OpClassInfo.java @@ -50,9 +50,10 @@ import org.scijava.struct.Structs; import org.scijava.struct.ValidityException; import org.scijava.types.Types; +import org.scijava.util.VersionUtils; /** - * Metadata about an op implementation defined as a class. + * Metadata about an Op implementation defined as a class. * * @author Curtis Rueden * @author David Kolb @@ -67,6 +68,10 @@ public class OpClassInfo implements OpInfo { private final double priority; private final Hints hints; + public OpClassInfo(final Class opClass, final Hints hints, final String... names) { + this(opClass, VersionUtils.getVersion(opClass), hints, Priority.NORMAL, names); + } + public OpClassInfo(final Class opClass, final String version, final Hints hints, final String... names) { this(opClass, version, hints, Priority.NORMAL, names); } @@ -205,9 +210,9 @@ public String version() { * For a {@link Class}, we define the implementation as the concatenation * of: *

    - *
  1. The fully qualified name of the class + *
  2. The fully qualified name of the class
  3. *
  4. The version of the class containing the field, with a preceding - * {@code @} + * {@code @}
  5. *
*

* For example, for a field class {@code com.example.foo.Bar}, you might have diff --git a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/OpFieldInfo.java b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/OpFieldInfo.java index 543b16a0e..78f21e3c6 100644 --- a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/OpFieldInfo.java +++ b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/OpFieldInfo.java @@ -49,9 +49,10 @@ import org.scijava.struct.Structs; import org.scijava.struct.ValidityException; import org.scijava.types.Types; +import org.scijava.util.VersionUtils; /** - * Metadata about an op implementation defined as a field. + * Metadata about an Op implementation defined as a field. * * @author Curtis Rueden */ @@ -68,6 +69,14 @@ public class OpFieldInfo implements OpInfo { private final Hints hints; + public OpFieldInfo(final Object instance, final Field field, final Hints hints, final String... names) { + this(instance, field, VersionUtils.getVersion(field.getDeclaringClass()), hints, Priority.NORMAL, names); + } + + public OpFieldInfo(final Object instance, final Field field, final Hints hints, final double priority, final String... names) { + this(instance, field, VersionUtils.getVersion(field.getDeclaringClass()), hints, Priority.NORMAL, names); + } + public OpFieldInfo(final Object instance, final Field field, final String version, final Hints hints, final String... names) { this(instance, field, version, hints, Priority.NORMAL, names); } @@ -197,10 +206,10 @@ public String version() { * For an {@link OpField}, we define the implementation as the concatenation * of: *

    - *
  1. The fully qualified name of the class containing the field - *
  2. The method field + *
  3. The fully qualified name of the class containing the field
  4. + *
  5. The method field
  6. *
  7. The version of the class containing the field, with a preceding - * {@code @} + * {@code @}
  8. *
*

* For example, for a field {@code baz} in class diff --git a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/OpMethodInfo.java b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/OpMethodInfo.java index 1a7d4f568..73d4c9929 100644 --- a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/OpMethodInfo.java +++ b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/OpMethodInfo.java @@ -73,6 +73,7 @@ import javassist.CtNewConstructor; import javassist.CtNewMethod; import javassist.NotFoundException; +import org.scijava.util.VersionUtils; /** * @author Marcel Wiedenmann @@ -89,6 +90,15 @@ public class OpMethodInfo implements OpInfo { private final Hints hints; + public OpMethodInfo(final Method method, final Class opType, final Hints hints, final String... names) { + this(method, opType, VersionUtils.getVersion(method.getDeclaringClass()), hints, Priority.NORMAL, names); + } + + public OpMethodInfo(final Method method, final Class opType, final Hints hints, final double priority, + final String... names) { + this(method, opType, VersionUtils.getVersion(method.getDeclaringClass()), hints, Priority.NORMAL, names); + } + public OpMethodInfo(final Method method, final Class opType, final String version, final Hints hints, final String... names) { this(method, opType, version, hints, Priority.NORMAL, names); } @@ -396,11 +406,11 @@ public String version() { * For an {@link OpMethod}, we define the implementation as the concatenation * of: *

    - *
  1. The fully qualified name of the class containing the method - *
  2. The method name - *
  3. The method parameters + *
  4. The fully qualified name of the class containing the method
  5. + *
  6. The method name
  7. + *
  8. The method parameters
  9. *
  10. The version of the class containing the method, with a preceding - * {@code @} + * {@code @}
  11. *
*

* For example, for a method {@code baz(Double in1, String in2)} in class @@ -437,4 +447,4 @@ public AnnotatedElement getAnnotationBearer() { return method; } -} \ No newline at end of file +} diff --git a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/monitor/OpMonitor.java b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/monitor/OpMonitor.java index 1682d24cc..7b469d96f 100644 --- a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/monitor/OpMonitor.java +++ b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/monitor/OpMonitor.java @@ -34,7 +34,7 @@ import org.scijava.ops.spi.Op; /** - * Used as a bridge between the {@link Op} and the user. Allows the user to + * Used as a bridge between the Op and the user. Allows the user to * cancel any Op as well as allowing the Op to notify the user of the Op's * progress and of any warnings encountered through the course of computation. * @@ -65,7 +65,7 @@ default void checkCanceled() { void cancel(); /** - * Returns a {@link Logger} for use by the {@link Op}. + * Returns a {@link Logger} for use by the Op. * * @return a {@link Logger}. */ @@ -75,7 +75,7 @@ default void checkCanceled() { * Sets the progress of the computation monitored by this {@link OpMonitor} * * @param progress - * - the progress p of the {@link Op}'s computation. 0 <= + * - the progress p of the Op's computation. 0 <= * p <= 1 */ void setProgress(double progress); @@ -83,7 +83,7 @@ default void checkCanceled() { /** * Returns the completion progress of the Op's computation as a decimal. * - * @return progress - the progress p of the {@link Op}'s computation. 0 + * @return progress - the progress p of the Op's computation. 0 * <= p <= 1 */ double getProgress(); diff --git a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/simplify/SimplificationMetadata.java b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/simplify/SimplificationMetadata.java index 002e97022..2e2d705e1 100644 --- a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/simplify/SimplificationMetadata.java +++ b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/simplify/SimplificationMetadata.java @@ -76,16 +76,16 @@ public SimplificationMetadata(OpInfo info, List refSimplifiers, List< this.opType = Types.raw(info.opType()); this.refSimplifiers = refSimplifiers; - this.inputSimplifiers = refSimplifiers.stream().map(chain -> (Function) chain.op().op()).collect(Collectors.toList()); + this.inputSimplifiers = refSimplifiers.stream().map(chain -> (Function) chain.newInstance().op()).collect(Collectors.toList()); this.infoFocusers = infoFocusers; - this.inputFocusers = infoFocusers.stream().map(chain -> (Function) chain.op().op()).collect(Collectors.toList()); + this.inputFocusers = infoFocusers.stream().map(chain -> (Function) chain.newInstance().op()).collect(Collectors.toList()); this.infoSimplifier = infoSimplifier; - this.outputSimplifier = (Function) infoSimplifier.op().op(); + this.outputSimplifier = (Function) infoSimplifier.newInstance().op(); this.refFocuser = refFocuser; - this.outputFocuser = (Function) refFocuser.op().op(); + this.outputFocuser = (Function) refFocuser.newInstance().op(); this.copyOpChain = outputCopier; @@ -111,22 +111,22 @@ public SimplificationMetadata(OpInfo info, List refSimplifiers, List< private static List> inputSimplifiers(List refSimplifiers) { - return refSimplifiers.stream().map(chain -> (Function) chain.op().op()).collect(Collectors.toList()); + return refSimplifiers.stream().map(chain -> (Function) chain.newInstance().op()).collect(Collectors.toList()); } private static List> inputFocusers(List infoFocusers) { - return infoFocusers.stream().map(chain -> (Function) chain.op().op()).collect(Collectors.toList()); + return infoFocusers.stream().map(chain -> (Function) chain.newInstance().op()).collect(Collectors.toList()); } private static Function outputSimplifier(InfoChain infoSimplifier) { - return (Function) infoSimplifier.op().op(); + return (Function) infoSimplifier.newInstance().op(); } private static Function outputFocuser(InfoChain refFocuser) { - return (Function) refFocuser.op().op(); + return (Function) refFocuser.newInstance().op(); } public List> inputSimpilfiers() { @@ -195,17 +195,17 @@ public InfoChain copyOpChain() { public Computers.Arity1 copyOp() { // TODO: Should we prevent multiple instantiations? - return (Arity1) copyOpChain.get().op().op(); + return (Arity1) copyOpChain.get().newInstance().op(); } /** * The constructor to the simplified Op takes: *

    - *
  1. All input simplifiers - *
  2. All input focusers - *
  3. The output simplifier - *
  4. The output focuser - *
  5. The original Op + *
  6. All input simplifiers
  7. + *
  8. All input focusers
  9. + *
  10. The output simplifier
  11. + *
  12. The output focuser
  13. + *
  14. The original Op
  15. *
* This Op returns the {@link Class}es of those arguments in that * order. Note that the {@link Class} of all arugments other than the @@ -231,11 +231,11 @@ public Class[] constructorClasses() { /** * The constructor to the simplified Op takes: *
    - *
  1. All input simplifiers - *
  2. All input focusers - *
  3. The output simplifier - *
  4. The output focuser - *
  5. The original Op + *
  6. All input simplifiers
  7. + *
  8. All input focusers
  9. + *
  10. The output simplifier
  11. + *
  12. The output focuser
  13. + *
  14. The original Op
  15. *
* This Op returns those arguments in that order. * diff --git a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/simplify/SimplificationUtils.java b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/simplify/SimplificationUtils.java index fffc8f8d7..ba23746a5 100644 --- a/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/simplify/SimplificationUtils.java +++ b/scijava/scijava-ops-engine/src/main/java/org/scijava/ops/engine/simplify/SimplificationUtils.java @@ -47,9 +47,9 @@ public class SimplificationUtils { * {@link SimplifiedOpRef}s. This method assumes that: *
    *
  • {@code originalOpRefType} is (or is a subtype of) some - * {@link FunctionalInterface} + * {@link FunctionalInterface}
  • *
  • all {@link TypeVariable}s declared by that {@code FunctionalInterface} - * are present in the signature of that interface's single abstract method. + * are present in the signature of that interface's single abstract method.
  • *
* * @param originalOpType - the {@link Type} declared by the source @@ -143,8 +143,8 @@ public static int findMutableArgIndex(Class c) { * {@code inferFrom}. We can then use these mappings to resolve the type * variables of {@code unresolvedType}. This method assumes that: *
    - *
  • {@code inferFrom} is assignable to {@code mutatorInferFrom} - *
  • There are no vacuous generics in {@code unresolvedType} + *
  • {@code inferFrom} is assignable to {@code mutatorInferFrom}
  • + *
  • There are no vacuous generics in {@code unresolvedType}
  • *
* * @param inferFrom - the concrete input/output type that we would like to pass to the mutator. @@ -219,10 +219,10 @@ public static List getFocusers(OpEnvironment env, Type t) { /** * Creates a Class given an Op and a set of {@link Simplifier}s. This class: *