00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 #ifndef CLUSTALO_H
00022 #define CLUSTALO_H
00023 
00024 
00025 
00026 #ifdef HAVE_OPENMP
00027 #include <omp.h>
00028 #endif
00029 
00030 #include "clustal-omega-config.h"
00031 
00032 
00033 
00034 
00035 
00036 
00037 #include "hhalign/general.h"
00038 #include "hhalign/hhfunc.h"
00039 
00040 
00041 
00042 #include "clustal/log.h"
00043 #include "clustal/util.h"
00044 #include "clustal/symmatrix.h"
00045 #include "clustal/tree.h"
00046 #include "clustal/seq.h"
00047 #include "clustal/mbed.h"
00048 #include "clustal/weights.h"
00049 #include "clustal/pair_dist.h"
00050 #include "clustal/hhalign_wrapper.h"
00051 
00052 
00053 
00054 #define CLUSTERING_UNKNOWN 0
00055 #define CLUSTERING_UPGMA 1
00056 
00057 
00058 
00059 
00060 
00061 #define USE_WEIGHTS 0
00062 
00063 extern int iNumberOfThreads;
00064 
00065 
00072 typedef struct {
00073     
00074 
00075     bool bAutoOptions;
00076 
00077     
00078 
00080     char *pcDistmatInfile;
00082     char *pcDistmatOutfile;
00083     
00084     
00085 
00087     int iClusteringType;
00089     int iPairDistType;
00091     bool bUseMbed;
00093     bool bUseMbedForIteration;
00095     char *pcGuidetreeOutfile;
00097     char *pcGuidetreeInfile;
00098     
00099     
00100 
00102     char **ppcHMMInput;
00105     int iHMMInputFiles;
00106 
00107     
00108 
00110     int iNumIterations;
00112     bool bIterationsAuto;
00114     int iMaxHMMIterations;
00116     int iMaxGuidetreeIterations;
00117     
00118     hhalign_para rHhalignPara;
00119 
00120     
00121 
00122 
00123 } opts_t;
00124 
00125 
00126 
00127 extern void 
00128 PrintLongVersion(char *pcStr, int iSize);
00129 
00130 extern void
00131 SetDefaultAlnOpts(opts_t *opts);
00132 
00133 extern void
00134 FreeAlnOpts(opts_t *aln_opts);
00135 
00136 extern void
00137 AlnOptsLogicCheck(opts_t *opts);
00138 
00139 extern void
00140 PrintAlnOpts(FILE *prFile, opts_t *opts);
00141 
00142 extern void
00143 InitClustalOmega(int iNumThreadsToUse);
00144 
00145 extern void
00146 SequentialAlignmentOrder(int **piOrderLR_p, int iNumSeq);
00147 
00148 extern int
00149 AlignmentOrder(int **piOrderLR_p, double **pdSeqWeights_p, mseq_t *prMSeq,
00150                int iPairDistType, char *pcDistmatInfile, char *pcDistmatOutfile,
00151                int iClusteringType, char *pcGuidetreeInfile, char *pcGuidetreeOutfile,
00152                bool bUseMBed);
00153 
00154 extern int
00155 Align(mseq_t *prMSeq, 
00156       mseq_t *prMSeqProfile,
00157       opts_t *prOpts);
00158 
00159 extern int
00160 AlignProfiles(mseq_t *prMSeqProfile1, 
00161               mseq_t *prMSeqProfile2, hhalign_para rHhalignPara);
00162 
00163 #endif