<div dir="ltr">For the archives, this is answered here: <a href="http://imagej.net/pipermail/imagej-devel/2015-January/002439.html">http://imagej.net/pipermail/imagej-devel/2015-January/002439.html</a></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 28, 2015 at 7:36 PM, Francis OBrien <span dir="ltr"><<a href="mailto:francisobrien2007@gmail.com" target="_blank">francisobrien2007@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Hello,</div><div><br></div><div>How do I run the following code in ImageJ?</div><div><br></div><div><pre>/*
* #%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);
}
}</pre><pre><br></pre><pre></pre></div></div>
<br>_______________________________________________<br>
ImageJ-devel mailing list<br>
<a href="mailto:ImageJ-devel@imagej.net">ImageJ-devel@imagej.net</a><br>
<a href="http://imagej.net/mailman/listinfo/imagej-devel" target="_blank">http://imagej.net/mailman/listinfo/imagej-devel</a><br>
<br></blockquote></div><br></div>