+ m->errorOut(e, "SummaryCommand", "parseSharedFile");
+ exit(1);
+ }
+}
+//**********************************************************************************************************************
+string SummaryCommand::createGroupSummaryFile(int numLines, int numCols, vector<string>& outputNames) {
+ try {
+
+ ofstream out;
+ string combineFileName = outputDir + m->getRootName(m->getSimpleName(globaldata->inputFileName)) + "groups.summary";
+
+ //open combined file
+ m->openOutputFile(combineFileName, out);
+
+ //open each groups summary file
+ string newLabel = "";
+ ifstream* temp;
+ map<string, ifstream*> filehandles;
+ for (int i=0; i<outputNames.size(); i++) {
+ temp = new ifstream;
+ filehandles[outputNames[i]] = temp;
+ m->openInputFile(outputNames[i], *(temp));
+
+ //read through first line - labels
+ string tempLabel;
+ if (i == 0) { //we want to save the labels to output below
+ for (int j = 0; j < numCols+1; j++) {
+ *(temp) >> tempLabel;
+
+ if (j == 1) { newLabel += "group\t" + tempLabel + '\t';
+ }else{ newLabel += tempLabel + '\t'; }
+ }
+ }else{ for (int j = 0; j < numCols+1; j++) { *(temp) >> tempLabel; } }
+
+ m->gobble(*(temp));
+ }
+
+ //output label line to new file
+ out << newLabel << endl;
+
+ //for each label
+ for (int i = 0; i < numLines; i++) {
+
+ //grab summary data for each group
+ for (int i=0; i<outputNames.size(); i++) {
+ string tempLabel;
+
+ for (int j = 0; j < numCols+1; j++) {
+ *(filehandles[outputNames[i]]) >> tempLabel;
+
+ //print to combined file
+ if (j == 1) { out << groups[i] << '\t' << tempLabel << '\t'; }
+ else{ out << tempLabel << '\t'; }
+ }
+
+ out << endl;
+ m->gobble(*(filehandles[outputNames[i]]));
+ }
+ }
+
+ //close each groups summary file
+ for (int i=0; i<outputNames.size(); i++) { (*(filehandles[outputNames[i]])).close(); remove(outputNames[i].c_str()); }
+ outputNames.clear();
+
+ out.close();
+
+ //return combine file name
+ return combineFileName;
+
+ }
+ catch(exception& e) {
+ m->errorOut(e, "SummaryCommand", "createGroupSummaryFile");