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 <francisobrien2...@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@imagej.net > http://imagej.net/mailman/listinfo/imagej-devel > >
_______________________________________________ ImageJ-devel mailing list ImageJ-devel@imagej.net http://imagej.net/mailman/listinfo/imagej-devel