82 QList<QIODevice*>::iterator i;
83 for(i = p_qlistIODevices.begin(); i != p_qlistIODevices.end(); ++i) {
94 QString t_sFileName = p_pStream->streamName();
96 printf(
"Opening fiff data %s...\n",t_sFileName.toUtf8().constData());
98 QList<FiffDirEntry> t_dirEntry;
100 if(!p_pStream->open(Tree, t_dirEntry))
104 if(!p_pStream->read_meas_info(Tree, info, dirTree))
117 bool hasRaw=
false,hasEvoked=
false;
123 if(t_dirTree.
has_kind(FIFFB_EVOKED))
125 if(t_dirTree.
has_kind(FIFFB_RAW_DATA) || t_dirTree.
has_kind(FIFFB_PROCESSED_DATA))
133 QSharedPointer<FiffRawData> p_fiffRawData(
new FiffRawData(p_IODevice));
137 m_qlistRaw.append(p_fiffRawData);
139 printf(
"Finished reading raw data!");
148 for(qint32 i=0; i < p_fiffEvokedSet.
evoked.size(); ++i) {
149 m_qlistEvoked.append(QSharedPointer<FiffEvoked>(&p_fiffEvokedSet.
evoked[i]));
169 bool FiffIO::write(QIODevice& p_IODevice,
const fiff_int_t type,
const fiff_int_t idx)
const {
171 case FIFFB_RAW_DATA: {
173 qDebug() <<
"Finished writing single raw data with index" << idx <<
".";
186 bool FiffIO::write(QFile& p_QFile,
const fiff_int_t type,
const fiff_int_t idx)
const {
187 qDebug(
"------------------------ Writing fiff data ------------------------");
190 case FIFFB_RAW_DATA: {
191 QString t_nameoftype =
"raw";
194 for(qint32 i=0; i < m_qlistRaw.size(); ++i) {
197 qint32 p = p_QFile.fileName().indexOf(
".fif");
198 t_fname = p_QFile.fileName().insert(p,QString(
"_"+t_nameoftype+
"-"+QString::number(i)));
201 qDebug(
"\nWriting set with index %i to file %s ...",i,t_fname.toUtf8().constData());
202 QFile t_file(t_fname);
210 qDebug(
"\nFinished Writing %i raw data sets!\n",m_qlistRaw.size());
227 SparseMatrix<double> mult;
234 fiff_int_t from = m_qlistRaw[idx]->first_samp;
235 fiff_int_t to = m_qlistRaw[idx]->last_samp;
236 float quantum_sec = 10.0f;
237 fiff_int_t quantum = ceil(quantum_sec*m_qlistRaw[idx]->info.sfreq);
243 bool first_buffer =
true;
245 fiff_int_t first, last;
249 for(first = from; first < to; first+=quantum) {
250 last = first+quantum-1;
254 if (!m_qlistRaw[idx]->read_raw_segment(data,times,mult,first,last,sel)) {
255 qDebug(
"error during read_raw_segment\n");
259 qDebug(
"Writing...");
262 outfid->write_int(FIFF_FIRST_SAMPLE,&first);
263 first_buffer =
false;
265 outfid->write_raw_buffer(data,mult);
269 outfid->finish_writing_raw();
FIFF measurement file information.
Implementation of a generic Fiff IO interface.
bool write(QIODevice &p_IODevice, const fiff_int_t type, const fiff_int_t idx) const
static bool setup_read(QIODevice &p_IODevice, FiffInfo &info, FiffDirTree &Tree, FiffDirTree &dirTree)
bool write_raw(QIODevice &p_IODevice, const fiff_int_t idx) const
bool has_kind(fiff_int_t p_kind) const
QSharedPointer< FiffStream > SPtr
FIFF raw measurement data.
bool read(QIODevice &p_IODevice)
FiffStream class declaration.
Directory tree structure.
static FiffStream::SPtr start_writing_raw(QIODevice &p_IODevice, const FiffInfo &info, RowVectorXd &cals, MatrixXi sel=defaultMatrixXi)
FiffEvokedSet class declaration.
QList< FiffEvoked > evoked
FIFF class declaration, which provides static wrapper functions to stay consistent with mne matlab to...