##// END OF EJS Templates
Corrections to HDF5 Writer
Julio Valdez -
r515:87cf9df29125
parent child
Show More
@@ -414,6 +414,10 class HDF5Writer(Operation):
414
414
415 dataDim = None
415 dataDim = None
416
416
417 tableDim = None
418
419 dtype = [('arrayName', 'S10'),('nChannels', 'i'), ('nPoints', 'i'), ('nSamples', 'i')]
420
417 def __init__(self):
421 def __init__(self):
418
422
419 Operation.__init__(self)
423 Operation.__init__(self)
@@ -437,12 +441,18 class HDF5Writer(Operation):
437
441
438 self.dataOut = dataOut
442 self.dataOut = dataOut
439
443
440 self.metadataList = ['inputUnit','abscissaRange','heightRange']
444 self.metadataList = ['type','inputUnit','abscissaRange','heightRange']
441
445
442 self.dataList = ['data_param', 'data_error', 'data_SNR']
446 self.dataList = ['data_param', 'data_error', 'data_SNR']
443
447
444 self.dataDim = numpy.zeros((len(self.dataList),3))
448 self.dataDim = numpy.zeros((len(self.dataList),3))
445
449
450 #Data types
451
452 dtype0 = self.dtype
453
454 tableList = []
455
446 for i in range(len(self.dataList)):
456 for i in range(len(self.dataList)):
447
457
448 dataDim = getattr(self.dataOut, self.dataList[i]).shape
458 dataDim = getattr(self.dataOut, self.dataList[i]).shape
@@ -450,9 +460,14 class HDF5Writer(Operation):
450 if len(dataDim) == 3:
460 if len(dataDim) == 3:
451 self.dataDim[i,:] = numpy.array(dataDim)
461 self.dataDim[i,:] = numpy.array(dataDim)
452 else:
462 else:
453 self.dataDim[i,:-1] = numpy.array(dataDim)
463 self.dataDim[i,0] = numpy.array(dataDim)[0]
454 self.dataDim[i,-1] = numpy.nan
464 self.dataDim[i,2] = numpy.array(dataDim)[1]
465 self.dataDim[i,1] = 1
455
466
467 table = numpy.array((self.dataList[i],) + tuple(self.dataDim[i,:]),dtype = dtype0)
468 tableList.append(table)
469
470 self.tableDim = numpy.array(tableList, dtype = dtype0)
456 self.blockIndex = 0
471 self.blockIndex = 0
457
472
458 return
473 return
@@ -509,6 +524,7 class HDF5Writer(Operation):
509 def writeMetadata(self, fp):
524 def writeMetadata(self, fp):
510
525
511 grp = fp.create_group("Metadata")
526 grp = fp.create_group("Metadata")
527 grp.create_dataset('array dimensions', data = self.tableDim, dtype = self.dtype)
512
528
513 for i in range(len(self.metadataList)):
529 for i in range(len(self.metadataList)):
514 grp.create_dataset(self.metadataList[i], data=getattr(self.dataOut, self.metadataList[i]))
530 grp.create_dataset(self.metadataList[i], data=getattr(self.dataOut, self.metadataList[i]))
@@ -560,7 +576,7 class HDF5Writer(Operation):
560 grp = fp.create_group("Data")
576 grp = fp.create_group("Data")
561 grp.attrs['metadata'] = self.metaFile
577 grp.attrs['metadata'] = self.metaFile
562
578
563
579 grp['blocksPerFile'] = 0
564
580
565 ds = []
581 ds = []
566 data = []
582 data = []
@@ -572,7 +588,7 class HDF5Writer(Operation):
572 for j in range(int(self.dataDim[i,0])):
588 for j in range(int(self.dataDim[i,0])):
573 tableName = "channel" + str(j)
589 tableName = "channel" + str(j)
574
590
575 if not(numpy.isnan(self.dataDim[i,2])):
591 if not(self.dataDim[i,1] == 1):
576 ds0 = grp0.create_dataset(tableName, (1,1,1) , chunks = True)
592 ds0 = grp0.create_dataset(tableName, (1,1,1) , chunks = True)
577 else:
593 else:
578 ds0 = grp0.create_dataset(tableName, (1,1) , chunks = True)
594 ds0 = grp0.create_dataset(tableName, (1,1) , chunks = True)
@@ -605,7 +621,10 class HDF5Writer(Operation):
605 return
621 return
606
622
607 def setBlock(self):
623 def setBlock(self):
624 '''
625 data Array configured
608
626
627 '''
609 #Creating Arrays
628 #Creating Arrays
610 data = self.data
629 data = self.data
611 ind = 0
630 ind = 0
@@ -614,7 +633,8 class HDF5Writer(Operation):
614
633
615 for j in range(int(self.dataDim[i,0])):
634 for j in range(int(self.dataDim[i,0])):
616 data[ind] = dataAux[j,:]
635 data[ind] = dataAux[j,:]
617 if not(numpy.isnan(self.dataDim[i,2])):
636
637 if not(self.dataDim[i,1] == 1):
618 data[ind] = data[ind].reshape((data[ind].shape[0],data[ind].shape[1],1))
638 data[ind] = data[ind].reshape((data[ind].shape[0],data[ind].shape[1],1))
619 if not self.firsttime:
639 if not self.firsttime:
620 data[ind] = numpy.dstack((self.ds[ind][:], data[ind]))
640 data[ind] = numpy.dstack((self.ds[ind][:], data[ind]))
@@ -632,14 +652,16 class HDF5Writer(Operation):
632 return
652 return
633
653
634 def writeBlock(self):
654 def writeBlock(self):
635
655 '''
656 Saves the block in the HDF5 file
657 '''
636 for i in range(len(self.ds)):
658 for i in range(len(self.ds)):
637 self.ds[i].shape = self.data[i].shape
659 self.ds[i].shape = self.data[i].shape
638 self.ds[i][:] = self.data[i]
660 self.ds[i][:] = self.data[i]
639
661
640 self.blockIndex += 1
662 self.blockIndex += 1
641
663
642 self.grp['blocksPerFile'] = self.blockIndex
664 self.grp.attrs.modify('blocksPerFile', self.blockIndex)
643
665
644 self.firsttime = False
666 self.firsttime = False
645 return
667 return
General Comments 0
You need to be logged in to leave comments. Login now