X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=extractRef.cpp;h=2a26bce4a9970056f997a2015d951fa5c239be06;hb=5a1c0c7e480ffda84f83d224246c754a4761500f;hp=0a46de0950534ea4c22f3acb8f239de66ef8415f;hpb=9eef8b58056b7cdaad1b4bdb2b2904d9fc0ff430;p=rsem.git diff --git a/extractRef.cpp b/extractRef.cpp index 0a46de0..2a26bce 100644 --- a/extractRef.cpp +++ b/extractRef.cpp @@ -50,24 +50,24 @@ map mi_table; // mapping info table map::iterator mi_iter; //mapping info table's iterator void loadMappingInfo(char* mappingF) { - ifstream fin(mappingF); - string line, key, value; - - if (!fin.is_open()) { - fprintf(stderr, "Cannot open %s! It may not exist.\n", mappingF); - exit(-1); - } - - mi_table.clear(); - while (getline(fin, line)) { - line = cleanStr(line); - if (line[0] == '#') continue; - istringstream strin(line); - strin>>value>>key; - mi_table[key] = value; - } - - fin.close(); + ifstream fin(mappingF); + string line, key, value; + + if (!fin.is_open()) { + fprintf(stderr, "Cannot open %s! It may not exist.\n", mappingF); + exit(-1); + } + + mi_table.clear(); + while (getline(fin, line)) { + line = cleanStr(line); + if (line[0] == '#') continue; + istringstream strin(line); + strin>>value>>key; + mi_table[key] = value; + } + + fin.close(); } bool buildTranscript(int sp, int ep) { @@ -260,7 +260,6 @@ int main(int argc, char* argv[]) { ifstream fin; string line, gseq, seqname; - void* pt; chrvec.clear(); @@ -270,31 +269,31 @@ int main(int argc, char* argv[]) { for (int i = start; i < argc; i++) { fin.open(argv[i]); if (!fin.is_open()) { fprintf(stderr, "Cannot open %s! It may not exist.\n", argv[i]); exit(-1); } - pt = getline(fin, line); - while (pt != 0 && line[0] == '>') { + getline(fin, line); + while ((fin) && (line[0] == '>')) { istringstream strin(line.substr(1)); strin>>seqname; gseq = ""; - while((pt = getline(fin, line)) && line[0] != '>') { - gseq += line; - } - - size_t len = gseq.length(); - assert(len > 0); - for (size_t j = 0; j < len; j++) gseq[j] = check(gseq[j]); - - iter = sn2tr.find(seqname); - if (iter == sn2tr.end()) continue; - - chrvec.push_back(ChrInfo(seqname, len)); - - vector& vec = iter->second; - int s = vec.size(); - for (int j = 0; j < s; j++) { - assert(vec[j] > 0 && vec[j] <= M); - transcripts.getTranscriptAt(vec[j]).extractSeq(gseq, seqs[vec[j]]); - } + while((getline(fin, line)) && (line[0] != '>')) { + gseq += line; + } + + size_t len = gseq.length(); + assert(len > 0); + for (size_t j = 0; j < len; j++) gseq[j] = check(gseq[j]); + + iter = sn2tr.find(seqname); + if (iter == sn2tr.end()) continue; + + chrvec.push_back(ChrInfo(seqname, len)); + + vector& vec = iter->second; + int s = vec.size(); + for (int j = 0; j < s; j++) { + assert(vec[j] > 0 && vec[j] <= M); + transcripts.getTranscriptAt(vec[j]).extractSeq(gseq, seqs[vec[j]]); + } } fin.close(); @@ -304,8 +303,9 @@ int main(int argc, char* argv[]) { for (int i = 1; i <= M; i++) { if (seqs[i] == "") { const Transcript& transcript = transcripts.getTranscriptAt(i); - fprintf(stderr, "Cannot extract transcript %s's sequence from chromosome %s, whose information might not be provided! Please check if the chromosome directory is set correctly or the list of chromosome files is complete.\n", \ - transcript.getTranscriptID().c_str(), transcript.getGeneID().c_str()); + + fprintf(stderr, "Cannot extract transcript %s's sequence from chromosome %s! Loading chromosome %s's sequence is failed. Please check if 1) the chromosome directory is set correctly; 2) the list of chromosome files is complete; 3) the FASTA files containing chromosome sequences are not truncated or having wrong format.\n", \ + transcript.getTranscriptID().c_str(), transcript.getSeqName().c_str(), transcript.getSeqName().c_str()); exit(-1); } }