#include "vector.h" #include "grid.h" #include "simpstrg.h" /* This file contains type defs and function declarations for ALL files with source code */ class peddata { public: // char ped[20]; // int id, fid, mid, sex, aff_con; ivectors loci; }; typedef vector pedvector; //declarations //___________________________________________________________________________ // Function declarations int readinput(char* datafile, char* pedfile, int debug, int &program_code, int &data_type, int &num_loci, int &numblanks, int &num_markers, ivector &markers, int &map_type, int &map_size, dvector &map, int &num_total_affecteds, int &num_indiv, ivector &indiv_list, int &hap_or_freq, int &mkvorder, int &bayes, int &num_total_control, int &num_control, ivector &control_list, ivector &num_alleles, ivectors &allele_list, dvectors &allele_freq, dvector &mut_rates, int &est_p, double &p, double &max_res, int &map_res, int &max_cand, int &anc_hap_known, int &num_anc_hap_known, ivectors &anc_hap, int &C_loc, int &C_all, int &E_int, simpstrg& resout, simpstrg& ancout, simpstrg& maxout, simpstrg& oneout, int &L_End, int &R_End, double &fixed_thresh, double &var_thresh, pedvector &peds); //int readinput(char* datafile, char* pedfile, int debug); int get_next(ifstream& dfs, int& nextvar); int get_next(ifstream& dfs, double& nextvar); int get_next(ifstream& dfs, simpstrg& nextvar); int skip_to_loci(ifstream& dfs, int numblanks); void print_var(const char* varname, double varval, int index = -1); void print_var(const char* varname, const simpstrg& varval, int index = -1); void check_error(const char* checkvar); int read_ped_file(const char* pedfile, int &numblanks, pedvector& peds); //int read_ped_file(char* pedfile, int pedfile_type, pedvector& peds); //___________________________________________________________________________ //declarations from makeobjectfunctions.C void countallelesff(ivector &allelecounts, const dgrid &freqfreq); void makedatafrompeds(igrid &data, const pedvector &peds, const int &num_markers, const ivector &markers, const int &num_indiv, const ivector &indiv_list, const int &debug); void makemap(dvector &y, const int &num_markers, const ivector &markers, const int &map_type, const int &map_size, const dvector &map, const int &debug); void makeallelecountsff(ivector &allelecountsff, const int &num_markers, const ivector &markers, const ivector &num_alleles, const int &hap_or_freq, const int &debug); void makeindfreq(igrid &freqallele, dgrid &freqfreq, const int &num_markers, const ivector &markers, const ivector &num_alleles, const ivectors &allele_list, const dvectors &allele_freq, const int &hap_or_freq, const int &debug); void makeindjointfreq2(dgrid &jointfreq2, const ivector &allelecountsff, const dgrid &freqfreq, const int &num_markers, const int &debug); void makejointfreq2C(dgrid &jointfreq2C, const ivector &allelecountsff, const dgrid &freqfreq, const int &C, const int &debug); void makejointfreq3(dvector &jointfreq3, const dgrid &freqfreq, const ivector &allelecountsff, const int &C, const int &debug); void makemut(dvector &mut_markers, const dvector &mut_rates, const ivector &markers, const int &debug); void rescalemut(dvector &mut_markers_rescale, const dvector &mut_markers, const ivector &allelecountsff, const int &C, const int &debug); void jointfreq3reset(dvector &jointfreq3, const igrid &freqallele, const dgrid &freqfreq, const ivector &allelecounts, const int &callele, const int &loc, const int &debug); void jointfreq2reset(dgrid &jointfreq2, const igrid &freqallele, const dgrid &freqfreq, const ivector &allelecounts, const int &callele, const int &loc, const int &debug); void jointfreq2Creset(dgrid &jointfreq2C, const igrid &freqallele, const dgrid &freqfreq, const ivector &allelecounts, const int &callele, const int &loc, const int &debug); void freqfreqreset(dgrid &freqfreq, const igrid &freqallele, const int &callele, const int &loc, const int &debug); void makecondfreq2l(dgrid &condfreq2l, const igrid &freqallele, const dgrid &freqfreq, const dgrid &jointfreq2, const ivector &allelecounts, const int &C, const int &debug); void makecondfreq2r(dgrid &condfreq2r, const igrid &freqallele, const dgrid &freqfreq, const dgrid &jointfreq2, const ivector &allelecounts, const int &C, const int &debug); void makecondfreq3l(dvector &condfreq3l, const dvector &jointfreq3, const dgrid &freqfreq, const ivector &allelecounts, const int &C, const int &debug); void makecondfreq3r(dvector &condfreq3r, const dvector &jointfreq3, const dgrid &freqfreq, const ivector &allelecounts, const int &C, const int &debug); void makecondfreq3F(dgrid &condfreq3F, const dvector &jointfreq3, const dgrid &freqfreq, const ivector &allelecounts, const int &C, const int &debug); void makecondfreq2C(dgrid &condfreq2C, const dgrid &jointfreq2C, const igrid &freqallele, const dgrid &freqfreq, const ivector &allelecounts, const int &loc, const int &debug); void makex(const dvector &y, dvector &x, const int &C, const int &debug); void makecontrolsfrompeds(igrid &controls, const pedvector &peds, const int &num_markers, const ivector &markers, const int &num_control, const ivector &control_list, const int &debug); void make_augy(dvector &augy, const dvector &y, const int &C, const int &sub, const int &num_sub, const int &debug); void make_mody(dvector &mody, const dvector &y, const int &C, const int &sub, const int &num_sub, const int &res, const int &map_res, const int &debug); void makejointfreq3mkv(dvector &jointfreq3, const dgrid &jointfreq2, const dgrid &freqfreq, const ivector &allelecounts, const int &C, const int &debug); void jointfreq2resetmkv(dgrid &jointfreq2, dvectors &h_freq_lists, const ivectors &a_lists, const int &callele, const int &loc, const int &debug); void makecondfreq2Cdt1(dgrid &condfreq2C, const dgrid &freqfreq, const ivector &allelecounts, const int &loc, const int &debug); //for source in mapfunctions.C void augmentdata(const igrid& data, igrid& augdata, const igrid& freqallele, igrid& augfreqallele, const dgrid& freqfreq, dgrid& augfreqfreq, const dgrid& jointfreq2, dgrid& augjointfreq2, //const dvector& y, dvector& augy, const ivector& allelecounts, ivector& augallelecounts, const dvector& mut_markers, dvector& augmut_markers, const int &C, const int &ctrall, const int &debug); void makejointfreq3(dvector &jointfreq3, const dgrid &jointfreq2, const int &C, const int &debug); void make_auganc_hap(const int &C, const int &ctrall, const int &anc_hap_known, const ivectors &anc_hap, ivector &auganc_hap, int &max_counter, const int &debug); void updateanchapstore(ivectors &anchapstore, int &anchapcounter, const int &C_loc, const igrid &candanc, const int &debug); int assignE(const ivector &maxlikCint, const dvector &maxlikCloc); int pickmaxlikanc(const dvectors &resonetempstore); //for source in routines.C void onehap(dvector &resultsone, const int &C, int &LE, int &RE, const igrid &data, const ivector &anchap, const dvector &x, const dvector &y, const igrid &freqallele, const dgrid &freqfreq, const dgrid &jointfreq2, const dgrid &condfreq2l, const dgrid &condfreq2r, const dgrid &condfreq2C, const dvector &condfreq3l, const dvector &condfreq3r, const ivector &allelecounts, dgrid &obsprobs, dgrid &obsprobsCnum, dgrid &obsprobsCden, const dvector &mut, dvector &mutmatch, dvector &mutnomatch, dgrid &initstore, dgrid &transstore, dgrid &transstoreC, dgrid &alpha, dgrid &beta, dgrid &gamma, dvector &cstar, dvector &cstarmut, dvector &loglikvec, const int &estp, const double &pinit, const double &m); void maxhap(dvector &resultsmax, const int &ctrall, const igrid &allelelist, igrid &candanc, dgrid &candres, const double &threshfix, const double &threshvar, const int &mapest, const int &E, //onehapobjects dvector &resultsone, const int &C, int &LE, int &RE, const igrid &data, ivector &anchap, const dvector &x, const dvector &y, const igrid &freqallele, const dgrid &freqfreq, const dgrid &jointfreq2, const dgrid &condfreq2l, const dgrid &condfreq2r, const dgrid &condfreq2C, const dvector &condfreq3l, const dvector &condfreq3r, const ivector &allelecounts, dgrid &obsprobs, dgrid &obsprobsCnum, dgrid &obsprobsCden, const dvector &mut, dvector &mutmatch, dvector &mutnomatch, dgrid &initstore, dgrid &transstore, dgrid &transstoreC, dgrid &alpha, dgrid &beta, dgrid &gamma, dvector &cstar, dvector &cstarmut, dvector &loglikvec, const int &estp, const double &pinit, const double &m); void onegen(dvector &resultsone, const int &C, int &LE, int &RE, const igrid &data, const ivector &anchap, const dvector &x, const dvector &y, const igrid &freqallele, const dgrid &freqfreq, const dgrid &jointfreq2, const dgrid &condfreq2l, const dgrid &condfreq2r, const dgrid &condfreq2C, const dvector &condfreq3l, const dvector &condfreq3r, const ivector &allelecounts, dgrid &obsprobs, dgrid &obsprobsCnum, dgrid &obsprobsCden, const dvector &mut, dvector &mutmatch, dvector &mutnomatch, dgrid &initstore, dgrid &transstore, dgrid &transstoreC, dgrid &alpha, dgrid &beta, dgrid &gamma, dvector &cstar, dvector &cstarmut, dvector &loglikvec, const int &estp, const double &pinit, const double &m, //extra objects for genotype code dvector &scratchvec, const dgrid &jointfreq2C, const dgrid &condfreq3F, dvector &obsprobsCltRE, dgrid &nullprobs, dgrid &nullprobsCnum, dgrid &nullprobsCden, dvector &nullprobsCltRE); void onegenmkv2(dvector &resultsone, const int &C, int &LE, int &RE, const igrid &data, const ivector &anchap, const dvector &x, const dvector &y, const igrid &freqallele, const dgrid &freqfreq, const dgrid &jointfreq2, const dgrid &jointfreq3, const dgrid &jointfreq3f, const dgrid &jointfreq4, const dgrid &jointfreq4f, const ivector &allelecounts, dgrid &obsprobs, dvectors &obsCnum, dvectors &obsCden, const dvector &mut, dvector &mutmatch, dvector &mutnomatch, dgrid &initstore, dgrid &transstore, dgrid &transstoreC, dgrid &alpha, dgrid &beta, dgrid &gamma, dvector &cstar, dvector &cstarmut, dvector &loglikvec, const int &estp, const double &pinit, const double &m, //extra objects for genotype code dvector &scratchvec, dgrid &nullprobs, dvectors &nullCnum, dvectors &nullCden, dvectors &gammaC); void max(dvector &resultsmax, const int &ctrall, const igrid &allelelist, igrid &candanc, dgrid &candres, const double &threshfix, const double &threshvar, const int &mapest, const int &E, const int &data_type, //onehapobjects dvector &resultsone, const int &C, int &LE, int &RE, const igrid &data, ivector &anchap, const dvector &x, const dvector &y, const igrid &freqallele, const dgrid &freqfreq, const dgrid &jointfreq2, const dgrid &condfreq2l, const dgrid &condfreq2r, const dgrid &condfreq2C, const dvector &condfreq3l, const dvector &condfreq3r, const ivector &allelecounts, dgrid &obsprobs, dgrid &obsprobsCnum, dgrid &obsprobsCden, const dvector &mut, dvector &mutmatch, dvector &mutnomatch, dgrid &initstore, dgrid &transstore, dgrid &transstoreC, dgrid &alpha, dgrid &beta, dgrid &gamma, dvector &cstar, dvector &cstarmut, dvector &loglikvec, const int &estp, const double &pinit, const double &m, //extra objects for genotype code dvector &scratchvec, const dgrid &jointfreq2C, const dgrid &condfreq3F, dvector &obsprobsCltRE, dgrid &nullprobs, dgrid &nullprobsCnum, dgrid &nullprobsCden, dvector &nullprobsCltRE); void onehapmkv2(dvector &resultsone, const int &C, int &LE, int &RE, const igrid &data, const ivector &anchap, const dvector &x, const dvector &y, const igrid &freqallele, const dgrid &freqfreq, const dgrid &jointfreq2, const dgrid &jointfreq3mkv2, const dgrid &jointfreq3fmkv2, const dgrid &jointfreq4mkv2, const dgrid &jointfreq4fmkv2, const dgrid &condfreq2l, const dgrid &condfreq2r, const dgrid &condfreq3fmkv2, const dgrid &condfreq3lmkv2, const dgrid &condfreq3rmkv2, const ivector &allelecounts, dgrid &obsprobs, dvector &obsprobsAstore, const dvector &mut, dvector &mutmatch, dvector &mutnomatch, dgrid &initstore, dgrid &transstore, dgrid &transstoreC, dgrid &alpha, dgrid &beta, dgrid &gamma, dvector &cstar, dvector &cstarmut, dvector &loglikvec, const int &estp, const double &pinit, const double &m); void maxmkv2(dvector &resultsmax, const int &ctrall, const igrid &allelelist, igrid &candanc, dgrid &candres, const double &threshfix, const double &threshvar, const int &mapest, const int &E, const int &data_type, //onehapobjects dvector &resultsone, const int &C, int &LE, int &RE, const igrid &data, ivector &anchap, const dvector &x, const dvector &y, const igrid &freqallele, const dgrid &freqfreq, const dgrid &jointfreq2, const dgrid &condfreq2l, const dgrid &condfreq2r, const dgrid &condfreq2C, const dvector &condfreq3l, const dvector &condfreq3r, const ivector &allelecounts, dgrid &obsprobs, dgrid &obsprobsCnum, dgrid &obsprobsCden, const dvector &mut, dvector &mutmatch, dvector &mutnomatch, dgrid &initstore, dgrid &transstore, dgrid &transstoreC, dgrid &alpha, dgrid &beta, dgrid &gamma, dvector &cstar, dvector &cstarmut, dvector &loglikvec, const int &estp, const double &pinit, const double &m, //extra objects for genotype code dvector &scratchvec, const dgrid &jointfreq2C, const dgrid &condfreq3F, dvector &obsprobsCltRE, dgrid &nullprobs, dgrid &nullprobsCnum, dgrid &nullprobsCden, dvector &nullprobsCltRE, //for onehapmkv2 const dgrid &jointfreq3mkv2, const dgrid &jointfreq3fmkv2, const dgrid &jointfreq4mkv2, const dgrid &jointfreq4fmkv2, const dgrid &condfreq3fmkv2, const dgrid &condfreq3lmkv2, const dgrid &condfreq3rmkv2, dvector &obsprobsAstore, //for onegenmkv2 dvectors &obsCnum, dvectors &obsCden, dvectors &nullCnum, dvectors &nullCden, dvectors &gammaC); //for source in prefunctions.C //declarations void countalleles(ivector &allelecounts, const igrid &freqallele); double getfreq(const igrid &freqallele, const dgrid &freqfreq, const int &Lallele, const int &L); double getcondfreq2C(const igrid &freqallele, const dgrid &condfreq2C, const int &Lallele, const int &L); double getjointfreq2C(const igrid &freqallele, const dgrid &jointfreq2C, const int &Lallele, const int &L, const int &callele, const int &C); double getjointfreq2(const igrid &freqallele, const ivector &allelecounts, const dgrid &jointfreq2, const int &ilocus, const int &iallele, const int &jallele); double getcondfreq2l(const igrid &freqallele, const ivector &allelecounts, const dgrid &condfreq2l, const int &ilocus, const int &iallele, const int &jallele); double getcondfreq2r(const igrid &freqallele, const ivector &allelecounts, const dgrid &condfreq2r, const int &ilocus, const int &iallele, const int &jallele, const int &C); double getjointfreq3(const igrid &freqallele, const ivector &allelecounts, const dvector &jointfreq3, const int &ilocus, const int &iallele, const int &jallele, const int &kallele); double getcondfreq3F(const igrid &freqallele, const ivector &allelecounts, const dgrid &condfreq3F, const int &C, const int &iallele, const int &kallele, const int &cond); void makesmallerdataset(igrid &augdata, const igrid &data, const int &C_loc, const int &C_all, const int &data_type, const int &debug); //for source in estfunctions.C void makenullshare(dgrid &obsprobs, const igrid &data, const igrid &freqallele, const dgrid &freqfreq, const dgrid &condfreq2l, const dgrid &condfreq2r, const dgrid &condfreq2C, const ivector &allelecounts, const int &LE, const int &RE, const int &C); void makenullshareCnum(dgrid &obsprobsCnum, const igrid &data, const igrid &freqallele, const dgrid &freqfreq, const ivector &allelecounts, const dgrid &jointfreq2, const dvector &condfreq3l, const dvector &condfreq3r, const int &C, const int &LE, const int &RE, const double &m, const ivector &anchap); void makenullshareCden(dgrid &obsprobsCden, const igrid &data, const igrid &freqallele, const dgrid &freqfreq, const int &C, const int &LE, const int &RE); void makemutmatch(dvector &mutmatch, dvector &mutnomatch, const dvector &mut, const ivector &allelecounts, const double &tau, const int &C); void makemodlshare(dgrid &obsprobs, const igrid &data, const dvector &mutmatch, dvector &mutnomatch, const ivector &anchap, const int &C, const int &RE, const int &LE); void makemodlshareCnum(dgrid &obsprobsCnum, const igrid &data, const dgrid &obsprobs, const int &C, const int &LE, const int &RE); void makemodlshareCden(dgrid &obsprobsCden, const igrid &data, const dgrid &obsprobs, const int &C, const int &LE, const int &RE); void makeinit(dgrid &initstore, const dvector &x, const double &tau, const double &p, const int &C, const int &LE, const int &RE); void maketrans(dgrid &transstore, const dvector &x, const double &tau, const double &p, const int &C, const int &LE, const int &RE); void maketransC(dgrid &transstoreC, const dvector &x, const double &tau, const double &p, const int &C, const int &LE, const int &RE); void makealpha(dgrid &alpha, const dgrid &initstore, const dgrid &transstore, const dgrid &transstoreC, const dgrid &obsprobs, const dgrid &obsprobsnum, const dgrid &obsprobsCden, const int &C, const int &LE, const int &RE); void makebeta(dgrid &beta, const dgrid &initstore, const dgrid &transstore, const dgrid &transstoreC, const dgrid &obsprobs, const dgrid &obsprobsCnum, const dgrid &obsprobsCden, const int &C, const int &LE, const int &RE); void makegamma(dgrid &gamma, const dgrid &alpha, const dgrid &beta, const int &C, const int &LE, const int &RE); void makecstar(dvector &cstar, const dgrid &gamma, const int &C, const int &LE, const int &RE); void makecstarmut(dvector &cstarmut, const dvector &cstar, const dgrid &gamma, const igrid &data, const ivector &anchap, const dvector &mutmatch, const int &C, const int &LE, const int &RE); double bisecmle(const dvector &cstar, const dvector &cstarmut, const dvector &y, const dvector &x, const int &C, const int &LE, const int &RE, const dvector &mut, const ivector &allelecounts, const double &m); double loglikder(double &tau, const dvector &y, const dvector &x, const dvector &cstar, const int &C, const int &LE, const int &RE); double mutloglikder(const double &tau, const dvector &mut,//mrescaled const dvector &cstar, const dvector &cstarmut, const ivector &allelecounts, const int &C, const int &LE, const int &RE); double makep(const dvector &cstar, const int &numhap, const int &C); void makeloglik(dvector &loglikvec, const dgrid &alpha, const dgrid &initstore, const int &C, const int &RE); //for code in step.C void makeinitcandanc(igrid &candanc, const int &C, const int &LE, const int &RE, const int &ctrall, const igrid &allelelist, int &numcand); void makecandanc(igrid &candanc, const igrid &allelelist, int &dirjump, int &numcand, int &numkeep, const int &C, int &LE, int &RE, const int &ctrall); void rowswitchint(igrid &candanc, const int &row, const int &row1); void rowswitchdou(dgrid &candres, const int &row, const int &row1); void sortcandancbylik(igrid &candanc, dgrid &candres, const int &numcand, const int &loclik); int whichdir(const int &LE, const int &RE, const dvector &x); int findnumkeep(const dgrid &candres, const int &dirjump, const double &threshfix, const double &threshvar, int &numcand); void cleantemps(igrid &candanc, dgrid &candres, const int &numcand, const int &numkeep, const int &LE, const int &RE); void correctlik(dgrid &candres, const int &numcand, const int &loclik); //for source in genfunctions.C void makenullsharegen(dgrid &nullprobs, const igrid &data, const igrid &freqallele, const dgrid &freqfreq, const dgrid &condfreq2l, const dgrid &condfreq2r, const dgrid &condfreq2C, const ivector &allelecounts, const int &LE, const int &RE, const int &C); void makenullshareCnumgen(dgrid &nullprobsCnum, const igrid &data, const igrid &freqallele, const dgrid &freqfreq, const ivector &allelecounts, const dgrid &jointfreq2, const dgrid &condfreq2C, const dvector &condfreq3l, const dvector &condfreq3r, const dgrid &condfreq3F, const int &C, const int &LE, const int &RE); void makenullshareCdengen(dgrid &nullprobsCden, const igrid &data, const igrid &freqallele, const dgrid &freqfreq, const int &C, const int &LE, const int &RE); void makenullshareCltREgen(dvector &nullprobsCltRE, const igrid &data, const igrid &freqallele, const dgrid &freqfreq, const ivector &allelecounts, const dgrid &jointfreq2C, const int &C, const int &RE); void makemodlsharegen(dgrid &obsprobs, const dgrid &nullprobs, const igrid &data, const dvector &mutmatch, dvector &mutnomatch, const ivector &anchap, const int &C, const int &LE, const int &RE); void makemodlshareCnumgen(dgrid &obsprobsCnum, const dgrid &nullprobsCnum, const igrid &data, const ivector &anchap, const dvector &mutmatch, const dvector &mutnomatch, const int &C, const int &LE, const int &RE); void makemodlshareCdengen(dgrid &obsprobsCden, const dgrid &nullprobsCden, const igrid &data, const ivector &anchap, const dvector &mutmatch, const dvector &mutnomatch, const int &C, const int &LE, const int &RE); void makemodlshareCltREgen(dvector &obsprobsCltRE, const dvector &nullprobsCltRE, const igrid &data, const ivector &anchap, const dvector &mutmatch, const dvector &mutnomatch, const int &C, const int &RE); void makeinitgen(dgrid &initstore, dvector &scratchvec, const dvector &x, const double &tau, const double &p, const double &freqC, const int &C, const int &LE, const int &RE); void maketransgen(dgrid &transstore, dvector &scratchvec, const dvector &x, const double &tau, const double &p, const double &freqC, const int &C, const int &LE, const int &RE); void maketransCgen(dgrid &transstoreC, dvector &scratchvec, const dvector &x, const double &tau, const double &p, const int &C, const int &LE, const int &RE); void makealphagen(dgrid &alpha, const dgrid &initstore, const dgrid &transstore, const dgrid &transstoreC, const dgrid &obsprobs, const dgrid &obsprobsCnum, const dgrid &obsprobsCden, const int &C, const int &LE, const int &RE); void makebetagen(dgrid &beta, const dgrid &initstore, const dgrid &transstore, const dgrid &transstoreC, const dgrid &obsprobs, const dgrid &obsprobsCnum, const dgrid &obsprobsCden, const dvector &obsprobsCltRE, const int &C, const int &LE, const int &RE); void makegammagen(dgrid &gamma, const dgrid &alpha, const dgrid &beta, const int &C, const int &LE, const int &RE); void makecstargen(dvector &cstar, const dgrid &gamma, const int &C, const int &LE, const int &RE); void makecstarmutgen(dvector &cstarmut, const dvector &cstar, const dgrid &gamma, const igrid &data, const ivector &anchap, const dvector &mutmatch, const int &C, const int &LE, const int &RE); void makeloglikgen(dvector &loglikvec, const dgrid &alpha, const dgrid &initstore, const int &C, const int &RE); //for source in esthapfreq.C void m2lochfr_Hcon(dvector &h_freq_list, const int &loci, const int &locj, const ivector &c_allele_lists_i, const ivector &c_allele_lists_j, const igrid &controls, const int &debug); void m2lochfr_Gcon(dvector &h_freq_list, const int &loci, const int &locj, const ivector &c_allele_lists_i, const ivector &c_allele_lists_j, const igrid &controls, const int &debug); void count_alleles(ivector &allelecounts, const igrid &controls, const int &debug); void make_c_allele_lists(ivectors &c_allele_lists, const igrid &controls, const int &debug); void make_haplotype_exp_Hcon(dgrid &haplotype_exp, const igrid &controls, const ivector &c_allele_lists_i, const ivector &c_allele_lists_j, const int &i, const int &j, ivector &scratch, const ivector &missing, const int &debug); void make_haplotype_res_Gcon(igrid &haplotype_res, const igrid &controls, const ivector &c_allele_lists_i, const ivector &c_allele_lists_j, const int &i, const int &j, ivector &scratch, const ivector &missing, const int &debug); void do_expectation_step_gen(dgrid &genotype_res, const dvector &h_freq_list, igrid &haplotype_res, const ivector &missing, const int &debug); void do_maximization_step_gen(dvector &h_freq_list, const dgrid &genotype_res, const igrid &haplotype_res, const ivector &missing, const int &debug); void make_missing_Hcon(ivector &missing, int &is_missing, const igrid &controls, const int &loci, const int &locj, const int &debug); void make_missing_Gcon(ivector &missing, int &is_missing, const igrid &controls, const int &loci, const int &locj, const int &debug); void make_a_freq_lists(dvectors &a_freq_lists, const dvector &h_freq_list, const int &debug); void mg_expectation_step_gen(dvectors &mg_genoteype_res, const dvector &h_freq_list, const dvectors &a_freq_lists, const ivector &c_allele_lists_i, const ivector &c_allele_lists_j, const igrid &controls, const ivector &missing, const int &loci, const int &locj, const int &debug); int getposinlist(const int &allele, const ivector &list); void mg_maximization_step_gen(dvector &h_freq_list, const dvectors &mg_genoteype_res, const ivector &missing, const int &debug); void mh_expectation_step_hap(dgrid &haplotype_exp, const dvector &h_freq_list, const igrid &controls, const ivector &c_allele_lists_i, const ivector &c_allele_lists_j, const int &i, const int &j, const dvectors &a_freq_lists, ivector &scratch, const ivector &missing, const int &debug); void maximization_step_hap(dvector &h_freq_list, const dgrid &haplotype_exp, const int &debug); void make_init_h_freq(dvector &h_freq_list, const int &debug); void countadditionalalleles(ivector &additionalalleles, const ivectors &c_allele_lists, const igrid &data, const int &debug); void finish_allele_list(ivectors &allele_list, const ivectors &c_allele_lists, const igrid &data, const int &debug); void makejf2(dgrid &jointfreq2, const dvectors &hap_freq, const int &debug); void makefa(igrid &freqallele, const ivectors &allele_list, const int &debug); void makeff(dgrid &freqfreq, const igrid &freqallele, const ivectors &allele_list, const dgrid &jointfreq2, const int &debug); //new hmm routine void makehap2fr_hmm_Gcon(dvectors &h_freq_lists, const ivectors &a_lists, const igrid &controls, const int &debug); void makeb_Gfr(dvectorss &b, const ivectors &a_lists, const igrid &controls, const int &debug); void make_a_freq_lists_Gfr(dvectors &a_freq_lists, const dvectors &h_freq_lists, const int &debug); void maketrans_Gfr(dvectors &trans, const dvectors &a_freq_lists, const dvectors &h_freq_lists, const int &debug); void makealpha_Gfr(dvectorss &alpha, const dvectors &a_freq_lists, const dvectors &trans, const dvectorss &b, const int &debug); void makebeta_Gfr(dvectorss &beta, const dvectors &trans, const dvectorss &b, const int &debug); void makexi_Gfr(dvectorss &xi, const dvectorss &alpha, const dvectorss &beta, const dvectors &trans, const dvectorss &b, const int &debug); void make_h_freq_lists_Gfr(dvectors &h_freq_lists, dvectors &a_freq_lists, const dvectorss &xi, const int &debug); //haplotype controls void makehap2fr_hmm_Hcon(dvectors &h_freq_lists, const ivectors &a_lists, const igrid &controls, const int &debug); void make_missing_Hfr(ivector &missing, int &is_missing, const igrid &controls, const int &debug); void makexi_nomissing_Hfr(dvectorss &xi, const ivector &missing, const ivectors &a_lists, const igrid &controls, const int &debug); void makeb_Hfr(dvectorss &b, const ivector &missing, const ivectors &a_lists, const igrid &controls, const int &debug); void maketrans_Hfr(dvectors &trans, const dvectors &a_freq_lists, const dvectors &h_freq_lists, const int &debug); void makealpha_Hfr(dvectorss &alpha, const ivector &missing, const dvectors &a_freq_lists, const dvectors &trans, const dvectorss &b, const int &debug); void makebeta_Hfr(dvectorss &beta, const ivector &missing, const dvectors &trans, const dvectorss &b, const int &debug); void makexi_Hfr(dvectorss &xi, const ivector &missing, const dvectorss &alpha, const dvectorss &beta, const dvectors &trans, const dvectorss &b, const int &debug); void make_h_freq_lists_Hfr(dvectors &h_freq_lists, const dvectorss &xi, const int &debug); void make_adj_to_hfreqlists(dvectors &h_freq_lists_adj, const dvectors &h_freq_lists, ivectors &a_lists, const double &e, const ivector &additionalalleles, const int &hap_or_freq, const igrid &controls, const int &debug); void adjust_init(dvector &init, const double &e, const ivector &additionalalleles, const igrid &controls, const int &debug); void adjust_trans(dvectors &trans, const dvector &init, const igrid &controls, const double &e, const double &zero, const ivectors &a_lists, dvectors &a_freq_lists, const ivector &additionalalleles, const int &hap_or_freq, const int &debug); void make_a_freq_lists_fr_trans(dvectors &a_freq_lists, const dvector &init, const dvectors &trans, const int &lastloc, const int &debug); double makelik_Gfr(const dvectorss &alpha); double make_null_lik_Gfr(igrid &controls, const ivectors &allele_list, const dvectors &h_freq_lists); double make_lik_Gfr_DIRECT(const igrid &controls, const ivectors &a_lists, const dvectors &h_freq_lists); int check_a_freq_lists(const dvectors &a_freq_lists, const dvectors &h_freq_lists); //declarations for se.C double smapprox(int n); void cr(int npts, const dvector& d, const dvector& ll, double chip, ivector& edge, int& numedge); //declarations for random.C //float ran1(long *idum); //declarations for makeobjectfunctionsmkv.C void makejf3(dgrid &jointfreq3mkv2, const dgrid &jointfreq2, const dgrid &freqfreq, const ivectors &allele_list, const int &debug); void makejf3f(dgrid &jointfreq3fmkv2, const dgrid &jointfreq3mkv2, const ivectors &allele_list, const int &debug); void makeaugjointfreq4mkv2(dgrid &jointfreq4mkv2, const dgrid &jointfreq3mkv2, const int &C); void makeaugjointfreq4fmkv2(dgrid &jointfreq4fmkv2, const dgrid &jointfreq3fmkv2, const int &C); void augmentdatamkv2(dgrid &augjointfreq3mkv2, const dgrid &jointfreq3mkv2, dgrid &augjointfreq3fmkv2, const dgrid &jointfreq3fmkv2, const dgrid &jointfreq2, const dgrid &freqfreq, const ivector &allelecounts, const int &C, const int &debug); void makecondfreq3lmkv2(dgrid &condfreq3lmkv2, const igrid &freqallele, const dgrid &jointfreq2, const dgrid &jointfreq3mkv2, const ivector &allelecounts, const int &C, const int &debug); void makecondfreq3rmkv2(dgrid &condfreq3rmkv2, const igrid &freqallele, const dgrid &jointfreq2, const dgrid &jointfreq3mkv2, const ivector &allelecounts, const int &C, const int &debug); void makecondfreq3fmkv2(dgrid &condfreq3fmkv2, const dgrid &jointfreq3fmkv2, const dgrid &freqfreq, const ivector &allelecounts, const int &C, const int &debug); void makenullsharemkv2(dgrid &obsprobs, const igrid &data, const igrid &freqallele, const dgrid &freqfreq, const dgrid &condfreq2l, const dgrid &condfreq2r, const dgrid &condfreq3fmkv2, const dgrid &condfreq3lmkv2, const dgrid &condfreq3rmkv2, const ivector &allelecounts, const int &LE, const int &RE, const int &C, const int &debug); double getcondfreq3fmkv2(const igrid &freqallele, const ivector &allelecounts, const dgrid &condfreq3fmkv2, const int &ilocus, const int &iallele, const int &jallele); double getcondfreq3mkv2(const igrid &freqallele, const ivector &allelecounts, const dgrid &condfreq3mkv2, const int &ilocus, const int &iallele, const int &jallele, const int &kallele); void makealphamkv2(dgrid &alpha, const dgrid &initstore, const dgrid &transstore, const dgrid &obsprobs, const dvector &obsprobsAstore, const int &C, const int &LE, const int &RE); void makebetamkv2(dgrid &beta, const dgrid &initstore, const dgrid &transstore, const dgrid &transstoreC, const dgrid &obsprobs, const dvector &obsprobsAstore, const int &C, const int &LE, const int &RE); void makeobsprobsAstore(dvector &obsprobsAstore, const igrid &data, const ivector &allelecounts, const igrid &freqallele, const dgrid &freqfreq, const dgrid &jointfreq2, const dgrid &jointfreq3mkv2, const dgrid &jointfreq3fmkv2, const dgrid &jointfreq4mkv2, const dgrid &jointfreq4fmkv2, const int &LE, const int &RE, const int &C, const int &debug); double getjointfreq4fmkv2(const igrid &freqallele, const ivector &allelecounts, const dgrid &jointfreq4fmkv2, const int &ilocus, const int &iallele, const int &jallele, const int &C); double getjointfreq4mkv2(const igrid &freqallele, const ivector &allelecounts, const dgrid &jointfreq4mkv2, const int &ilocus, const int &iallele, const int &jallele, const int &kallele, const int &C); double getcondfreq3fmkv2(const igrid &freqallele, const ivector &allelecounts, const dgrid &condfreq3fmkv2, const int &ilocus, const int &iallele, const int &jallele); double getcondfreq3mkv2(const igrid &freqallele, const ivector &allelecounts, const dgrid &condfreq3mkv2, const int &ilocus, const int &iallele, const int &jallele, const int &kallele); double getfreqSMART(const igrid &freqallele, const dgrid &freqfreq, const int &allele, const int &locus); double getcondfreq2lSMART(const igrid &freqallele, const dgrid &freqfreq, const ivector &allelecounts, const dgrid &jointfreq2, const int &l, const int &allelel, const int &allelelp1); double getcondfreq2rSMART(const igrid &freqallele, const dgrid &freqfreq, const ivector &allelecounts, const dgrid &jointfreq2, const int &l, const int &allelel, const int &allelelp1); double getcondfreq3lSMART(const igrid &freqallele, const dgrid &freqfreq, const ivector &allelecounts, const dgrid &jointfreq2, const dgrid &jointfreq3mkv2, const dgrid &jointfreq3fmkv2, const int &l, const int &allelel, const int &allelelp1, const int &allelelp2); double getcondfreq3rSMART(const igrid &freqallele, const dgrid &freqfreq, const ivector &allelecounts, const dgrid &jointfreq2, const dgrid &jointfreq3mkv2, const dgrid &jointfreq3fmkv2, const int &l, const int &allelel, const int &allelelp1, const int &allelelp2); double getcondfreq4lSMART(const igrid &freqallele, const dgrid &freqfreq, const ivector &allelecounts, const dgrid &jointfreq2, const dgrid &jointfreq3mkv2, const dgrid &jointfreq4mkv2, const dgrid &jointfreq4fmkv2, const int &l, const int &allelel, const int &allelelp1, const int &allelelp2, const int &allelelp3, const int &C); double getcondfreq4rSMART(const igrid &freqallele, const dgrid &freqfreq, const ivector &allelecounts, const dgrid &jointfreq2, const dgrid &jointfreq3mkv2, const dgrid &jointfreq4mkv2, const dgrid &jointfreq4fmkv2, const int &l, const int &allelel, const int &allelelp1, const int &allelelp2, const int &allelelp3, const int &C); void makejf3fromh3fl(dgrid &jointfreq3mkv2, const dvectors &h3_freq_lists, const int &debug); void makejf2fromjf3(dgrid &jointfreq2, const dgrid &jointfreq3mkv2, ivectors &a_list, const int &debug); void makeindjointfreq3(dgrid &jointfreq3, const ivector &allelecountsff, const dgrid &freqfreq, const int &num_markers, const int &debug); //declarations for esthapfreqmkv2.C void makehap3fr_hmm_Hcon(dvectors &h3_freq_lists, const ivectors &a_lists, const igrid &controls, const int &debug); void makeximkv2_nomissing_Hfr(dvectorss &xi, const ivector &missing, const ivectors &a_lists, const igrid &controls, const int &debug); void makebmkv2_Hfr(dvectorss &b, const ivector &missing, const ivectors &a_lists, const igrid &controls, const int &debug); void maketransmkv2_Hfr(dvectors &trans, const dvectors &h3_freq_lists, const dvectors &h2_freq_lists, const ivectors &a_lists, const int &debug); void makealphamkv2_Hfr(dvectorss &alpha, const ivector &missing, const ivectors &a_lists, const dvector &init, const dvectors &trans, const dvectorss &b, const int &debug); void makebetamkv2_Hfr(dvectorss &beta, const ivector &missing, const dvectors &trans, const dvectorss &b, const int &debug); void makeximkv2_Hfr(dvectorss &xi, const ivector &missing, const dvectorss &alpha, const dvectorss &beta, const dvectors &trans, const dvectorss &b, const int &debug); void makeh3freqlistsHfrxi(dvectors &h3_freq_lists, const dvectorss &xi, const ivectors &a_lists, const int &debug); void makeh3freqlistsmkv2(dvectors &h3_freq_lists, dvectors &h2_freq_lists, const dvector &init, const dvectors &trans,const ivectors &a_lists, const int &debug); void makeh2freqlistsmkv2(dvectors &h2_freq_lists, const dvectors &h3_freq_lists, const ivectors &a_lists, const int &debug); void adjustmkv2(dvectors &h3_freq_lists_adj, const dvectors &h3_freq_lists, dvectors &h2_freq_lists, const double &e, const ivectors &a_lists,const int &debug); void makehap3fr_hmm_HconBAYES(dvectors &h3_freq_lists, const ivectors &a_lists, const igrid &controls, const int &bayes, const int &debug); void makealphamkv2_HfrBAYES(dvectorss &alpha, const ivector &missing, const ivectors &a_lists, const dvector &init, const dvectors &trans, const dvectorss &b, const int &debug); void makebetamkv2_HfrBAYES(dvectorss &beta, const ivector &missing, const ivectors &a_lists, const dvectors &trans, const dvectorss &b, const int &debug); void makeximkv2_HfrBAYES(dvectorss &xi, const ivector &missing, const ivectors &a_lists, const dvectorss &alpha, const dvectorss &beta, const dvectors &trans, const dvectorss &b, const int &debug); void makeh3countsHfrxi(dvectors &h3_freq_lists, const dvectorss &xi, const ivectors &a_lists, const int &debug); //genotype functions void makehap3fr_hmm_GconBAYES(dvectors &h3_freq_lists, const ivectors &a_lists, const igrid &controls,const int &bayes, const int &debug); void makebmkv2_Gfr(dvectorss &b, const ivectors &a_lists, const igrid &controls, const int &debug); void makealphamkv2_Gfr(dvectorss &alpha, const ivectors &a_lists, const dvector &init, const dvectors &trans, const dvectorss &b, const int &debug); void makebetamkv2_Gfr(dvectorss &alpha, const ivectors &a_lists, const dvectors &trans, const dvectorss &b, const int &debug); void makeximkv2_Gfr(dvectorss &xi, const ivectors &a_lists, const dvectorss &alpha, const dvectorss &beta, const dvectors &trans, const dvectorss &b, const int &debug); void makeh3countsGfrxi(dvectors &h3_freq_lists, const dvectorss &xi, const ivectors &a_lists, const int &debug); void makeh2countsGmkv2(dvectors &h2_freq_lists, const int &numgen, const dvectors &h3_freq_lists, const ivectors &a_lists, const int &debug); void makeh3freqlistsGmkv2(dvectors &h3_freq_lists, dvectors &h2_freq_lists, const dvector &init, const dvectors &trans,const ivectors &a_lists, const int &debug); //hap mkv1 functions void makehap2fr_hmm_HconBAYES(dvectors &h_freq_lists, const int &bayes, const ivectors &a_lists, const igrid &controls, const int &debug); void makealpha_HfrBAYES(dvectorss &alpha, const ivector &missing, const ivectors &a_lists, const dvector &init, const dvectors &trans, const dvectorss &b, const int &debug); void makebeta_HfrBAYES(dvectorss &beta, const ivector &missing, const ivectors &a_lists, const dvectors &trans, const dvectorss &b, const int &debug); void makeh2countsHfrxi(dvectors &h2_freq_lists, const dvectorss &xi, const ivectors &a_lists, const int &debug); void make_a_freq_lists_HfrBAYES(dvectors &a_freq_lists, const int &numhap, const dvectors &h_freq_lists, const int &debug); void makeh2freqlistsH(dvectors &h2_freq_lists, dvectors &a_freq_lists, const dvector &init, const dvectors &trans,const ivectors &a_lists, const int &debug); //Genotype Mkv1 functions void makehap2fr_hmm_GconBAYES(dvectors &h_freq_lists, const ivectors &a_lists, const igrid &controls, const int &bayes, const int &debug); void makealpha_GfrBAYES(dvectorss &alpha, const dvectors &a_freq_lists, const dvector &init, const dvectors &trans, const dvectorss &b, const int &debug); void makebeta_GfrBAYES(dvectorss &beta, const dvectors &a_freq_lists, const dvectors &trans, const dvectorss &b, const int &debug); void makexi_GfrBAYES(dvectorss &xi, const dvectorss &alpha, const dvectorss &beta, const dvectors &trans, const dvectorss &b, const dvectors &a_freq_lists, const int &debug); void makeh2countsGfrxi(dvectors &h2_freq_lists, const dvectorss &xi, const dvectors &a_freq_lists, const int &debug); //declarations for genfunctionsmkv2.C void makenullsharegenmkv2(dgrid &nullprobs, const igrid &data, const igrid &freqallele, const dgrid &freqfreq, const dgrid &jointfreq2, const dgrid &jointfreq3, const dgrid &jointfreq3f, const ivector &allelecounts, const int &LE, const int &RE, const int &C, const int &debug); void makeobsgenmkv2(dgrid &obsprobs, const dgrid &nullprobs, const igrid &data, const dvector &mutmatch, dvector &mutnomatch, const ivector &anchap, const int &C, const int &LE, const int &RE, const int &debug); void makeinitgenmkv2(dgrid &initstore, dvector &scratchvec, const dvector &x, const double &tau, const double &p, const int &C, const int &LE, const int &RE, const int &debug); void maketransgenmkv2(dgrid &transstore, dvector &scratchvec, const dvector &x, const double &tau, const double &p, const int &C, const int &LE, const int &RE, const int &debug); void maketransCgenmkv2(dgrid &transstoreC, dvector &scratchvec, const dvector &y, const double &tau, const double &p, const int &C, const int &LE, const int &RE, const int &debug); void makealphagenmkv2(dgrid &alpha, const dgrid &initstore, const dgrid &transstore, const dgrid &transstoreC, const dgrid &obsprobs, const dvectors &obsCnum, const dvectors &obsCden, const int &C, const int &LE, const int &RE); void makebetagenmkv2(dgrid &beta, const dgrid &initstore, const dgrid &transstore, const dgrid &transstoreC, const dgrid &obsprobs, const dvectors &obsCnum, const dvectors &obsCden, dvector &scratch, const int &C, const int &LE, const int &RE); void makenullCdengenmkv2(dvectors &nullCden, const igrid &data, const igrid &freqallele, const dgrid &freqfreq, const dgrid &jointfreq2, const ivector &allelecounts, const int &LE, const int &RE, const int &C, const int &debug); void makeobsCdengenmkv2(dvectors &obsCden, const dvectors &nullCden, const igrid &data, const dvector &mutmatch, dvector &mutnomatch, const ivector &anchap, const int &C, const int &LE, const int &RE, const int &debug); void makenullCnumgenmkv2(dvectors &nullCnum, const igrid &data, const igrid &freqallele, const dgrid &freqfreq, const dgrid &jointfreq2, const dgrid &jointfreq3mkv2, const dgrid &jointfreq3fmkv2, const dgrid &jointfreq4mkv2, const dgrid &jointfreq4fmkv2, const ivector &allelecounts, const int &LE, const int &RE, const int &C, const int &debug); void makeobsCnumgenmkv2(dvectors &obsCnum, const dvectors &nullCnum, const igrid &data, const dvector &mutmatch, dvector &mutnomatch, const ivector &anchap, const int &C, const int &LE, const int &RE, const int &debug); void makeloglikgenmkv2(dvector &loglikvec, const dgrid &alpha, const dgrid &initstore, const dgrid &obsprobs, const int &C, const int &RE); void makegammagenmkv2(dgrid &gamma, const dgrid &alpha, const dgrid &beta, const int &C, const int &LE, const int &RE, const dvectors &gammaC); void makecstargenmkv2(dvector &cstar, const dgrid &gamma, const int &C, const int &LE, const int &RE); void makecstarmutgenmkv2(dvector &cstarmut, const dvector &cstar, const dgrid &gamma, const igrid &data, const ivector &anchap, const dvector &mutmatch, const int &C, const int &LE, const int &RE); void makegammaC(dvectors &gammaC, const dgrid &alpha, const dgrid &beta, const dgrid &obsprobs, const dvectors &obsCnum, const dvectors &obsCden, const dgrid &initstore, const dgrid &transstore, const dgrid &transstoreC, const int &C, const int &LE, const int &RE);