[ImageJ-devel] Help with Java Code?
Mark Hiner
hiner at wisc.edu
Fri Jan 30 10:35:01 CST 2015
For the archives, this is answered here:
http://imagej.net/pipermail/imagej-devel/2015-January/002439.html
On Wed, Jan 28, 2015 at 7:36 PM, Francis OBrien <francisobrien2007 at gmail.com
> wrote:
> Hello,
>
> How do I run the following code in ImageJ?
>
> /*
> * #%L
> * ImageJ software for multidimensional image processing and analysis.
> * %%
> * Copyright (C) 2009 - 2015 Board of Regents of the University of
> * Wisconsin-Madison, Broad Institute of MIT and Harvard, and Max Planck
> * Institute of Molecular Cell Biology and Genetics.
> * %%
> * Redistribution and use in source and binary forms, with or without
> * modification, are permitted provided that the following conditions are met:
> *
> * 1. Redistributions of source code must retain the above copyright notice,
> * this list of conditions and the following disclaimer.
> * 2. Redistributions in binary form must reproduce the above copyright notice,
> * this list of conditions and the following disclaimer in the documentation
> * and/or other materials provided with the distribution.
> *
> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
> * POSSIBILITY OF SUCH DAMAGE.
> * #L%
> */
>
> package net.imagej.autoscale;
>
> import net.imglib2.IterableInterval;
> import net.imglib2.histogram.Histogram1d;
> import net.imglib2.histogram.Real1dBinMapper;
> import net.imglib2.type.numeric.RealType;
>
> import org.scijava.plugin.Parameter;
> import org.scijava.plugin.Plugin;
>
> /**
> * Computes a confidence interval containing percentages of the an entire set of
> * values in an {@link IterableInterval}.
> *
> * @author Barry DeZonia
> */
> @Plugin(type = AutoscaleMethod.class, name = "Confidence Interval")
> public class ConfidenceIntervalAutoscaleMethod<T extends RealType<T>> extends
> AbstractAutoscaleMethod<T>
> {
>
> // -- instance variables --
>
> private double lowerTail, upperTail;
>
> @Parameter
> private AutoscaleService autoscaleService;
>
> // -- ConfidenceIntervalAutoscaleMethod methods --
>
> /**
> * Construct a confidence interval that contains 95% of the data range.
> */
> public ConfidenceIntervalAutoscaleMethod() {
> this(0.025, 0.025); // fit 95% of the data range
> }
>
> /**
> * Construct a confidence interval with user specified percentages of the data
> * range. Ranges are specified as fractions of 1. They must sum to less than
> * 1.
> *
> * @param lowerTailProportion The proportion of the distribution to be treated
> * as lower tail values
> * @param upperTailProportion The proportion of the distribution to be treated
> * as upper tail values
> */
> public ConfidenceIntervalAutoscaleMethod(double lowerTailProportion,
> double upperTailProportion)
> {
> setTailProportions(lowerTailProportion, upperTailProportion);
> }
>
> /**
> * Returns the fractional proportion of the distribution to count as in lower
> * tail.
> */
> public double getLowerTailProportion() {
> return lowerTail;
> }
>
> /**
> * Returns the fractional proportion of the distribution to count as in upper
> * tail.
> */
> public double getUpperTailProportion() {
> return upperTail;
> }
>
> /**
> * Sets the fractional proportions of the distribution.
> *
> * @param lower A fraction of 1 specifying the size of the lower tail
> * @param upper A fraction of 1 specifying the size of the upper tail
> */
> public void setTailProportions(double lower, double upper) {
> if (lower < 0 || lower > 1) {
> throw new IllegalArgumentException(
> "lower tail fraction must be between 0 and 1");
> }
> if (upper < 0 || upper > 1) {
> throw new IllegalArgumentException(
> "upper tail fraction must be between 0 and 1");
> }
> if (lower + upper >= 1) {
> throw new IllegalArgumentException("tails must not span whole data range");
> }
> lowerTail = lower;
> upperTail = upper;
> }
>
> // -- AutoscaleMethod methods --
>
> @Override
> public DataRange getRange(IterableInterval<T> interval) {
> // pass one through data
> DataRange range = autoscaleService.getDefaultIntervalRange(interval);
> // pass two through data
> Real1dBinMapper<T> mapper =
> new Real1dBinMapper<T>(range.getMin(), range.getMax(), 1000, false);
> Histogram1d<T> histogram = new Histogram1d<T>(mapper);
> histogram.countData(interval);
> // calc some sizes
> long totValues = histogram.distributionCount();
> long lowerSize = (long) Math.floor(lowerTail * totValues);
> long upperSize = (long) Math.floor(upperTail * totValues);
> // determine bin number containing > than lower tail size
> long soFar = 0;
> int bottom = 0;
> while (soFar < lowerSize) {
> soFar += histogram.frequency(bottom++);
> }
> while (histogram.frequency(bottom) == 0) {
> bottom++;
> }
> // determine bin number containing < upper tail size
> soFar = 0;
> int top = 999;
> while (soFar < upperSize) {
> soFar += histogram.frequency(top--);
> }
> while (histogram.frequency(top) == 0) {
> top--;
> }
> // determine approx boundaries
> T approxMin = interval.firstElement().createVariable();
> T approxMax = approxMin.createVariable();
> histogram.getLowerBound(bottom, approxMin);
> histogram.getUpperBound(top, approxMax);
> double min = approxMin.getRealDouble();
> double max = approxMax.getRealDouble();
> // return them
> return new DataRange(min, max);
> }
>
> }
>
>
>
> _______________________________________________
> ImageJ-devel mailing list
> ImageJ-devel at imagej.net
> http://imagej.net/mailman/listinfo/imagej-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://imagej.net/pipermail/imagej-devel/attachments/20150130/aa0ae41b/attachment.html>
More information about the ImageJ-devel
mailing list