void UtilityInterface::findProteinSeqLength() { string inFilename(proteinLocation); inFilename += "/"; inFilename += rootName; inFilename += ".fasta"; //cout<<inFilename<<endl; FILE* fptr = fopen((char*) inFilename.c_str(), "r"); if (fptr == NULL) { cout << "input file: " << inFilename << " can't open" << endl; } char line[500]; fgets(line, 500, fptr); fgets(line, 500, fptr); char *pos; if ((pos=strchr(line, '\n')) != NULL){ *pos = '\0'; } proteinSeqLength = strlen(line); originalProteinSeq.resize(proteinSeqLength); for (int j = 0; j < proteinSeqLength; j++) { originalProteinSeq[j] = line[j]; } //cout<<"proteinSeqLength"<<proteinSeqLength<<endl; fclose(fptr); }
// Main function (driver). int main(int argc, char **argv) { if (argc !=3) { std::cerr << "# Usage: <execution filename> <input filename> "; std::cerr << "<output filename> \n"; std::cerr << " Example: $ a.out in.csv out.csv\n"; std::exit(1); }; // Filenames for input and output csv files. // (input: puzzle, output: solution) string inFilename(argv[1]), outFilename(argv[2]); const short size = 9; // The given size of the board of Sudoku. try { // Create a (size x size) sodoku puzzle (default: 9x9). Sudoku3 puzzle; cout << "* Created " << size << 'x' << size \ << " Sodoku puzzle." << endl; // Reading the file. cout << "* Reading the input file, " << inFilename << endl; puzzle.read(inFilename); cout << "* Solving..." << endl; if (puzzle.solve()) { cout << "* Solved, and writing to the output file, " \ << outFilename << endl; puzzle.write(outFilename); } else cout << "* Unsolvable puzzle. Nothing is written." << endl; } catch(BadSize e) { std::cerr << "* Bad size of the board (grid) is given.\n"; std::exit(1); } catch(BadInput e) { std::cerr << "* Bad input is given.\n"; std::exit(1); } catch(BadValue e) { std::cerr << "* Bad value is given in the input.\n"; std::exit(1); } catch(NoInputFile e) { std::cerr << "* File, " << inFilename << ", does not exist.\n"; std::exit(1); } catch(InvalidPuzzle e) { std::cerr << "* Given puzzle is invalid.\n"; std::cerr << " Causes: (1) Any given value is not following" \ << " the rule, or (2) any given value is not in the" \ << " range.\n"; std::exit(1); }; return 0; };
void BLANR2Json::convert() { char line[500]; int counter = 0; string inFilename(inputFileLocation); inFilename += inputFilename; FILE* fptr = fopen((char*) inFilename.c_str(), "r"); if (fptr == NULL) { cout << "input file: " << inFilename << " can't open" << endl; } BLANRResult result; while (fgets(line, 500, fptr) != NULL) { if ((strstr(line, ">") != NULL) && !result.isFirstStateReached()) { //set first block information char proteinName[7]; char* pos1 = strstr(line, ">"); sscanf(pos1 + 1, "%s", proteinName); string proteinNameStr(proteinName); result.setProteinName(proteinNameStr); while (strstr(line, "Length =") == NULL) { fgets(line, 500, fptr); //skip long name } char temp[10]; int seqLen; sscanf(line, "%s = %d", temp, &seqLen); result.setLength(seqLen); //set first state reached result.setFirstStateReached(true); } if ((strstr(line, "Score =") != NULL) && !result.isSecondStateReached()) { //set second block information float score; char* pos1 = strstr(line, "="); sscanf(pos1 + 1, "%f", &score); result.setScore(score); char* pos2 = strstr(pos1 + 1, "="); float eValue; sscanf(pos2 + 1, "%f", &eValue); result.setExpect(eValue); fgets(line, 500, fptr); pos1 = strstr(line, "("); int identities; sscanf(pos1 + 1, "%d", &identities); result.setIdentities(identities); pos2 = strstr(pos1 + 1, "("); int positives; sscanf(pos2 + 1, "%d", &positives); result.setPositives(positives); char* pos3 = strstr(pos2 + 1, "("); if (pos3 == NULL) { //there is no gaps result.setGaps(0); } else { int gaps; sscanf(pos3 + 1, "%d", &gaps); result.setGaps(gaps); } //set second state reached result.setSecondStateReached(true); } if ((strstr(line, "Query:") != NULL) && !result.isThirdStateReached()) { //set third block information int nInt1, nInt2; char var1[20], var2[20]; char tmpQuery[200]; sscanf(line, "%s %d %s %d", var1, &nInt1, tmpQuery, &nInt2); result.setQueryStart(nInt1); string tmpQueryStr(tmpQuery); result.setQuery(tmpQueryStr); result.setQueryEnd(nInt2); fgets(line, 500, fptr); string tmpLineStr(line); result.setAlignment(tmpLineStr); fgets(line, 500, fptr); char tmpSubject[200]; sscanf(line, "%s %d %s %d", var1, &nInt1, tmpSubject, &nInt2); result.setSubjectStart(nInt1); string tmpSubjectStr(tmpSubject); result.setSubject(tmpSubjectStr); result.setSubjectEnd(nInt2); //set third state reached result.setThirdStateReached(true); } if ((strstr(line, "Query:") != NULL) && result.isThirdStateReached()) { //update third block information, so in this case //query, alignment and subject should be long string //the queryEnd and subjectEnd should also be updated int nInt1, nInt2; char var1[20], var2[20]; char tmpQuery[200]; sscanf(line, "%s %d %s %d", var1, &nInt1, tmpQuery, &nInt2); string newQuery = result.getQuery(); newQuery += tmpQuery; result.setQuery(newQuery); result.setQueryEnd(nInt2); fgets(line, 500, fptr); string newAlignment = result.getAlignment(); newAlignment += line; result.setAlignment(newAlignment); fgets(line, 500, fptr); char tmpSubject[200]; sscanf(line, "%s %d %s %d", var1, &nInt1, tmpSubject, &nInt2); string newSubject = result.getSubject(); newSubject += tmpSubject; result.setSubject(newSubject); result.setSubjectEnd(nInt2); } if ((strstr(line, "Score =") != NULL) && result.isSecondStateReached()) { //first write the protein information to json BLANRResultVector.push_back(result); counter++; //then update the information and set the second state flag float score; char* pos1 = strstr(line, "="); sscanf(pos1 + 1, "%f", &score); result.setScore(score); char* pos2 = strstr(pos1 + 1, "="); float eValue; sscanf(pos2 + 1, "%f", &eValue); result.setExpect(eValue); fgets(line, 500, fptr); pos1 = strstr(line, "("); int identities; sscanf(pos1 + 1, "%d", &identities); result.setIdentities(identities); pos2 = strstr(pos1 + 1, "("); int positives; sscanf(pos2 + 1, "%d", &positives); result.setPositives(positives); char* pos3 = strstr(pos2 + 1, "("); if (pos3 == NULL) { //there is no gaps result.setGaps(0); } else { int gaps; sscanf(pos3 + 1, "%d", &gaps); result.setGaps(gaps); } result.setSecondStateReached(true); //unset the third block flag result.setThirdStateReached(false); } if ((strstr(line, ">") != NULL) && result.isFirstStateReached()) { BLANRResultVector.push_back(result); counter++; //then update the information set the first state flag char proteinName[7]; char* pos1 = strstr(line, ">"); sscanf(pos1 + 1, "%s", proteinName); string proteinNameStr(proteinName); result.setProteinName(proteinNameStr); while (strstr(line, "Length =") == NULL) { fgets(line, 500, fptr); //skip long name } char temp[10]; int seqLen; sscanf(line, "%s = %d", temp, &seqLen); result.setLength(seqLen); //unset second block flag and third block flag result.setSecondStateReached(false); result.setThirdStateReached(false); } } BLANRResultVector.push_back(result); fclose(fptr); }
void HHRNR2Json::convert() { char line[500]; int counter = 0; string inFilename(inputFileLocation); inFilename += inputFilename; FILE* inputFile = fopen((char*) inFilename.c_str(), "r"); if (inputFile == NULL) { cout << "input file: " << inFilename << " can't open" << endl; } HHRNRResult result; while (fgets(line, 200, inputFile) != NULL) { if (strstr(line, ">") != NULL) { counter++; char proteinName[7]; char* pos1 = strstr(line, ">"); sscanf(pos1 + 1, "%s", proteinName); string proteinNameStr(proteinName); result.setProteinName(proteinNameStr); while (strstr(line, "Probab=") == NULL) { fgets(line, 500, inputFile); //skip long name } //get probab, E-value, Score, Aligned_cols, Identities, Similarity, Sum_probs pos1 = strstr(line, "="); float probab; sscanf(pos1 + 1, "%f", &probab); result.setProbab(probab); char* pos2 = strstr(pos1 + 1, "="); float eValue; sscanf(pos2 + 1, "%f", &eValue); result.setExpect(eValue); char* pos3 = strstr(pos2 + 1, "="); float score; sscanf(pos3 + 1, "%f", &score); result.setScore(score); char* pos4 = strstr(pos3 + 1, "="); int alignedCols; sscanf(pos4 + 1, "%d", &alignedCols); result.setAlignedCols(alignedCols); char* pos5 = strstr(pos4 + 1, "="); float identities; sscanf(pos5 + 1, "%f", &identities); result.setIdentities(identities); char* pos6 = strstr(pos5 + 1, "="); float similarity; sscanf(pos6 + 1, "%f", &similarity); result.setSimilarities(similarity); char* pos7 = strstr(pos6 + 1, "="); float sumProbs; sscanf(pos7 + 1, "%f", &sumProbs); result.setSumProbs(sumProbs); fgets(line, 200, inputFile); //blank //get the query fgets(line, 200, inputFile); char query_ss_pred[100]; sscanf(line + 17, "%s", query_ss_pred); string strQuery_ss_pred(query_ss_pred); result.setQuerySsPred(strQuery_ss_pred); fgets(line, 200, inputFile); int queryStart; char query[100]; int queryEnd; sscanf(line + 17, "%d %s %d", &queryStart, query, &queryEnd); result.setQueryStart(queryStart); string strQuery(query); result.setQuery(strQuery); result.setQueryEnd(queryEnd); //get the Q Consensus fgets(line, 200, inputFile); int QConsensusStart; char QConsensus[100]; int QConsensusEnd; sscanf(line + 17, "%d %s %d", &QConsensusStart, QConsensus, &QConsensusEnd); string strQConsensus(QConsensus); result.setQueryConsensus(strQConsensus); //get alignment fgets(line, 200, inputFile); char alignment[100]; sscanf(line + 17, "%s", alignment); string strAlignment(alignment); result.setAlignment(strAlignment); //get the T Consensus fgets(line, 200, inputFile); int targetStart; char targetConsensus[100]; int targetEnd; sscanf(line + 17, "%d %s %d", &targetStart, targetConsensus, &targetEnd); result.setTargetStart(targetStart); string strTargetConsensus(targetConsensus); result.setTargetConsensus(strTargetConsensus); result.setTargetEnd(targetEnd); //get the Target fgets(line, 200, inputFile); char target[100]; sscanf(line + 17, "%d %s %d", &targetStart, target, &targetEnd); string strTarget(target); result.setTarget(strTarget); //get the TDssp fgets(line, 200, inputFile); char tDssp[100]; sscanf(line + 17, "%s", tDssp); string strTDssp(tDssp); result.setTargetSsDssp(strTDssp); //get the TPred fgets(line, 200, inputFile); char tPred[100]; sscanf(line + 17, "%s", tPred); string strTPred(tPred); result.setTargetSsPred(strTPred); counter++; HHRNRResultVector.push_back(result); } } fclose(inputFile); }
void HHRImpl::populateResultVector() { char line[500]; int counter = 0; string inFilename(inputFileLocation); inFilename += "/"; inFilename += rootName; inFilename += "/"; inFilename += "/query.hhr"; //cout << inFilename << endl; FILE* inputFile = fopen((char*) inFilename.c_str(), "r"); if (inputFile == NULL) { cout << "input file: " << inFilename << " can't open" << endl; } HHRResult result; while (fgets(line, 500, inputFile) != NULL) { if (strstr(line, ">") != NULL && !result.isFirstStateReached()) { //set first block information char proteinName[7]; char* pos1 = strstr(line, ">"); sscanf(pos1 + 1, "%s", proteinName); string proteinNameStr(proteinName); result.setProteinName(proteinNameStr); while (strstr(line, "Probab=") == NULL) { fgets(line, 500, inputFile); //skip long name } //get probab, E-value, Score, Aligned_cols, Identities, Similarity, Sum_probs pos1 = strstr(line, "="); float probab; sscanf(pos1 + 1, "%f", &probab); result.setProbab(probab); char* pos2 = strstr(pos1 + 1, "="); float eValue; sscanf(pos2 + 1, "%f", &eValue); result.setExpect(eValue); char* pos3 = strstr(pos2 + 1, "="); float score; sscanf(pos3 + 1, "%f", &score); result.setScore(score); char* pos4 = strstr(pos3 + 1, "="); int alignedCols; sscanf(pos4 + 1, "%d", &alignedCols); result.setAlignedCols(alignedCols); char* pos5 = strstr(pos4 + 1, "="); float identities; sscanf(pos5 + 1, "%f", &identities); result.setIdentities(identities); result.setFirstStateReached(true); } if ((strstr(line, "Q ref|") != NULL) && !result.isSecondStateReached()) { //set second block information //get the query int queryStart; char query[100]; int queryEnd; sscanf(line + 17, "%d %s %d", &queryStart, query, &queryEnd); result.setQueryStart(queryStart); string strQuery(query); result.setQuery(strQuery); result.setQueryEnd(queryEnd); //get the Q Consensus fgets(line, 200, inputFile); int QConsensusStart; char QConsensus[100]; int QConsensusEnd; sscanf(line + 17, "%d %s %d", &QConsensusStart, QConsensus, &QConsensusEnd); string strQConsensus(QConsensus); result.setQueryConsensus(strQConsensus); //get alignment fgets(line, 200, inputFile); char alignment[100]; sscanf(line + 17, "%s", alignment); string strAlignment(alignment); result.setAlignment(strAlignment); //get the T Consensus fgets(line, 200, inputFile); int targetStart; char targetConsensus[100]; int targetEnd; sscanf(line + 17, "%d %s %d", &targetStart, targetConsensus, &targetEnd); result.setTargetStart(targetStart); string strTargetConsensus(targetConsensus); result.setTargetConsensus(strTargetConsensus); result.setTargetEnd(targetEnd); //get the Target fgets(line, 200, inputFile); char target[100]; sscanf(line + 17, "%d %s %d", &targetStart, target, &targetEnd); string strTarget(target); result.setTarget(strTarget); //get the TPred fgets(line, 200, inputFile); char tPred[100]; sscanf(line + 17, "%s", tPred); string strTPred(tPred); result.setTargetSsPred(strTPred); //get the TConf fgets(line, 200, inputFile); char tConf[100]; sscanf(line + 17, "%s", tConf); string strTConf(tConf); result.setConfidence(strTConf); result.setSecondStateReached(true); } if ((strstr(line, "Q ref|") != NULL) && result.isSecondStateReached()) { //update second block information, so in this case //quert, alignment and target should be long string //the queryEnd and targetEnd should also be updated //get the query int queryStart; char query[100]; int queryEnd; sscanf(line + 17, "%d %s %d", &queryStart, query, &queryEnd); string additionalQuery(query); string newQuery = result.getQuery(); newQuery += additionalQuery; result.setQuery(newQuery); result.setQueryEnd(queryEnd); //get the Q Consensus fgets(line, 200, inputFile); int QConsensusStart; char QConsensus[100]; int QConsensusEnd; sscanf(line + 17, "%d %s %d", &QConsensusStart, QConsensus, &QConsensusEnd); string additionalQConsensus(QConsensus); string newQConsesus = result.getQueryConsensus(); newQConsesus += additionalQConsensus; result.setQueryConsensus(newQConsesus); //get alignment fgets(line, 200, inputFile); char alignment[100]; sscanf(line + 17, "%s", alignment); string additionalAlignment(alignment); string newAlignment = result.getAlignment(); newAlignment += additionalAlignment; result.setAlignment(newAlignment); //get the T Consensus fgets(line, 200, inputFile); int targetStart; char targetConsensus[100]; int targetEnd; sscanf(line + 17, "%d %s %d", &targetStart, targetConsensus, &targetEnd); string additionalTargetConsensus(targetConsensus); string newTargetConsensus = result.getTargetConsensus(); newTargetConsensus += additionalTargetConsensus; result.setTargetConsensus(newTargetConsensus); result.setTargetEnd(targetEnd); //get the Target fgets(line, 200, inputFile); char target[100]; sscanf(line + 17, "%d %s %d", &targetStart, target, &targetEnd); string additionalTarget(target); string newTarget = result.getTarget(); newTarget += additionalTarget; result.setTarget(newTarget); //get the TPred fgets(line, 200, inputFile); char tPred[100]; sscanf(line + 17, "%s", tPred); string additionalTPred(tPred); string newTPred = result.getTargetSsPred(); newTPred += additionalTPred; result.setTargetSsPred(newTPred); //get the TConf fgets(line, 200, inputFile); char tConf[100]; sscanf(line + 17, "%s", tConf); string additionalTConf(tConf); string newTConf = result.getConfidence(); newTConf += additionalTConf; result.setConfidence(newTConf); } if ((strstr(line, ">") != NULL) && result.isFirstStateReached()) { //first push the result to the vector hhrResultVector.push_back(result); //then update the information set the first state flag //set first block information char proteinName[7]; char* pos1 = strstr(line, ">"); sscanf(pos1 + 1, "%s", proteinName); string proteinNameStr(proteinName); result.setProteinName(proteinNameStr); while (strstr(line, "Probab=") == NULL) { fgets(line, 500, inputFile); //skip long name } //get probab, E-value, Score, Aligned_cols, Identities, Similarity, Sum_probs pos1 = strstr(line, "="); float probab; sscanf(pos1 + 1, "%f", &probab); result.setProbab(probab); char* pos2 = strstr(pos1 + 1, "="); float eValue; sscanf(pos2 + 1, "%f", &eValue); result.setExpect(eValue); char* pos3 = strstr(pos2 + 1, "="); float score; sscanf(pos3 + 1, "%f", &score); result.setScore(score); char* pos4 = strstr(pos3 + 1, "="); int alignedCols; sscanf(pos4 + 1, "%d", &alignedCols); result.setAlignedCols(alignedCols); char* pos5 = strstr(pos4 + 1, "="); float identities; sscanf(pos5 + 1, "%f", &identities); result.setIdentities(identities); result.setFirstStateReached(true); result.setSecondStateReached(false); } } hhrResultVector.push_back(result); fclose(inputFile); }