@@ -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, |
|
463 | self.dataDim[i,0] = numpy.array(dataDim)[0] | |
454 |
self.dataDim[i, |
|
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 |
|
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 |
|
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