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

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

/*
* 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 be.ac.ulg.montefiore.run.jahmm.CentroidFactory;
import be.ac.ulg.montefiore.run.jahmm.Hmm;
import be.ac.ulg.montefiore.run.jahmm.Observation;
import be.ac.ulg.montefiore.run.jahmm.Opdf;
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.learn.BaumWelchLearner;
import be.ac.ulg.montefiore.run.jahmm.learn.BaumWelchScaledLearner;

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


/**
* Applies the Baum-Welch learning algorithm.
*/
class BWActionHandler
extends ActionHandler
{
  public void act()
  throws IOException, FileFormatException,
  AbnormalTerminationException
  {
    EnumSet<Arguments> args = EnumSet.of(
        Arguments.OPDF,
        Arguments.OUT_HMM,
        Arguments.IN_HMM,
        Arguments.IN_SEQ,
        Arguments.NB_ITERATIONS);
    CommandLineArguments.checkArgs(args);
   
    int nbIterations = Arguments.NB_ITERATIONS.getAsInt();
    OutputStream outStream = Arguments.OUT_HMM.getAsOutputStream();
    Writer hmmWriter = new OutputStreamWriter(outStream);
    InputStream hmmStream = Arguments.IN_HMM.getAsInputStream();
    InputStream seqStream = Arguments.IN_SEQ.getAsInputStream();
    Reader hmmReader = new InputStreamReader(hmmStream, Cli.CHARSET);
    Reader seqReader = new InputStreamReader(seqStream, Cli.CHARSET);
   
    learn(Types.relatedObjs(), hmmReader, seqReader, hmmWriter,
        nbIterations);
   
    hmmWriter.flush();
  }
 
 
  private <O extends Observation & CentroidFactory<O>> void
  learn(RelatedObjs<O> relatedObjs, Reader hmmFileReader,
      Reader seqFileReader, Writer hmmFileWriter,
      int nbIterations)
  throws IOException, FileFormatException
  {
    List<List<O>> seqs = relatedObjs.readSequences(seqFileReader);
    OpdfReader<? extends Opdf<O>> opdfReader = relatedObjs.opdfReader();
    OpdfWriter<? extends Opdf<O>> opdfWriter = relatedObjs.opdfWriter();
   
    Hmm<O> initHmm = HmmReader.read(hmmFileReader, opdfReader);
    BaumWelchLearner bw = new BaumWelchScaledLearner();
    bw.setNbIterations(nbIterations);
    Hmm<O> hmm = bw.learn(initHmm, seqs);
    HmmWriter.write(hmmFileWriter, opdfWriter, hmm);
  }
}
TOP

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

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.