@@ -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, |
|
|
454 |
self.dataDim[i, |
|
|
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 |
|
|
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 |
|
|
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