Package be.ac.ulg.montefiore.run.jahmm.apps.cli

Source Code of be.ac.ulg.montefiore.run.jahmm.apps.cli.KLActionHandler

/*
* Copyright (c) 2004-2009, Jean-Marc François. All Rights Reserved.
* Licensed under the New BSD license.  See the LICENSE file.
*/

package be.ac.ulg.montefiore.run.jahmm.apps.cli;

import java.io.*;
import java.util.EnumSet;

import be.ac.ulg.montefiore.run.jahmm.*;
import be.ac.ulg.montefiore.run.jahmm.apps.cli.CommandLineArguments.Arguments;
import be.ac.ulg.montefiore.run.jahmm.io.*;
import be.ac.ulg.montefiore.run.jahmm.toolbox.KullbackLeiblerDistanceCalculator;

/**
* This class implements an action that computes the Kullback-Leibler
* distance between two HMMs.
*/
public class KLActionHandler extends ActionHandler
{
  public void act() throws FileNotFoundException, IOException,
  FileFormatException, AbnormalTerminationException
  {
    EnumSet<Arguments> args = EnumSet.of(
        Arguments.OPDF,
        Arguments.IN_HMM,
        Arguments.IN_KL_HMM);
    CommandLineArguments.checkArgs(args);
   
    InputStream st = Arguments.IN_KL_HMM.getAsInputStream();
    Reader reader1 = new InputStreamReader(st);
    st = Arguments.IN_HMM.getAsInputStream();
    Reader reader2 = new InputStreamReader(st);
   
    distance(Types.relatedObjs(), reader1, reader2);
  }
 
 
  private <O extends Observation & CentroidFactory<O>> void
  distance(RelatedObjs<O> relatedObjs, Reader reader1, Reader reader2)
  throws IOException, FileFormatException
  {
    Hmm<O> hmm1 = HmmReader.read(reader1, relatedObjs.opdfReader());
    Hmm<O> hmm2 = HmmReader.read(reader2, relatedObjs.opdfReader());
   
    KullbackLeiblerDistanceCalculator kl =
      new KullbackLeiblerDistanceCalculator();
    System.out.println(kl.distance(hmm1, hmm2));
  }
}
TOP

Related Classes of be.ac.ulg.montefiore.run.jahmm.apps.cli.KLActionHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.