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