X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=treemap.cpp;h=c228162aab1d511af3fc5318aaf3e5eb5b39610c;hb=2c97dd48b8e27ee0a6a86c7a082f4c504c3357c6;hp=450d8fba67b8beafe7c824b6a18b479705b3875c;hpb=03dca3b32a903c3f29fbcf5b410b19d6ab6dae63;p=mothur.git diff --git a/treemap.cpp b/treemap.cpp index 450d8fb..c228162 100644 --- a/treemap.cpp +++ b/treemap.cpp @@ -19,6 +19,43 @@ /************************************************************/ TreeMap::~TreeMap(){} +/************************************************************/ +int TreeMap::readMap(string gf) { + + groupFileName = gf; + m->openInputFile(gf, fileHandle); + + string seqName, seqGroup; + int error = 0; + + while(fileHandle){ + fileHandle >> seqName; m->gobble(fileHandle); //read from first column + fileHandle >> seqGroup; //read from second column + + if (m->control_pressed) { fileHandle.close(); return 1; } + + setNamesOfGroups(seqGroup); + + map::iterator itCheck = treemap.find(seqName); + if (itCheck != treemap.end()) { error = 1; m->mothurOut("[WARNING]: Your groupfile contains more than 1 sequence named " + seqName + ", sequence names must be unique. Please correct."); m->mothurOutEndLine(); } + else { + namesOfSeqs.push_back(seqName); + treemap[seqName].groupname = seqGroup; //store data in map + + it2 = seqsPerGroup.find(seqGroup); + if (it2 == seqsPerGroup.end()) { //if it's a new group + seqsPerGroup[seqGroup] = 1; + }else {//it's a group we already have + seqsPerGroup[seqGroup]++; + } + } + + m->gobble(fileHandle); + } + fileHandle.close(); + + return error; +} /************************************************************/ int TreeMap::readMap() { @@ -26,7 +63,7 @@ int TreeMap::readMap() { int error = 0; while(fileHandle){ - fileHandle >> seqName; //read from first column + fileHandle >> seqName; m->gobble(fileHandle); //read from first column fileHandle >> seqGroup; //read from second column if (m->control_pressed) { fileHandle.close(); return 1; } @@ -230,14 +267,14 @@ void TreeMap::makeSim(ListVector* list) { } } /************************************************************/ -int TreeMap::getCopy(TreeMap* copy){ +int TreeMap::getCopy(TreeMap& copy){ try { - namesOfGroups = copy->getNamesOfGroups(); - numGroups = copy->getNumGroups(); - namesOfSeqs = copy->namesOfSeqs; - seqsPerGroup = copy->seqsPerGroup; - treemap = copy->treemap; + namesOfGroups = copy.getNamesOfGroups(); + numGroups = copy.getNumGroups(); + namesOfSeqs = copy.namesOfSeqs; + seqsPerGroup = copy.seqsPerGroup; + treemap = copy.treemap; return 0; }