bool GuiCompareHistory::initialiseParams(std::string const &)
{
	string revstring = lyxview().currentBufferView()->buffer().lyxvc().revisionInfo(LyXVC::File);
	int rev=0;

	string tmp;
	// RCS case
	if (!isStrInt(revstring))
		revstring = rsplit(revstring, tmp , '.' );
	if (isStrInt(revstring))
		rev = convert<int>(revstring);

	okPB->setEnabled(rev);
	rev1SB->setMaximum(rev);
	rev2SB->setMaximum(rev);
	revbackSB->setMaximum(rev-1);
	rev2SB->setValue(rev);
	rev1SB->setValue(rev-1);

	//bc().setPolicy(ButtonPolicy::OkApplyCancelPolicy);
	//bc().setOK(okPB);
	//bc().setCancel(cancelPB);
	enableControls();
	return true;
}
Beispiel #2
0
void score(pcooc_vector_t ** cooc_vec_ptr,/*pcooc_vector_t * res_vec,*/global_score_type * g_scores,unsigned long mem,unsigned lagg,
           const char * testset,const char * ngramsfname,pindicator_vector_t * pairs2keep )
{
    double phase1span,phase2span;
    global_score_type gs;
   
//    cout<<"Scoring started..."<<endl;
    Crono timer;
    timer.start();
    
    pcooc_vector_t * cooc_vec=*cooc_vec_ptr;
    pcooc_vector_t * res_vec=new pcooc_vector_t(cooc_vec->nb_sub_vecs());
    cooc_vec->print_sizes();
	gs.all_occurs=cooc_vec->size();
    cout<<endl;
    cout<<"-------------------------\n"
	      "Sorting (first run)\n"
		  "-------------------------"<<endl;
    sort_by_key (cooc_vec,mem);
    timer.stop(); 

   phase1span=timer.span();
    cout<<"\nDone sorting partial sets\nPartial sorting took "<<timer.formatted_span()<<endl;
    
    cout<<"\n-------------------------\n"
	        "Merging partial sorts\n"
			"-------------------------"<<endl;
    timer.reset();
    timer.start();

	aggregation_func selector=&max_double;
	switch(lagg){
		case OCC_AGG: selector=&max_occur;break;
		case AVG_AGG: selector=&average;break;			
			
	}
    
    Merger<cooc_type> * /*pcooc_vector_t::merge_iterator*/ g_merger=new Merger<cooc_type>(cooc_vec);//->get_merge_iterator();
     
    #pragma omp parallel shared(cooc_vec,res_vec, g_merger,selector)
    {
        g_merger->init(omp_get_thread_num());
        #pragma omp barrier
        
         while(true){

            score_one_source(res_vec,g_merger,selector);
            if(!(*g_merger))
                break;
//            cout<<omp_get_thread_num()<<": "<</*g_merger.count()<<*/"\t";
        }
    }


    timer.stop();

    cout<<"Done merging in: "<<timer.formatted_span()<<endl;

    cout<<//"\n-------------------------------------------------------\n"<<
            "\nFirst run of scoring done \nFirst run, including partial sorting, took "<<
            timer.formatted_span(phase1span)<<endl;

    delete g_merger;
    delete *cooc_vec_ptr;
//    cooc_vec->clear();
	//second sort by target sentences IDs
    *cooc_vec_ptr=new pcooc_vector_t(res_vec->nb_sub_vecs());
    cooc_vec=*cooc_vec_ptr;

    phase1span+=timer.span();
    timer.reset();
    timer.start();
    cout<<"\nNumber of unique pairs: "<<res_vec->size()<<endl;
    res_vec->print_sizes();
    cout<<endl;
    cout<<"---------------------------\nResorting (second run)\n---------------------------"<<endl;
    
    sort_by_key (res_vec,mem);
    
    timer.stop();
    phase2span=timer.span();
    cout<<"\nDone sorting partial sets\nPartial sorting took "<<timer.formatted_span()<<endl;
/*+++++++++++++++++++++++++++Allow subsampling at this stage++++++++++++++++++++++++++++++++++*/    
    pngram_vector_t * ngrams=NULL;
    if(testset != NULL || ngramsfname!= NULL){    
        ngrams= new pngram_vector_t(NB_WORKERS);
		timer.reset();
        timer.start();
        
        if(ngramsfname!= NULL){
            cout<<"\n########################\n"
			        "Loading the n-gram list\n"
					"########################\n"<<endl;
            pload_ngrams(ngramsfname, ngrams);
            cout<<"Done loading n-grams!\n"<<"n-gram list loaded in ";
        }else{
            cout<<"\n########################\n"
			        "Creating the n-gram list\n"
					"########################\n"<<endl;
            pget_ngrams(testset, ngrams);
            cout<<"Done creating n-grams!\n"<<"n-gram list created in ";
        }
        timer.stop();        
        cout<<timer.formatted_span()<<endl;
        timer.reset();
        cout<<"\n------------------------\n"
		        "Sorting the n-gram list\n"
				"------------------------\n"<<endl;        
        timer.start();
        sort_unique_ngrams(ngrams,mem);
        timer.stop();
        cout<<"Sorting n-grams took "<<timer.formatted_span()<<endl;
        
        
        
        if(testset){
            cout<<"\n------------------------\n"
			        "Saving the n-gram list\n"
					"------------------------\n"<<endl;
            timer.reset();
            timer.start();
            psave_ngrams(rsplit(testset,PATH_SEP).second.append(".ngrams").c_str(),ngrams);
            timer.stop();
            cout<<"Saving n-grams took "<<timer.formatted_span()<<endl;
        }
            
        
    }
    
 /*++++++++++++++++++++++++++END of ngram creation/loading+++++++++++++++++++++++++++++++++++++*/   
    if(!ngrams)
        cout<<"\n-------------------------\n"
		        "Merging partial sorts\n"
				"-------------------------"<<endl;
    else
        cout<<"\n---------------------------------------\n"
                "Merging and sub-sampling partial sorts\n"
                "---------------------------------------"<<endl;
    
    timer.reset();
    timer.start();
    Merger<ngram_t> * /*pcooc_vector_t::merge_iterator*/ g_ngmerger=NULL;
    if(ngrams)
        g_ngmerger=new Merger<ngram_t>(ngrams);
    
    g_merger=new Merger<cooc_type>(res_vec);//itr=res_vec->get_merge_iterator(cmp_by_val);
    
	//int more=0;
    /*
    tmp_vec.clear(); 
    unsigned long 	tocc,
                  invn[3];
                      
                  cooc_type::key_type new_trgt;
                  cout<<"Merging the sorted parts\n";
     */
                  unsigned long   big_n1=0,
                  big_n2=0,big_n3=0,big_n4=0,
                  n_matches=0;
    #pragma omp parallel shared(g_merger,g_ngmerger,cooc_vec,res_vec,ngrams,pairs2keep),\
    reduction(+:big_n1),reduction(+:big_n2),reduction(+:big_n3),reduction(+:big_n4), reduction(+:n_matches)
    {
         g_merger->init(omp_get_thread_num());
         if(g_ngmerger)
             g_ngmerger->init(omp_get_thread_num());
        #pragma omp barrier

         while(true){
            n_matches+=score_one_source(cooc_vec,&big_n1,&big_n2,&big_n3,&big_n4,g_merger,g_ngmerger,pairs2keep);//score_one_source(&lock,&lq,res_vec,g_merger);
            if(!(*g_merger))
                break;
//            cout<<omp_get_thread_num()<<": "<</*g_merger.count()<<*/"\t";
        }
    }
                
    timer.stop();
    cout<<"Done merging in: "<<timer.formatted_span()<<endl;

    cout<<"Disposing unneeded resources\n";
    timer.start();
    delete g_merger;
    delete res_vec;
    if(ngrams){
        cout<<"\nNumber of matching pairs to provided ngrams: "<<n_matches<<" ("<<100*double(n_matches)/cooc_vec->size()<<"%)"<<endl;
        delete g_ngmerger;
        delete ngrams;
    }

    gs.big_n1=big_n1;
    gs.big_n2=big_n2;
    gs.big_n3=big_n3;
    gs.big_n4=big_n4;
	//cout<<"Phrases more than 4 times: "<<more<<endl;
    gs.all=cooc_vec->size();
    if(g_scores){
        if(gs.big_n1==0){
            cerr<<"Warning: N1 was found to be zero, taking N1=1!\n";
            gs.big_n1=1;
        }
        if(gs.big_n2==0){
            cerr<<"Warning: N2 was found to be zero, taking N2=1!\n";
            gs.big_n2=1;
        }
        if(gs.big_n3==0){
            cerr<<"Warning: N3 was found to be zero, taking N3=1!\n";
            gs.big_n3=1;
        }
        memcpy(g_scores,&gs,sizeof(global_score_type));
    }

    timer.stop();
    cout<<"\nSecond run of scoring done\nSecond run, including partial sorting, took "<<
            timer.formatted_span(phase2span)<<endl;
    
    cout<<"\nTwo phase phrase scoring took "<<timer.formatted_span(phase1span+phase2span)<<endl<<endl;
	//calc corresponding scores    
}