+++ /dev/null
-/*
- * inputdata.cpp
- * Dotur
- *
- * Created by Sarah Westcott on 11/18/08.
- * Copyright 2008 Schloss Lab UMASS Amherst. All rights reserved.
- *
- */
-
-#include "inputdata.h"
-#include "ordervector.hpp"
-#include "listvector.hpp"
-#include "rabundvector.hpp"
-
-/***********************************************************************/
-
-InputData::InputData(string fName, string f) : format(f){
- m = MothurOut::getInstance();
- m->openInputFile(fName, fileHandle);
- filename = fName;
- m->saveNextLabel = "";
-}
-/***********************************************************************/
-
-InputData::~InputData(){
- fileHandle.close();
- m->saveNextLabel = "";
-}
-
-/***********************************************************************/
-
-InputData::InputData(string fName, string orderFileName, string f) : format(f){
- try {
- m = MothurOut::getInstance();
- ifstream ofHandle;
- m->openInputFile(orderFileName, ofHandle);
- string name;
-
- int count = 0;
-
- while(ofHandle){
- ofHandle >> name;
- orderMap[name] = count;
- count++;
- m->gobble(ofHandle);
- }
- ofHandle.close();
-
- m->openInputFile(fName, fileHandle);
- m->saveNextLabel = "";
-
- }
- catch(exception& e) {
- m->errorOut(e, "InputData", "InputData");
- exit(1);
- }
-}
-/***********************************************************************/
-
-ListVector* InputData::getListVector(){
- try {
- if(!fileHandle.eof()){
- if(format == "list") {
- list = new ListVector(fileHandle);
- }else{ list = NULL; }
-
- m->gobble(fileHandle);
- return list;
- }
- else{
- return NULL;
- }
- }
- catch(exception& e) {
- m->errorOut(e, "InputData", "getListVector");
- exit(1);
- }
-}
-
-/***********************************************************************/
-ListVector* InputData::getListVector(string label){
- try {
- ifstream in;
- string thisLabel;
- m->openInputFile(filename, in);
-
- if(in){
-
- if (format == "list") {
-
- while (in.eof() != true) {
-
- list = new ListVector(in);
- thisLabel = list->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { break; }
- //so you don't loose this memory
- else { delete list; }
- m->gobble(in);
- }
- }else{ list = NULL; }
-
- in.close();
- return list;
- }
- else{
- return NULL;
- }
- }
- catch(exception& e) {
- m->errorOut(e, "InputData", "getListVector");
- exit(1);
- }
-}
-/***********************************************************************/
-ListVector* InputData::getListVector(string label, bool resetFP){
- try {
- string thisLabel;
- fileHandle.clear();
- fileHandle.seekg(0);
-
- if(fileHandle){
-
- if (format == "list") {
-
- while (fileHandle.eof() != true) {
-
- list = new ListVector(fileHandle); m->gobble(fileHandle);
- thisLabel = list->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { break; }
- //so you don't loose this memory
- else { delete list; }
- }
- }else{ list = NULL; }
-
- return list;
- }
- else{
- return NULL;
- }
- }
- catch(exception& e) {
- m->errorOut(e, "InputData", "getListVector");
- exit(1);
- }
-}
-
-/***********************************************************************/
-
-SharedListVector* InputData::getSharedListVector(){
- try {
- if(fileHandle){
- if (format == "shared") {
- SharedList = new SharedListVector(fileHandle);
- }else{ SharedList = NULL; }
-
- m->gobble(fileHandle);
- return SharedList;
- }
- else{
- return NULL;
- }
- }
- catch(exception& e) {
- m->errorOut(e, "InputData", "getSharedListVector");
- exit(1);
- }
-}
-/***********************************************************************/
-
-SharedListVector* InputData::getSharedListVector(string label){
- try {
- ifstream in;
- string thisLabel;
- m->openInputFile(filename, in);
-
- if(in){
-
- if (format == "shared") {
-
- while (in.eof() != true) {
-
- SharedList = new SharedListVector(in);
- thisLabel = SharedList->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { break; }
- //so you don't loose this memory
- else { delete SharedList; }
- m->gobble(in);
- }
-
- }else{ SharedList = NULL; }
-
- in.close();
- return SharedList;
-
- }else{
- return NULL;
- }
- }
- catch(exception& e) {
- m->errorOut(e, "InputData", "getSharedListVector");
- exit(1);
- }
-}
-
-
-
-/***********************************************************************/
-
-SharedOrderVector* InputData::getSharedOrderVector(){
- try {
- if(fileHandle){
- if (format == "sharedfile") {
- SharedOrder = new SharedOrderVector(fileHandle);
- }else{ SharedOrder = NULL; }
-
- m->gobble(fileHandle);
- return SharedOrder;
-
- }else{
- return NULL;
- }
- }
- catch(exception& e) {
- m->errorOut(e, "InputData", "getSharedOrderVector");
- exit(1);
- }
-}
-
-/***********************************************************************/
-
-SharedOrderVector* InputData::getSharedOrderVector(string label){
- try {
- ifstream in;
- string thisLabel;
- m->openInputFile(filename, in);
-
- if(in){
-
- if (format == "sharedfile") {
-
- while (in.eof() != true) {
-
- SharedOrder = new SharedOrderVector(in);
- thisLabel = SharedOrder->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { break; }
- //so you don't loose this memory
- else { delete SharedOrder; }
- m->gobble(in);
- }
-
- }else{ SharedOrder = NULL; }
-
- in.close();
- return SharedOrder;
-
- }else{
- return NULL;
- }
- }
- catch(exception& e) {
- m->errorOut(e, "InputData", "getSharedOrderVector");
- exit(1);
- }
-}
-
-
-
-/***********************************************************************/
-
-OrderVector* InputData::getOrderVector(){
- try {
- if(fileHandle){
- if((format == "list") || (format == "listorder")) {
- input = new ListVector(fileHandle);
- }
- else if (format == "shared") {
- input = new SharedListVector(fileHandle);
- }
- else if(format == "rabund"){
- input = new RAbundVector(fileHandle);
- }
- else if(format == "order"){
- input = new OrderVector(fileHandle);
- }
- else if(format == "sabund"){
- input = new SAbundVector(fileHandle);
- }
-
- m->gobble(fileHandle);
-
- output = new OrderVector();
- *output = (input->getOrderVector());
-
- return output;
- }
- else{
- return NULL;
- }
- }
- catch(exception& e) {
- m->errorOut(e, "InputData", "getOrderVector");
- exit(1);
- }
-}
-
-/***********************************************************************/
-OrderVector* InputData::getOrderVector(string label){
- try {
-
- ifstream in;
- string thisLabel;
- m->openInputFile(filename, in);
-
- if(in){
- if((format == "list") || (format == "listorder")) {
-
- while (in.eof() != true) {
-
- input = new ListVector(in);
- thisLabel = input->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { break; }
- //so you don't loose this memory
- else { delete input; }
- m->gobble(in);
- }
- }
- else if (format == "shared") {
-
- while (in.eof() != true) {
-
- input = new SharedListVector(in);
- thisLabel = input->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { break; }
- //so you don't loose this memory
- else { delete input; }
- m->gobble(in);
- }
-
- }
- else if(format == "rabund"){
-
- while (in.eof() != true) {
-
- input = new RAbundVector(in);
- thisLabel = input->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { break; }
- //so you don't loose this memory
- else { delete input; }
- m->gobble(in);
- }
-
- }
- else if(format == "order"){
-
- while (in.eof() != true) {
-
- input = new OrderVector(in);
- thisLabel = input->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { break; }
- //so you don't loose this memory
- else { delete input; }
- m->gobble(in);
- }
-
- }
- else if(format == "sabund"){
-
- while (in.eof() != true) {
-
- input = new SAbundVector(in);
- thisLabel = input->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { break; }
- //so you don't loose this memory
- else { delete input; }
- m->gobble(in);
-
- }
-
- }
-
- in.close();
-
- output = new OrderVector();
- *output = (input->getOrderVector());
-
- return output;
-
- }
- else{
- return NULL;
- }
- }
- catch(exception& e) {
- m->errorOut(e, "InputData", "getOrderVector");
- exit(1);
- }
-}
-
-/***********************************************************************/
-//this is used when you don't need the order vector
-vector<SharedRAbundVector*> InputData::getSharedRAbundVectors(){
- try {
- if(fileHandle){
- if (format == "sharedfile") {
- SharedRAbundVector* SharedRAbund = new SharedRAbundVector(fileHandle);
- if (SharedRAbund != NULL) {
- return SharedRAbund->getSharedRAbundVectors();
- }
- }else if (format == "shared") {
- SharedList = new SharedListVector(fileHandle);
-
- if (SharedList != NULL) {
- return SharedList->getSharedRAbundVector();
- }
- }
- m->gobble(fileHandle);
- }
-
- //this is created to signal to calling function that the input file is at eof
- vector<SharedRAbundVector*> null; null.push_back(NULL);
- return null;
-
- }
- catch(exception& e) {
- m->errorOut(e, "InputData", "getSharedRAbundVectors");
- exit(1);
- }
-}
-/***********************************************************************/
-vector<SharedRAbundVector*> InputData::getSharedRAbundVectors(string label){
- try {
- ifstream in;
- string thisLabel;
-
- m->openInputFile(filename, in);
- m->saveNextLabel = "";
-
- if(in){
- if (format == "sharedfile") {
- while (in.eof() != true) {
-
- SharedRAbundVector* SharedRAbund = new SharedRAbundVector(in);
- if (SharedRAbund != NULL) {
- thisLabel = SharedRAbund->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { in.close(); return SharedRAbund->getSharedRAbundVectors(); }
- else {
- //so you don't loose this memory
- vector<SharedRAbundVector*> lookup = SharedRAbund->getSharedRAbundVectors();
- for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; }
- delete SharedRAbund;
- }
- }else{ break; }
- m->gobble(in);
-
- }
- }else if (format == "shared") {
- while (in.eof() != true) {
-
- SharedList = new SharedListVector(in);
-
- if (SharedList != NULL) {
- thisLabel = SharedList->getLabel();
- //if you are at the last label
- if (thisLabel == label) { in.close(); return SharedList->getSharedRAbundVector(); }
- else {
- //so you don't loose this memory
- delete SharedList;
- }
- }else{ break; }
- m->gobble(in);
-
- }
-
- }
- }
-
- //this is created to signal to calling function that the input file is at eof
- vector<SharedRAbundVector*> null; null.push_back(NULL);
- in.close();
- return null;
-
- }
- catch(exception& e) {
- m->errorOut(e, "InputData", "getSharedRAbundVectors");
- exit(1);
- }
-}
-
-/***********************************************************************/
-//this is used when you don't need the order vector
-vector<SharedRAbundFloatVector*> InputData::getSharedRAbundFloatVectors(){
- try {
- if(fileHandle){
- if (format == "relabund") {
- SharedRAbundFloatVector* SharedRelAbund = new SharedRAbundFloatVector(fileHandle);
- if (SharedRelAbund != NULL) {
- return SharedRelAbund->getSharedRAbundFloatVectors();
- }
- }else if (format == "sharedfile") {
- SharedRAbundVector* SharedRAbund = new SharedRAbundVector(fileHandle);
- if (SharedRAbund != NULL) {
- vector<SharedRAbundVector*> lookup = SharedRAbund->getSharedRAbundVectors();
- vector<SharedRAbundFloatVector*> lookupFloat = SharedRAbund->getSharedRAbundFloatVectors(lookup);
- for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; } lookup.clear();
- return lookupFloat;
- }
-
- }
- m->gobble(fileHandle);
- }
-
- //this is created to signal to calling function that the input file is at eof
- vector<SharedRAbundFloatVector*> null; null.push_back(NULL);
- return null;
-
- }
- catch(exception& e) {
- m->errorOut(e, "InputData", "getSharedRAbundFloatVectors");
- exit(1);
- }
-}
-/***********************************************************************/
-vector<SharedRAbundFloatVector*> InputData::getSharedRAbundFloatVectors(string label){
- try {
- ifstream in;
- string thisLabel;
-
- m->openInputFile(filename, in);
- m->saveNextLabel = "";
-
- if(in){
- if (format == "relabund") {
- while (in.eof() != true) {
-
- SharedRAbundFloatVector* SharedRelAbund = new SharedRAbundFloatVector(in);
- if (SharedRelAbund != NULL) {
- thisLabel = SharedRelAbund->getLabel();
- //if you are at the last label
- if (thisLabel == label) { in.close(); return SharedRelAbund->getSharedRAbundFloatVectors(); }
- else {
- //so you don't loose this memory
- vector<SharedRAbundFloatVector*> lookup = SharedRelAbund->getSharedRAbundFloatVectors();
- for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; }
- delete SharedRelAbund;
- }
- }else{ break; }
- m->gobble(in);
- }
- }else if (format == "sharedfile") {
- while (in.eof() != true) {
-
- SharedRAbundVector* SharedRAbund = new SharedRAbundVector(in);
- if (SharedRAbund != NULL) {
- thisLabel = SharedRAbund->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) {
- in.close();
- vector<SharedRAbundVector*> lookup = SharedRAbund->getSharedRAbundVectors();
- vector<SharedRAbundFloatVector*> lookupFloat = SharedRAbund->getSharedRAbundFloatVectors(lookup);
- for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; } lookup.clear();
- return lookupFloat;
- }else {
- //so you don't loose this memory
- vector<SharedRAbundVector*> lookup = SharedRAbund->getSharedRAbundVectors();
- for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; } lookup.clear();
- delete SharedRAbund;
- }
- }else{ break; }
- m->gobble(in);
- }
- }
- }
-
-
- //this is created to signal to calling function that the input file is at eof
- vector<SharedRAbundFloatVector*> null; null.push_back(NULL);
- in.close();
- return null;
-
- }
- catch(exception& e) {
- m->errorOut(e, "InputData", "getSharedRAbundFloatVectors");
- exit(1);
- }
-}
-/***********************************************************************/
-
-SAbundVector* InputData::getSAbundVector(){
- try {
- if(fileHandle){
- if (format == "list") {
- input = new ListVector(fileHandle);
- }
- else if (format == "shared") {
- input = new SharedListVector(fileHandle);
- }
- else if(format == "rabund"){
- input = new RAbundVector(fileHandle);
- }
- else if(format == "order"){
- input = new OrderVector(fileHandle);
- }
- else if(format == "sabund"){
- input = new SAbundVector(fileHandle);
- }
- m->gobble(fileHandle);
-
- sabund = new SAbundVector();
- *sabund = (input->getSAbundVector());
-
- return sabund;
- }
- else{
- return NULL;
- }
- }
- catch(exception& e) {
- m->errorOut(e, "InputData", "getSAbundVector");
- exit(1);
- }
-}
-/***********************************************************************/
-SAbundVector* InputData::getSAbundVector(string label){
- try {
-
- ifstream in;
- string thisLabel;
- m->openInputFile(filename, in);
-
- if(in){
- if (format == "list") {
-
- while (in.eof() != true) {
-
- input = new ListVector(in);
- thisLabel = input->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { break; }
- //so you don't loose this memory
- else { delete input; }
- m->gobble(in);
- }
- }
- else if (format == "shared") {
-
- while (in.eof() != true) {
-
- input = new SharedListVector(in);
- thisLabel = input->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { break; }
- //so you don't loose this memory
- else { delete input; }
- m->gobble(in);
- }
-
- }
- else if(format == "rabund"){
-
- while (in.eof() != true) {
-
- input = new RAbundVector(in);
- thisLabel = input->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { break; }
- //so you don't loose this memory
- else { delete input; }
- m->gobble(in);
- }
-
- }
- else if(format == "order"){
-
- while (in.eof() != true) {
-
- input = new OrderVector(in);
- thisLabel = input->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { break; }
- //so you don't loose this memory
- else { delete input; }
- m->gobble(in);
- }
-
- }
- else if(format == "sabund"){
-
- while (in.eof() != true) {
-
- input = new SAbundVector(in);
- thisLabel = input->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { break; }
- //so you don't loose this memory
- else { delete input; }
- m->gobble(in);
-
- }
-
- }
-
- in.close();
-
- sabund = new SAbundVector();
- *sabund = (input->getSAbundVector());
-
- return sabund;
-
- }
- else{
- return NULL;
- }
- }
- catch(exception& e) {
- m->errorOut(e, "InputData", "getSAbundVector");
- exit(1);
- }
-}
-
-/***********************************************************************/
-RAbundVector* InputData::getRAbundVector(){
- try {
- if(fileHandle){
- if (format == "list") {
- input = new ListVector(fileHandle);
- }
- else if (format == "shared") {
- input = new SharedListVector(fileHandle);
- }
- else if(format == "rabund"){
- input = new RAbundVector(fileHandle);
- }
- else if(format == "order"){
- input = new OrderVector(fileHandle);
- }
- else if(format == "sabund"){
- input = new SAbundVector(fileHandle);
- }
-
- m->gobble(fileHandle);
-
- rabund = new RAbundVector();
- *rabund = (input->getRAbundVector());
-
- return rabund;
- }
- else{
- return NULL;
- }
- }
- catch(exception& e) {
- m->errorOut(e, "InputData", "getRAbundVector");
- exit(1);
- }
-}
-/***********************************************************************/
-RAbundVector* InputData::getRAbundVector(string label){
- try {
-
- ifstream in;
- string thisLabel;
- m->openInputFile(filename, in);
-
- if(in){
- if (format == "list") {
-
- while (in.eof() != true) {
-
- input = new ListVector(in);
- thisLabel = input->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { break; }
- //so you don't loose this memory
- else { delete input; }
- m->gobble(in);
- }
- }
- else if (format == "shared") {
-
- while (in.eof() != true) {
-
- input = new SharedListVector(in);
- thisLabel = input->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { break; }
- //so you don't loose this memory
- else { delete input; }
- m->gobble(in);
- }
-
- }
- else if(format == "rabund"){
-
- while (in.eof() != true) {
-
- input = new RAbundVector(in);
- thisLabel = input->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { break; }
- //so you don't loose this memory
- else { delete input; }
- m->gobble(in);
- }
-
- }
- else if(format == "order"){
-
- while (in.eof() != true) {
-
- input = new OrderVector(in);
- thisLabel = input->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { break; }
- //so you don't loose this memory
- else { delete input; }
- m->gobble(in);
- }
-
- }
- else if(format == "sabund"){
-
- while (in.eof() != true) {
-
- input = new SAbundVector(in);
- thisLabel = input->getLabel();
-
- //if you are at the last label
- if (thisLabel == label) { break; }
- //so you don't loose this memory
- else { delete input; }
- m->gobble(in);
-
- }
-
- }
-
-
- in.close();
-
- rabund = new RAbundVector();
- *rabund = (input->getRAbundVector());
-
- return rabund;
- }
- else{
- return NULL;
- }
- }
- catch(exception& e) {
- m->errorOut(e, "InputData", "getRAbundVector");
- exit(1);
- }
-}
-
-/***********************************************************************/
-
-
-