[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [labplot] src/backend/datasources/filters: HDF filter: read rank 1 compound data into spreadsheet/ma
From: Stefan Gerlach <stefan.gerlach () uni-konstanz ! de>
Date: 2015-05-30 13:22:47
Message-ID: E1Yygit-0003sd-FR () scm ! kde ! org
[Download RAW message or body]
Git commit 870f7cfd69d7d594439702bb86d946fd0cc230a4 by Stefan Gerlach.
Committed on 30/05/2015 at 13:22.
Pushed by sgerlach into branch 'master'.
HDF filter: read rank 1 compound data into spreadsheet/matrix
M +40 -29 src/backend/datasources/filters/HDFFilter.cpp
M +1 -1 src/backend/datasources/filters/HDFFilterPrivate.h
http://commits.kde.org/labplot/870f7cfd69d7d594439702bb86d946fd0cc230a4
diff --git a/src/backend/datasources/filters/HDFFilter.cpp \
b/src/backend/datasources/filters/HDFFilter.cpp index cfea717..f142a3f 100644
--- a/src/backend/datasources/filters/HDFFilter.cpp
+++ b/src/backend/datasources/filters/HDFFilter.cpp
@@ -301,7 +301,7 @@ QStringList HDFFilterPrivate::readHDFData1D(hid_t dataset, hid_t \
type, int rows, return dataString;
}
-QStringList HDFFilterPrivate::readHDFCompoundData1D(hid_t dataset, hid_t tid, int \
rows, int lines) { +QStringList HDFFilterPrivate::readHDFCompoundData1D(hid_t \
dataset, hid_t tid, int rows, int lines, QVector< QVector<double>* >& dataPointer) { \
int members = H5Tget_nmembers(tid);
QStringList data[members];
@@ -311,32 +311,36 @@ QStringList HDFFilterPrivate::readHDFCompoundData1D(hid_t \
dataset, hid_t tid, in hid_t ctype = H5Tcreate(H5T_COMPOUND, msize);
H5Tinsert(ctype, H5Tget_member_name(tid,m), 0, mtype);
+ QVector<double>* dataP=NULL;
+ if(dataPointer.size()>0)
+ dataP = dataPointer[m];
+
if(H5Tequal(mtype,H5T_STD_I8LE) || H5Tequal(mtype,H5T_STD_I8BE))
- data[m]=readHDFData1D<char>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines);
+ data[m]=readHDFData1D<char>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines,dataP);
else if(H5Tequal(mtype,H5T_STD_U8LE) || H5Tequal(mtype,H5T_STD_U8BE))
- data[m]=readHDFData1D<unsigned \
char>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines); \
+ data[m]=readHDFData1D<unsigned \
char>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines,dataP); else \
if(H5Tequal(mtype,H5T_STD_I16LE) || H5Tequal(mtype,H5T_STD_I16BE))
- data[m]=readHDFData1D<short>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines);
+ data[m]=readHDFData1D<short>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines,dataP);
else if(H5Tequal(mtype,H5T_STD_U16LE) || H5Tequal(mtype,H5T_STD_U16BE))
- data[m]=readHDFData1D<unsigned \
short>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines); \
+ data[m]=readHDFData1D<unsigned \
short>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines,dataP); else \
if(H5Tequal(mtype,H5T_STD_I32LE) || H5Tequal(mtype,H5T_STD_I32BE))
- data[m]=readHDFData1D<int>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines);
+ data[m]=readHDFData1D<int>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines,dataP);
else if(H5Tequal(mtype,H5T_STD_U32LE) || H5Tequal(mtype,H5T_STD_U32BE))
- data[m]=readHDFData1D<unsigned \
int>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines); \
+ data[m]=readHDFData1D<unsigned \
int>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines,dataP); else \
if(H5Tequal(mtype,H5T_NATIVE_LONG))
- data[m]=readHDFData1D<long>(dataset,ctype,rows,lines);
+ data[m]=readHDFData1D<long>(dataset,ctype,rows,lines,dataP);
else if(H5Tequal(mtype,H5T_NATIVE_ULONG))
- data[m]=readHDFData1D<unsigned long>(dataset,ctype,rows,lines);
+ data[m]=readHDFData1D<unsigned long>(dataset,ctype,rows,lines,dataP);
else if(H5Tequal(mtype,H5T_STD_I64LE) || H5Tequal(mtype,H5T_STD_I64BE))
- data[m]=readHDFData1D<long \
long>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines); \
+ data[m]=readHDFData1D<long \
long>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines,dataP); else \
if(H5Tequal(mtype,H5T_STD_U64LE) || H5Tequal(mtype,H5T_STD_U64BE))
- data[m]=readHDFData1D<unsigned long \
long>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines); \
+ data[m]=readHDFData1D<unsigned long \
long>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines,dataP); else \
if(H5Tequal(mtype,H5T_IEEE_F32LE) || H5Tequal(mtype,H5T_IEEE_F32BE))
- data[m]=readHDFData1D<float>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines);
+ data[m]=readHDFData1D<float>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines,dataP);
else if(H5Tequal(mtype,H5T_IEEE_F64LE) || H5Tequal(mtype,H5T_IEEE_F64BE))
- data[m]=readHDFData1D<double>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines);
+ data[m]=readHDFData1D<double>(dataset,H5Tget_native_type(ctype,H5T_DIR_DEFAULT),rows,lines,dataP);
else if (H5Tequal(mtype,H5T_NATIVE_LDOUBLE))
- data[m]=readHDFData1D<long double>(dataset,ctype,rows,lines);
+ data[m]=readHDFData1D<long double>(dataset,ctype,rows,lines,dataP);
else {
H5T_class_t mclass = H5Tget_member_class(tid,m);
qDebug()<<" not supported type of class"<<translateHDFClass(mclass);
@@ -347,20 +351,22 @@ QStringList HDFFilterPrivate::readHDFCompoundData1D(hid_t \
dataset, hid_t tid, in
// create dataString from data
QStringList dataString;
- for(int i=0;i<qMin(rows,lines);i++) {
- dataString<<"(";
+ if(dataPointer.size() == 0) {
+ for(int i=0;i<qMin(rows,lines);i++) {
+ dataString<<"(";
- for(int m=0;m<members;m++) {
- if (i<data[m].size()) {
- // ignore newlines
- dataString<<data[m][2*i];
+ for(int m=0;m<members;m++) {
+ if (i<data[m].size()) {
+ // ignore newlines
+ dataString<<data[m][2*i];
+ }
+ if(m==members-1)
+ dataString<<")";
+ else
+ dataString<<",";
}
- if(m==members-1)
- dataString<<")";
- else
- dataString<<",";
+ dataString<<"\n";
}
- dataString<<"\n";
}
return dataString;
@@ -992,10 +998,16 @@ QString HDFFilterPrivate::readCurrentDataSet(const QString & \
fileName, AbstractD break;
}
case H5T_COMPOUND: {
- dataString<<readHDFCompound(dtype);
+ // read compound data into dataPointers
+ int members = H5Tget_nmembers(dtype);
+ if(dataSource != NULL) {
+ dataPointers.clear();
+ dataSource->create(dataPointers, mode, actualRows, members);
+ }
+ else
+ dataString<<readHDFCompound(dtype);
//qDebug()<<dataString.join("");
- //TODO: read data into dataPointer[0]
- dataString<<readHDFCompoundData1D(dataset,dtype,rows,lines);
+ dataString<<readHDFCompoundData1D(dataset,dtype,rows,lines,dataPointers);
break;
}
default:
@@ -1077,7 +1089,6 @@ QString HDFFilterPrivate::readCurrentDataSet(const QString & \
fileName, AbstractD case H5T_COMPOUND: {
dataString<<readHDFCompound(dtype);
//qDebug()<<dataString.join("");
- //TODO: read data into dataPointer ?
dataString<<readHDFCompoundData2D(dataset,dtype,rows,cols,lines);
break;
}
diff --git a/src/backend/datasources/filters/HDFFilterPrivate.h \
b/src/backend/datasources/filters/HDFFilterPrivate.h index 9b37b64..3ab5113 100644
--- a/src/backend/datasources/filters/HDFFilterPrivate.h
+++ b/src/backend/datasources/filters/HDFFilterPrivate.h
@@ -62,7 +62,7 @@ class HDFFilterPrivate {
QString translateHDFClass(H5T_class_t);
QStringList readHDFCompound(hid_t tid);
template <typename T> QStringList readHDFData1D(hid_t dataset, hid_t type, int \
rows, int lines, QVector<double> *dataPointer=NULL);
- QStringList readHDFCompoundData1D(hid_t dataset, hid_t tid, int rows, int lines);
+ QStringList readHDFCompoundData1D(hid_t dataset, hid_t tid, int rows, int \
lines,QVector< QVector<double>* >& dataPointer); template <typename T> QStringList \
readHDFData2D(hid_t dataset, hid_t ctype, int rows, int cols, int lines, QVector< \
QVector<double>* >& dataPointer); QStringList readHDFCompoundData2D(hid_t dataset, \
hid_t tid, int rows, int cols, int lines); QStringList readHDFAttr(hid_t aid);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic