本文整理汇总了C++中GroupMap::getGroup方法的典型用法代码示例。如果您正苦于以下问题:C++ GroupMap::getGroup方法的具体用法?C++ GroupMap::getGroup怎么用?C++ GroupMap::getGroup使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GroupMap
的用法示例。
在下文中一共展示了GroupMap::getGroup方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: readSharedRAbundVectors
void ClassifySvmSharedCommand::readSharedRAbundVectors(vector<SharedRAbundVector*>& lookup, GroupMap& designMap, LabeledObservationVector& labeledObservationVector, FeatureVector& featureVector) {
for ( int j = 0; j < lookup.size(); j++ ) {
//i++;
vector<individual> data = lookup[j]->getData();
Observation* observation = new Observation(data.size(), 0.0);
string sharedGroupName = lookup[j]->getGroup();
string treatmentName = designMap.getGroup(sharedGroupName);
//std::cout << "shared group name: " << sharedGroupName << " treatment name: " << treatmentName << std::endl;
//labeledObservationVector.push_back(std::make_pair(treatmentName, observation));
labeledObservationVector.push_back(LabeledObservation(j, treatmentName, observation));
//std::cout << " j=" << j << " label : " << lookup[j]->getLabel() << " group: " << lookup[j]->getGroup();
for (int k = 0; k < data.size(); k++) {
//std::cout << " abundance " << data[k].abundance;
observation->at(k) = double(data[k].abundance);
if ( j == 0) {
featureVector.push_back(Feature(k, m->currentSharedBinLabels[k]));
}
}
//std::cout << std::endl;
// let this happen later?
//delete lookup[j];
}
}
示例2: createTable
int CountTable::createTable(string namefile, string groupfile, bool createGroup) {
try {
if (namefile == "") { m->mothurOut("[ERROR]: namefile cannot be blank when creating a count table.\n"); m->control_pressed = true; }
GroupMap* groupMap;
int numGroups = 0;
groups.clear();
totalGroups.clear();
indexGroupMap.clear();
indexNameMap.clear();
counts.clear();
map<int, string> originalGroupIndexes;
if (groupfile != "") {
hasGroups = true;
groupMap = new GroupMap(groupfile); groupMap->readMap();
numGroups = groupMap->getNumGroups();
groups = groupMap->getNamesOfGroups();
totalGroups.resize(numGroups, 0);
}else if(createGroup) {
hasGroups = true;
numGroups = 1;
groups.push_back("Group1");
totalGroups.resize(numGroups, 0);
}
//sort groups to keep consistent with how we store the groups in groupmap
sort(groups.begin(), groups.end());
for (int i = 0; i < groups.size(); i++) { indexGroupMap[groups[i]] = i; }
m->setAllGroups(groups);
bool error = false;
string name;
uniques = 0;
total = 0;
//open input file
ifstream in;
m->openInputFile(namefile, in);
int total = 0;
while (!in.eof()) {
if (m->control_pressed) { break; }
string firstCol, secondCol;
in >> firstCol; m->gobble(in); in >> secondCol; m->gobble(in);
m->checkName(firstCol);
m->checkName(secondCol);
vector<string> names;
m->splitAtChar(secondCol, names, ',');
map<string, int> groupCounts;
int thisTotal = 0;
if (groupfile != "") {
//set to 0
for (int i = 0; i < groups.size(); i++) { groupCounts[groups[i]] = 0; }
//get counts for each of the users groups
for (int i = 0; i < names.size(); i++) {
string group = groupMap->getGroup(names[i]);
if (group == "not found") { m->mothurOut("[ERROR]: " + names[i] + " is not in your groupfile, please correct."); m->mothurOutEndLine(); error=true; }
else {
map<string, int>::iterator it = groupCounts.find(group);
//if not found, then this sequence is not from a group we care about
if (it != groupCounts.end()) {
it->second++;
thisTotal++;
}
}
}
}else if (createGroup) {
groupCounts["Group1"]=0;
for (int i = 0; i < names.size(); i++) {
string group = "Group1";
groupCounts["Group1"]++; thisTotal++;
}
}else { thisTotal = names.size(); }
//if group info, then read it
vector<int> thisGroupsCount; thisGroupsCount.resize(numGroups, 0);
for (int i = 0; i < numGroups; i++) {
thisGroupsCount[i] = groupCounts[groups[i]];
totalGroups[i] += thisGroupsCount[i];
}
map<string, int>::iterator it = indexNameMap.find(firstCol);
if (it == indexNameMap.end()) {
if (hasGroups) { counts.push_back(thisGroupsCount); }
indexNameMap[firstCol] = uniques;
totals.push_back(thisTotal);
total += thisTotal;
uniques++;
}else {
error = true;
m->mothurOut("[ERROR]: Your count table contains more than 1 sequence named " + firstCol + ", sequence names must be unique. Please correct."); m->mothurOutEndLine();
//.........这里部分代码省略.........
示例3: processList
//**********************************************************************************************************************
int RemoveRareCommand::processList(){
try {
string thisOutputDir = outputDir;
if (outputDir == "") { thisOutputDir += m->hasPath(listfile); }
string outputFileName = thisOutputDir + m->getRootName(m->getSimpleName(listfile)) + "pick" + m->getExtension(listfile);
string outputGroupFileName = thisOutputDir + m->getRootName(m->getSimpleName(groupfile)) + "pick" + m->getExtension(groupfile);
ofstream out, outGroup;
m->openOutputFile(outputFileName, out);
bool wroteSomething = false;
//you must provide a label because the names in the listfile need to be consistent
string thisLabel = "";
if (allLines) { m->mothurOut("For the listfile you must select one label, using first label in your listfile."); m->mothurOutEndLine(); }
else if (labels.size() > 1) { m->mothurOut("For the listfile you must select one label, using " + (*labels.begin()) + "."); m->mothurOutEndLine(); thisLabel = *labels.begin(); }
else { thisLabel = *labels.begin(); }
InputData input(listfile, "list");
ListVector* list = input.getListVector();
//get first one or the one we want
if (thisLabel != "") {
//use smart distancing
set<string> userLabels; userLabels.insert(thisLabel);
set<string> processedLabels;
string lastLabel = list->getLabel();
while((list != NULL) && (userLabels.size() != 0)) {
if(userLabels.count(list->getLabel()) == 1){
processedLabels.insert(list->getLabel());
userLabels.erase(list->getLabel());
break;
}
if ((m->anyLabelsToProcess(list->getLabel(), userLabels, "") == true) && (processedLabels.count(lastLabel) != 1)) {
processedLabels.insert(list->getLabel());
userLabels.erase(list->getLabel());
delete list;
list = input.getListVector(lastLabel);
break;
}
lastLabel = list->getLabel();
delete list;
list = input.getListVector();
}
if (userLabels.size() != 0) {
m->mothurOut("Your file does not include the label " + thisLabel + ". I will use " + lastLabel + "."); m->mothurOutEndLine();
list = input.getListVector(lastLabel);
}
}
//if groupfile is given then use it
GroupMap* groupMap;
if (groupfile != "") {
groupMap = new GroupMap(groupfile); groupMap->readMap();
SharedUtil util;
vector<string> namesGroups = groupMap->getNamesOfGroups();
util.setGroups(Groups, namesGroups);
m->openOutputFile(outputGroupFileName, outGroup);
}
if (list != NULL) {
//make a new list vector
ListVector newList;
newList.setLabel(list->getLabel());
//for each bin
for (int i = 0; i < list->getNumBins(); i++) {
if (m->control_pressed) { if (groupfile != "") { delete groupMap; outGroup.close(); m->mothurRemove(outputGroupFileName); } out.close(); m->mothurRemove(outputFileName); return 0; }
//parse out names that are in accnos file
string binnames = list->get(i);
vector<string> names;
string saveBinNames = binnames;
m->splitAtComma(binnames, names);
vector<string> newGroupFile;
if (groupfile != "") {
vector<string> newNames;
saveBinNames = "";
for(int k = 0; k < names.size(); k++) {
string group = groupMap->getGroup(names[k]);
if (m->inUsersGroups(group, Groups)) {
newGroupFile.push_back(names[k] + "\t" + group);
newNames.push_back(names[k]);
saveBinNames += names[k] + ",";
}
}
names = newNames;
saveBinNames = saveBinNames.substr(0, saveBinNames.length()-1);
}
if (names.size() > nseqs) { //keep bin
newList.push_back(saveBinNames);
for(int k = 0; k < newGroupFile.size(); k++) { outGroup << newGroupFile[k] << endl; }
}
//.........这里部分代码省略.........
示例4: createSharedFromListGroup
//**********************************************************************************************************************
int SharedCommand::createSharedFromListGroup() {
try {
GroupMap* groupMap = NULL;
CountTable* countTable = NULL;
pickedGroups = false;
if (groupfile != "") {
groupMap = new GroupMap(groupfile);
int groupError = groupMap->readMap();
if (groupError == 1) { delete groupMap; return 0; }
vector<string> allGroups = groupMap->getNamesOfGroups();
if (Groups.size() == 0) { Groups = allGroups; }
else { pickedGroups = true; }
}else{
countTable = new CountTable();
countTable->readTable(countfile, true, false);
vector<string> allGroups = countTable->getNamesOfGroups();
if (Groups.size() == 0) { Groups = allGroups; }
else { pickedGroups = true; }
}
int numGroups = Groups.size();
if (m->getControl_pressed()) { return 0; }
ofstream out;
string filename = "";
if (!pickedGroups) {
string filename = listfile;
if (outputDir == "") { outputDir += util.hasPath(filename); }
map<string, string> variables;
variables["[filename]"] = outputDir + util.getRootName(util.getSimpleName(filename));
filename = getOutputFileName("shared",variables);
outputNames.push_back(filename); outputTypes["shared"].push_back(filename);
util.openOutputFile(filename, out);
}
//set fileroot
fileroot = outputDir + util.getRootName(util.getSimpleName(listfile));
map<string, string> variables;
variables["[filename]"] = fileroot;
string errorOff = "no error";
InputData input(listfile, "shared", Groups);
SharedListVector* SharedList = input.getSharedListVector();
string lastLabel = SharedList->getLabel();
SharedRAbundVectors* lookup;
if (m->getControl_pressed()) {
delete SharedList; if (groupMap != NULL) { delete groupMap; } if (countTable != NULL) { delete countTable; }
out.close(); if (!pickedGroups) { util.mothurRemove(filename); }
return 0;
}
//sanity check
vector<string> namesSeqs;
int numGroupNames = 0;
if (current->getGroupMode() == "group") { namesSeqs = groupMap->getNamesSeqs(); numGroupNames = groupMap->getNumSeqs(); }
else { namesSeqs = countTable->getNamesOfSeqs(); numGroupNames = countTable->getNumUniqueSeqs(); }
int error = ListGroupSameSeqs(namesSeqs, SharedList);
if ((!pickedGroups) && (SharedList->getNumSeqs() != numGroupNames)) { //if the user has not specified any groups and their files don't match exit with error
m->mothurOut("Your group file contains " + toString(numGroupNames) + " sequences and list file contains " + toString(SharedList->getNumSeqs()) + " sequences. Please correct.\n"); m->setControl_pressed(true);
out.close(); if (!pickedGroups) { util.mothurRemove(filename); } //remove blank shared file you made
//delete memory
delete SharedList; if (groupMap != NULL) { delete groupMap; } if (countTable != NULL) { delete countTable; }
return 0;
}
if (error == 1) { m->setControl_pressed(true); }
//if user has specified groups make new groupfile for them
if ((pickedGroups) && (current->getGroupMode() == "group")) { //make new group file
string groups = "";
if (numGroups < 4) {
for (int i = 0; i < numGroups-1; i++) {
groups += Groups[i] + ".";
}
groups+=Groups[numGroups-1];
}else { groups = "merge"; }
map<string, string> variables;
variables["[filename]"] = outputDir + util.getRootName(util.getSimpleName(listfile));
variables["[group]"] = groups;
string newGroupFile = getOutputFileName("group",variables);
outputTypes["group"].push_back(newGroupFile);
outputNames.push_back(newGroupFile);
ofstream outGroups;
util.openOutputFile(newGroupFile, outGroups);
vector<string> names = groupMap->getNamesSeqs();
string groupName;
for (int i = 0; i < names.size(); i++) {
groupName = groupMap->getGroup(names[i]);
if (isValidGroup(groupName, Groups)) {
outGroups << names[i] << '\t' << groupName << endl;
}
}
//.........这里部分代码省略.........