diff --git a/src/ROCKparams.cpp b/src/ROCKparams.cpp index 680bb6e1c74c400847e801569284b803906452fe..f46477b05fee568e016a00ae540b0888b6393d73 100755 --- a/src/ROCKparams.cpp +++ b/src/ROCKparams.cpp @@ -324,7 +324,7 @@ void ROCKparams::initFromMainOptsArgs(int argc,char ** argv) { // static int PE_separately=1; float proba=k_max_collision_proba; - while((i = getopt(argc, argv, "i:o:l:k:c:C:n:vhq:m:f:")) != -1) { + while((i = getopt(argc, argv, "i:o:l:k:c:C:n:vhpq:m:f:")) != -1) { switch(i) { case 0: break; @@ -369,6 +369,9 @@ void ROCKparams::initFromMainOptsArgs(int argc,char ** argv) { char * t; //cout<<optarg<<endl; nb_k_mers=strtoul(optarg,&t,10);break; // number of distinct k-mers + case 'p': + process_PE_separately=1; + break; case 'v': verbose_mode=1; break; diff --git a/src/ROCKparams.h b/src/ROCKparams.h index bea282b6eb4f6fe9b215ba7898f0b6daf9a30f9f..137a638c804fb70d9e48bf374082c552df6f19be 100755 --- a/src/ROCKparams.h +++ b/src/ROCKparams.h @@ -70,6 +70,7 @@ class ROCKparams{ unsigned long nb_k_mers; // expected number of k-mers in input data if specified by the user. int k; // size of the k-mers int verbose_mode; + int process_PE_separately; std::string input_file,output_file; std::vector<IO_fq_files> single_files; @@ -119,6 +120,7 @@ public: qual_thres.nucl_score_threshold=k_phred_32; qual_thres.k=k; verbose_mode=0; + process_PE_separately=0; cms_size=0; expected_collision_proba=0.0; //! collision probability that is computed at the beginning of ROCK from the expected number of distinct k-mers provided by the user. parms.max_filter_size=getNodePhysMemory()/100.0*90-defaultGRPMAXSize; // Prefer not to use all the machine's memory diff --git a/src/read_utils.cpp b/src/read_utils.cpp index 7f71a4f1bf94fab0bfa93e2ecfbdd1b3a6bcdf75..5770ce6c8d724842fc43d09c1fe61332eb2ab47b 100644 --- a/src/read_utils.cpp +++ b/src/read_utils.cpp @@ -149,7 +149,7 @@ void getDNASeqstr(FqBaseBackend* fq_files_be [], } -void decomposeReadInKMerNums(ReadProcessor& read_p, T_read_numericValues& nbrKmerDecompo,int k,DnaSeqStr a_seqs[2]) { +void decomposeReadInKMerNums(ReadProcessor& read_p, T_read_numericValues& nbrKmerDecompo,int k,DnaSeqStr a_seqs[2], int process_PE_separately) { int nb_expected_k_mers,nb_expected_k_mers_PE1,nb_expected_k_mers_PE2=0; nb_expected_k_mers_PE1=a_seqs[0].length+1-k; nbrKmerDecompo.idx_start_PE2=0; @@ -162,7 +162,7 @@ void decomposeReadInKMerNums(ReadProcessor& read_p, T_read_numericValues& nbrKme read_p.getKMerNumbers(start_dna_str,a_seqs[0].length,nbrKmerDecompo.single_or_PE_val); if (a_seqs[1].length) { // case of PE reads - nbrKmerDecompo.idx_start_PE2=nb_expected_k_mers_PE1; + if (process_PE_separately) nbrKmerDecompo.idx_start_PE2=nb_expected_k_mers_PE1; start_dna_str=a_seqs[1].fq_record_buf+a_seqs[1].start_idx; read_p.getKMerNumbers(start_dna_str,a_seqs[1].length,nbrKmerDecompo.single_or_PE_val); } diff --git a/src/read_utils.h b/src/read_utils.h index aaf064f60a3308ea1054a94fea9302b1ef1485dc..c9b6aecf0cbd607973d7b01d2d432bcc6da7f99e 100644 --- a/src/read_utils.h +++ b/src/read_utils.h @@ -36,6 +36,6 @@ void getDNASeqstr(FqBaseBackend* [], void init_DnaSeqStr(DnaSeqStr * dna_seq); -void decomposeReadInKMerNums(ReadProcessor& read_p, T_read_numericValues& nbrKmerDecompo,int k,DnaSeqStr a_seqs[2]); +void decomposeReadInKMerNums(ReadProcessor& read_p, T_read_numericValues& nbrKmerDecompo,int k,DnaSeqStr a_seqs[2],int process_PE_separately=0); #endif /* READ_UTILS_H_ */