Exemplo n.º 1
0
void *t_PairAlign(void *)
{
	PairAlign a;
	int n1, n2;
	bit32_t cur_at;
	a.ImportFileFormat(read_a._file_format, read_b._file_format);
	while(1) {
		pthread_mutex_lock(&mutex_fin);
		n1=read_a.LoadBatchReads(fin_a);
		n2=read_b.LoadBatchReads(fin_b);
		cur_at=read_a._index;
		a.ImportBatchReads(n1, read_a.mreads, read_b.mreads);
		pthread_mutex_unlock(&mutex_fin);
		if(!n1||(n1!=n2))
			break;
		a.Do_Batch(ref);
		pthread_mutex_lock(&mutex_fout);
		fout<<a._str_align;
		fout_unpair<<a._str_align_unpair;
		cout<<cur_at<<" reads finished. "<<Cal_AllTime()<<" secs passed"<<endl;
		pthread_mutex_unlock(&mutex_fout);		
	}
	pthread_mutex_lock(&mutex_fout);
	n_aligned_pairs+=a.n_aligned_pairs;
	n_aligned_a+=a.n_aligned_a;
	n_aligned_b+=a.n_aligned_b;
	pthread_mutex_unlock(&mutex_fout);		
};
Exemplo n.º 2
0
void Do_SingleAlign()
{
	read_a.CheckFile(fin_a);
	SingleAlign a;
	a.ImportFileFormat(read_a._file_format);
	a.SetFlag('a');
	while(read_a.LoadBatchReads(fin_a))
	{
		a.ImportBatchReads(read_a.num, read_a.mreads);
		a.Do_Batch(ref);
		fout<<a._str_align;
		cout<<read_a._index<<" reads finished. "<<Cal_AllTime()<<" secs passed"<<endl;
	}
	n_aligned=a.n_aligned;	
};
Exemplo n.º 3
0
void *t_SingleAlign(void *)
{
	SingleAlign a;
	int n;
	bit32_t cur_at;
	a.ImportFileFormat(read_a._file_format);
	a.SetFlag('a');
	while(1)
	{
		pthread_mutex_lock(&mutex_fin);
		n=read_a.LoadBatchReads(fin_a);
		cur_at=read_a._index;
		a.ImportBatchReads(read_a.num, read_a.mreads);
		pthread_mutex_unlock(&mutex_fin);
		if(!n)
			break;
		a.Do_Batch(ref);
		pthread_mutex_lock(&mutex_fout);
		fout<<a._str_align;
		cout<<cur_at<<" reads finished. "<<Cal_AllTime()<<" secs passed"<<endl;
		pthread_mutex_unlock(&mutex_fout);		
	}
	pthread_mutex_lock(&mutex_fout);
	n_aligned+=a.n_aligned;
	pthread_mutex_unlock(&mutex_fout);
};
Exemplo n.º 4
0
void Do_PairAlign()
{
	if(param.max_snp_num>0)
		param.max_snp_num=2;
	read_a.CheckFile(fin_a);
	read_b.CheckFile(fin_b);
	
	vector<pthread_t> pthread_ids(param.num_procs);
	//create
	for(int i=0; i<param.num_procs; i++)
		pthread_create(&pthread_ids[i], NULL, t_PairAlign, NULL);
	//join
	for (int i=0; i<param.num_procs; i++)
		pthread_join(pthread_ids[i], NULL);
	//
};
Exemplo n.º 5
0
void Do_SingleAlign()
{
	read_a.CheckFile(fin_a);
	vector<pthread_t> pthread_ids(param.num_procs);
	//create
	for(int i=0; i<param.num_procs; i++)
		pthread_create(&pthread_ids[i], NULL, t_SingleAlign, NULL);
	//join
	for (int i=0; i<param.num_procs; i++)
		pthread_join(pthread_ids[i], NULL);
};
Exemplo n.º 6
0
void Do_PairAlign()
{
	if(param.max_snp_num>0)
		param.max_snp_num=2;	
	read_a.CheckFile(fin_a);
	read_b.CheckFile(fin_b);
	PairAlign a;
	int n1, n2;
	while(1)
	{
		n1=read_a.LoadBatchReads(fin_a);
		n2=read_b.LoadBatchReads(fin_b);
		if(!n1||(n1!=n2))
			break;
		a.ImportBatchReads(n1, read_a.mreads, read_b.mreads);
		a.Do_Batch(ref);		
		fout<<a._str_align;
		fout_unpair<<a._str_align_unpair;
		cout<<read_a._index<<" reads finished. "<<Cal_AllTime()<<" secs passed"<<endl;
	}	
	n_aligned_pairs=a.n_aligned_pairs;
	n_aligned_a=a.n_aligned_a;
	n_aligned_b=a.n_aligned_b;
};
Exemplo n.º 7
0
void RunProcess(void) {

    if (!query_a_file.empty())
    {
        fin_a.open(query_a_file.c_str());
        if (!fin_a)
        {
            cerr << "failed to open file: "<< query_a_file << endl;
            exit(1);
        }
    }else if (!query_q_file.empty()){
	fin_a.open(query_q_file.c_str());
	param.fin_q = true;
	if (!fin_a)
	{
	    cerr << "failed to open file: "<< query_q_file << endl;
	    exit(1);
	}
    }
    else
    {
        cerr <<"missing query file(s)\n";
        exit(1);
    }
    cerr << "Read recruitment:\n";
    cerr << "Query: " << query_a_file << "  Reference: " << ref_file << endl;
    fout.open(out_align_file.c_str());
    if (!fout)
    {
        cerr << "failed to open file: " << out_align_file << endl;
        exit(1);
    }

    unsigned int n_aligned(0); // Number of reads recruited
    read_a.InitialIndex();
    n_aligned=Do_ReadAlign();
    fin_a.close();
    fout.close();
    cerr << "Total number of reads recruited: " << n_aligned << " (" << setprecision(2) << 100.0*n_aligned/read_a._index << "%)\n";
    cerr << "Done.\n";
    cerr << "Finished at " << Curr_Time();
    cerr << "Total time consumed:  " << Cal_AllTime() << " secs\n";
}
Exemplo n.º 8
0
void RunProcess(void)
{
	//pair-end alignment
	if((!query_a_file.empty()) && (!query_b_file.empty()))
	{
		cout<<"Pair-end alignment:\n";
		cout<<"Query: "<<query_a_file<<"  "<<query_b_file<<"  Reference: "<<ref_file<<"  Output: "<<out_align_file<<"  "<<out_align_file_unpair<<endl;
		fin_a.open(query_a_file.c_str());
		if(!fin_a) {
			cerr<<"failed to open file: "<<query_a_file<<endl;
			exit(1);
		}
		fin_b.open(query_b_file.c_str());
		if(!fin_b) {
			cerr<<"failed to open file: "<<query_b_file<<endl;
			exit(1);
		}		
		fout.open(out_align_file.c_str());
		if(!fout) {
			cerr<<"failed to open file: "<<out_align_file<<endl;
			exit(1);
		}
		fout_unpair.open(out_align_file_unpair.c_str());
		if(!fout_unpair) {
			cerr<<"failed to open file: "<<out_align_file_unpair<<endl;
			exit(1);
		}
		n_aligned_pairs=n_aligned_a=n_aligned_b=0;
		read_a.InitialIndex();
		read_b.InitialIndex();
		Do_PairAlign();
		fin_a.close();
		fin_b.close();
		fout.close();
		fout_unpair.close();
		cout<<"Total number of aligned reads: \n"
			<<"pairs:       "<<n_aligned_pairs<<" ("<<setprecision(2)<<100.0*n_aligned_pairs/read_a._index<<"%)\n"
			<<"single a:    "<<n_aligned_a<<" ("<<setprecision(2)<<100.0*n_aligned_a/read_a._index<<"%)\n"
			<<"single b:    "<<n_aligned_b<<" ("<<setprecision(2)<<100.0*n_aligned_b/read_b._index<<"%)\n";
	}	
	//single-read alignment
	else
	{
		if(!query_a_file.empty()) {
			fin_a.open(query_a_file.c_str());
			if(!fin_a) {
				cerr<<"b failed to open file: "<<query_a_file<<endl;
				exit(1);
			}
		}
		else
		{
			cerr<<"missing query file(s)\n";
			exit(1);
		}
		cout<<"Single read alignment:\n";
		cout<<"Query: "<<query_a_file<<"  Reference: "<<ref_file<<"  Output: "<<out_align_file<<endl;
		fout.open(out_align_file.c_str());
		if(!fout) {
			cerr<<"failed to open file: "<<out_align_file<<endl;
			exit(1);
		}
		n_aligned=0;
		read_a.InitialIndex();
		Do_SingleAlign();
		fin_a.close();
		fout.close();
		cout<<"Total number of aligned reads: "<<n_aligned<<" ("<<setprecision(2)
		<<100.0*n_aligned/read_a._index<<"%)\n";
	}

	cout<<"Done.\n";
	cout<<"Finished at "<<Curr_Time();
	cout<<"Total time consumed:  "<<Cal_AllTime()<<" secs\n";
};