From 9aa9f76cb16a0e71fea19dd125761034aaca4fd4 Mon Sep 17 00:00:00 2001 From: xiangzhou Date: Mon, 22 Sep 2014 11:12:46 -0400 Subject: version 0.95alpha --- gemma.cpp | 1864 ------------------------------------------------------------- 1 file changed, 1864 deletions(-) delete mode 100644 gemma.cpp (limited to 'gemma.cpp') diff --git a/gemma.cpp b/gemma.cpp deleted file mode 100644 index b8693a8..0000000 --- a/gemma.cpp +++ /dev/null @@ -1,1864 +0,0 @@ -/* - Genome-wide Efficient Mixed Model Association (GEMMA) - Copyright (C) 2011 Xiang Zhou - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include -#include -#include -#include -#include -#include -#include - -#include "gsl/gsl_vector.h" -#include "gsl/gsl_matrix.h" -#include "gsl/gsl_linalg.h" -#include "gsl/gsl_blas.h" -#include "gsl/gsl_eigen.h" -#include "gsl/gsl_cdf.h" - -#include "lapack.h" //for functions EigenDecomp - -#ifdef FORCE_FLOAT -#include "io_float.h" //for function ReadFile_kin -#include "gemma_float.h" -#include "vc_float.h" -#include "lm_float.h" //for LM class -#include "bslmm_float.h" //for BSLMM class -#include "lmm_float.h" //for LMM class, and functions CalcLambda, CalcPve, CalcVgVe -#include "mvlmm_float.h" //for MVLMM class -#include "prdt_float.h" //for PRDT class -#include "mathfunc_float.h" //for a few functions -#else -#include "io.h" -#include "gemma.h" -#include "vc.h" -#include "lm.h" -#include "bslmm.h" -#include "lmm.h" -#include "mvlmm.h" -#include "prdt.h" -#include "mathfunc.h" -#endif - - -using namespace std; - - - -GEMMA::GEMMA(void): -version("0.95alpha"), date("08/08/2014"), year("2011") -{} - -void GEMMA::PrintHeader (void) -{ - cout< indicator_all; - size_t c_bv=0; - for (size_t i=0; isize; i++) { - d=gsl_vector_get(y_prdt, i); - d=gsl_cdf_gaussian_P(d, 1.0); - gsl_vector_set(y_prdt, i, d); - } - } - - - cPRDT.CopyToParam(cPar); - - cPRDT.WriteFiles(y_prdt); - - gsl_vector_free(y_prdt); - } - - - //Prediction with kinship matrix only; for one or more phenotypes - if (cPar.a_mode==43) { - //first, use individuals with full phenotypes to obtain estimates of Vg and Ve - gsl_matrix *Y=gsl_matrix_alloc (cPar.ni_test, cPar.n_ph); - gsl_matrix *W=gsl_matrix_alloc (Y->size1, cPar.n_cvt); - gsl_matrix *G=gsl_matrix_alloc (Y->size1, Y->size1); - gsl_matrix *U=gsl_matrix_alloc (Y->size1, Y->size1); - gsl_matrix *UtW=gsl_matrix_alloc (Y->size1, W->size2); - gsl_matrix *UtY=gsl_matrix_alloc (Y->size1, Y->size2); - gsl_vector *eval=gsl_vector_alloc (Y->size1); - - gsl_matrix *Y_full=gsl_matrix_alloc (cPar.ni_cvt, cPar.n_ph); - gsl_matrix *W_full=gsl_matrix_alloc (Y_full->size1, cPar.n_cvt); - //set covariates matrix W and phenotype matrix Y - //an intercept should be included in W, - cPar.CopyCvtPhen (W, Y, 0); - cPar.CopyCvtPhen (W_full, Y_full, 1); - - gsl_matrix *Y_hat=gsl_matrix_alloc (Y_full->size1, cPar.n_ph); - gsl_matrix *G_full=gsl_matrix_alloc (Y_full->size1, Y_full->size1); - gsl_matrix *H_full=gsl_matrix_alloc (Y_full->size1*Y_hat->size2, Y_full->size1*Y_hat->size2); - - //read relatedness matrix G, and matrix G_full - ReadFile_kin (cPar.file_kin, cPar.indicator_idv, cPar.mapID2num, cPar.k_mode, cPar.error, G); - if (cPar.error==true) {cout<<"error! fail to read kinship/relatedness file. "<size; i++) { - if (gsl_vector_get (eval, i)<1e-10) {gsl_vector_set (eval, i, 0);} - cPar.trace_G+=gsl_vector_get (eval, i); - } - cPar.trace_G/=(double)eval->size; - cPar.time_eigen=(clock()-time_start)/(double(CLOCKS_PER_SEC)*60.0); - - //calculate UtW and Uty - CalcUtX (U, W, UtW); - CalcUtX (U, Y, UtY); - - //calculate variance component and beta estimates - //and then obtain predicted values - if (cPar.n_ph==1) { - gsl_vector *beta=gsl_vector_alloc (W->size2); - gsl_vector *se_beta=gsl_vector_alloc (W->size2); - - double lambda, logl, vg, ve; - gsl_vector_view UtY_col=gsl_matrix_column (UtY, 0); - - //obtain estimates - CalcLambda ('R', eval, UtW, &UtY_col.vector, cPar.l_min, cPar.l_max, cPar.n_region, lambda, logl); - CalcLmmVgVeBeta (eval, UtW, &UtY_col.vector, lambda, vg, ve, beta, se_beta); - - cout<<"REMLE estimate for vg in the null model = "<size1; i++) { - for (size_t j=0; j<=i; j++) { - cout<size1; i++) { - for (size_t j=0; j<=i; j++) { - cout<size1; i++) { - for (size_t j=i; jsize2; j++) { - cPar.Vg_remle_null.push_back(gsl_matrix_get (Vg, i, j) ); - cPar.Ve_remle_null.push_back(gsl_matrix_get (Ve, i, j) ); - } - } - - //obtain Y_hat from fixed effects - gsl_blas_dgemm (CblasNoTrans, CblasTrans, 1.0, W_full, B, 0.0, Y_hat); - - //obtain H - KroneckerSym(G_full, Vg, H_full); - for (size_t i=0; isize1; i++) { - gsl_matrix_view H_sub=gsl_matrix_submatrix (H_full, i*Ve->size1, i*Ve->size2, Ve->size1, Ve->size2); - gsl_matrix_add (&H_sub.matrix, Ve); - } - - //free matrices - gsl_matrix_free (Vg); - gsl_matrix_free (Ve); - gsl_matrix_free (B); - gsl_matrix_free (se_B); - } - - PRDT cPRDT; - - cPRDT.CopyFromParam(cPar); - - cout<<"Predicting Missing Phentypes ... "<size1, cPar.n_cvt); - - //set covariates matrix W and phenotype matrix Y - //an intercept should be included in W, - cPar.CopyCvtPhen (W, Y, 0); - - //Fit LM or mvLM - if (cPar.n_ph==1) { - LM cLm; - cLm.CopyFromParam(cPar); - - gsl_vector_view Y_col=gsl_matrix_column (Y, 0); - - if (!cPar.file_gene.empty()) { - cLm.AnalyzeGene (W, &Y_col.vector); //y is the predictor, not the phenotype - } else if (!cPar.file_bfile.empty()) { - cLm.AnalyzePlink (W, &Y_col.vector); - } else { - cLm.AnalyzeBimbam (W, &Y_col.vector); - } - - cLm.WriteFiles(); - cLm.CopyToParam(cPar); - } - /* - else { - MVLM cMvlm; - cMvlm.CopyFromParam(cPar); - - if (!cPar.file_bfile.empty()) { - cMvlm.AnalyzePlink (W, Y); - } else { - cMvlm.AnalyzeBimbam (W, Y); - } - - cMvlm.WriteFiles(); - cMvlm.CopyToParam(cPar); - } - */ - //release all matrices and vectors - gsl_matrix_free (Y); - gsl_matrix_free (W); - } - - - //VC estimation with one or multiple kinship matrices - //REML approach only - //if file_kin or file_ku/kd is provided, then a_mode is changed to 5 already, in param.cpp - //for one phenotype only; - if (cPar.a_mode==61) { - gsl_matrix *Y=gsl_matrix_alloc (cPar.ni_test, cPar.n_ph); - gsl_matrix *W=gsl_matrix_alloc (Y->size1, cPar.n_cvt); - gsl_matrix *G=gsl_matrix_alloc (Y->size1, Y->size1*cPar.n_vc ); - - //set covariates matrix W and phenotype matrix Y - //an intercept should be included in W, - cPar.CopyCvtPhen (W, Y, 0); - - //read kinship matrices - if (!(cPar.file_mk).empty()) { - ReadFile_mk (cPar.file_mk, cPar.indicator_idv, cPar.mapID2num, cPar.k_mode, cPar.error, G); - if (cPar.error==true) {cout<<"error! fail to read kinship/relatedness file. "<size1, G->size1, G->size1); - CenterMatrix (&G_sub.matrix); - d=0; - for (size_t j=0; jsize1; j++) { - d+=gsl_matrix_get (&G_sub.matrix, j, j); - } - d/=(double)G->size1; - (cPar.v_traceG).push_back(d); - } - } else if (!(cPar.file_kin).empty()) { - ReadFile_kin (cPar.file_kin, cPar.indicator_idv, cPar.mapID2num, cPar.k_mode, cPar.error, G); - if (cPar.error==true) {cout<<"error! fail to read kinship/relatedness file. "<size1; j++) { - d+=gsl_matrix_get (G, j, j); - } - d/=(double)G->size1; - (cPar.v_traceG).push_back(d); - } - /* - //eigen-decomposition and calculate trace_G - cout<<"Start Eigen-Decomposition..."<size; i++) { - if (gsl_vector_get (eval, i)<1e-10) {gsl_vector_set (eval, i, 0);} - cPar.trace_G+=gsl_vector_get (eval, i); - } - cPar.trace_G/=(double)eval->size; - - cPar.time_eigen=(clock()-time_start)/(double(CLOCKS_PER_SEC)*60.0); - } else { - ReadFile_eigenU (cPar.file_ku, cPar.error, U); - if (cPar.error==true) {cout<<"error! fail to read the U file. "<size; i++) { - if (gsl_vector_get(eval, i)<1e-10) {gsl_vector_set(eval, i, 0);} - cPar.trace_G+=gsl_vector_get(eval, i); - } - cPar.trace_G/=(double)eval->size; - } - */ - //fit multiple variance components - if (cPar.n_ph==1) { - // if (cPar.n_vc==1) { - /* - //calculate UtW and Uty - CalcUtX (U, W, UtW); - CalcUtX (U, Y, UtY); - - gsl_vector_view beta=gsl_matrix_row (B, 0); - gsl_vector_view se_beta=gsl_matrix_row (se_B, 0); - gsl_vector_view UtY_col=gsl_matrix_column (UtY, 0); - - CalcLambda ('L', eval, UtW, &UtY_col.vector, cPar.l_min, cPar.l_max, cPar.n_region, cPar.l_mle_null, cPar.logl_mle_H0); - CalcLmmVgVeBeta (eval, UtW, &UtY_col.vector, cPar.l_mle_null, cPar.vg_mle_null, cPar.ve_mle_null, &beta.vector, &se_beta.vector); - - cPar.beta_mle_null.clear(); - cPar.se_beta_mle_null.clear(); - for (size_t i=0; isize2; i++) { - cPar.beta_mle_null.push_back(gsl_matrix_get(B, 0, i) ); - cPar.se_beta_mle_null.push_back(gsl_matrix_get(se_B, 0, i) ); - } - - CalcLambda ('R', eval, UtW, &UtY_col.vector, cPar.l_min, cPar.l_max, cPar.n_region, cPar.l_remle_null, cPar.logl_remle_H0); - CalcLmmVgVeBeta (eval, UtW, &UtY_col.vector, cPar.l_remle_null, cPar.vg_remle_null, cPar.ve_remle_null, &beta.vector, &se_beta.vector); - cPar.beta_remle_null.clear(); - cPar.se_beta_remle_null.clear(); - for (size_t i=0; isize2; i++) { - cPar.beta_remle_null.push_back(gsl_matrix_get(B, 0, i) ); - cPar.se_beta_remle_null.push_back(gsl_matrix_get(se_B, 0, i) ); - } - - CalcPve (eval, UtW, &UtY_col.vector, cPar.l_remle_null, cPar.trace_G, cPar.pve_null, cPar.pve_se_null); - cPar.PrintSummary(); - - //calculate and output residuals - if (cPar.a_mode==5) { - gsl_vector *Utu_hat=gsl_vector_alloc (Y->size1); - gsl_vector *Ute_hat=gsl_vector_alloc (Y->size1); - gsl_vector *u_hat=gsl_vector_alloc (Y->size1); - gsl_vector *e_hat=gsl_vector_alloc (Y->size1); - gsl_vector *y_hat=gsl_vector_alloc (Y->size1); - - //obtain Utu and Ute - gsl_vector_memcpy (y_hat, &UtY_col.vector); - gsl_blas_dgemv (CblasNoTrans, -1.0, UtW, &beta.vector, 1.0, y_hat); - - double d, u, e; - for (size_t i=0; isize; i++) { - d=gsl_vector_get (eval, i); - u=cPar.l_remle_null*d/(cPar.l_remle_null*d+1.0)*gsl_vector_get(y_hat, i); - e=1.0/(cPar.l_remle_null*d+1.0)*gsl_vector_get(y_hat, i); - gsl_vector_set (Utu_hat, i, u); - gsl_vector_set (Ute_hat, i, e); - } - - //obtain u and e - gsl_blas_dgemv (CblasNoTrans, 1.0, U, Utu_hat, 0.0, u_hat); - gsl_blas_dgemv (CblasNoTrans, 1.0, U, Ute_hat, 0.0, e_hat); - - //output residuals - cPar.WriteVector(u_hat, "residU"); - cPar.WriteVector(e_hat, "residE"); - - gsl_vector_free(u_hat); - gsl_vector_free(e_hat); - gsl_vector_free(y_hat); - } -*/ - // } else { - gsl_vector_view Y_col=gsl_matrix_column (Y, 0); - VC cVc; - cVc.CopyFromParam(cPar); - cVc.CalcVCreml (G, W, &Y_col.vector); - cVc.CopyToParam(cPar); - - //obtain pve from sigma2 - //obtain se_pve from se_sigma2 - - //} - } - - - } - - - //LMM or mvLMM or Eigen-Decomposition - if (cPar.a_mode==1 || cPar.a_mode==2 || cPar.a_mode==3 || cPar.a_mode==4 || cPar.a_mode==5 || cPar.a_mode==31) { //Fit LMM or mvLMM or eigen - gsl_matrix *Y=gsl_matrix_alloc (cPar.ni_test, cPar.n_ph); - gsl_matrix *W=gsl_matrix_alloc (Y->size1, cPar.n_cvt); - gsl_matrix *B=gsl_matrix_alloc (Y->size2, W->size2); //B is a d by c matrix - gsl_matrix *se_B=gsl_matrix_alloc (Y->size2, W->size2); - gsl_matrix *G=gsl_matrix_alloc (Y->size1, Y->size1); - gsl_matrix *U=gsl_matrix_alloc (Y->size1, Y->size1); - gsl_matrix *UtW=gsl_matrix_alloc (Y->size1, W->size2); - gsl_matrix *UtY=gsl_matrix_alloc (Y->size1, Y->size2); - gsl_vector *eval=gsl_vector_alloc (Y->size1); - - //set covariates matrix W and phenotype matrix Y - //an intercept should be included in W, - cPar.CopyCvtPhen (W, Y, 0); - - //read relatedness matrix G - if (!(cPar.file_kin).empty()) { - ReadFile_kin (cPar.file_kin, cPar.indicator_idv, cPar.mapID2num, cPar.k_mode, cPar.error, G); - if (cPar.error==true) {cout<<"error! fail to read kinship/relatedness file. "<size; i++) { - if (gsl_vector_get (eval, i)<1e-10) {gsl_vector_set (eval, i, 0);} - cPar.trace_G+=gsl_vector_get (eval, i); - } - cPar.trace_G/=(double)eval->size; - - cPar.time_eigen=(clock()-time_start)/(double(CLOCKS_PER_SEC)*60.0); - } else { - ReadFile_eigenU (cPar.file_ku, cPar.error, U); - if (cPar.error==true) {cout<<"error! fail to read the U file. "<size; i++) { - if (gsl_vector_get(eval, i)<1e-10) {gsl_vector_set(eval, i, 0);} - cPar.trace_G+=gsl_vector_get(eval, i); - } - cPar.trace_G/=(double)eval->size; - } - - if (cPar.a_mode==31) { - cPar.WriteMatrix(U, "eigenU"); - cPar.WriteVector(eval, "eigenD"); - } else { - //calculate UtW and Uty - CalcUtX (U, W, UtW); - CalcUtX (U, Y, UtY); - - //calculate REMLE/MLE estimate and pve for univariate model - if (cPar.n_ph==1) { - gsl_vector_view beta=gsl_matrix_row (B, 0); - gsl_vector_view se_beta=gsl_matrix_row (se_B, 0); - gsl_vector_view UtY_col=gsl_matrix_column (UtY, 0); - - CalcLambda ('L', eval, UtW, &UtY_col.vector, cPar.l_min, cPar.l_max, cPar.n_region, cPar.l_mle_null, cPar.logl_mle_H0); - CalcLmmVgVeBeta (eval, UtW, &UtY_col.vector, cPar.l_mle_null, cPar.vg_mle_null, cPar.ve_mle_null, &beta.vector, &se_beta.vector); - - cPar.beta_mle_null.clear(); - cPar.se_beta_mle_null.clear(); - for (size_t i=0; isize2; i++) { - cPar.beta_mle_null.push_back(gsl_matrix_get(B, 0, i) ); - cPar.se_beta_mle_null.push_back(gsl_matrix_get(se_B, 0, i) ); - } - - CalcLambda ('R', eval, UtW, &UtY_col.vector, cPar.l_min, cPar.l_max, cPar.n_region, cPar.l_remle_null, cPar.logl_remle_H0); - CalcLmmVgVeBeta (eval, UtW, &UtY_col.vector, cPar.l_remle_null, cPar.vg_remle_null, cPar.ve_remle_null, &beta.vector, &se_beta.vector); - cPar.beta_remle_null.clear(); - cPar.se_beta_remle_null.clear(); - for (size_t i=0; isize2; i++) { - cPar.beta_remle_null.push_back(gsl_matrix_get(B, 0, i) ); - cPar.se_beta_remle_null.push_back(gsl_matrix_get(se_B, 0, i) ); - } - - CalcPve (eval, UtW, &UtY_col.vector, cPar.l_remle_null, cPar.trace_G, cPar.pve_null, cPar.pve_se_null); - cPar.PrintSummary(); - - //calculate and output residuals - if (cPar.a_mode==5) { - gsl_vector *Utu_hat=gsl_vector_alloc (Y->size1); - gsl_vector *Ute_hat=gsl_vector_alloc (Y->size1); - gsl_vector *u_hat=gsl_vector_alloc (Y->size1); - gsl_vector *e_hat=gsl_vector_alloc (Y->size1); - gsl_vector *y_hat=gsl_vector_alloc (Y->size1); - - //obtain Utu and Ute - gsl_vector_memcpy (y_hat, &UtY_col.vector); - gsl_blas_dgemv (CblasNoTrans, -1.0, UtW, &beta.vector, 1.0, y_hat); - - double d, u, e; - for (size_t i=0; isize; i++) { - d=gsl_vector_get (eval, i); - u=cPar.l_remle_null*d/(cPar.l_remle_null*d+1.0)*gsl_vector_get(y_hat, i); - e=1.0/(cPar.l_remle_null*d+1.0)*gsl_vector_get(y_hat, i); - gsl_vector_set (Utu_hat, i, u); - gsl_vector_set (Ute_hat, i, e); - } - - //obtain u and e - gsl_blas_dgemv (CblasNoTrans, 1.0, U, Utu_hat, 0.0, u_hat); - gsl_blas_dgemv (CblasNoTrans, 1.0, U, Ute_hat, 0.0, e_hat); - - //output residuals - cPar.WriteVector(u_hat, "residU"); - cPar.WriteVector(e_hat, "residE"); - - gsl_vector_free(u_hat); - gsl_vector_free(e_hat); - gsl_vector_free(y_hat); - } - } - - //Fit LMM or mvLMM - if (cPar.a_mode==1 || cPar.a_mode==2 || cPar.a_mode==3 || cPar.a_mode==4) { - if (cPar.n_ph==1) { - LMM cLmm; - cLmm.CopyFromParam(cPar); - - gsl_vector_view Y_col=gsl_matrix_column (Y, 0); - gsl_vector_view UtY_col=gsl_matrix_column (UtY, 0); - - if (!cPar.file_gene.empty()) { - cLmm.AnalyzeGene (U, eval, UtW, &UtY_col.vector, W, &Y_col.vector); //y is the predictor, not the phenotype - } else if (!cPar.file_bfile.empty()) { - cLmm.AnalyzePlink (U, eval, UtW, &UtY_col.vector, W, &Y_col.vector); - } else { - cLmm.AnalyzeBimbam (U, eval, UtW, &UtY_col.vector, W, &Y_col.vector); - } - - cLmm.WriteFiles(); - cLmm.CopyToParam(cPar); - } else { - MVLMM cMvlmm; - cMvlmm.CopyFromParam(cPar); - - if (!cPar.file_bfile.empty()) { - cMvlmm.AnalyzePlink (U, eval, UtW, UtY); - } else { - cMvlmm.AnalyzeBimbam (U, eval, UtW, UtY); - } - - cMvlmm.WriteFiles(); - cMvlmm.CopyToParam(cPar); - } - } - } - - - //release all matrices and vectors - gsl_matrix_free (Y); - gsl_matrix_free (W); - gsl_matrix_free(B); - gsl_matrix_free(se_B); - gsl_matrix_free (G); - gsl_matrix_free (U); - gsl_matrix_free (UtW); - gsl_matrix_free (UtY); - gsl_vector_free (eval); - } - - - //BSLMM - if (cPar.a_mode==11 || cPar.a_mode==12 || cPar.a_mode==13) { - gsl_vector *y=gsl_vector_alloc (cPar.ni_test); - gsl_matrix *W=gsl_matrix_alloc (y->size, cPar.n_cvt); - gsl_matrix *G=gsl_matrix_alloc (y->size, y->size); - gsl_matrix *UtX=gsl_matrix_alloc (y->size, cPar.ns_test); - - //set covariates matrix W and phenotype vector y - //an intercept should be included in W, - cPar.CopyCvtPhen (W, y, 0); - - //center y, even for case/control data - cPar.pheno_mean=CenterVector(y); - - //run bslmm if rho==1 - if (cPar.rho_min==1 && cPar.rho_max==1) { - //read genotypes X (not UtX) - cPar.ReadGenotypes (UtX, G, false); - - //perform BSLMM analysis - BSLMM cBslmm; - cBslmm.CopyFromParam(cPar); - time_start=clock(); - cBslmm.MCMC(UtX, y); - cPar.time_opt=(clock()-time_start)/(double(CLOCKS_PER_SEC)*60.0); - cBslmm.CopyToParam(cPar); - //else, if rho!=1 - } else { - gsl_matrix *U=gsl_matrix_alloc (y->size, y->size); - gsl_vector *eval=gsl_vector_alloc (y->size); - gsl_matrix *UtW=gsl_matrix_alloc (y->size, W->size2); - gsl_vector *Uty=gsl_vector_alloc (y->size); - - - //read relatedness matrix G - if (!(cPar.file_kin).empty()) { - cPar.ReadGenotypes (UtX, G, false); - - //read relatedness matrix G - ReadFile_kin (cPar.file_kin, cPar.indicator_idv, cPar.mapID2num, cPar.k_mode, cPar.error, G); - if (cPar.error==true) {cout<<"error! fail to read kinship/relatedness file. "<size; i++) { - if (gsl_vector_get (eval, i)<1e-10) {gsl_vector_set (eval, i, 0);} - cPar.trace_G+=gsl_vector_get (eval, i); - } - cPar.trace_G/=(double)eval->size; - cPar.time_eigen=(clock()-time_start)/(double(CLOCKS_PER_SEC)*60.0); - - //calculate UtW and Uty - CalcUtX (U, W, UtW); - CalcUtX (U, y, Uty); - - //calculate REMLE/MLE estimate and pve - CalcLambda ('L', eval, UtW, Uty, cPar.l_min, cPar.l_max, cPar.n_region, cPar.l_mle_null, cPar.logl_mle_H0); - CalcLambda ('R', eval, UtW, Uty, cPar.l_min, cPar.l_max, cPar.n_region, cPar.l_remle_null, cPar.logl_remle_H0); - CalcPve (eval, UtW, Uty, cPar.l_remle_null, cPar.trace_G, cPar.pve_null, cPar.pve_se_null); - - cPar.PrintSummary(); - - //Creat and calcualte UtX, use a large memory - cout<<"Calculating UtX..."<tm_month<<":"<tm_day":"<tm_hour<<":"<tm_min<=1 && cPar.a_mode<=4) || (cPar.a_mode>=51 && cPar.a_mode<=54) ) { - outfile<<"## time on optimization = "<