From 0dd4e05fc8babc1517de1d7981a99ad0a5241a5e Mon Sep 17 00:00:00 2001 From: Peter Carbonetto Date: Thu, 4 May 2017 14:43:12 -0500 Subject: Added new files shared by Xiang via email on May 4, 2017. --- src/ldr.cpp | 285 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 285 insertions(+) create mode 100644 src/ldr.cpp (limited to 'src/ldr.cpp') diff --git a/src/ldr.cpp b/src/ldr.cpp new file mode 100644 index 0000000..e28490a --- /dev/null +++ b/src/ldr.cpp @@ -0,0 +1,285 @@ +/* + 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 +#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_randist.h" +#include "gsl/gsl_cdf.h" +#include "gsl/gsl_roots.h" +#include "Eigen/Dense" + + + +#include "lapack.h" + +#ifdef FORCE_FLOAT +#include "param_float.h" +#include "ldr_float.h" +#include "lm_float.h" +#include "mathfunc_float.h" //for function CenterVector +#else +#include "param.h" +#include "ldr.h" +#include "lm.h" +#include "mathfunc.h" +#endif + +using namespace std; +using namespace Eigen; + + + +void LDR::CopyFromParam (PARAM &cPar) +{ + a_mode=cPar.a_mode; + d_pace=cPar.d_pace; + + file_bfile=cPar.file_bfile; + file_geno=cPar.file_geno; + file_out=cPar.file_out; + path_out=cPar.path_out; + + ni_total=cPar.ni_total; + ns_total=cPar.ns_total; + ni_test=cPar.ni_test; + ns_test=cPar.ns_test; + n_cvt=cPar.n_cvt; + + indicator_idv=cPar.indicator_idv; + indicator_snp=cPar.indicator_snp; + snpInfo=cPar.snpInfo; + + return; +} + + +void LDR::CopyToParam (PARAM &cPar) +{ + //cPar.pheno_mean=pheno_mean; + //cPar.randseed=randseed; + + return; +} + + +/* +void BSLMM::WriteBV (const gsl_vector *bv) +{ + string file_str; + file_str=path_out+"/"+file_out; + file_str+=".bv.txt"; + + ofstream outfile (file_str.c_str(), ofstream::out); + if (!outfile) {cout<<"error writing file: "< > &beta_g, const gsl_vector *alpha, const size_t w) +{ + string file_str; + file_str=path_out+"/"+file_out; + file_str+=".param.txt"; + + ofstream outfile (file_str.c_str(), ofstream::out); + if (!outfile) {cout<<"error writing file: "< > &Xt, const gsl_matrix *W_gsl, const gsl_vector *y_gsl) +{ + //save gsl_vector and gsl_matrix into eigen library formats + MatrixXd W(W_gsl->size1, W_gsl->size2); + VectorXd y(y_gsl->size); + VectorXd x_col(y_gsl->size); + + double d; + for (size_t i=0; isize1; i++) { + d=gsl_vector_get(y_gsl, i); + y(i)=d; + for (size_t j=0; jsize2; j++) { + W(i,j)=gsl_matrix_get(W_gsl, i, j); + } + } + + //initial VB values by lm + cout<