X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=treemap.cpp;fp=treemap.cpp;h=0000000000000000000000000000000000000000;hb=4a877efa127e56e81a21f53cfdbbfd3bfbe8c4ff;hp=c228162aab1d511af3fc5318aaf3e5eb5b39610c;hpb=a6cf29fa4dac0909c7582cb1094151d34093ee76;p=mothur.git diff --git a/treemap.cpp b/treemap.cpp deleted file mode 100644 index c228162..0000000 --- a/treemap.cpp +++ /dev/null @@ -1,325 +0,0 @@ -/* - * treemap.cpp - * Mothur - * - * Created by Sarah Westcott on 1/26/09. - * Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved. - * - */ - -#include "treemap.h" - -/************************************************************/ - - TreeMap::TreeMap(string filename) { - m = MothurOut::getInstance(); - groupFileName = filename; - m->openInputFile(filename, fileHandle); -} - -/************************************************************/ - 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() { - 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; -} -/************************************************************/ -void TreeMap::addSeq(string seqName, string seqGroup) { - - namesOfSeqs.push_back(seqName); - setNamesOfGroups(seqGroup); - - 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]++; - } -} -/************************************************************/ -void TreeMap::removeSeq(string seqName) { - - //erase name from namesOfSeqs - for (int i = 0; i < namesOfSeqs.size(); i++) { - if (namesOfSeqs[i] == seqName) { - namesOfSeqs.erase(namesOfSeqs.begin()+i); - break; - } - } - - //decrement sequences in this group - string group = treemap[seqName].groupname; - seqsPerGroup[group]--; - - //remove seq from treemap - it = treemap.find(seqName); - treemap.erase(it); -} -/************************************************************/ - -int TreeMap::getNumGroups() { - - return namesOfGroups.size(); - -} -/************************************************************/ - -int TreeMap::getNumSeqs() { - - return namesOfSeqs.size(); - -} - -/************************************************************/ - -string TreeMap::getGroup(string sequenceName) { - - it = treemap.find(sequenceName); - if (it != treemap.end()) { //sequence name was in group file - return it->second.groupname; - }else { - return "not found"; - } - -} -/************************************************************/ -void TreeMap::setIndex(string seq, int index) { - it = treemap.find(seq); - if (it != treemap.end()) { //sequence name was in group file - treemap[seq].vectorIndex = index; - }else { - treemap[seq].vectorIndex = index; - treemap[seq].groupname = "not found"; - } -} -/************************************************************/ -int TreeMap::getIndex(string seq) { - - it = treemap.find(seq); - // if it is a valid sequence name then return index - if (it != treemap.end()) { return treemap[seq].vectorIndex; } - // if not return error code - else { return -1; } - -} -/************************************************************/ - -void TreeMap::setNamesOfGroups(string seqGroup) { - int i, count; - count = 0; - for (i=0; ierrorOut(e, "TreeMap", "isValidGroup"); - exit(1); - } -} -/***********************************************************************/ - -void TreeMap::print(ostream& output){ - try { - - for(it = treemap.begin(); it != treemap.end(); it++){ - output << it->first << '\t' << it->second.groupname << '\t' << it->second.vectorIndex << endl; - } - } - catch(exception& e) { - m->errorOut(e, "TreeMap", "print"); - exit(1); - } -} - -/************************************************************/ -void TreeMap::makeSim(vector ThisnamesOfGroups) { - try { - //set names of groups - namesOfGroups = ThisnamesOfGroups; - - //set names of seqs to names of groups - namesOfSeqs = ThisnamesOfGroups; - - // make map where key and value are both the group name since that what the tree.shared command wants - for (int i = 0; i < namesOfGroups.size(); i++) { - treemap[namesOfGroups[i]].groupname = namesOfGroups[i]; - seqsPerGroup[namesOfGroups[i]] = 1; - } - - numGroups = namesOfGroups.size(); - - } - catch(exception& e) { - m->errorOut(e, "TreeMap", "makeSim"); - exit(1); - } -} -/************************************************************/ -void TreeMap::makeSim(ListVector* list) { - try { - //set names of groups - namesOfGroups.clear(); - for(int i = 0; i < list->size(); i++) { - namesOfGroups.push_back(list->get(i)); - } - - //set names of seqs to names of groups - namesOfSeqs = namesOfGroups; - - // make map where key and value are both the group name since that what the tree.shared command wants - for (int i = 0; i < namesOfGroups.size(); i++) { - treemap[namesOfGroups[i]].groupname = namesOfGroups[i]; - seqsPerGroup[namesOfGroups[i]] = 1; - } - - numGroups = namesOfGroups.size(); - - } - catch(exception& e) { - m->errorOut(e, "TreeMap", "makeSim"); - exit(1); - } -} -/************************************************************/ -int TreeMap::getCopy(TreeMap& copy){ - try { - - namesOfGroups = copy.getNamesOfGroups(); - numGroups = copy.getNumGroups(); - namesOfSeqs = copy.namesOfSeqs; - seqsPerGroup = copy.seqsPerGroup; - treemap = copy.treemap; - - return 0; - } - catch(exception& e) { - m->errorOut(e, "TreeMap", "getCopy"); - exit(1); - } -} -/************************************************************/ -vector TreeMap::getNamesSeqs(){ - try { - - vector names; - - for(it = treemap.begin(); it != treemap.end(); it++){ - names.push_back(it->first); - } - - return names; - } - catch(exception& e) { - m->errorOut(e, "TreeMap", "getNamesSeqs"); - exit(1); - } -} -/************************************************************/ -vector TreeMap::getNamesSeqs(vector picked){ - try { - - vector names; - - for(it = treemap.begin(); it != treemap.end(); it++){ - //if you are belong to one the the groups in the picked vector add you - if (m->inUsersGroups(it->second.groupname, picked)) { - names.push_back(it->first); - } - } - - return names; - } - catch(exception& e) { - m->errorOut(e, "TreeMap", "getNamesSeqs"); - exit(1); - } -} - -/************************************************************/ -