#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include <omp.h>\n\n// 定义物种矩阵类型\ntypedef std::vector<std::vector> SpeciesMatrix;\n\n// 读取物种矩阵文件\nSpeciesMatrix readSpeciesMatrix(const std::string& filename) {\n std::ifstream file(filename);\n SpeciesMatrix matrix;\n std::string line;\n while (std::getline(file, line)) {\n std::vector row;\n std::stringstream ss(line);\n double value;\n while (ss >> value) {\n row.push_back(value);\n }\n matrix.push_back(row);\n }\n return matrix;\n}\n\n// 计算每列的相对丰度\nstd::vector calculateRelativeAbundance(const SpeciesMatrix& matrix) {\n std::vector relativeAbundance(matrix[0].size(), 0.0);\n #pragma omp parallel for\n for (int col = 0; col < matrix[0].size(); col++) {\n double columnTotal = std::accumulate(matrix.begin(), matrix.end(), 0.0,\n [col](double sum, const std::vector& row) { return sum + row[col]; });\n #pragma omp critical\n {\n relativeAbundance[col] = columnTotal / matrix.size();\n }\n }\n return relativeAbundance;\n}\n\n// 输出矩阵表格\nvoid printMatrix(const SpeciesMatrix& matrix) {\n for (const auto& row : matrix) {\n for (const auto& value : row) {\n std::cout << value << "\t";\n }\n std::cout << std::endl;\n }\n}\n\nint main() {\n std::string filename = "species_matrix.txt";\n SpeciesMatrix matrix = readSpeciesMatrix(filename);\n std::vector relativeAbundance = calculateRelativeAbundance(matrix);\n printMatrix(matrix);\n std::cout << "Relative Abundance:" << std::endl;\n for (const auto& value : relativeAbundance) {\n std::cout << value << "\t";\n }\n std::cout << std::endl;\n return 0;\n}