]> git.donarmstrong.com Git - rsem.git/blobdiff - synthesisRef.cpp
Updated samtools to 0.1.19
[rsem.git] / synthesisRef.cpp
index 005cf95fee33e1031077a5993b1c771f1e4d6579..aa0d473b6537088fcb820f246de9898fa1864ef4 100644 (file)
@@ -17,8 +17,8 @@ int M;
 map<string, string> name2seq;
 map<string, string>::iterator iter;
 
-Transcripts transcripts;
-char groupF[STRLEN], tiF[STRLEN], refFastaF[STRLEN];
+Transcripts transcripts(1); // no genome, just transcript set
+char groupF[STRLEN], tiF[STRLEN], refFastaF[STRLEN], chromListF[STRLEN];
 
 bool hasMappingFile;
 char mappingFile[STRLEN];
@@ -56,12 +56,13 @@ char check(char c) {
 }
 
 void writeResults(char* refName) {
-       ofstream fout;
+       ofstream fout, fout2;
        string cur_gene_id, name;
 
        sprintf(groupF, "%s.grp", refName);
        sprintf(tiF, "%s.ti", refName);
        sprintf(refFastaF, "%s.transcripts.fa", refName);
+       sprintf(chromListF, "%s.chrlist", refName);
 
        transcripts.writeTo(tiF);
        if (verbose) { printf("Transcript Information File is generated!\n"); }
@@ -79,7 +80,7 @@ void writeResults(char* refName) {
        fout.close();
        if (verbose) { printf("Group File is generated!\n"); }
 
-       // We have to generate this .transcripts.fa, even reference_file is only one. Reason : polyA choice 2, need ">transcript_id"
+       fout2.open(chromListF);
        fout.open(refFastaF);
        for (int i = 1; i <= M; i++) {
                name = transcripts.getTranscriptAt(i).getTranscriptID();
@@ -90,13 +91,20 @@ void writeResults(char* refName) {
                }
                fout<<">"<<name<<endl;
                fout<<iter->second<<endl;
+
+               fout2<<name<<'\t'<<iter->second.length()<<endl;
        }
        fout.close();
-       if (verbose) { printf("Extracted Sequences File is generated!\n"); }
+       fout2.close();
+       
+       if (verbose) { 
+         printf("Chromosome List File is generated!\n"); 
+         printf("Extracted Sequences File is generated!\n"); 
+       }
 }
 
 int main(int argc, char* argv[]) {
-       if (argc < 5 || (hasMappingFile = atoi(argv[3])) && argc < 6) {
+  if (argc < 5 || ((hasMappingFile = atoi(argv[3])) && argc < 6)) {
                printf("Usage: synthesisRef refName quiet hasMappingFile [mappingFile] reference_file_1 [reference_file_2 ...]\n");
                exit(-1);
        }
@@ -110,7 +118,6 @@ int main(int argc, char* argv[]) {
        ifstream fin;
        string line, gseq;
        string seqname, gene_id;
-       void* pt;
 
        vector<Interval> vec;
 
@@ -119,13 +126,13 @@ 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] != '>') {
+                       while((getline(fin, line)) && (line[0] != '>')) {
                            gseq += line;
                        }