about summary refs log tree commit diff
path: root/bslmm.h
diff options
context:
space:
mode:
Diffstat (limited to 'bslmm.h')
-rw-r--r--bslmm.h146
1 files changed, 0 insertions, 146 deletions
diff --git a/bslmm.h b/bslmm.h
deleted file mode 100644
index 8b5edc7..0000000
--- a/bslmm.h
+++ /dev/null
@@ -1,146 +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 <http://www.gnu.org/licenses/>.
- */
-
-
-#ifndef __BSLMM_H__                
-#define __BSLMM_H__
-
-#include <vector>
-#include <map>
-#include <gsl/gsl_rng.h>
-#include <gsl/gsl_randist.h>
-
-#ifdef FORCE_FLOAT
-#include "param_float.h"
-#else
-#include "param.h"
-#endif
-
-
-using namespace std;
-
-
-
-
-
-
-class BSLMM {
-
-public:	
-	// IO related parameters
-	int a_mode;	
-	size_t d_pace;
-	
-	string file_bfile;
-	string file_geno;
-	string file_out;
-	string path_out;
-	
-	// LMM related parameters
-	double l_min;
-	double l_max;
-	size_t n_region;
-	double pve_null;
-	double pheno_mean;
-	
-	// BSLMM MCMC related parameters
-	double h_min, h_max, h_scale;			//priors for h
-	double rho_min, rho_max, rho_scale;		//priors for rho
-	double logp_min, logp_max, logp_scale;		//priors for log(pi)
-	size_t s_min, s_max;			//minimum and maximum number of gammas
-	size_t w_step;					//number of warm up/burn in iterations
-	size_t s_step;					//number of sampling iterations
-	size_t r_pace;					//record pace
-	size_t w_pace;					//write pace
-	size_t n_accept;				//number of acceptance
-	size_t n_mh;					//number of MH steps within each iteration
-	double geo_mean;				//mean of the geometric distribution
-	long int randseed;
-	double trace_G;	
-	
-	HYPBSLMM cHyp_initial;
-
-	// Summary statistics
-	size_t ni_total, ns_total;	//number of total individuals and snps
-	size_t ni_test, ns_test;	//number of individuals and snps used for analysis
-	size_t n_cvt;				//number of covariates
-	double time_UtZ;
-	double time_Omega;		//time spent on optimization iterations
-	double time_Proposal;        //time spent on constructing the proposal distribution for gamma (i.e. lmm or lm analysis)
-	vector<int> indicator_idv;				//indicator for individuals (phenotypes), 0 missing, 1 available for analysis
-	vector<int> indicator_snp;				//sequence indicator for SNPs: 0 ignored because of (a) maf, (b) miss, (c) non-poly; 1 available for analysis
-	
-	vector<SNPINFO> snpInfo;		//record SNP information
-	
-	// Not included in PARAM
-	gsl_rng *gsl_r; 
-	gsl_ran_discrete_t *gsl_t;	
-	map<size_t, size_t> mapRank2pos;	
-	
-	// Main Functions
-	void CopyFromParam (PARAM &cPar);
-	void CopyToParam (PARAM &cPar);
-	
-	void RidgeR(const gsl_matrix *U, const gsl_matrix *UtX, const gsl_vector *Uty, const gsl_vector *eval, const double lambda);
-	
-	void MCMC (const gsl_matrix *U, const gsl_matrix *UtX, const gsl_vector *Uty, const gsl_vector *K_eval, const gsl_vector *y);
-	void WriteLog ();
-	void WriteLR ();
-	void WriteBV (const gsl_vector *bv);
-	void WriteParam (vector<pair<double, double> > &beta_g, const gsl_vector *alpha, const size_t w);
-	void WriteParam (const gsl_vector *alpha);
-	void WriteResult (const int flag, const gsl_matrix *Result_hyp, const gsl_matrix *Result_gamma, const size_t w_col);
-	
-	//Subfunctions inside MCMC
-	void CalcPgamma (double *p_gammar);
-	
-	double CalcPveLM (const gsl_matrix *UtXgamma, const gsl_vector *Uty, const double sigma_a2);
-	void InitialMCMC (const gsl_matrix *UtX, const gsl_vector *Uty, vector<size_t> &rank_old, class HYPBSLMM &cHyp, vector<pair<size_t, double> > &pos_loglr);
-	double CalcPosterior (const gsl_vector *Uty, const gsl_vector *K_eval, gsl_vector *Utu, gsl_vector *alpha_prime, class HYPBSLMM &cHyp);
-	double CalcPosterior (const gsl_matrix *UtXgamma, const gsl_vector *Uty, const gsl_vector *K_eval, gsl_vector *UtXb, gsl_vector *Utu, gsl_vector *alpha_prime, gsl_vector *beta, class HYPBSLMM &cHyp);
-	void CalcCC_PVEnZ (const gsl_matrix *U, const gsl_vector *Utu, gsl_vector *z_hat, class HYPBSLMM &cHyp);
-	void CalcCC_PVEnZ (const gsl_matrix *U, const gsl_vector *UtXb, const gsl_vector *Utu, gsl_vector *z_hat, class HYPBSLMM &cHyp);
-	double CalcREMLE (const gsl_matrix *Utw, const gsl_vector *Uty, const gsl_vector *K_eval);
-	double CalcLR (const gsl_matrix *U, const gsl_matrix *UtX, const gsl_vector *Uty, const gsl_vector *K_eval, vector<pair<size_t, double> > &loglr_sort);		//calculate the maximum marginal likelihood ratio for each analyzed SNPs with gemma, use it to rank SNPs
-	void SampleZ (const gsl_vector *y, const gsl_vector *z_hat, gsl_vector *z);
-	double ProposeHnRho (const class HYPBSLMM &cHyp_old, class HYPBSLMM &cHyp_new, const size_t &repeat);
-	double ProposePi (const class HYPBSLMM &cHyp_old, class HYPBSLMM &cHyp_new, const size_t &repeat);
-	double ProposeGamma (const vector<size_t> &rank_old, vector<size_t> &rank_new, const double *p_gamma, const class HYPBSLMM &cHyp_old, class HYPBSLMM &cHyp_new, const size_t &repeat);
-	void SetXgamma (gsl_matrix *Xgamma, const gsl_matrix *X, vector<size_t> &rank);
-
-	void CalcXtX (const gsl_matrix *X_new, const gsl_vector *y, const size_t s_size, gsl_matrix *XtX_new, gsl_vector *Xty_new);
-	void SetXgamma (const gsl_matrix *X, const gsl_matrix *X_old, const gsl_matrix *XtX_old, const gsl_vector *Xty_old, const gsl_vector *y, const vector<size_t> &rank_old, const vector<size_t> &rank_new, gsl_matrix *X_new, gsl_matrix *XtX_new, gsl_vector *Xty_new);
-	double CalcPosterior (const double yty, class HYPBSLMM &cHyp);
-	double CalcPosterior (const gsl_matrix *Xgamma, const gsl_matrix *XtX, const gsl_vector *Xty, const double yty, const size_t s_size, gsl_vector *Xb, gsl_vector *beta, class HYPBSLMM &cHyp);
-	void CalcCC_PVEnZ (gsl_vector *z_hat, class HYPBSLMM &cHyp);
-	void CalcCC_PVEnZ (const gsl_vector *Xb, gsl_vector *z_hat, class HYPBSLMM &cHyp);
-	void MCMC (const gsl_matrix *X, const gsl_vector *y);
-	
-	//utility functions
-//	double vec_sum (gsl_vector *v);
-//	void vec_center (gsl_vector *v);
-//	double calc_var (gsl_vector *v);
-//	void calc_sigma (MCMC &cMcmc);
-//	bool comp_lr (pair<size_t, double> a, pair<size_t, double> b);
-};
-
-
-
-#endif
-
-