Package gov.nih.mipav.model.algorithms
Class AlgorithmMixGaussEM
- java.lang.Object
-
- java.lang.Thread
-
- gov.nih.mipav.model.algorithms.AlgorithmBase
-
- gov.nih.mipav.model.algorithms.AlgorithmMixGaussEM
-
- All Implemented Interfaces:
java.awt.event.ActionListener
,java.awt.event.WindowListener
,java.lang.Runnable
,java.util.EventListener
public class AlgorithmMixGaussEM extends AlgorithmBase
- Author:
- aailb Copyright (c) 2016, Mo Chen All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 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 Neither the name of nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 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 OWNER 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.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) class
AlgorithmMixGaussEM.model
-
Field Summary
Fields Modifier and Type Field Description private int
iter
private int[]
label
private double[]
llh
private AlgorithmMixGaussEM.model
mixGaussOut
(package private) RandomNumberGen
randomGen
private double[][]
X
-
Fields inherited from class gov.nih.mipav.model.algorithms.AlgorithmBase
destFlag, destImage, image25D, mask, maxProgressValue, minProgressValue, multiThreadingEnabled, nthreads, progress, progressModulus, progressStep, runningInSeparateThread, separable, srcImage, threadStopped
-
-
Constructor Summary
Constructors Constructor Description AlgorithmMixGaussEM()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description double[]
dirichletRnd(double ain, double[] m)
int[]
discreteRnd(double[] pin, int n)
private double[][]
expectation(double[][] X, AlgorithmMixGaussEM.model mod)
double
gamrnd(double a, double b)
private double[]
gaussRnd(double[] mu, double[][] Sigma)
private double[][]
gaussRnd(double[] mu, double[][] Sigma, int n)
private double[][]
initialization(double[][] X, int init)
private double[][]
initialization(double[][] X, int[] init)
private double[][]
initialization(double[][] X, AlgorithmMixGaussEM.model init)
private double[]
loggausspdf(double[][] Xin, double[] mu, double[][] Sigma)
double[]
logsumexp(double[][] ain, int dim)
private AlgorithmMixGaussEM.model
maximization(double[][] X, double[][] R)
private void
mixGaussEm(double[][] X, int init)
void
mixGaussEm_demo()
private void
mixGaussPred(double[][] R, double[][] X, AlgorithmMixGaussEM.model mod)
void
mixGaussRnd(int d, int k, int n)
private void
plot(double[] llh)
private void
plotClass(double[][] X, int[] label, java.lang.String title)
void
runAlgorithm()
Actually runs the algorithm.void
test_dirichletRnd()
void
test_discreteRnd()
void
test_gamrnd()
void
test_gaussRnd()
void
test_gaussRnd2()
-
Methods inherited from class gov.nih.mipav.model.algorithms.AlgorithmBase
actionPerformed, addListener, addProgressChangeListener, calculateImageSize, calculatePrincipleAxis, computeElapsedTime, computeElapsedTime, convertIntoFloat, delinkProgressToAlgorithm, delinkProgressToAlgorithmMulti, displayError, errorCleanUp, finalize, fireProgressStateChanged, fireProgressStateChanged, fireProgressStateChanged, fireProgressStateChanged, fireProgressStateChanged, generateProgressValues, getDestImage, getElapsedTime, getMask, getMaxProgressValue, getMinProgressValue, getNumberOfThreads, getProgress, getProgressChangeListener, getProgressChangeListeners, getProgressModulus, getProgressStep, getProgressValues, getSrcImage, isCompleted, isImage25D, isMultiThreadingEnabled, isRunningInSeparateThread, isThreadStopped, linkProgressToAlgorithm, linkProgressToAlgorithm, makeProgress, notifyListeners, removeListener, removeProgressChangeListener, run, setCompleted, setImage25D, setMask, setMaxProgressValue, setMinProgressValue, setMultiThreadingEnabled, setNumberOfThreads, setProgress, setProgressModulus, setProgressStep, setProgressValues, setProgressValues, setRunningInSeparateThread, setSrcImage, setStartTime, setThreadStopped, startMethod, windowActivated, windowClosed, windowClosing, windowDeactivated, windowDeiconified, windowIconified, windowOpened
-
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
-
-
-
-
Field Detail
-
X
private double[][] X
-
label
private int[] label
-
mixGaussOut
private AlgorithmMixGaussEM.model mixGaussOut
-
llh
private double[] llh
-
iter
private int iter
-
randomGen
RandomNumberGen randomGen
-
-
Method Detail
-
runAlgorithm
public void runAlgorithm()
Description copied from class:AlgorithmBase
Actually runs the algorithm. Implemented by inheriting algorithms.- Specified by:
runAlgorithm
in classAlgorithmBase
-
mixGaussEm_demo
public void mixGaussEm_demo()
-
mixGaussRnd
public void mixGaussRnd(int d, int k, int n)
-
test_discreteRnd
public void test_discreteRnd()
-
discreteRnd
public int[] discreteRnd(double[] pin, int n)
-
test_dirichletRnd
public void test_dirichletRnd()
-
dirichletRnd
public double[] dirichletRnd(double ain, double[] m)
-
test_gamrnd
public void test_gamrnd()
-
gamrnd
public double gamrnd(double a, double b)
-
test_gaussRnd2
public void test_gaussRnd2()
-
gaussRnd
private double[] gaussRnd(double[] mu, double[][] Sigma)
-
test_gaussRnd
public void test_gaussRnd()
-
gaussRnd
private double[][] gaussRnd(double[] mu, double[][] Sigma, int n)
-
plotClass
private void plotClass(double[][] X, int[] label, java.lang.String title)
-
mixGaussPred
private void mixGaussPred(double[][] R, double[][] X, AlgorithmMixGaussEM.model mod)
-
mixGaussEm
private void mixGaussEm(double[][] X, int init)
-
initialization
private double[][] initialization(double[][] X, int init)
-
initialization
private double[][] initialization(double[][] X, int[] init)
-
initialization
private double[][] initialization(double[][] X, AlgorithmMixGaussEM.model init)
-
expectation
private double[][] expectation(double[][] X, AlgorithmMixGaussEM.model mod)
-
loggausspdf
private double[] loggausspdf(double[][] Xin, double[] mu, double[][] Sigma)
-
maximization
private AlgorithmMixGaussEM.model maximization(double[][] X, double[][] R)
-
plot
private void plot(double[] llh)
-
logsumexp
public double[] logsumexp(double[][] ain, int dim)
-
-