void trans_data::readCovariates(string fcov) { string buffer;vector < string > tokens; int n_includedS = 0; int n_excludedS = 0; int n_missingS = 0; int n_includedC = 0; int n_excludedC = 0; vector < int > mappingS; vrb.title("Reading covariates in [" + fcov + "]"); input_file fd (fcov); if (fd.fail()) vrb.error("Cannot open file!"); //Read samples getline(fd, buffer); stb.split(buffer, tokens); for (int t = 1 ; t < tokens.size() ; t ++) { if (filter_sample.check(tokens[t])) { mappingS.push_back(findSample(tokens[t])); if (mappingS.back() >= 0) n_includedS ++; else n_missingS ++; } else { mappingS.push_back(-1); n_excludedS++; } } vrb.bullet(stb.str(n_includedS) + " samples included"); if (n_excludedS > 0) vrb.bullet(stb.str(n_excludedS) + " samples excluded by user"); if (n_missingS > 0) vrb.bullet(stb.str(n_missingS) + " samples without phenotype data"); if (n_includedS != sample_count) vrb.error("Cannot find covariates for " + stb.str(sample_count - n_includedS) + " samples!"); //Read covariates while(getline(fd, buffer)) { if (buffer.size() == 0) continue; stb.split(buffer, tokens); if (tokens.size() < 2) vrb.error("Incorrect number of columns!"); if (filter_covariate.check(tokens[0])) { covariate_val.push_back(vector < string > (sample_count)); for (int t = 1 ; t < tokens.size() ; t ++) if (mappingS[t-1] >= 0) covariate_val.back()[mappingS[t-1]] = tokens[t]; n_includedC ++; } else n_excludedC ++; } //Finalise covariate_count = n_includedC; vrb.bullet(stb.str(n_includedC) + " covariate(s) included"); if (n_excludedC > 0) vrb.bullet(stb.str(n_excludedC) + " covariate(s) excluded"); fd.close(); }
/* * SetValue(*) * set the value of a BaseValueType according to its type */ void TypedValue::SetTo(const string &strval) { if (strval.size()) { switch (type) { case S_BOOL: val.Bool = (atoi(strval.c_str()) != 0); break; case S_BYTE: val.byte = atoi(strval.c_str()); break; case S_INT: val.Int = atoi(strval.c_str()); break; case S_SHORT: val.Short = atoi(strval.c_str()); break; case S_LONG: val.Long = atoi(strval.c_str()); break; case S_FLOAT: val.Float = atof(strval.c_str()); break; case S_POOL: val.pool = findPool(strval.c_str()); break; case S_SAMPLE: val.sample = findSample(strval.c_str()); break; // case S_STRING: val.string = strval; break; default: internalError("can't set value to string, type = %d", type); } // fprintf(stderr, "SetVal: %s %d %d\n", strval, type, val.Int); } }
void gwas_data::readCovariates(string fcov) { string buffer; vector < string > str; int n_includedS = 0; int n_includedC = 0; int n_excludedC = 0; vector < int > mappingS; vrb.title("Reading covariates in [" + fcov + "]"); input_file fd (fcov); if (fd.fail()) vrb.error("Cannot open file!"); //Read samples getline(fd, buffer); if (buffer.size() == 0) vrb.error("No header line detected!"); stb.split(buffer, str); for (int t = 1 ; t < str.size() ; t ++) { mappingS.push_back(findSample(str[t])); if (mappingS.back() >= 0) n_includedS++; } //Read covariates while(getline(fd, buffer)) { stb.split(buffer, str); if (str.size() < 2) vrb.error("Incorrect number of columns!"); if (filter_covariate.check(str[0])) { covariate_val.push_back(vector < string > (sample_count)); assert(mappingS.size() == (str.size() - 1)); for (int t = 1 ; t < str.size() ; t ++) if (mappingS[t-1] >= 0) covariate_val.back()[mappingS[t-1]] = str[t]; n_includedC ++; } else n_excludedC ++; } //Finalise covariate_count = n_includedC; vrb.bullet(stb.str(n_includedC) + " covariates included"); if (n_excludedC > 0) vrb.bullet(stb.str(n_excludedC) + " covariates excluded"); fd.close(); }
int SoundPool::play(int sampleID, float leftVolume, float rightVolume, int priority, int loop, float rate) { ALOGV("play sampleID=%d, leftVolume=%f, rightVolume=%f, priority=%d, loop=%d, rate=%f", sampleID, leftVolume, rightVolume, priority, loop, rate); sp<Sample> sample; SoundChannel* channel; int channelID; Mutex::Autolock lock(&mLock); if (mQuit) { return 0; } // is sample ready? sample = findSample(sampleID); if ((sample == 0) || (sample->state() != Sample::READY)) { ALOGW(" sample %d not READY", sampleID); return 0; } dump(); // allocate a channel channel = allocateChannel_l(priority); // no channel allocated - return 0 if (!channel) { ALOGV("No channel allocated"); return 0; } channelID = ++mNextChannelID; ALOGV("play channel %p state = %d", channel, channel->state()); channel->play(sample, channelID, leftVolume, rightVolume, priority, loop, rate); return channelID; }
void cis_data::readPhenotypes(string fbed) { int n_includedS = 0; int n_includedP = 0; int n_excludedP = 0; int n_negativeStrd = 0; vector < int > mappingS; //Open BED file vrb.title("Reading phenotype data in [" + fbed + "]"); htsFile *fp = hts_open(fbed.c_str(),"r"); if (!fp) vrb.error("Cannot open file"); tbx_t *tbx = tbx_index_load(fbed.c_str()); if (!tbx) vrb.error("Cannot open index file"); kstring_t str = {0,0,0}; if (hts_getline(fp, KS_SEP_LINE, &str) <= 0 || !str.l || str.s[0] != tbx->conf.meta_char ) vrb.error("Cannot read header line!"); //Process sample names vector < string > tokens; stb.split(string(str.s), tokens); if (tokens.size() < 7) vrb.error("Incorrect number of columns!"); for (int t = 6 ; t < tokens.size() ; t ++) { mappingS.push_back(findSample(tokens[t])); if (mappingS.back() >= 0) n_includedS++; } //Read phenotypes unsigned int linecount =0; //Read phenotypes if (regionPhenotype.chr != "NA"){ hts_itr_t *itr = tbx_itr_querys(tbx, regionPhenotype.get().c_str()); vrb.bullet("target region [" + regionPhenotype.get() + "]"); if (!itr) vrb.error("Cannot jump to region!"); //Read data while (tbx_itr_next(fp, tbx, itr, &str) >= 0) { linecount ++; if (linecount % 100000 == 0) vrb.bullet("Read " + stb.str(linecount) + " lines"); stb.split(string(str.s), tokens); if (tokens.size() < 7) vrb.error("Incorrect number of columns!"); if ((grp_mode == GRP_NONE && filter_phenotype.check(tokens[3])) || (grp_mode != GRP_NONE && filter_phenotype.check(tokens[4]))) { phenotype_id.push_back(tokens[3]); phenotype_chr.push_back(tokens[0]); phenotype_start.push_back(atoi(tokens[1].c_str()) + 1); phenotype_end.push_back(atoi(tokens[2].c_str())); if (grp_mode > 0 && full_test) phenotype_grp.push_back("ALL_GENES"); if (grp_mode > 0 && !full_test) phenotype_grp.push_back(tokens[4]); phenotype_neg.push_back(tokens[5] == "-"); if (phenotype_neg.back()) n_negativeStrd ++; phenotype_val.push_back(vector < float > (sample_count, 0.0)); for (int t = 6 ; t < tokens.size() ; t ++) { if (mappingS[t-6] >= 0) { if (tokens[t] == "NA") phenotype_val.back()[mappingS[t-6]] = bcf_float_missing; else phenotype_val.back()[mappingS[t-6]] = stof(tokens[t]); } } n_includedP++; } else n_excludedP ++; } tbx_itr_destroy(itr); }else{ while (hts_getline(fp, KS_SEP_LINE, &str) >= 0) { linecount ++; if (linecount % 100000 == 0) vrb.bullet("Read " + stb.str(linecount) + " lines"); stb.split(string(str.s), tokens); if (str.l && str.s[0] != tbx->conf.meta_char) { if (tokens.size() < 7) vrb.error("Incorrect number of columns!"); if ((grp_mode == GRP_NONE && filter_phenotype.check(tokens[3])) || (grp_mode != GRP_NONE && filter_phenotype.check(tokens[4]))) { phenotype_id.push_back(tokens[3]); phenotype_chr.push_back(tokens[0]); phenotype_start.push_back(atoi(tokens[1].c_str()) + 1); phenotype_end.push_back(atoi(tokens[2].c_str())); if (grp_mode > 0 && full_test) phenotype_grp.push_back("ALL_GENES"); if (grp_mode > 0 && !full_test) phenotype_grp.push_back(tokens[4]); phenotype_neg.push_back(tokens[5] == "-"); if (phenotype_neg.back()) n_negativeStrd ++; phenotype_val.push_back(vector < float > (sample_count, 0.0)); for (int t = 6 ; t < tokens.size() ; t ++) { if (mappingS[t-6] >= 0) { if (tokens[t] == "NA") phenotype_val.back()[mappingS[t-6]] = bcf_float_missing; else phenotype_val.back()[mappingS[t-6]] = stof(tokens[t]); } } n_includedP++; } else n_excludedP ++; } } } //Finalize & verbose tbx_destroy(tbx); if (hts_close(fp)) vrb.error("Cannot properly close file"); phenotype_count = phenotype_id.size(); vrb.bullet(stb.str(n_includedP) + " phenotypes included"); if (n_excludedP > 0) vrb.bullet(stb.str(n_excludedP) + " phenotypes excluded by user"); if (n_negativeStrd > 0 ) vrb.bullet(stb.str(n_negativeStrd) + " phenotypes are on the negative strand"); if (phenotype_count == 0) vrb.leave("Cannot find phenotypes in target region!"); }
void union_data::readGenotypesVCF(string fvcf,string region) { int n_includedG = 0; int n_excludedG_mult = 0; int n_excludedG_void = 0; int n_excludedG_user = 0; int n_includedS = 0; vector < int > mappingS; genotype_id.clear(); genotype_chr.clear(); genotype_start.clear(); genotype_end.clear(); genotype_val.clear(); genotype_count=0; genotype_id_to_idx.clear(); //Opening files bcf_srs_t * sr = bcf_sr_init(); //vrb.bullet("target region [" + regionGenotype.get() + "]"); //if (bcf_sr_set_regions(sr, regionGenotype.get().c_str(), 0) == -1) vrb.error("Cannot jump to region!"); bcf_sr_set_regions(sr, region.c_str(), 0); if(!(bcf_sr_add_reader (sr, fvcf.c_str()))) { switch (sr->errnum) { case not_bgzf: vrb.error("File not compressed with bgzip!"); case idx_load_failed: vrb.error("Impossible to load index file!"); case file_type_error: vrb.error("File format not detected by htslib!"); default : vrb.error("Unknown error!"); } } //Sample processing int n_samples = bcf_hdr_nsamples(sr->readers[0].header); for (int i0 = 0 ; i0 < n_samples ; i0 ++) { mappingS.push_back(findSample(string(sr->readers[0].header->samples[i0]))); if (mappingS.back() >= 0) n_includedS++; } //Read genotype data int ngt, ngt_arr = 0, nds, nds_arr = 0, * gt_arr = NULL, nsl, nsl_arr = 0, * sl_arr = NULL; float * ds_arr = NULL; bcf1_t * line; unsigned int linecount = 0; while(bcf_sr_next_line (sr)) { linecount ++; if (linecount % 100000 == 0) vrb.bullet("Read " + stb.str(linecount) + " lines"); line = bcf_sr_get_line(sr, 0); if (line->n_allele == 2) { ngt = bcf_get_genotypes(sr->readers[0].header, line, >_arr, &ngt_arr); nds = bcf_get_format_float(sr->readers[0].header, line,"DS", &ds_arr, &nds_arr); if (nds == n_samples || ngt == 2*n_samples) { bcf_unpack(line, BCF_UN_STR); string sid = string(line->d.id); if (filter_genotype.check(sid)) { genotype_id.push_back(sid); genotype_chr.push_back(string(bcf_hdr_id2name(sr->readers[0].header, line->rid))); string genotype_ref = string(line->d.allele[0]); genotype_start.push_back(line->pos + 1); nsl = bcf_get_info_int32(sr->readers[0].header, line, "END", &sl_arr, &nsl_arr); if (nsl >= 0 && nsl_arr == 1) genotype_end.push_back(sl_arr[0]); else genotype_end.push_back(genotype_start.back() + genotype_ref.size() - 1); genotype_val.push_back(vector < float > (sample_count, 0.0)); for(int i = 0 ; i < n_samples ; i ++) { if (mappingS[i] >= 0) { if (nds > 0) genotype_val.back()[mappingS[i]] = ds_arr[i]; else { if (gt_arr[2*i+0] == bcf_gt_missing || gt_arr[2*i+1] == bcf_gt_missing) genotype_val.back()[mappingS[i]] = bcf_float_missing; else genotype_val.back()[mappingS[i]] = bcf_gt_allele(gt_arr[2*i+0]) + bcf_gt_allele(gt_arr[2*i+1]); } } } pair < string, int > temp (sid,n_includedG); genotype_id_to_idx.insert(temp); n_includedG++; } else n_excludedG_user ++; } else n_excludedG_void ++; } else n_excludedG_mult ++; } //Finalize free(gt_arr); free(ds_arr); bcf_sr_destroy(sr); genotype_count = n_includedG; //vrb.bullet(stb.str(n_includedG) + " variants included"); //if (n_excludedG_user > 0) vrb.bullet(stb.str(n_excludedG_user) + " variants excluded by user"); //if (n_excludedG_mult > 0) vrb.bullet(stb.str(n_excludedG_mult) + " multi-allelic variants excluded"); //if (n_excludedG_void > 0) vrb.bullet(stb.str(n_excludedG_void) + " uninformative variants excluded [no GT/DS]"); //if (genotype_count == 0) vrb.leave("Cannot find genotypes in target region!"); }
void union_data::readGenotypesBED(string fbed,string region) { string buffer; int n_includedG = 0; int n_excludedG_user = 0; int n_includedS = 0; int n_excludedS = 0; int n_missingS = 0; vector < int > mappingS; genotype_id.clear(); genotype_chr.clear(); genotype_start.clear(); genotype_end.clear(); genotype_val.clear(); genotype_count=0; genotype_id_to_idx.clear(); //Opening files htsFile *fp = hts_open(fbed.c_str(),"r"); if (!fp) vrb.error("Cannot open file!"); tbx_t * tbx = tbx_index_load(fbed.c_str()); if (!tbx) vrb.error("Cannot load index file!"); kstring_t str = {0,0,0}; if (hts_getline(fp, KS_SEP_LINE, &str) <= 0 || !str.l || str.s[0] != tbx->conf.meta_char ) vrb.error("Cannot read header line!"); //Process sample names vector < string > tokens; stb.split(string(str.s), tokens); if (tokens.size() < 7) vrb.error("Incorrect number of columns!"); for (int i0 = 6 ; i0 < tokens.size() ; i0 ++) { string sid = tokens[i0]; if (filter_sample.check(sid)) { mappingS.push_back(findSample(sid)); if (mappingS.back() >= 0) n_includedS ++; else n_missingS ++; } else { mappingS.push_back(-1); n_excludedS ++; } } //vrb.bullet(stb.str(n_includedS) + " samples included"); //if (n_excludedS > 0) vrb.bullet(stb.str(n_excludedS) + " samples excluded by user"); //if (n_missingS > 0) vrb.bullet(stb.str(n_missingS) + " samples without phenotype data"); //if (n_includedS != sample_count) vrb.error("Cannot find genotype for " + stb.str(sample_count - n_includedS) + " samples!"); unsigned int linecount = 0; //Jump to interesting region hts_itr_t *itr = tbx_itr_querys(tbx, region.c_str()); //vrb.bullet("target region [" + regionGenotype.get() + "]"); //if (!itr) vrb.error("Cannot jump to region!"); while (tbx_itr_next(fp, tbx, itr, &str) >= 0) { linecount ++; if (linecount % 100000 == 0) vrb.bullet("Read " + stb.str(linecount) + " lines"); stb.split(string(str.s), tokens); if (tokens.size() < 7) vrb.error("Incorrect number of columns!"); if (filter_genotype.check(tokens[3])) { genotype_id.push_back(tokens[3]); genotype_chr.push_back(tokens[0]); genotype_start.push_back(atoi(tokens[1].c_str()) + 1); genotype_end.push_back(atoi(tokens[2].c_str())); genotype_val.push_back(vector < float > (sample_count, 0.0)); for (int t = 6 ; t < tokens.size() ; t ++) { if (mappingS[t-6] >= 0) { if (tokens[t] == "NA") genotype_val.back()[mappingS[t-6]] = bcf_float_missing; else genotype_val.back()[mappingS[t-6]] = stof(tokens[t]); } } pair < string, int > temp (tokens[3],n_includedG); genotype_id_to_idx.insert(temp); n_includedG++; } else n_excludedG_user ++; } tbx_itr_destroy(itr); //Finalize & verbose tbx_destroy(tbx); if (hts_close(fp)) vrb.error("Cannot properly close file!"); genotype_count = n_includedG; //vrb.bullet(stb.str(n_includedG) + " variants included"); //if (n_excludedG_user > 0) vrb.bullet(stb.str(n_excludedG_user) + " variants excluded by user"); //if (genotype_count == 0) vrb.leave("Cannot find variants in target region!"); }
void union_data::readPhenotypes(string fbed, string region) { int n_includedS = 0; int n_includedP = 0; int n_excludedP = 0; vector < int > mappingS; phenotype_id.clear(); phenotype_chr.clear(); phenotype_start.clear(); phenotype_end.clear(); phenotype_val.clear(); phenotype_count=0; phenotype_id_to_idx.clear(); //Open BED file //vrb.title("Reading phenotype data in [" + fbed + "]"); htsFile *fp = hts_open(fbed.c_str(),"r"); if (!fp) vrb.error("Cannot open file"); tbx_t *tbx = tbx_index_load(fbed.c_str()); if (!tbx) vrb.error("Cannot open index file"); kstring_t str = {0,0,0}; if (hts_getline(fp, KS_SEP_LINE, &str) <= 0 || !str.l || str.s[0] != tbx->conf.meta_char ) vrb.error("Cannot read header line!"); //Process sample names vector < string > tokens; stb.split(string(str.s), tokens); if (tokens.size() < 7) vrb.error("Incorrect number of columns!"); for (int t = 6 ; t < tokens.size() ; t ++) { mappingS.push_back(findSample(tokens[t])); if (mappingS.back() >= 0) n_includedS++; } unsigned int linecount =0; //Read phenotypes hts_itr_t *itr = tbx_itr_querys(tbx, region.c_str()); //vrb.bullet("target region [" + regionPhenotype.get() + "]"); //if (!itr) vrb.error("Cannot jump to region!"); //Read data while (tbx_itr_next(fp, tbx, itr, &str) >= 0) { linecount ++; if (linecount % 100000 == 0) vrb.bullet("Read " + stb.str(linecount) + " lines"); stb.split(string(str.s), tokens); if (tokens.size() < 7) vrb.error("Incorrect number of columns!"); if (filter_phenotype.check(tokens[3])) { phenotype_id.push_back(tokens[3]); phenotype_chr.push_back(tokens[0]); phenotype_start.push_back(atoi(tokens[1].c_str()) + 1); phenotype_end.push_back(atoi(tokens[2].c_str())); phenotype_val.push_back(vector < float > (sample_count, 0.0)); for (int t = 6 ; t < tokens.size() ; t ++) { if (mappingS[t-6] >= 0) { if (tokens[t] == "NA") phenotype_val.back()[mappingS[t-6]] = bcf_float_missing; else phenotype_val.back()[mappingS[t-6]] = stof(tokens[t]); } } pair < string, int > temp (tokens[3],n_includedP); phenotype_id_to_idx.insert(temp); n_includedP++; } else n_excludedP ++; } tbx_itr_destroy(itr); //Finalize & verbose tbx_destroy(tbx); if (hts_close(fp)) vrb.error("Cannot properly close file"); phenotype_count = phenotype_id.size(); //vrb.bullet(stb.str(n_includedP) + " phenotypes included"); //if (n_excludedP > 0) vrb.bullet(stb.str(n_excludedP) + " phenotypes excluded by user"); //if (phenotype_count == 0) vrb.leave("Cannot find phenotypes in target region!"); }
void MenuScreen::handleEvent(SDL_Event &e) { if (e.type != SDL_KEYDOWN) return; if (pwdMode) { if (e.key.keysym.sym >= SDLK_a && e.key.keysym.sym <= SDLK_z) { if (pwdLen == 6) { playSample(findSample(makeCode("slct"))); return; } playSample(findSample(makeCode("tick"))); pwd[pwdLen++] = 'a'+(e.key.keysym.sym-SDLK_a); return; } if (e.key.keysym.sym == SDLK_BACKSPACE) { if (!pwdLen) { playSample(findSample(makeCode("slct"))); return; } playSample(findSample(makeCode("tick"))); pwdLen--; return; } if (e.key.keysym.sym == SDLK_RETURN) { playSample(findSample(makeCode("tick"))); if (pwdLen == 6) { pwd[6] = 0; game->newGame(pwd); e.key.keysym.sym = SDLK_a; game->activate(); } pwdMode = false; return; } if (e.key.keysym.sym == SDLK_ESCAPE) pwdMode = false; return; } switch (e.key.keysym.sym) { case SDLK_DOWN: if (opt == 3) opt = 0; else opt++; playSample(findSample(makeCode("slct"))); break; case SDLK_UP: if (opt) opt--; else opt = 3; playSample(findSample(makeCode("slct"))); break; case SDLK_SPACE: case SDLK_RETURN: { playSample(findSample(makeCode("tick"))); switch (opt) { case 0: game->newGame(); game->activate(); break; case 1: pwdLen = 0; pwdMode = true; break; case 2: imageScreen->showImage(this, "data/objects/credits.ut"); break; case 3: running = false; break; } break; } case SDLK_ESCAPE: if (game->playing) game->activate(); break; default:; } }
void genrich_data::readReferenceGenotypes(string fvcf) { vector < int > mappingS; //Opening files vrb.title("Reading variant list in [" + fvcf + "] MAF=" + stb.str(threshold_maf)); bcf_srs_t * sr = bcf_sr_init(); if(!(bcf_sr_add_reader (sr, fvcf.c_str()))) { switch (sr->errnum) { case not_bgzf: vrb.error("File not compressed with bgzip!"); case idx_load_failed: vrb.error("Impossible to load index file!"); case file_type_error: vrb.error("File format not detected by htslib!"); default : vrb.error("Unknown error!"); } } //Sample processing int included_sample = 0; int n_samples = bcf_hdr_nsamples(sr->readers[0].header); for (int i = 0 ; i < n_samples ; i ++) { mappingS.push_back(findSample(string(sr->readers[0].header->samples[i]))); if (mappingS.back() >= 0) included_sample ++; } vrb.bullet("#samples = " + stb.str(included_sample)); //Variant processing unsigned int n_excludedV_mult = 0, n_excludedV_void = 0, n_excludedV_rare = 0, n_excludedV_uchr = 0, n_line = 0, n_excludedV_toofar = 0; int ngt, ngt_arr = 0, *gt_arr = NULL; bcf1_t * line; while(bcf_sr_next_line (sr)) { line = bcf_sr_get_line(sr, 0); if (line->n_allele == 2) { bcf_unpack(line, BCF_UN_STR); string sid = string(line->d.id); string chr = string(bcf_hdr_id2name(sr->readers[0].header, line->rid)); int chr_idx = findCHR(chr); if (chr_idx >= 0) { unsigned int pos = line->pos + 1; ngt = bcf_get_genotypes(sr->readers[0].header, line, >_arr, &ngt_arr); if (ngt == 2*n_samples) { double freq = 0.0, tot = 0.0; for(int i = 0 ; i < n_samples ; i ++) { assert(gt_arr[2*i+0] != bcf_gt_missing && gt_arr[2*i+1] != bcf_gt_missing); if (mappingS[i] >= 0) { freq += bcf_gt_allele(gt_arr[2*i+0]) + bcf_gt_allele(gt_arr[2*i+1]); tot += 2.0; } } double maf = freq / tot; if (maf > 0.5) maf = 1.0 - maf; if (maf >= threshold_maf) { int dist_tss = getDistance(chr_idx, pos); if (dist_tss < 1e6) { string tmp_id = chr + "_" + stb.str(pos); genotype_uuid.insert(pair < string, unsigned int > (tmp_id, genotype_pos.size())); genotype_chr.push_back(chr_idx); genotype_pos.push_back(pos); genotype_maf.push_back(maf); genotype_dist.push_back(dist_tss); genotype_haps.push_back(vector < bool > (2 * included_sample, false)); for(int i = 0 ; i < n_samples ; i ++) { if (mappingS[i] >= 0) { genotype_haps.back()[2 * mappingS[i] + 0] = bcf_gt_allele(gt_arr[2 * i + 0]); genotype_haps.back()[2 * mappingS[i] + 1] = bcf_gt_allele(gt_arr[2 * i + 1]); } } } else n_excludedV_toofar++; } else n_excludedV_rare ++; } else n_excludedV_void ++; } else n_excludedV_uchr ++; } else n_excludedV_mult ++; if (n_line % 100000 == 0) vrb.bullet("#lines = " + stb.str(n_line)); n_line ++; } genotype_qtl = vector < bool > (genotype_pos.size(), false); genotype_gwas = vector < bool > (genotype_pos.size(), false); genotype_bin = vector < int > (genotype_pos.size(), -1); //Finalize bcf_sr_destroy(sr); vrb.bullet(stb.str(genotype_pos.size()) + " variants included"); if (n_excludedV_mult > 0) vrb.bullet(stb.str(n_excludedV_mult) + " multi-allelic variants excluded"); if (n_excludedV_uchr > 0) vrb.bullet(stb.str(n_excludedV_uchr) + " variants with unreferenced chromosome in --tss"); if (n_excludedV_rare > 0) vrb.bullet(stb.str(n_excludedV_rare) + " maf filtered variants"); if (n_excludedV_toofar > 0) vrb.bullet(stb.str(n_excludedV_toofar) + " too far variants"); }