diff --git a/Source/Plugins/KWIKFormat/RecordEngine/HDF5Recording.cpp b/Source/Plugins/KWIKFormat/RecordEngine/HDF5Recording.cpp index 19d7f8f4b92e565640b8816ed4dff78122c9a77f..185f885ed155fa6782e13885ae8a2e58c0c1e34f 100644 --- a/Source/Plugins/KWIKFormat/RecordEngine/HDF5Recording.cpp +++ b/Source/Plugins/KWIKFormat/RecordEngine/HDF5Recording.cpp @@ -281,8 +281,8 @@ void HDF5Recording::writeSpike(int electrodeIndex, const SpikeEvent* spike) void HDF5Recording::startAcquisition() { eventFile = new KWEFile(); - eventFile->addEventType("TTL",HDF5FileBase::U8,"event_channels"); - eventFile->addEventType("Messages",HDF5FileBase::STR,"Text"); + eventFile->addEventType("TTL",HDF5FileBase::BaseDataType::U8,"event_channels"); + eventFile->addEventType("Messages", HDF5FileBase::BaseDataType::DSTR, "Text"); spikesFile = new KWXFile(); } diff --git a/Source/Plugins/KWIKFormat/RecordEngine/KWIKFormat.cpp b/Source/Plugins/KWIKFormat/RecordEngine/KWIKFormat.cpp index 2bf8593d367e778fea0e048de2996f81b2a7cac8..110d86cf3c315347dab062f3ede100d28fe27206 100644 --- a/Source/Plugins/KWIKFormat/RecordEngine/KWIKFormat.cpp +++ b/Source/Plugins/KWIKFormat/RecordEngine/KWIKFormat.cpp @@ -69,31 +69,31 @@ void KWDFile::startNewRecording(int recordingNumber, int nChannels, KWIKRecordin String recordPath = String("/recordings/")+String(recordingNumber); CHECK_ERROR(createGroup(recordPath)); CHECK_ERROR(setAttributeStr(info->name,recordPath,String("name"))); - CHECK_ERROR(setAttribute(U64,&(info->start_time),recordPath,String("start_time"))); - CHECK_ERROR(setAttribute(U32,&(info->start_sample),recordPath,String("start_sample"))); - CHECK_ERROR(setAttribute(F32,&(info->sample_rate),recordPath,String("sample_rate"))); - CHECK_ERROR(setAttribute(U32,&(info->bit_depth),recordPath,String("bit_depth"))); + CHECK_ERROR(setAttribute(BaseDataType::U64, &(info->start_time), recordPath, String("start_time"))); + CHECK_ERROR(setAttribute(BaseDataType::U32, &(info->start_sample), recordPath, String("start_sample"))); + CHECK_ERROR(setAttribute(BaseDataType::F32, &(info->sample_rate), recordPath, String("sample_rate"))); + CHECK_ERROR(setAttribute(BaseDataType::U32, &(info->bit_depth), recordPath, String("bit_depth"))); CHECK_ERROR(createGroup(recordPath+"/application_data")); // CHECK_ERROR(setAttributeArray(F32,info->bitVolts.getRawDataPointer(),info->bitVolts.size(),recordPath+"/application_data",String("channel_bit_volts"))); - bitVoltsSet = createDataSet(F32, info->bitVolts.size(), 0, recordPath + "/application_data/channel_bit_volts"); + bitVoltsSet = createDataSet(BaseDataType::F32, info->bitVolts.size(), 0, recordPath + "/application_data/channel_bit_volts"); if (bitVoltsSet.get()) - bitVoltsSet->writeDataBlock(info->bitVolts.size(), F32, info->bitVolts.getRawDataPointer()); + bitVoltsSet->writeDataBlock(info->bitVolts.size(), BaseDataType::F32, info->bitVolts.getRawDataPointer()); else std::cerr << "Error creating bitvolts data set" << std::endl; - CHECK_ERROR(setAttribute(U8,&mSample,recordPath+"/application_data",String("is_multiSampleRate_data"))); + CHECK_ERROR(setAttribute(BaseDataType::U8, &mSample, recordPath + "/application_data", String("is_multiSampleRate_data"))); //CHECK_ERROR(setAttributeArray(F32,info->channelSampleRates.getRawDataPointer(),info->channelSampleRates.size(),recordPath+"/application_data",String("channel_sample_rates"))); - sampleRateSet = createDataSet(F32, info->channelSampleRates.size(), 0, recordPath + "/application_data/channel_sample_rates"); + sampleRateSet = createDataSet(BaseDataType::F32, info->channelSampleRates.size(), 0, recordPath + "/application_data/channel_sample_rates"); if (sampleRateSet.get()) - sampleRateSet->writeDataBlock(info->channelSampleRates.size(), F32, info->channelSampleRates.getRawDataPointer()); + sampleRateSet->writeDataBlock(info->channelSampleRates.size(), BaseDataType::F32, info->channelSampleRates.getRawDataPointer()); else std::cerr << "Error creating sample rates data set" << std::endl; - recdata = createDataSet(I16,0,nChannels,CHUNK_XSIZE,recordPath+"/data"); + recdata = createDataSet(BaseDataType::I16, 0, nChannels, CHUNK_XSIZE, recordPath + "/data"); if (!recdata.get()) std::cerr << "Error creating data set" << std::endl; - tsData = createDataSet(I64, 0, nChannels, TIMESTAMP_CHUNK_SIZE, recordPath + "/application_data/timestamps"); + tsData = createDataSet(BaseDataType::I64, 0, nChannels, TIMESTAMP_CHUNK_SIZE, recordPath + "/application_data/timestamps"); if (!tsData.get()) std::cerr << "Error creating timestamps data set" << std::endl; @@ -106,7 +106,7 @@ void KWDFile::stopRecording() String path = String("/recordings/")+String(recordingNumber)+String("/data"); recdata->getRowXPositions(samples); - CHECK_ERROR(setAttributeArray(U32,samples.getRawDataPointer(),samples.size(),path,"valid_samples")); + CHECK_ERROR(setAttributeArray(BaseDataType::U32, samples.getRawDataPointer(), samples.size(), path, "valid_samples")); //ScopedPointer does the deletion and destructors the closings recdata = nullptr; tsData = nullptr; @@ -116,13 +116,13 @@ int KWDFile::createFileStructure() { const uint16 ver = 2; if (createGroup("/recordings")) return -1; - if (setAttribute(U16,(void*)&ver,"/","kwik_version")) return -1; + if (setAttribute(BaseDataType::U16, (void*)&ver, "/", "kwik_version")) return -1; return 0; } void KWDFile::writeBlockData(int16* data, int nSamples) { - CHECK_ERROR(recdata->writeDataBlock(nSamples,I16,data)); + CHECK_ERROR(recdata->writeDataBlock(nSamples, BaseDataType::I16, data)); } void KWDFile::writeRowData(int16* data, int nSamples) @@ -131,7 +131,7 @@ void KWDFile::writeRowData(int16* data, int nSamples) { curChan=0; } - CHECK_ERROR(recdata->writeDataRow(curChan,nSamples,I16,data)); + CHECK_ERROR(recdata->writeDataRow(curChan, nSamples, BaseDataType::I16, data)); curChan++; } @@ -139,7 +139,7 @@ void KWDFile::writeRowData(int16* data, int nSamples, int channel) { if (channel >= 0 && channel < nChannels) { - CHECK_ERROR(recdata->writeDataRow(channel, nSamples, I16, data)); + CHECK_ERROR(recdata->writeDataRow(channel, nSamples, BaseDataType::I16, data)); curChan = channel; } } @@ -148,7 +148,7 @@ void KWDFile::writeTimestamps(int64* ts, int nTs, int channel) { if (channel >= 0 && channel < nChannels) { - CHECK_ERROR(tsData->writeDataRow(channel, nTs, I64, ts)); + CHECK_ERROR(tsData->writeDataRow(channel, nTs, BaseDataType::I64, ts)); } } @@ -190,20 +190,21 @@ int KWEFile::createFileStructure() if (createGroup(path)) return -1; path += "/events"; if (createGroup(path)) return -1; - dSet = createDataSet(U64,0,EVENT_CHUNK_SIZE,path + "/time_samples"); + dSet = createDataSet(BaseDataType::U64, 0, EVENT_CHUNK_SIZE, path + "/time_samples"); if (!dSet) return -1; - dSet = createDataSet(U16,0,EVENT_CHUNK_SIZE,path + "/recording"); + dSet = createDataSet(BaseDataType::U16, 0, EVENT_CHUNK_SIZE, path + "/recording"); if (!dSet) return -1; path += "/user_data"; if (createGroup(path)) return -1; - dSet = createDataSet(U8,0,EVENT_CHUNK_SIZE,path + "/eventID"); + dSet = createDataSet(BaseDataType::U8, 0, EVENT_CHUNK_SIZE, path + "/eventID"); if (!dSet) return -1; - dSet = createDataSet(U8,0,EVENT_CHUNK_SIZE,path + "/nodeID"); + dSet = createDataSet(BaseDataType::U8, 0, EVENT_CHUNK_SIZE, path + "/nodeID"); if (!dSet) return -1; dSet = createDataSet(eventTypes[i],0,EVENT_CHUNK_SIZE,path + "/" + eventDataNames[i]); if (!dSet) return -1; } - if (setAttribute(U16,(void*)&ver,"/","kwik_version")) return -1; + if (setAttribute(BaseDataType::U16, (void*)&ver, "/", "kwik_version")) return -1; + return 0; } @@ -214,10 +215,10 @@ void KWEFile::startNewRecording(int recordingNumber, KWIKRecordingInfo* info) String recordPath = String("/recordings/")+String(recordingNumber); CHECK_ERROR(createGroup(recordPath)); CHECK_ERROR(setAttributeStr(info->name,recordPath,String("name"))); - CHECK_ERROR(setAttribute(U64,&(info->start_time),recordPath,String("start_time"))); + CHECK_ERROR(setAttribute(BaseDataType::U64, &(info->start_time), recordPath, String("start_time"))); // CHECK_ERROR(setAttribute(U32,&(info->start_sample),recordPath,String("start_sample"))); - CHECK_ERROR(setAttribute(F32,&(info->sample_rate),recordPath,String("sample_rate"))); - CHECK_ERROR(setAttribute(U32,&(info->bit_depth),recordPath,String("bit_depth"))); + CHECK_ERROR(setAttribute(BaseDataType::F32, &(info->sample_rate), recordPath, String("sample_rate"))); + CHECK_ERROR(setAttribute(BaseDataType::U32, &(info->bit_depth), recordPath, String("bit_depth"))); // CHECK_ERROR(createGroup(recordPath + "/raw")); // CHECK_ERROR(createGroup(recordPath + "/raw/hdf5_paths")); @@ -264,10 +265,10 @@ void KWEFile::writeEvent(int type, uint8 id, uint8 processor, void* data, int64 std::cerr << "HDF5::writeEvent Invalid event type " << type << std::endl; return; } - CHECK_ERROR(timeStamps[type]->writeDataBlock(1,U64,×tamp)); - CHECK_ERROR(recordings[type]->writeDataBlock(1,I32,&recordingNumber)); - CHECK_ERROR(eventID[type]->writeDataBlock(1,U8,&id)); - CHECK_ERROR(nodeID[type]->writeDataBlock(1,U8,&processor)); + CHECK_ERROR(timeStamps[type]->writeDataBlock(1, BaseDataType::U64, ×tamp)); + CHECK_ERROR(recordings[type]->writeDataBlock(1, BaseDataType::I32, &recordingNumber)); + CHECK_ERROR(eventID[type]->writeDataBlock(1, BaseDataType::U8, &id)); + CHECK_ERROR(nodeID[type]->writeDataBlock(1, BaseDataType::U8, &processor)); CHECK_ERROR(eventData[type]->writeDataBlock(1,eventTypes[type],data)); } @@ -283,7 +284,7 @@ void KWEFile::writeEvent(int type, uint8 id, uint8 processor, void* data, int64 kwdIndex++; }*/ -void KWEFile::addEventType(String name, DataTypes type, String dataName) +void KWEFile::addEventType(String name, BaseDataType type, String dataName) { eventNames.add(name); eventTypes.add(type); @@ -325,7 +326,7 @@ int KWXFile::createFileStructure() { const uint16 ver = 2; if (createGroup("/channel_groups")) return -1; - if (setAttribute(U16,(void*)&ver,"/","kwik_version")) return -1; + if (setAttribute(BaseDataType::U16, (void*)&ver, "/", "kwik_version")) return -1; for (int i=0; i < channelArray.size(); i++) { int res = createChannelGroup(i); @@ -346,11 +347,11 @@ int KWXFile::createChannelGroup(int index) int nChannels = channelArray[index]; String path("/channel_groups/"+String(index)); CHECK_ERROR(createGroup(path)); - dSet = createDataSet(I16,0,0,nChannels,SPIKE_CHUNK_XSIZE,SPIKE_CHUNK_YSIZE,path+"/waveforms_filtered"); + dSet = createDataSet(BaseDataType::I16, 0, 0, nChannels, SPIKE_CHUNK_XSIZE, SPIKE_CHUNK_YSIZE, path + "/waveforms_filtered"); if (!dSet) return -1; - dSet = createDataSet(U64,0,SPIKE_CHUNK_XSIZE,path+"/time_samples"); + dSet = createDataSet(BaseDataType::U64, 0, SPIKE_CHUNK_XSIZE, path + "/time_samples"); if (!dSet) return -1; - dSet = createDataSet(U16,0,SPIKE_CHUNK_XSIZE,path+"/recordings"); + dSet = createDataSet(BaseDataType::U16, 0, SPIKE_CHUNK_XSIZE, path + "/recordings"); if (!dSet) return -1; return 0; } @@ -412,7 +413,7 @@ void KWXFile::writeSpike(int groupIndex, int nSamples, const float* data, Array< } } - CHECK_ERROR(spikeArray[groupIndex]->writeDataBlock(1,nSamples,I16,transformVector)); - CHECK_ERROR(recordingArray[groupIndex]->writeDataBlock(1,I32,&recordingNumber)); - CHECK_ERROR(timeStamps[groupIndex]->writeDataBlock(1,U64,×tamp)); + CHECK_ERROR(spikeArray[groupIndex]->writeDataBlock(1, nSamples, BaseDataType::I16, transformVector)); + CHECK_ERROR(recordingArray[groupIndex]->writeDataBlock(1, BaseDataType::I32, &recordingNumber)); + CHECK_ERROR(timeStamps[groupIndex]->writeDataBlock(1, BaseDataType::U64, ×tamp)); } diff --git a/Source/Plugins/KWIKFormat/RecordEngine/KWIKFormat.h b/Source/Plugins/KWIKFormat/RecordEngine/KWIKFormat.h index 5a467b68f7f4ef7b3278b90fd90246d18392e767..0ffefea2d0ca8ad945af942c4b69b7f704b24423 100644 --- a/Source/Plugins/KWIKFormat/RecordEngine/KWIKFormat.h +++ b/Source/Plugins/KWIKFormat/RecordEngine/KWIKFormat.h @@ -80,7 +80,7 @@ public: void stopRecording(); void writeEvent(int type, uint8 id, uint8 processor, void* data, int64 timestamp); // void addKwdFile(String filename); - void addEventType(String name, DataTypes type, String dataName); + void addEventType(String name, BaseDataType type, String dataName); String getFileName(); protected: @@ -95,7 +95,7 @@ private: OwnedArray<HDF5RecordingData> nodeID; OwnedArray<HDF5RecordingData> eventData; Array<String> eventNames; - Array<DataTypes> eventTypes; + Array<BaseDataType> eventTypes; Array<String> eventDataNames; int kwdIndex;