+++ /dev/null
-#include "muscle.h"\r
-#include <stdio.h>\r
-#include <ctype.h>\r
-#include "msa.h"\r
-#include "textfile.h"\r
-\r
-const unsigned FASTA_BLOCK = 60;\r
-\r
-void MSA::FromFASTAFile(TextFile &File)\r
- {\r
- Clear();\r
-\r
- FILE *f = File.GetStdioFile();\r
- \r
- unsigned uSeqCount = 0;\r
- unsigned uColCount = uInsane;\r
- for (;;)\r
- {\r
- char *Label;\r
- unsigned uSeqLength;\r
- char *SeqData = GetFastaSeq(f, &uSeqLength, &Label, false);\r
- if (0 == SeqData)\r
- break;\r
- AppendSeq(SeqData, uSeqLength, Label);\r
- }\r
- }\r
-\r
-void MSA::ToFASTAFile(TextFile &File) const\r
- {\r
- const unsigned uColCount = GetColCount();\r
- assert(uColCount > 0);\r
- const unsigned uLinesPerSeq = (GetColCount() - 1)/FASTA_BLOCK + 1;\r
- const unsigned uSeqCount = GetSeqCount();\r
-\r
- for (unsigned uSeqIndex = 0; uSeqIndex < uSeqCount; ++uSeqIndex)\r
- {\r
- File.PutString(">");\r
- File.PutString(GetSeqName(uSeqIndex));\r
- File.PutString("\n");\r
-\r
- unsigned n = 0;\r
- for (unsigned uLine = 0; uLine < uLinesPerSeq; ++uLine)\r
- {\r
- unsigned uLetters = uColCount - uLine*FASTA_BLOCK;\r
- if (uLetters > FASTA_BLOCK)\r
- uLetters = FASTA_BLOCK;\r
- for (unsigned i = 0; i < uLetters; ++i)\r
- {\r
- char c = GetChar(uSeqIndex, n);\r
- File.PutChar(c);\r
- ++n;\r
- }\r
- File.PutChar('\n');\r
- }\r
- }\r
- }\r