]> git.donarmstrong.com Git - mothur.git/blobdiff - uchime_src/out.h
added uchime_src folder. added biom parameter to make.shared. added biom as a current...
[mothur.git] / uchime_src / out.h
diff --git a/uchime_src/out.h b/uchime_src/out.h
new file mode 100644 (file)
index 0000000..4ca50c7
--- /dev/null
@@ -0,0 +1,134 @@
+#ifndef out_h\r
+#define out_h\r
+\r
+#include "seq.h"\r
+#include "hsp.h"\r
+#include "orf.h"\r
+#include "path.h"\r
+#include <float.h>\r
+\r
+struct AlnData\r
+       {\r
+/***\r
+SA.Seq and SB.Seq align.\r
+Reverse strand stuff for nucleotides is handled like this:\r
+       SA.RevComp must be false.\r
+       If SB.RevComp is true, then SA.Seq is r.c.'d relative to the sequence in\r
+       the input file (query or db). If so, coordinates in HSP refer to SB.Seq\r
+       so are also r.c.'d relative to the original sequence.\r
+***/\r
+       SeqData SA;\r
+       SeqData SB;\r
+       HSPData HSP;\r
+       const char *Path;\r
+       char IdDesc[256];\r
+\r
+       float FractId;\r
+       float RawScore;\r
+       float BitScore;\r
+       float Evalue;\r
+\r
+       void LogMe() const\r
+               {\r
+               Log("AD: ");\r
+               HSP.LogMe();\r
+               Log(" %s,%s\n", SA.Label, SB.Label);\r
+               }\r
+       };\r
+\r
+bool OnDerepHit(const SeqData &SA, const SeqData &SB);\r
+\r
+bool OnLocalUngappedHit(const SeqData &SA, const SeqData &SB,\r
+  const HSPData &HSP, float &Evalue, float &FractId);\r
+\r
+bool OnLocalGappedHit(const SeqData &SA, const SeqData &SB,\r
+  const HSPData &HSP, const PathData &PD, float &Evalue, float &FractId);\r
+\r
+bool OnGlobalHit(const SeqData &SA, const SeqData &SB, const PathData &PD,\r
+  float &FractId);\r
+\r
+void OnReject(const SeqData &SA, const SeqData &SB, double FractId,\r
+  const char *Path);\r
+\r
+void OnNotMatched(const char *Label, unsigned L);\r
+void OnNewCluster(unsigned ClusterIndex, const char *Label, unsigned L);\r
+void OnNewLibCluster(unsigned ClusterIndex, const char *Label, unsigned L);\r
+void OnLibCluster(unsigned ClusterIndex, unsigned Size, double AvgId,\r
+  const char *Label);\r
+void OnNewCluster(unsigned ClusterIndex, unsigned Size, double AvgId,\r
+  const char *Label);\r
+void OnChainCov(const SeqData &NucleoSD, const SeqData &TargetSD,\r
+  float Score, float ChainCov);\r
+\r
+void SetUserFieldIndexes(const string &s);\r
+\r
+void BlastOut(FILE *f, const AlnData &AD);\r
+void Blast6Out(FILE *f, const AlnData &AD);\r
+void FastaPairOut(FILE *f, const AlnData &AD);\r
+void UserOut(FILE *f, const AlnData &AD);\r
+\r
+void BlastOutORF(FILE *f, const AlnData &AD);\r
+\r
+void OpenOutputFiles();\r
+void CloseOutputFiles();\r
+void SetLibSeedCount(unsigned DBSeqCount);\r
+const char *UserFieldIndexToStr(unsigned i);\r
+\r
+extern float **g_SubstMx;\r
+\r
+static char g_IdChar = '|';\r
+static char g_DiffChar = ' ';\r
+\r
+static inline char GetSymN(byte Letter1, byte Letter2)\r
+       {\r
+       Letter1 = toupper(Letter1);\r
+       Letter2 = toupper(Letter2);\r
+       if (Letter1 == Letter2)\r
+               return g_IdChar;\r
+       return g_DiffChar;\r
+       }\r
+\r
+static inline char GetSymA(byte Letter1, byte Letter2)\r
+       {\r
+       Letter1 = toupper(Letter1);\r
+       Letter2 = toupper(Letter2);\r
+       if (Letter1 == Letter2)\r
+               return '|';\r
+\r
+       float Score = g_SubstMx[Letter1][Letter2];\r
+       if (Score >= 2.0f)\r
+               return ':';\r
+       if (Score > 0.0f)\r
+               return '.';\r
+       return ' ';\r
+       }\r
+\r
+static inline char GetSym(byte Letter1, byte Letter2, bool Nucleo)\r
+       {\r
+       if (Nucleo)\r
+               return GetSymN(Letter1, Letter2);\r
+       else\r
+               return GetSymA(Letter1, Letter2);\r
+       }\r
+\r
+static unsigned GetNDig(unsigned n)\r
+       {\r
+       if (n < 10)\r
+               return 1;\r
+       if (n < 100)\r
+               return 2;\r
+       if (n < 1000)\r
+               return 3;\r
+       if (n < 10000)\r
+               return 4;\r
+       if (n < 100000)\r
+               return 5;\r
+       if (n < 1000000)\r
+               return 6;\r
+       return 10;\r
+       }\r
+\r
+extern unsigned *g_UserFieldIndexes;\r
+extern unsigned g_UserFieldCount;\r
+\r
+#endif // out_h\r