本文整理汇总了C++中Sim::getNextRecord方法的典型用法代码示例。如果您正苦于以下问题:C++ Sim::getNextRecord方法的具体用法?C++ Sim::getNextRecord怎么用?C++ Sim::getNextRecord使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Sim
的用法示例。
在下文中一共展示了Sim::getNextRecord方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: commandGenoSNP
void commandGenoSNP(string infile, string outfile, string manfile, int start_pos, int end_pos, bool verbose)
{
Sim *sim = new Sim();
ofstream outFStream;
ostream *outStream;
outStream = &cout;
if (outfile == "-") {
} else {
outFStream.open(outfile.c_str(),ios::binary | ios::trunc | ios::out);
outStream = &outFStream;
}
sim->open(infile);
if (end_pos == -1) end_pos = sim->numSamples - 1;
char *sampleName = new char[sim->sampleNameSize];
vector<uint16_t> *intensity = new vector<uint16_t>;;
for (int n=0; n <= end_pos ; n++) {
intensity->clear();
sim->getNextRecord(sampleName, intensity);
if (n < start_pos) continue;
*outStream << sampleName << "\t" << sampleName;
for (vector<uint16_t>::iterator i = intensity->begin(); i != intensity->end(); i+=2) {
*outStream << "\t" << std::fixed << setprecision(3) << *i;
*outStream << " " << std::fixed << setprecision(3) << *(i+1);
}
*outStream << endl;
}
delete sim;
}
示例2: commandView
void commandView(string infile, bool verbose)
{
Sim *sim = new Sim();
cout << endl << "Reading SIM file: " << infile << endl;
sim->open(infile);
if (!sim->errorMsg.empty()) {
cout << sim->errorMsg << endl;
exit(1);
}
cout << "Magic: " << sim->magic << endl;
cout << "Version: " << (int)sim->version << endl;
cout << "Name Size: " << sim->sampleNameSize << endl;
cout << "Samples: " << sim->numSamples << endl;
cout << "Probes: " << sim->numProbes << endl;
cout << "Channels: " << (int)sim->numChannels << endl;
cout << "Format: " << (int)sim->numberFormat << endl;
cout << "RecLength: " << (int)sim->recordLength << endl;
cout << endl;
char *sampleName = new char[sim->sampleNameSize];
vector<uint16_t> *intensity_int = new vector<uint16_t>;
vector<float> *intensity_float = new vector<float>;
for (unsigned int n = 0; n < sim->numSamples; n++) {
intensity_int->clear();
intensity_float->clear();
if (sim->numberFormat == 0) sim->getNextRecord(sampleName,intensity_float);
else sim->getNextRecord(sampleName,intensity_int);
cout << sampleName << "\t: ";
if (verbose) { // dump intensities as well as sample names
// there *must* be a better way of doing this...
if (sim->numberFormat == 0) {
for (vector<float>::iterator i = intensity_float->begin(); i != intensity_float->end(); i++) {
cout << *i << " ";
}
} else {
for (vector<uint16_t>::iterator i = intensity_int->begin(); i != intensity_int->end(); i++) {
cout << *i << " ";
}
}
}
cout << endl;
}
delete intensity_int;
delete intensity_float;
delete sampleName;
}
示例3: commandIlluminus
//
// Generate Illuminus output
//
// infile is a filename or '-' for stdin
// outfile is a filename or '-' for stdout
// manfile is the full path to the manifest file
// start_pos is the Probe number (starting from 0) to start from
// end_pos is the Probe number (from 0 to numProbes-1) to end at, or -1
// verbose if true will display progress messages to stderr
//
void commandIlluminus(string infile, string outfile, string manfile, int start_pos, int end_pos, bool verbose)
{
Sim *sim = new Sim();
ofstream outFStream;
ostream *outStream;
char *sampleName;
vector<uint16_t> *intensity_int = new vector<uint16_t>;
vector<float> *intensity_float = new vector<float>;
vector<vector<float> > SampleArray;
Manifest *manifest = new Manifest();
if (outfile == "-") {
outStream = &cout;
} else {
outFStream.open(outfile.c_str(),ios::binary | ios::trunc | ios::out);
outStream = &outFStream;
}
sim->open(infile);
if (sim->numChannels != 2) throw("simtools can only handle SIM files with exactly 2 channels at present");
sampleName = new char[sim->sampleNameSize];
// We need a manifest file to sort the SNPs
loadManifest(manifest, manfile);
// Sort the SNPs into position order
sort(manifest->snps.begin(), manifest->snps.end(), SortByPosition);
if (end_pos == -1) end_pos = sim->numProbes - 1;
// load the (relevant parts of) the SIM file
if (verbose) cerr << "Reading SIM file " << infile << endl;
*outStream << "SNP\tCoor\tAlleles";
for(unsigned int n=0; n < sim->numSamples; n++) {
vector<float> *s = new vector<float>;
if (!s) { cerr << "new s failed" << endl; exit(1); }
intensity_float->clear();
intensity_int->clear();
if (sim->numberFormat == 0) sim->getNextRecord(sampleName, intensity_float);
else sim->getNextRecord(sampleName, intensity_int);
for (int i=start_pos; i <= end_pos; i++) {
for (int c=0; c < sim->numChannels; c++) {
float v;
int k = i * sim->numChannels + c;
if (sim->numberFormat==0) v = intensity_float->at(k);
else v = intensity_int->at(k);
s->push_back(v);
}
}
SampleArray.push_back(*s);
// Ooops! This is hardcoded for two channels. To Be Fixed. FIXME
*outStream << "\t" << sampleName << "A\t" << sampleName << "B";
}
*outStream << endl;
// Now write it out in Illuminus format
if (verbose) cerr << "Writing Illuminus file " << outfile << endl;
for (int n = start_pos; n <= end_pos; n++) {
*outStream << manifest->snps[n].name << "\t" << manifest->snps[n].position << "\t" << manifest->snps[n].snp[0] << manifest->snps[n].snp[1];
for (unsigned int i = 0; i < sim->numSamples; i++) {
vector<float> s = SampleArray[i];
for (unsigned int j=0; j < sim->numChannels; j++) {
int k = (n - start_pos) * sim->numChannels + j;
*outStream << '\t' << setw(7) << std::fixed << setprecision(3) << s[k];
}
}
*outStream << endl;
}
}