From af28b295840db765e36547551d38b77dbb3cf06c Mon Sep 17 00:00:00 2001 From: Oliver Ruebel Date: Sat, 21 Sep 2024 15:59:54 -0700 Subject: [PATCH] Updated ElectrodeTable to use mergePaths method --- src/nwb/file/ElectrodeTable.cpp | 45 ++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/src/nwb/file/ElectrodeTable.cpp b/src/nwb/file/ElectrodeTable.cpp index 18cce59..67bb8f4 100644 --- a/src/nwb/file/ElectrodeTable.cpp +++ b/src/nwb/file/ElectrodeTable.cpp @@ -1,6 +1,7 @@ #include "nwb/file/ElectrodeTable.hpp" #include "Channel.hpp" +#include "Utils.hpp" using namespace AQNWB::NWB; @@ -13,25 +14,26 @@ ElectrodeTable::ElectrodeTable(std::shared_ptr io) : DynamicTable(electrodeTablePath, // use the electrodeTablePath io, {"group", "group_name", "location"}) - , electrodeDataset( - std::make_unique(electrodeTablePath + "/id", io)) - , groupNamesDataset( - std::make_unique(electrodeTablePath + "/group_name", io)) - , locationsDataset( - std::make_unique(electrodeTablePath + "/location", io)) + , electrodeDataset(std::make_unique( + AQNWB::mergePaths(electrodeTablePath, "id"), io)) + , groupNamesDataset(std::make_unique( + AQNWB::mergePaths(electrodeTablePath, "group_name"), io)) + , locationsDataset(std::make_unique( + AQNWB::mergePaths(electrodeTablePath, "location"), io)) { } ElectrodeTable::ElectrodeTable(const std::string& path, std::shared_ptr io) - : DynamicTable(electrodeTablePath, // use the electrodeTablePath - io) - , electrodeDataset( - std::make_unique(electrodeTablePath + "/id", io)) - , groupNamesDataset( - std::make_unique(electrodeTablePath + "/group_name", io)) - , locationsDataset( - std::make_unique(electrodeTablePath + "/location", io)) + : DynamicTable( + electrodeTablePath, // use the electrodeTablePath + io) // TODO May need to initialize the colNames in DynamicTable + , electrodeDataset(std::make_unique( + AQNWB::mergePaths(electrodeTablePath, "id"), io)) + , groupNamesDataset(std::make_unique( + AQNWB::mergePaths(electrodeTablePath, "group_name"), io)) + , locationsDataset(std::make_unique( + AQNWB::mergePaths(electrodeTablePath, "location"), io)) { std::cerr << "ElectrodeTable object is required to appear at " << this->electrodeTablePath << std::endl; @@ -47,26 +49,29 @@ void ElectrodeTable::initialize(const std::string& description) // create group DynamicTable::initialize(description); - electrodeDataset->setDataset( - std::unique_ptr(m_io->createArrayDataSet( - IO::BaseDataType::I32, SizeArray {1}, SizeArray {1}, m_path + "id"))); + electrodeDataset->setDataset(std::unique_ptr( + m_io->createArrayDataSet(IO::BaseDataType::I32, + SizeArray {1}, + SizeArray {1}, + AQNWB::mergePaths(m_path, "id")))); groupNamesDataset->setDataset(std::unique_ptr( m_io->createArrayDataSet(IO::BaseDataType::STR(250), SizeArray {0}, SizeArray {1}, - m_path + "group_name"))); + AQNWB::mergePaths(m_path, "group_name")))); locationsDataset->setDataset(std::unique_ptr( m_io->createArrayDataSet(IO::BaseDataType::STR(250), SizeArray {0}, SizeArray {1}, - m_path + "location"))); + AQNWB::mergePaths(m_path, "location")))); } void ElectrodeTable::addElectrodes(std::vector channels) { // create datasets for (const auto& ch : channels) { - groupReferences.push_back(groupPathBase + ch.getGroupName()); + groupReferences.push_back( + AQNWB::mergePaths(groupPathBase, ch.getGroupName())); groupNames.push_back(ch.getGroupName()); electrodeNumbers.push_back(ch.getGlobalIndex()); locationNames.push_back("unknown");