From 9e911192d1b8a2b573745512666bd1b3fccc0d9e Mon Sep 17 00:00:00 2001 From: josura Date: Tue, 15 Aug 2023 16:48:25 +0200 Subject: [PATCH] added controls over header for initial values files --- src/utilities.cxx | 15 ++++++++++++++- src/utilities.h | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/utilities.cxx b/src/utilities.cxx index 29b3e91..01c2bc9 100644 --- a/src/utilities.cxx +++ b/src/utilities.cxx @@ -464,7 +464,9 @@ std::tuple,std::vector,std::vector splitted = splitString(*iter, "/"); //split the path + std::string filename = splitted[splitted.size()-1]; //last element + subType.push_back(splitString(filename, ".")[0]); } } //filter files from subtypes (first part of the filename before the extension) @@ -492,6 +494,17 @@ std::tuple,std::vector,std::vector cellValues(finalNames[i].size(),0); + std::string lineHeader; + getline (myfile,lineHeader); // first line is header IMPORTANT + std::vector splittedHeader = splitString(lineHeader, "\t"); + //check if the header is correct + if(splittedHeader.size()!=2){ + throw std::invalid_argument("utilities::logFoldChangeCellVectorsFromFolder: header doesn't have the same amount of columns as the data " + filename); + } + if(splittedHeader[0]!="name" || splittedHeader[1] != "value"){ + throw std::invalid_argument("utilities::logFoldChangeCellVectorsFromFolder: header doesn't have the name and value columns or it does not have an header" + filename); + } + //get file contents while ( getline (myfile,line) ) { std::vector entries = splitString(line, "\t"); diff --git a/src/utilities.h b/src/utilities.h index c317188..c2fce31 100644 --- a/src/utilities.h +++ b/src/utilities.h @@ -285,7 +285,7 @@ std::vector vectorScalarMultiplication(std::vector vec, T scalar){ } template -bool vectorContains(std::vector vec, T element){ +bool vectorContains(std::vector vec, const T element){ for (uint i = 0; i < vec.size(); ++i) { if(vec[i]==element){ return true;