3 #include "textfile.h"
\r
5 const int BLOCKSIZE = 60;
\r
7 static char FixChar(char c)
\r
25 static void FixName(char Name[])
\r
27 while (char c = *Name)
\r
28 *Name++ = FixChar(c);
\r
31 void MSA::ToPhySequentialFile(TextFile &File) const
\r
33 const unsigned SeqCount = GetSeqCount();
\r
34 const unsigned ColCount = GetColCount();
\r
36 File.PutFormat("%d %d\n", SeqCount, ColCount);
\r
41 for (unsigned Seq = 0; Seq < SeqCount; ++Seq)
\r
44 const char *ptrName = GetSeqName(Seq);
\r
45 size_t n = strlen(ptrName);
\r
48 memcpy(Name, ptrName, n);
\r
51 File.PutFormat("%-10.10s", Name);
\r
57 const unsigned MaxCols = (BlockIndex == 0) ? (BLOCKSIZE - 10) : BLOCKSIZE;
\r
58 for (unsigned ColsThisBlock = 0; ColsThisBlock < MaxCols; ++ColsThisBlock)
\r
60 if (Col == ColCount)
\r
62 if (ColsThisBlock%10 == 0 && (BlockIndex == 0 || ColsThisBlock > 0))
\r
64 char c = GetChar(Seq, Col);
\r
71 if (Col == ColCount)
\r
78 void MSA::ToPhyInterleavedFile(TextFile &File) const
\r
80 const unsigned SeqCount = GetSeqCount();
\r
81 const unsigned ColCount = GetColCount();
\r
83 File.PutFormat("%d %d\n", SeqCount, ColCount);
\r
91 const unsigned ColBlockStart = Col;
\r
92 const unsigned MaxCols = (ColBlockStart == 0) ? (BLOCKSIZE - 10) : BLOCKSIZE;
\r
94 for (unsigned Seq = 0; Seq < SeqCount; ++Seq)
\r
96 if (0 == ColBlockStart)
\r
99 const char *ptrName = GetSeqName(Seq);
\r
100 size_t n = strlen(ptrName);
\r
103 memcpy(Name, ptrName, n);
\r
106 File.PutFormat("%-10.10s", Name);
\r
109 Col = ColBlockStart;
\r
110 for (unsigned ColsThisBlock = 0; ColsThisBlock < MaxCols; ++ColsThisBlock)
\r
112 if (Col == ColCount)
\r
114 if (ColsThisBlock%10 == 0 && (0 == ColBlockStart || ColsThisBlock > 0))
\r
116 char c = GetChar(Seq, Col);
\r
122 File.PutChar('\n');
\r
124 if (Col == ColCount)
\r
126 File.PutChar('\n');
\r