www.pudn.com > Genecircus20070919.rar > shuffle_get_pvalue.cpp
// shuffle_get_pvalue.cpp: implementation of the shuffle_get_pvalue class.
//
//////////////////////////////////////////////////////////////////////
#include "shuffle_get_pvalue.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
shuffle_get_pvalue::shuffle_get_pvalue()
{
shuffle_direct = true;
shuffle_times = 10000;
obj_index = -1;
}
shuffle_get_pvalue::~shuffle_get_pvalue()
{
}
void shuffle_get_pvalue::select_pvalue()
{
}
void shuffle_get_pvalue::random_shuffle()
{
if(micro_set->micro_set.size() == 0)
return;
if(calcu_mi->number == 0)
return;
typedef std ::vector T;
T temp;
if(calcu_mi->gene_matrix_for_calcu_mi->pvalue.size() != 0){
for(int i = 0;i< calcu_mi->gene_matrix_for_calcu_mi->pvalue.size(); i++){
calcu_mi->gene_matrix_for_calcu_mi->pvalue[i].clear();
}
calcu_mi->gene_matrix_for_calcu_mi->pvalue.clear();
for(int i = 0;i< micro_set->micro_set.size(); i++){
p i_pvalue;
calcu_mi->gene_matrix_for_calcu_mi->pvalue.push_back(i_pvalue);
}
}
else{
for(int i = 0;i< micro_set->micro_set.size(); i++){
p i_pvalue;
calcu_mi->gene_matrix_for_calcu_mi->pvalue.push_back(i_pvalue);
}
}
micro_set->micro_set = micro_set->micro_set1;
if(shuffle_direct == true){
int time = 0;
time = this->shuffle_times;
while(time != 0){
unsigned int setsize = micro_set->micro_set.size();
for(unsigned int i = rand()%(calcu_mi->number);i < calcu_mi->number;i = i+rand()%(10)){
unsigned int j = 0;
while( j < setsize){
double a = micro_set->micro_set[j].a_micro[i].val;
j++;
temp.push_back(a);
}
std::random_shuffle(temp.begin(),temp.end());
j = 0;
while( j < setsize ){
double a = temp.back();
temp.pop_back();
micro_set->micro_set[j].a_micro[i].val = a;
j++;
}
}
temp.clear();times = time;
time--;
compution_mi(setsize);
}
this->calcu_mi->Getresult(obj_index);
}
else{
int time = 0;
time = this->shuffle_times;
wxString time_begin = wxNow();
while(time != 0){
unsigned int setsize = micro_set->micro_set.size();
for(unsigned int i = 0; i< setsize;i++){
std::random_shuffle(micro_set->micro_set[i].a_micro.begin(),micro_set->micro_set[i].a_micro.end());
}
time--;
compution_mi(setsize);
}
wxString time_end = wxNow();time_begin = time_begin+'\n'+time_end;
wxMessageBox(time_begin);
this->calcu_mi->Getresult(obj_index);
}
}
double shuffle_get_pvalue::compution_mi(int setsize)
{
if(obj_index != -1){
int i = obj_index;
int j = 0;
while( j < setsize ){
this->calcu_mi->get_GenePairs_Mi(i,j,false);
j++;
}
}
return 0.0;
}