Skip to content
Snippets Groups Projects
melica.h 1.46 KiB
Newer Older
Mark Jenkinson's avatar
Mark Jenkinson committed
/*  MELODIC - Multivariate exploratory linear optimized decomposition into 
              independent components
    
    melica.h - ICA estimation

    Christian F. Beckmann, FMRIB Image Analysis Group
    
Christian Beckmann's avatar
Christian Beckmann committed
    Copyright (C) 1999-2007 University of Oxford */
Mark Jenkinson's avatar
Mark Jenkinson committed

/*  CCOPYRIGHT */

#ifndef __MELODICICA_h
#define __MELODICICA_h
#include "newimage/newimageall.h"
#include "utils/log.h"
Mark Jenkinson's avatar
Mark Jenkinson committed
#include "melpca.h"
#include "meloptions.h"
#include "meldata.h"
#include "melodic.h"
#include "newmatap.h"
#include "newmatio.h"
Mark Jenkinson's avatar
Mark Jenkinson committed
#include "melreport.h"
#include "ggmix.h"
Mark Jenkinson's avatar
Mark Jenkinson committed

using namespace Utilities;
using namespace NEWIMAGE;

namespace Melodic{
  
Christian Beckmann's avatar
Christian Beckmann committed
  class MelodicICA{
Mark Jenkinson's avatar
Mark Jenkinson committed
    public:
      MelodicICA(MelodicData &pmelodat, MelodicOptions &popts, Log &plogger, MelodicReport &preport):  
Christian Beckmann's avatar
Christian Beckmann committed
				melodat(pmelodat),
				opts(popts),
				logger(plogger),
				report(preport){} 
Mark Jenkinson's avatar
Mark Jenkinson committed
      
      void perf_ica(const Matrix &Data);
      
      bool no_convergence;

    private:
      MelodicData &melodat;
      MelodicOptions &opts;
      Log &logger;
      MelodicReport &report;

      int dim;
      int samples; 
      Matrix redUMM;

      void ica_fastica_symm(const Matrix &Data);
      void ica_fastica_defl(const Matrix &Data);
      void ica_maxent(const Matrix &Data);
      void ica_jade(const Matrix &Data);
      //void tica();
      //void tica_concat();
      //void parafac();
Mark Jenkinson's avatar
Mark Jenkinson committed
      Matrix randm(const int dim1, const int dim2);
      void sort();
      Matrix sign(const Matrix &Inp);

Christian Beckmann's avatar
Christian Beckmann committed
  };   
Mark Jenkinson's avatar
Mark Jenkinson committed
}

#endif