src/ClustalOmega/src/clustal-omega.h
dafeef0b
 /* -*- mode: c; tab-width: 4; c-basic-offset: 4;  indent-tabs-mode: nil -*- */
 
 /*********************************************************************
  * Clustal Omega - Multiple sequence alignment
  *
  * Copyright (C) 2010 University College Dublin
  *
  * Clustal-Omega is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
  * published by the Free Software Foundation; either version 2 of the
  * License, or (at your option) any later version.
  *
  * This file is part of Clustal-Omega.
  *
  ********************************************************************/
 
 /*
  *  RCS $Id: clustal-omega.h 212 2011-03-10 15:09:46Z andreas $
  */
 
 #ifndef CLUSTALO_H
 #define CLUSTALO_H
 
 
 
 #ifdef HAVE_OPENMP
 #include <omp.h>
 #endif
 #include <stdbool.h>
 
 #include "clustal-omega-config.h"
 
 /* the following needs to be kept in sync with library_include_HEADERS of all
  * subdir Makefile.am's 
  */
 
 /* hhalign */
 #include "hhalign/general.h"
 #include "hhalign/hhfunc.h"
 
 
 /* clustal */
 #include "clustal/log.h"
 #include "clustal/util.h"
 #include "clustal/symmatrix.h"
 #include "clustal/tree.h"
 #include "clustal/seq.h"
 #include "clustal/mbed.h"
 #include "clustal/weights.h"
 #include "clustal/pair_dist.h"
 #include "clustal/hhalign_wrapper.h"
 
 
 
 #define CLUSTERING_UNKNOWN 0
 #define CLUSTERING_UPGMA 1
 
 /* weights will be computed if 1. but are not really used for now and they
  * might slow things down. also, mbed's screws up branch lengths which will
  * have a negative effect on weights 
 */
 #define USE_WEIGHTS 0
 
 extern int iNumberOfThreads;
 
 /* output order */
 enum {INPUT_ORDER = 0, TREE_ORDER};
 
 
 /** user/commandline options
  *
  * changes here will have to be reflected in ParseCommandLine()
  * and during setup of the default opts
  *
  */
 typedef struct {
     /* auto: Clustal (know what) is good for you
      */
     bool bAutoOptions;
 
     /* Distance matrix
      */
     /** distance matrix input file */
     char *pcDistmatInfile;
     /** distance matrix output file */
     char *pcDistmatOutfile;
     
     /* Clustering / guide-tree
      */
     /** clustering type (from cmdline arg) */
     int iClusteringType;
     /** number of sequences in cluster */
     int iClustersizes; 
     /** file with clustering information */
     char *pcClustfile; 
     /** pairwise distance method */
     int iPairDistType;
     /** use mbed-like clustering */
     bool bUseMbed;
     /** use mbed-like clustering also during iteration */
     bool bUseMbedForIteration;
     /** guidetree output file */
     char *pcGuidetreeOutfile;
     /** guidetree input file */
     char *pcGuidetreeInfile;
     /** use Kimura corrected distance */
     bool bUseKimura;
     /** print percentage identity */
     bool bPercID;
 
     /* HMMs
      */
     /** HMM input files. index range: 0..iHMMInputFiles */
     char **ppcHMMInput;
     /** number of provided HMM input files. not really a user
        option but need for ppcHMMInput */
     int iHMMInputFiles;
 
     /* Iteration
      */
     /** number of iterations */
     int iNumIterations;
     /** determine number of iterations automatically */
 	bool bIterationsAuto;
     /** maximum number of hmm iterations */
     int iMaxHMMIterations;
     /** max number of guidetree iterations */
 	int iMaxGuidetreeIterations;
     
     hhalign_para rHhalignPara;
 
     /* changes here will have to be reflected in FreeAlnOpts(),
 	 * SetDefaultAlnOpts(), AlnOptsLogicCheck() etc 
 	 */
 } opts_t;
 
 
 
 extern void 
 PrintLongVersion(char *pcStr, int iSize);
 
 extern void
 SetDefaultAlnOpts(opts_t *opts);
 
 extern void
 FreeAlnOpts(opts_t *aln_opts);
 
 extern void
 AlnOptsLogicCheck(opts_t *opts);
 
 extern void
 PrintAlnOpts(FILE *prFile, opts_t *opts);
 
 extern void
 InitClustalOmega(int iNumThreadsToUse);
 
 extern void
 SequentialAlignmentOrder(int **piOrderLR_p, int iNumSeq);
 
 extern int
 AlignmentOrder(int **piOrderLR_p, double **pdSeqWeights_p, mseq_t *prMSeq,
                int iPairDistType, char *pcDistmatInfile, char *pcDistmatOutfile,
                int iClusteringType, int iClustersizes,
                char *pcGuidetreeInfile, char *pcGuidetreeOutfile, char *pcClusterFile,
                bool bUseMBed, bool bPercID);
 
 extern int
 Align(mseq_t *prMSeq, 
       mseq_t *prMSeqProfile,
 	  opts_t *prOpts);
 
 extern int
 AlignProfiles(mseq_t *prMSeqProfile1, 
 			  mseq_t *prMSeqProfile2, hhalign_para rHhalignPara);
 
 #endif