#include "aligncommand.h"
#include "referencedb.h"
-//test comment
+
//**********************************************************************************************************************
vector<string> AlignCommand::setParameters(){
try {
#else
vector<unsigned long long> positions;
- #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
+ #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
positions = m->divideFile(candidateFileNames[s], processors);
for (int i = 0; i < (positions.size()-1); i++) { lines.push_back(new linePair(positions[i], positions[(i+1)])); }
#else
lines.push_back(new linePair(0, 1000));
}else {
positions = m->setFilePosFasta(candidateFileNames[s], numFastaSeqs);
-
+ if (positions.size() < processors) { processors = positions.size(); }
+
//figure out how many sequences you have to process
int numSeqsPerProcessor = numFastaSeqs / processors;
for (int i = 0; i < processors; i++) {
}
delete candidateSeq;
- #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
+ #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
unsigned long long pos = inFASTA.tellg();
if ((pos == -1) || (pos >= filePos->end)) { break; }
#else
try {
int num = 0;
processIDS.resize(0);
-#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
+#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
int process = 1;
//loop through and create all the processes you want
if (!in.eof()) { int tempNum = 0; in >> tempNum; num += tempNum; }
in.close(); m->mothurRemove(tempFile);
- appendAlignFiles((alignFileName + toString(processIDS[i]) + ".temp"), alignFileName);
+ m->appendFiles((alignFileName + toString(processIDS[i]) + ".temp"), alignFileName);
m->mothurRemove((alignFileName + toString(processIDS[i]) + ".temp"));
appendReportFiles((reportFileName + toString(processIDS[i]) + ".temp"), reportFileName);
rename(nonBlankAccnosFiles[0].c_str(), accnosFName.c_str());
for (int h=1; h < nonBlankAccnosFiles.size(); h++) {
- appendAlignFiles(nonBlankAccnosFiles[h], accnosFName);
+ m->appendFiles(nonBlankAccnosFiles[h], accnosFName);
m->mothurRemove(nonBlankAccnosFiles[h]);
}
}else { //recreate the accnosfile if needed
else { m->mothurRemove(accnosFName); } //remove so other files can be renamed to it
for (int i = 1; i < processors; i++) {
- appendAlignFiles((alignFileName + toString(i) + ".temp"), alignFileName);
+ m->appendFiles((alignFileName + toString(i) + ".temp"), alignFileName);
m->mothurRemove((alignFileName + toString(i) + ".temp"));
appendReportFiles((reportFileName + toString(i) + ".temp"), reportFileName);
rename(nonBlankAccnosFiles[0].c_str(), accnosFName.c_str());
for (int h=1; h < nonBlankAccnosFiles.size(); h++) {
- appendAlignFiles(nonBlankAccnosFiles[h], accnosFName);
+ m->appendFiles(nonBlankAccnosFiles[h], accnosFName);
m->mothurRemove(nonBlankAccnosFiles[h]);
}
}else { //recreate the accnosfile if needed
exit(1);
}
}
-/**************************************************************************************************/
-
-void AlignCommand::appendAlignFiles(string temp, string filename) {
- try{
-
- ofstream output;
- ifstream input;
- m->openOutputFileAppend(filename, output);
- m->openInputFile(temp, input);
-
- while(char c = input.get()){
- if(input.eof()) { break; }
- else { output << c; }
- }
-
- input.close();
- output.close();
- }
- catch(exception& e) {
- m->errorOut(e, "AlignCommand", "appendAlignFiles");
- exit(1);
- }
-}
//**********************************************************************************************************************
void AlignCommand::appendReportFiles(string temp, string filename) {
while (!input.eof()) { char c = input.get(); if (c == 10 || c == 13){ break; } } // get header line
- while(char c = input.get()){
- if(input.eof()) { break; }
- else { output << c; }
- }
+ char buffer[4096];
+ while (!input.eof()) {
+ input.read(buffer, 4096);
+ output.write(buffer, input.gcount());
+ }
input.close();
output.close();