blob: e7de3e910cd1dd287627a948a6488a1e75382ef7 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>MultivariateNormalMixtureExpectationMaximization (Apache Commons Math 3.3 API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="MultivariateNormalMixtureExpectationMaximization (Apache Commons Math 3.3 API)";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/MultivariateNormalMixtureExpectationMaximization.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev Class</li>
<li>Next Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/commons/math3/distribution/fitting/MultivariateNormalMixtureExpectationMaximization.html" target="_top">Frames</a></li>
<li><a href="MultivariateNormalMixtureExpectationMaximization.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.commons.math3.distribution.fitting</div>
<h2 title="Class MultivariateNormalMixtureExpectationMaximization" class="title">Class MultivariateNormalMixtureExpectationMaximization</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.commons.math3.distribution.fitting.MultivariateNormalMixtureExpectationMaximization</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="strong">MultivariateNormalMixtureExpectationMaximization</span>
extends <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">Expectation-Maximization</a> algorithm for fitting the parameters of
multivariate normal mixture model distributions.
This implementation is pure original code based on <a
href="https://www.ee.washington.edu/techsite/papers/documents/UWEETR-2010-0002.pdf">
EM Demystified: An Expectation-Maximization Tutorial</a> by Yihua Chen and Maya R. Gupta,
Department of Electrical Engineering, University of Washington, Seattle, WA 98195.
It was verified using external tools like <a
href="http://cran.r-project.org/web/packages/mixtools/index.html">CRAN Mixtools</a>
(see the JUnit test cases) but it is <strong>not</strong> based on Mixtools code at all.
The discussion of the origin of this class can be seen in the comments of the <a
href="https://issues.apache.org/jira/browse/MATH-817">MATH-817</a> JIRA issue.</div>
<dl><dt><span class="strong">Since:</span></dt>
<dd>3.2</dd>
<dt><span class="strong">Version:</span></dt>
<dd>$Id: MultivariateNormalMixtureExpectationMaximization.java 1547633 2013-12-03 23:03:06Z tn $</dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../../org/apache/commons/math3/distribution/fitting/MultivariateNormalMixtureExpectationMaximization.html#MultivariateNormalMixtureExpectationMaximization(double[][])">MultivariateNormalMixtureExpectationMaximization</a></strong>(double[][]&nbsp;data)</code>
<div class="block">Creates an object to fit a multivariate normal mixture model to data.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="../../../../../../org/apache/commons/math3/distribution/MixtureMultivariateNormalDistribution.html" title="class in org.apache.commons.math3.distribution">MixtureMultivariateNormalDistribution</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/distribution/fitting/MultivariateNormalMixtureExpectationMaximization.html#estimate(double[][], int)">estimate</a></strong>(double[][]&nbsp;data,
int&nbsp;numComponents)</code>
<div class="block">Helper method to create a multivariate normal mixture model which can be
used to initialize <a href="../../../../../../org/apache/commons/math3/distribution/fitting/MultivariateNormalMixtureExpectationMaximization.html#fit(org.apache.commons.math3.distribution.MixtureMultivariateNormalDistribution)"><code>fit(MixtureMultivariateNormalDistribution)</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/distribution/fitting/MultivariateNormalMixtureExpectationMaximization.html#fit(org.apache.commons.math3.distribution.MixtureMultivariateNormalDistribution)">fit</a></strong>(<a href="../../../../../../org/apache/commons/math3/distribution/MixtureMultivariateNormalDistribution.html" title="class in org.apache.commons.math3.distribution">MixtureMultivariateNormalDistribution</a>&nbsp;initialMixture)</code>
<div class="block">Fit a mixture model to the data supplied to the constructor.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/distribution/fitting/MultivariateNormalMixtureExpectationMaximization.html#fit(org.apache.commons.math3.distribution.MixtureMultivariateNormalDistribution, int, double)">fit</a></strong>(<a href="../../../../../../org/apache/commons/math3/distribution/MixtureMultivariateNormalDistribution.html" title="class in org.apache.commons.math3.distribution">MixtureMultivariateNormalDistribution</a>&nbsp;initialMixture,
int&nbsp;maxIterations,
double&nbsp;threshold)</code>
<div class="block">Fit a mixture model to the data supplied to the constructor.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/commons/math3/distribution/MixtureMultivariateNormalDistribution.html" title="class in org.apache.commons.math3.distribution">MixtureMultivariateNormalDistribution</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/distribution/fitting/MultivariateNormalMixtureExpectationMaximization.html#getFittedModel()">getFittedModel</a></strong>()</code>
<div class="block">Gets the fitted model.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/distribution/fitting/MultivariateNormalMixtureExpectationMaximization.html#getLogLikelihood()">getLogLikelihood</a></strong>()</code>
<div class="block">Gets the log likelihood of the data under the fitted model.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="MultivariateNormalMixtureExpectationMaximization(double[][])">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>MultivariateNormalMixtureExpectationMaximization</h4>
<pre>public&nbsp;MultivariateNormalMixtureExpectationMaximization(double[][]&nbsp;data)
throws <a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a>,
<a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a>,
<a href="../../../../../../org/apache/commons/math3/exception/NumberIsTooSmallException.html" title="class in org.apache.commons.math3.exception">NumberIsTooSmallException</a></pre>
<div class="block">Creates an object to fit a multivariate normal mixture model to data.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>data</code> - Data to use in fitting procedure</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if data has no rows</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a></code> - if rows of data have different numbers
of columns</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NumberIsTooSmallException.html" title="class in org.apache.commons.math3.exception">NumberIsTooSmallException</a></code> - if the number of columns in the data is
less than 2</dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="fit(org.apache.commons.math3.distribution.MixtureMultivariateNormalDistribution, int, double)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>fit</h4>
<pre>public&nbsp;void&nbsp;fit(<a href="../../../../../../org/apache/commons/math3/distribution/MixtureMultivariateNormalDistribution.html" title="class in org.apache.commons.math3.distribution">MixtureMultivariateNormalDistribution</a>&nbsp;initialMixture,
int&nbsp;maxIterations,
double&nbsp;threshold)
throws <a href="../../../../../../org/apache/commons/math3/linear/SingularMatrixException.html" title="class in org.apache.commons.math3.linear">SingularMatrixException</a>,
<a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a>,
<a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a></pre>
<div class="block">Fit a mixture model to the data supplied to the constructor.
The quality of the fit depends on the concavity of the data provided to
the constructor and the initial mixture provided to this function. If the
data has many local optima, multiple runs of the fitting function with
different initial mixtures may be required to find the optimal solution.
If a SingularMatrixException is encountered, it is possible that another
initialization would work.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>initialMixture</code> - Model containing initial values of weights and
multivariate normals</dd><dd><code>maxIterations</code> - Maximum iterations allowed for fit</dd><dd><code>threshold</code> - Convergence threshold computed as difference in
logLikelihoods between successive iterations</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/commons/math3/linear/SingularMatrixException.html" title="class in org.apache.commons.math3.linear">SingularMatrixException</a></code> - if any component's covariance matrix is
singular during fitting</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if numComponents is less than one
or threshold is less than Double.MIN_VALUE</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a></code> - if initialMixture mean vector and data
number of columns are not equal</dd></dl>
</li>
</ul>
<a name="fit(org.apache.commons.math3.distribution.MixtureMultivariateNormalDistribution)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>fit</h4>
<pre>public&nbsp;void&nbsp;fit(<a href="../../../../../../org/apache/commons/math3/distribution/MixtureMultivariateNormalDistribution.html" title="class in org.apache.commons.math3.distribution">MixtureMultivariateNormalDistribution</a>&nbsp;initialMixture)
throws <a href="../../../../../../org/apache/commons/math3/linear/SingularMatrixException.html" title="class in org.apache.commons.math3.linear">SingularMatrixException</a>,
<a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></pre>
<div class="block">Fit a mixture model to the data supplied to the constructor.
The quality of the fit depends on the concavity of the data provided to
the constructor and the initial mixture provided to this function. If the
data has many local optima, multiple runs of the fitting function with
different initial mixtures may be required to find the optimal solution.
If a SingularMatrixException is encountered, it is possible that another
initialization would work.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>initialMixture</code> - Model containing initial values of weights and
multivariate normals</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/commons/math3/linear/SingularMatrixException.html" title="class in org.apache.commons.math3.linear">SingularMatrixException</a></code> - if any component's covariance matrix is
singular during fitting</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if numComponents is less than one or
threshold is less than Double.MIN_VALUE</dd></dl>
</li>
</ul>
<a name="estimate(double[][], int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>estimate</h4>
<pre>public static&nbsp;<a href="../../../../../../org/apache/commons/math3/distribution/MixtureMultivariateNormalDistribution.html" title="class in org.apache.commons.math3.distribution">MixtureMultivariateNormalDistribution</a>&nbsp;estimate(double[][]&nbsp;data,
int&nbsp;numComponents)
throws <a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a>,
<a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a></pre>
<div class="block">Helper method to create a multivariate normal mixture model which can be
used to initialize <a href="../../../../../../org/apache/commons/math3/distribution/fitting/MultivariateNormalMixtureExpectationMaximization.html#fit(org.apache.commons.math3.distribution.MixtureMultivariateNormalDistribution)"><code>fit(MixtureMultivariateNormalDistribution)</code></a>.
This method uses the data supplied to the constructor to try to determine
a good mixture model at which to start the fit, but it is not guaranteed
to supply a model which will find the optimal solution or even converge.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>data</code> - Data to estimate distribution</dd><dd><code>numComponents</code> - Number of components for estimated mixture</dd>
<dt><span class="strong">Returns:</span></dt><dd>Multivariate normal mixture model estimated from the data</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NumberIsTooLargeException.html" title="class in org.apache.commons.math3.exception">NumberIsTooLargeException</a></code> - if <code>numComponents</code> is greater
than the number of data rows.</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NumberIsTooSmallException.html" title="class in org.apache.commons.math3.exception">NumberIsTooSmallException</a></code> - if <code>numComponents &lt; 2</code>.</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if data has less than 2 rows</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a></code> - if rows of data have different numbers
of columns</dd></dl>
</li>
</ul>
<a name="getLogLikelihood()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLogLikelihood</h4>
<pre>public&nbsp;double&nbsp;getLogLikelihood()</pre>
<div class="block">Gets the log likelihood of the data under the fitted model.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>Log likelihood of data or zero of no data has been fit</dd></dl>
</li>
</ul>
<a name="getFittedModel()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getFittedModel</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/commons/math3/distribution/MixtureMultivariateNormalDistribution.html" title="class in org.apache.commons.math3.distribution">MixtureMultivariateNormalDistribution</a>&nbsp;getFittedModel()</pre>
<div class="block">Gets the fitted model.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>fitted model or <code>null</code> if no fit has been performed yet.</dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/MultivariateNormalMixtureExpectationMaximization.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev Class</li>
<li>Next Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/commons/math3/distribution/fitting/MultivariateNormalMixtureExpectationMaximization.html" target="_top">Frames</a></li>
<li><a href="MultivariateNormalMixtureExpectationMaximization.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2003&#x2013;2014 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>