+++ /dev/null
-/*
- * order.cpp
- *
- *
- * Created by Pat Schloss on 8/8/08.
- * Copyright 2008 Patrick D. Schloss. All rights reserved.
- *
- */
-
-#include "ordervector.hpp"
-
-
-/***********************************************************************/
-
-OrderVector::OrderVector() : DataVector() {}
-
-/***********************************************************************/
-
-//OrderVector::OrderVector(int ns) : DataVector(), data(ns, -1) {}
-
-/***********************************************************************/
-
-OrderVector::OrderVector(string id, vector<int> ov) :
- DataVector(id), data(ov)
-{
- updateStats();
-}
-
-/***********************************************************************/
-
-OrderVector::OrderVector(ifstream& f) : DataVector() {
- try {
- int hold;
-
- f >> label;
- f >> hold;
-
- data.assign(hold, -1);
-
- int inputData;
-
- for(int i=0;i<hold;i++){
- f >> inputData;
- set(i, inputData);
- }
-
- updateStats();
- }
- catch(exception& e) {
- m->errorOut(e, "OrderVector", "OrderVector");
- exit(1);
- }
-}
-
-/***********************************************************************/
-
-
-int OrderVector::getNumBins(){
- if(needToUpdate == 1){ updateStats(); }
- return numBins;
-}
-
-/***********************************************************************/
-
-int OrderVector::getNumSeqs(){
- if(needToUpdate == 1){ updateStats(); }
- return numSeqs;
-}
-
-/***********************************************************************/
-
-int OrderVector::getMaxRank(){
- if(needToUpdate == 1){ updateStats(); }
- return maxRank;
-}
-/***********************************************************************/
-
-void OrderVector::clear(){
- numBins = 0;
- maxRank = 0;
- numSeqs = 0;
- data.clear();
-}
-/***********************************************************************/
-
-
-
-void OrderVector::set(int index, int binNumber){
-
- data[index] = binNumber;
- needToUpdate = 1;
-
-}
-
-/***********************************************************************/
-
-int OrderVector::get(int index){
- return data[index];
-}
-
-/***********************************************************************/
-
-void OrderVector::push_back(int index){
-
- data.push_back(index);
- needToUpdate = 1;
-
-}
-
-/***********************************************************************/
-
-void OrderVector::print(ostream& output){
- try {
- output << label << '\t' << numSeqs << '\t';
-
- for(int i=0;i<data.size();i++){
- output << data[i] << '\t';
- }
- output << endl;
- }
- catch(exception& e) {
- m->errorOut(e, "OrderVector", "print");
- exit(1);
- }
-}
-
-/***********************************************************************/
-
-void OrderVector::print(string prefix, ostream& output){
- try {
- output << prefix << '\t' << numSeqs << '\t';
-
- for(int i=0;i<numSeqs;i++){
- output << data[i] << '\t';
- }
- output << endl;
- }
- catch(exception& e) {
- m->errorOut(e, "OrderVector", "print");
- exit(1);
- }
-}
-
-/***********************************************************************/
-
-void OrderVector::resize(int){
- m->mothurOut("resize() did nothing in class OrderVector");
-}
-
-/***********************************************************************/
-
-int OrderVector::size(){
- return data.size();
-}
-
-/***********************************************************************/
-
-vector<int>::iterator OrderVector::begin(){
- return data.begin();
-}
-
-/***********************************************************************/
-
-vector<int>::iterator OrderVector::end(){
- return data.end();
-}
-
-/***********************************************************************/
-
-RAbundVector OrderVector::getRAbundVector(){
- try {
- RAbundVector rav(data.size());
-
- for(int i=0;i<numSeqs;i++){
- rav.set(data[i], rav.get(data[i]) + 1);
- }
- sort(rav.rbegin(), rav.rend());
- for(int i=numSeqs-1;i>=0;i--){
- if(rav.get(i) == 0){ rav.pop_back(); }
- else{
- break;
- }
- }
- rav.setLabel(label);
-
- return rav;
- }
- catch(exception& e) {
- m->errorOut(e, "OrderVector", "getRAbundVector");
- exit(1);
- }
-}
-
-/***********************************************************************/
-
-SAbundVector OrderVector::getSAbundVector(){
-
- RAbundVector rav(this->getRAbundVector());
- return rav.getSAbundVector();
-
-}
-
-/***********************************************************************/
-
-OrderVector OrderVector::getOrderVector(map<string,int>* hold = 0){
- return *this;
-}
-
-/***********************************************************************/
-
-void OrderVector::updateStats(){
- try {
- needToUpdate = 0;
- // int maxBinVectorLength = 0;
- numSeqs = 0;
- numBins = 0;
- maxRank = 0;
-
- for(int i=0;i<data.size();i++){
- if(data[i] != -1){
- numSeqs++;
- }
- }
-
- vector<int> hold(numSeqs);
-
- for(int i=0;i<numSeqs;i++){
- if(data[i] != -1){
- hold[data[i]] = hold[data[i]]+1;
- }
- }
- for(int i=0;i<numSeqs;i++){
- if(hold[i] > 0) { numBins++; }
- if(hold[i] > maxRank) { maxRank = hold[i]; }
- }
- }
- catch(exception& e) {
- m->errorOut(e, "OrderVector", "updateStats");
- exit(1);
- }
-}
-
-/***********************************************************************/
-