WaveRecord now loads waves as WaveRecord.wave.
authorW. Trevor King <wking@tremily.us>
Tue, 17 Jul 2012 12:00:03 +0000 (08:00 -0400)
committerW. Trevor King <wking@tremily.us>
Tue, 17 Jul 2012 12:00:03 +0000 (08:00 -0400)
igor/packed.py
test/test.py

index 026f917851fdef3c4a710ec14c7e81fec8196de4..ebcbdfc4764ea96a26752649851944cea211c663 100644 (file)
@@ -1,5 +1,8 @@
 # Copyright
 
+from io import BytesIO as _BytesIO
+
+from .binarywave import load as _loadibw
 from .struct import Structure as _Structure
 from .struct import Field as _Field
 
@@ -37,7 +40,15 @@ class HistoryRecord (Record):
 
 
 class WaveRecord (Record):
-    pass
+    def __init__(self, *args, **kwargs):
+        super(WaveRecord, self).__init__(*args, **kwargs)
+        self.wave = _loadibw(_BytesIO(bytes(self.data)), strict=False)
+
+    def __str__(self):
+        return str(self.wave)
+
+    def __repr__(self):
+        return str(self.wave)
 
 
 class RecreationRecord (Record):
@@ -114,7 +125,7 @@ def load(filename, strict=True, ignore_unknown=True):
             if not b:
                 break
             header = PackedFileRecordHeader.unpack_dict_from(b)
-            data = f.read(header['numDataBytes'])
+            data = buffer(f.read(header['numDataBytes']))
             record_type = RECORD_TYPE.get(
                 header['recordType'] & PACKEDRECTYPE_MASK, UnknownRecord)
             if record_type in [UnknownRecord, UnusedRecord
index f52df5d5325e419ee154dae4135e2525fd55a3ef..2c8c60e84d8dd1ca25ab8bb6e25323edde35a1eb 100644 (file)
@@ -656,21 +656,587 @@ record 30:
 record 31:
 <HistoryRecord ...>
 record 32:
-<WaveRecord ...>
+(array([ 0.30000001,  0.5448544 ,  0.77480197,  0.97584349,  1.13573945,
+        1.24475539,  1.2962544 ,  1.28710103,  1.21785283,  1.09272552,
+        0.91933674,  0.7082426 ,  0.47229454,  0.22585714, -0.01606643,
+       -0.23874778, -0.42862982, -0.57415301, -0.6664573 , -0.69992352,
+       -0.67251408, -0.58589762, -0.44534767, -0.25942117, -0.03943586,
+        0.20121357,  0.44787762,  0.68553883,  0.89972788,  1.0774051 ,
+        1.20775461,  1.28283918,  1.29808831,  1.25257373,  1.14906585,
+        0.99386656,  0.79642528,  0.56876069,  0.32473388,  0.07920124,
+       -0.15288824, -0.35740662, -0.52190179, -0.63635898, -0.69381076,
+       -0.69075894, -0.62739003, -0.5075599 , -0.3385666 , -0.13069656,
+        0.10339352,  0.34945396,  0.59250361,  0.81774551,  1.01146686,
+        1.16187334,  1.25980926,  1.29931164,  1.27797604,  1.1971004 ,
+        1.06160903,  0.87975079,  0.66259789,  0.42336911,  0.17663053,
+       -0.06259823, -0.2797519 , -0.46160996, -0.59710097, -0.67797607,
+       -0.69931161, -0.65980917, -0.56187314, -0.41146588, -0.21774435,
+        0.00749773,  0.25054744,  0.49660596,  0.7306987 ,  0.93856692,
+        1.10756063,  1.22738981,  1.29075909,  1.29381061,  1.23635852,
+        1.1219027 ,  0.95740634,  0.7528879 ,  0.52079749,  0.2752648 ,
+        0.03123802, -0.19642642, -0.39386547, -0.54906607, -0.6525743 ,
+       -0.69808841, -0.68283898, -0.60775399, -0.47740453, -0.29972947,
+       -0.08553842,  0.15212469,  0.39878684,  0.63943672,  0.85942155,
+        1.04534864,  1.18589854,  1.2725141 ,  1.29992342,  1.2664578 ,
+        1.17415261,  1.0286293 ,  0.83874667,  0.61606491,  0.37414294,
+        0.12770344, -0.1082412 , -0.31933719, -0.49272597, -0.61785328,
+       -0.6871013 , -0.69625437, -0.64475471, -0.53574032, -0.37584305,
+       -0.17479956,  0.05514668,  0.30000135], dtype=float32),
+ {'checksum': -25004,
+  'note': '',
+  'noteSize': 0,
+  'pictSize': 0,
+  'version': 2,
+  'wfmSize': 638},
+ {'aModified': 0,
+  'bname': array(['r', 'a', 'd', 'i', 'u', 's', 'D', 'a', 't', 'a', '', '', '', '',
+       '', '', '', '', '', ''],
+      dtype='|S1'),
+  'botFullScale': 0.0,
+  'creationDate': 0,
+  'dataUnits': array(['', '', '', ''],
+      dtype='|S1'),
+  'depID': 0,
+  'fileName': 0,
+  'formula': 0,
+  'fsValid': 0,
+  'hsA': 0.04908738521234052,
+  'hsB': 0.0,
+  'kindBits': '\x00',
+  'modDate': 2845545774,
+  'next': 0,
+  'npnts': 128,
+  'srcFldr': 0,
+  'swModified': 0,
+  'topFullScale': 0.0,
+  'type': 2,
+  'useBits': '\x00',
+  'wData': array([ 0.30000001,  0.5448544 ,  0.77480197,  0.97584349]),
+  'wModified': 0,
+  'wUnused': array(['', ''],
+      dtype='|S1'),
+  'waveNoteH': 0,
+  'whVersion': 0,
+  'xUnits': array(['', '', '', ''],
+      dtype='|S1')})
 record 33:
-<WaveRecord ...>
+(array([ 0.        ,  0.0494739 ,  0.0989478 ,  0.1484217 ,  0.1978956 ,
+        0.24736951,  0.29684341,  0.34631732,  0.3957912 ,  0.44526511,
+        0.49473903,  0.54421294,  0.59368682,  0.6431607 ,  0.69263464,
+        0.74210852,  0.79158241,  0.84105635,  0.89053023,  0.94000411,
+        0.98947805,  1.03895199,  1.08842587,  1.13789964,  1.18737364,
+        1.23684752,  1.2863214 ,  1.3357954 ,  1.38526928,  1.43474305,
+        1.48421705,  1.53369093,  1.58316481,  1.63263881,  1.68211269,
+        1.73158658,  1.78106046,  1.83053434,  1.88000822,  1.92948222,
+        1.9789561 ,  2.02842999,  2.07790399,  2.12737775,  2.17685175,
+        2.22632551,  2.27579927,  2.32527351,  2.37474728,  2.42422128,
+        2.47369504,  2.52316904,  2.5726428 ,  2.6221168 ,  2.67159081,
+        2.72106457,  2.77053857,  2.82001233,  2.86948609,  2.91896009,
+        2.9684341 ,  3.0179081 ,  3.06738186,  3.11685586,  3.16632962,
+        3.21580338,  3.26527762,  3.31475139,  3.36422539,  3.41369915,
+        3.46317315,  3.51264691,  3.56212091,  3.61159492,  3.66106868,
+        3.71054268,  3.76001644,  3.8094902 ,  3.85896444,  3.90843821,
+        3.95791221,  4.00738621,  4.05685997,  4.10633373,  4.15580797,
+        4.20528126,  4.2547555 ,  4.30422926,  4.3537035 ,  4.40317726,
+        4.45265102,  4.50212526,  4.55159855,  4.60107279,  4.65054703,
+        4.70002079,  4.74949455,  4.79896832,  4.84844255,  4.89791584,
+        4.94739008,  4.99686432,  5.04633808,  5.09581184,  5.14528561,
+        5.19475985,  5.24423361,  5.29370737,  5.34318161,  5.3926549 ,
+        5.44212914,  5.4916029 ,  5.54107714,  5.5905509 ,  5.64002466,
+        5.6894989 ,  5.73897219,  5.78844643,  5.83792019,  5.88739443,
+        5.93686819,  5.98634195,  6.03581619,  6.08528948,  6.13476372,
+        6.18423796,  6.23371172,  6.28318548], dtype=float32),
+ {'checksum': 28621,
+  'note': '',
+  'noteSize': 0,
+  'pictSize': 0,
+  'version': 2,
+  'wfmSize': 638},
+ {'aModified': 0,
+  'bname': array(['a', 'n', 'g', 'l', 'e', 'D', 'a', 't', 'a', '', '', '', '', '', '',
+       '', '', '', '', ''],
+      dtype='|S1'),
+  'botFullScale': 0.0,
+  'creationDate': 0,
+  'dataUnits': array(['', '', '', ''],
+      dtype='|S1'),
+  'depID': 0,
+  'fileName': 0,
+  'formula': 0,
+  'fsValid': 0,
+  'hsA': 0.04908738521234052,
+  'hsB': 0.0,
+  'kindBits': '\x00',
+  'modDate': 2845470039,
+  'next': 0,
+  'npnts': 128,
+  'srcFldr': 0,
+  'swModified': 0,
+  'topFullScale': 0.0,
+  'type': 2,
+  'useBits': '\x00',
+  'wData': array([ 0.       ,  0.0494739,  0.0989478,  0.1484217]),
+  'wModified': 0,
+  'wUnused': array(['', ''],
+      dtype='|S1'),
+  'waveNoteH': 0,
+  'whVersion': 0,
+  'xUnits': array(['', '', '', ''],
+      dtype='|S1')})
 record 34:
-<WaveRecord ...>
+(array([  1.83690956e-17,   2.69450769e-02,   7.65399113e-02,
+         1.44305170e-01,   2.23293692e-01,   3.04783821e-01,
+         3.79158467e-01,   4.36888516e-01,   4.69528973e-01,
+         4.70633775e-01,   4.36502904e-01,   3.66688997e-01,
+         2.64211357e-01,   1.35452762e-01,  -1.02594923e-02,
+        -1.61356136e-01,  -3.04955602e-01,  -4.27943677e-01,
+        -5.18107474e-01,  -5.65230608e-01,  -5.62046587e-01,
+        -5.04969478e-01,  -3.94532531e-01,  -2.35490710e-01,
+        -3.65724117e-02,   1.90097600e-01,   4.29877043e-01,
+         6.66696191e-01,   8.84287775e-01,   1.06744885e+00,
+         1.20323074e+00,   1.28195620e+00,   1.29798901e+00,
+         1.25017929e+00,   1.14195395e+00,   9.81046736e-01,
+         7.78884649e-01,   5.49682915e-01,   3.09332967e-01,
+         7.41607845e-02,  -1.40328899e-01,  -3.20629656e-01,
+        -4.56221938e-01,  -5.40310800e-01,  -5.70244014e-01,
+        -5.47582209e-01,  -4.77826297e-01,  -3.69823217e-01,
+        -2.34920204e-01,  -8.59207287e-02,   6.40354082e-02,
+         2.02596441e-01,   3.19209903e-01,   4.05949473e-01,
+         4.58081126e-01,   4.74326164e-01,   4.56804305e-01,
+         4.10668582e-01,   3.43470216e-01,   2.64317334e-01,
+         1.82909429e-01,   1.08534366e-01,   4.91267964e-02,
+         1.04717268e-02,  -4.36885841e-03,   4.64119762e-03,
+         3.45129520e-02,   7.95329511e-02,   1.31838784e-01,
+         1.82213545e-01,   2.21028924e-01,   2.39245579e-01,
+         2.29380637e-01,   1.86348081e-01,   1.08093813e-01,
+        -4.03938442e-03,  -1.45255283e-01,  -3.07566285e-01,
+        -4.80366081e-01,  -6.51240766e-01,  -8.07001889e-01,
+        -9.34792042e-01,  -1.02321768e+00,  -1.06338477e+00,
+        -1.04975033e+00,  -9.80714381e-01,  -8.58889818e-01,
+        -6.91040277e-01,  -4.87653464e-01,  -2.62210011e-01,
+        -3.01902127e-02,   1.92100301e-01,   3.88785005e-01,
+         5.45667768e-01,   6.51326835e-01,   6.98035002e-01,
+         6.82368934e-01,   6.05477571e-01,   4.72992837e-01,
+         2.94585884e-01,   8.31873119e-02,  -1.46010652e-01,
+        -3.76755983e-01,  -5.93006968e-01,  -7.80143738e-01,
+        -9.26071882e-01,  -1.02209401e+00,  -1.06349015e+00,
+        -1.04976654e+00,  -9.84551251e-01,  -8.75151932e-01,
+        -7.31834948e-01,  -5.66861272e-01,  -3.93398553e-01,
+        -2.24383846e-01,  -7.14399144e-02,   5.60413450e-02,
+         1.51621893e-01,   2.12215677e-01,   2.38205954e-01,
+         2.33226836e-01,   2.03656554e-01,   1.57870770e-01,
+         1.05330117e-01,   5.55786416e-02,   1.72677450e-02,
+        -2.72719120e-03,   5.24539061e-08], dtype=float32),
+ {'checksum': 23021,
+  'dataEUnits': '',
+  'dataEUnitsSize': 0,
+  'dimEUnits': ['', '', '', ''],
+  'dimEUnitsSize': array([0, 0, 0, 0]),
+  'dimLabels': [[], [], [], []],
+  'dimLabelsSize': array([0, 0, 0, 0]),
+  'formula': 'PolarRadiusFunction(radiusData,1,0) * cos(PolarAngleFunction(angleData,3,1,2))\x00',
+  'formulaSize': 80,
+  'note': '',
+  'noteSize': 0,
+  'optionsSize1': 0,
+  'optionsSize2': 0,
+  'sIndicesSize': 0,
+  'version': 5,
+  'wfmSize': 832},
+ {'aModified': 0,
+  'bname': array(['W', '_', 'p', 'l', 'r', 'X', '5', '', '', '', '', '', '', '', '',
+       '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''],
+      dtype='|S1'),
+  'botFullScale': 0.0,
+  'creationDate': 0,
+  'dFolder': 7848580,
+  'dLock': 0,
+  'dataEUnits': 0,
+  'dataUnits': array(['', '', '', ''],
+      dtype='|S1'),
+  'depID': 24,
+  'dimEUnits': array([0, 0, 0, 0]),
+  'dimLabels': array([0, 0, 0, 0]),
+  'dimUnits': array([['', '', '', ''],
+       ['', '', '', ''],
+       ['', '', '', ''],
+       ['', '', '', '']],
+      dtype='|S1'),
+  'fileName': 0,
+  'formula': 8054500,
+  'fsValid': 0,
+  'kindBits': '\x00',
+  'modDate': 2985072242,
+  'nDim': array([128,   0,   0,   0]),
+  'next': 8054516,
+  'npnts': 128,
+  'sIndices': 0,
+  'sfA': array([ 0.04908739,  1.        ,  1.        ,  1.        ]),
+  'sfB': array([ 0.,  0.,  0.,  0.]),
+  'srcFldr': 0,
+  'swModified': 0,
+  'topFullScale': 0.0,
+  'type': 2,
+  'useBits': '\x00',
+  'wData': 1.8369095638207904e-17,
+  'wModified': 0,
+  'waveNoteH': 0,
+  'whUnused': array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
+  'whVersion': 1,
+  'whpad1': array(['', '', '', '', '', ''],
+      dtype='|S1'),
+  'whpad2': 0,
+  'whpad3': 0,
+  'whpad4': 0})
 record 35:
-<WaveRecord ...>
+(array([ 0.30000001,  0.54418772,  0.77101213,  0.96511477,  1.1135726 ,
+        1.20686483,  1.23956215,  1.21068466,  1.12370288,  0.98618096,
+        0.80910152,  0.60592639,  0.39147732,  0.18073183, -0.01236418,
+       -0.17596789, -0.30120692, -0.38277394, -0.41920158, -0.41280419,
+       -0.36929506, -0.29712263, -0.20658807, -0.10882771, -0.01475283,
+        0.06595302,  0.12569843,  0.15962352,  0.16596791,  0.14613269,
+        0.10443594,  0.04758934, -0.01605497, -0.0774129 , -0.12764584,
+       -0.15911636, -0.16622847, -0.14607331, -0.09881912, -0.02780312,
+        0.06068454,  0.15791172,  0.25346208,  0.33617997,  0.3952153 ,
+        0.42107204,  0.40657136,  0.34763175,  0.24380288,  0.09848462,
+       -0.08117689, -0.28473276, -0.49916485, -0.70986813, -0.90179092,
+       -1.06064332, -1.17407382, -1.23270524, -1.23095524, -1.16755545,
+       -1.04573321, -0.87303019, -0.66077417, -0.42323959, -0.1765765 ,
+        0.06242594,  0.2776148 ,  0.45470679,  0.58236426,  0.65303123,
+        0.66346282,  0.61490625,  0.51291907,  0.36684951,  0.18901938,
+       -0.00631659, -0.20414437, -0.389898  , -0.55060786, -0.67586488,
+       -0.75857663, -0.79539269, -0.78681922, -0.73699296, -0.65315133,
+       -0.54485315, -0.42300734, -0.29883695, -0.18282266, -0.08376524,
+       -0.00802278,  0.0409977 ,  0.06305727,  0.06099379,  0.04033075,
+        0.00863387, -0.02533132, -0.05255322, -0.06475239, -0.05528941,
+       -0.01991711,  0.04269439,  0.13071296,  0.23921135,  0.36052904,
+        0.48491719,  0.60139763,  0.69877088,  0.76667541,  0.79660165,
+        0.78277934,  0.72283876,  0.6181944 ,  0.47410288,  0.29939076,
+        0.10585135, -0.09260413, -0.28104633, -0.44468346, -0.57008827,
+       -0.64630753, -0.66580337, -0.62512833, -0.52528399, -0.37171093,
+       -0.17394456,  0.0550792 ,  0.30000135], dtype=float32),
+ {'checksum': -9146,
+  'dataEUnits': '',
+  'dataEUnitsSize': 0,
+  'dimEUnits': ['', '', '', ''],
+  'dimEUnitsSize': array([0, 0, 0, 0]),
+  'dimLabels': [[], [], [], []],
+  'dimLabelsSize': array([0, 0, 0, 0]),
+  'formula': 'PolarRadiusFunction(radiusData,1,0) * sin(PolarAngleFunction(angleData,3,1,2))\x00',
+  'formulaSize': 80,
+  'note': 'shadowX=W_plrX5,appendRadius=radiusData,appendAngleData=angleData,angleDataUnits=2',
+  'noteSize': 82,
+  'optionsSize1': 0,
+  'optionsSize2': 0,
+  'sIndicesSize': 0,
+  'version': 5,
+  'wfmSize': 832},
+ {'aModified': 0,
+  'bname': array(['W', '_', 'p', 'l', 'r', 'Y', '5', '', '', '', '', '', '', '', '',
+       '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''],
+      dtype='|S1'),
+  'botFullScale': 0.0,
+  'creationDate': 0,
+  'dFolder': 7848580,
+  'dLock': 0,
+  'dataEUnits': 0,
+  'dataUnits': array(['', '', '', ''],
+      dtype='|S1'),
+  'depID': 26,
+  'dimEUnits': array([0, 0, 0, 0]),
+  'dimLabels': array([0, 0, 0, 0]),
+  'dimUnits': array([['', '', '', ''],
+       ['', '', '', ''],
+       ['', '', '', ''],
+       ['', '', '', '']],
+      dtype='|S1'),
+  'fileName': 0,
+  'formula': 8054532,
+  'fsValid': 0,
+  'kindBits': '\x00',
+  'modDate': 2985072242,
+  'nDim': array([128,   0,   0,   0]),
+  'next': 8084972,
+  'npnts': 128,
+  'sIndices': 0,
+  'sfA': array([ 0.04908739,  1.        ,  1.        ,  1.        ]),
+  'sfB': array([ 0.,  0.,  0.,  0.]),
+  'srcFldr': 0,
+  'swModified': 0,
+  'topFullScale': 0.0,
+  'type': 2,
+  'useBits': '\x00',
+  'wData': 0.30000001192092896,
+  'wModified': 0,
+  'waveNoteH': 7996608,
+  'whUnused': array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
+  'whVersion': 1,
+  'whpad1': array(['', '', '', '', '', ''],
+      dtype='|S1'),
+  'whpad2': 0,
+  'whpad3': 0,
+  'whpad4': 0})
 record 36:
-<WaveRecord ...>
+(array([ 0.2617994 ,  0.27842158,  0.29504377,  0.31166595,  0.32828814,
+        0.34491032,  0.36153251,  0.3781547 ,  0.39477688,  0.41139907,
+        0.42802125,  0.44464344,  0.46126559,  0.47788778,  0.49450997,
+        0.51113212,  0.52775431,  0.54437649,  0.56099868,  0.57762086,
+        0.59424305,  0.61086524,  0.62748742,  0.64410961,  0.66073179,
+        0.67735398,  0.69397616,  0.71059835,  0.72722054,  0.74384272,
+        0.76046491,  0.77708709,  0.79370928,  0.81033146,  0.82695365,
+        0.84357584,  0.86019802,  0.87682021,  0.89344239,  0.91006458,
+        0.92668676,  0.94330889,  0.95993114,  0.97655326,  0.99317551,
+        1.00979757,  1.02641988,  1.04304194,  1.05966425,  1.07628632,
+        1.09290862,  1.10953069,  1.12615299,  1.14277506,  1.15939736,
+        1.17601943,  1.19264174,  1.2092638 ,  1.22588611,  1.24250817,
+        1.25913048,  1.27575254,  1.29237485,  1.30899692], dtype=float32),
+ {'checksum': 14307,
+  'note': '',
+  'noteSize': 0,
+  'pictSize': 0,
+  'version': 2,
+  'wfmSize': 382},
+ {'aModified': 0,
+  'bname': array(['a', 'n', 'g', 'l', 'e', 'Q', '1', '', '', '', '', '', '', '', '',
+       '', '', '', '', ''],
+      dtype='|S1'),
+  'botFullScale': 0.0,
+  'creationDate': 0,
+  'dataUnits': array(['', '', '', ''],
+      dtype='|S1'),
+  'depID': 0,
+  'fileName': 0,
+  'formula': 0,
+  'fsValid': 0,
+  'hsA': 1.0,
+  'hsB': 0.0,
+  'kindBits': '\x00',
+  'modDate': 2845473705,
+  'next': 0,
+  'npnts': 64,
+  'srcFldr': 0,
+  'swModified': 0,
+  'topFullScale': 0.0,
+  'type': 2,
+  'useBits': '\x00',
+  'wData': array([ 0.2617994 ,  0.27842158,  0.29504377,  0.31166595]),
+  'wModified': 0,
+  'wUnused': array(['', ''],
+      dtype='|S1'),
+  'waveNoteH': 0,
+  'whVersion': 0,
+  'xUnits': array(['', '', '', ''],
+      dtype='|S1')})
 record 37:
-<WaveRecord ...>
+(array([ -8.34064484,  -7.66960144,  -6.62294245,  -6.82878971,
+        -8.6383152 , -11.20019722, -13.83398628, -15.95139503,
+       -16.18096733, -13.58062267,  -9.26843071,  -5.34649038,
+        -3.01010084,  -2.30953455,  -2.73682952,  -3.72112942,
+        -4.85171413,  -5.63053226,  -5.48626232,  -4.49401283,
+        -3.53216696,  -3.34821796,  -4.07400894,  -5.87675714,
+        -9.11268425, -12.98700237, -15.06296921, -13.71571922,
+       -10.23535728,  -7.01303005,  -5.23288727,  -5.71091986,
+        -9.24852943, -14.06335735, -15.846241  , -12.78800964,
+        -7.8465519 ,  -4.56293297,  -3.54999399,  -3.67789125,
+        -4.10172844,  -4.78980875,  -6.20238352,  -8.17891598,
+        -9.2803278 ,  -8.36780167,  -6.3059268 ,  -4.85605574,
+        -4.54975414,  -4.52917624,  -3.99160147,  -3.1971693 ,
+        -2.93472862,  -3.47230864,  -4.7322526 ,  -6.80173016,
+        -9.08601665, -10.00928402,  -8.87677383,  -6.88120317,
+        -5.61007977,  -5.6351161 ,  -6.41880989,  -6.8738699 ], dtype=float32),
+ {'checksum': -12080,
+  'note': '',
+  'noteSize': 0,
+  'pictSize': 0,
+  'version': 2,
+  'wfmSize': 382},
+ {'aModified': 0,
+  'bname': array(['r', 'a', 'd', 'i', 'u', 's', 'Q', '1', '', '', '', '', '', '', '',
+       '', '', '', '', ''],
+      dtype='|S1'),
+  'botFullScale': 0.0,
+  'creationDate': 0,
+  'dataUnits': array(['', '', '', ''],
+      dtype='|S1'),
+  'depID': 0,
+  'fileName': 0,
+  'formula': 0,
+  'fsValid': 0,
+  'hsA': 1.0,
+  'hsB': 0.0,
+  'kindBits': '\x00',
+  'modDate': 2845473634,
+  'next': 0,
+  'npnts': 64,
+  'srcFldr': 0,
+  'swModified': 0,
+  'topFullScale': 0.0,
+  'type': 2,
+  'useBits': '\x00',
+  'wData': array([-8.34064484, -7.66960144, -6.62294245, -6.82878971]),
+  'wModified': 0,
+  'wUnused': array(['', ''],
+      dtype='|S1'),
+  'waveNoteH': 0,
+  'whVersion': 0,
+  'xUnits': array(['', '', '', ''],
+      dtype='|S1')})
 record 38:
-<WaveRecord ...>
+(array([ 30.58058929,  31.08536911,  31.93481636,  31.57315445,
+        29.68683434,  27.10366058,  24.47453499,  22.3495121 ,
+        21.98692894,  24.21500397,  27.95923996,  31.28394508,
+        33.12408066,  33.46794128,  32.79909515,  31.64211464,
+        30.36601639,  29.40137291,  29.22361755,  29.74564171,
+        30.21624565,  30.02338219,  29.0822773 ,  27.28613091,
+        24.38687515,  21.04944038,  19.16931915,  19.92274094,
+        22.23493385,  24.27418709,  25.1893177 ,  24.44671249,
+        21.56310272,  17.87704659,  16.35500908,  18.09041786,
+        20.97328949,  22.66550255,  22.84443283,  22.29068756,
+        21.55643272,  20.67234993,  19.38551521,  17.81604385,
+        16.77393341,  16.8293457 ,  17.4496479 ,  17.6982975 ,
+        17.34101677,  16.83446693,  16.56042671,  16.38027191,
+        15.94310474,  15.16159916,  14.10328865,  12.76812935,
+        11.41363049,  10.60795975,  10.52314186,  10.67826462,
+        10.5454855 ,   9.99268055,   9.22939587,   8.5736742 ], dtype=float32),
+ {'checksum': -5745,
+  'dataEUnits': '',
+  'dataEUnitsSize': 0,
+  'dimEUnits': ['', '', '', ''],
+  'dimEUnitsSize': array([0, 0, 0, 0]),
+  'dimLabels': [[], [], [], []],
+  'dimLabelsSize': array([0, 0, 0, 0]),
+  'formula': 'PolarRadiusFunction(radiusQ1,1,-40) * cos(PolarAngleFunction(angleQ1,2,2,2))\x00',
+  'formulaSize': 78,
+  'note': '',
+  'noteSize': 0,
+  'optionsSize1': 0,
+  'optionsSize2': 0,
+  'sIndicesSize': 0,
+  'version': 5,
+  'wfmSize': 576},
+ {'aModified': 0,
+  'bname': array(['W', '_', 'p', 'l', 'r', 'X', '6', '', '', '', '', '', '', '', '',
+       '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''],
+      dtype='|S1'),
+  'botFullScale': 0.0,
+  'creationDate': 0,
+  'dFolder': 7848580,
+  'dLock': 0,
+  'dataEUnits': 0,
+  'dataUnits': array(['', '', '', ''],
+      dtype='|S1'),
+  'depID': 30,
+  'dimEUnits': array([0, 0, 0, 0]),
+  'dimLabels': array([0, 0, 0, 0]),
+  'dimUnits': array([['', '', '', ''],
+       ['', '', '', ''],
+       ['', '', '', ''],
+       ['', '', '', '']],
+      dtype='|S1'),
+  'fileName': 0,
+  'formula': 8052116,
+  'fsValid': 0,
+  'kindBits': '\x00',
+  'modDate': 2985072242,
+  'nDim': array([64,  0,  0,  0]),
+  'next': 8324392,
+  'npnts': 64,
+  'sIndices': 0,
+  'sfA': array([ 1.,  1.,  1.,  1.]),
+  'sfB': array([ 0.,  0.,  0.,  0.]),
+  'srcFldr': 0,
+  'swModified': 0,
+  'topFullScale': 0.0,
+  'type': 2,
+  'useBits': '\x00',
+  'wData': 30.580589294433594,
+  'wModified': 0,
+  'waveNoteH': 0,
+  'whUnused': array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
+  'whVersion': 1,
+  'whpad1': array(['', '', '', '', '', ''],
+      dtype='|S1'),
+  'whpad2': 0,
+  'whpad3': 0,
+  'whpad4': 0})
 record 39:
-<WaveRecord ...>
+(array([  8.19404411,   8.88563347,   9.70543861,  10.17177773,
+        10.11173058,   9.73756695,   9.25513077,   8.8788929 ,
+         9.16085339,  10.56489944,  12.75579453,  14.90572262,
+        16.46352959,  17.33401871,  17.68511391,  17.74635315,
+        17.70048141,  17.79942513,  18.36241531,  19.38741684,
+        20.41767311,  21.02259827,  21.09260368,  20.4905529 ,
+        18.95538521,  16.9299469 ,  15.94969368,  17.14490509,
+        19.78741264,  22.33615875,  23.96352196,  24.04369545,
+        21.92454147,  18.79150391,  17.77407646,  20.32803917,
+        24.37140465,  27.24079132,  28.40307808,  28.67787933,
+        28.70550728,  28.50283432,  27.68538666,  26.36607552,
+        25.73583984,  26.78374672,  28.8236084 ,  30.36226463,
+        30.91939545,  31.22146797,  31.97431755,  32.95656204,
+        33.4611969 ,  33.23248672,  32.3250885 ,  30.64473915,
+        28.72983551,  28.05199242,  29.29024887,  31.3501091 ,
+        32.7331543 ,  32.87995529,  32.28799438,  31.99738503], dtype=float32),
+ {'checksum': -16604,
+  'dataEUnits': '',
+  'dataEUnitsSize': 0,
+  'dimEUnits': ['', '', '', ''],
+  'dimEUnitsSize': array([0, 0, 0, 0]),
+  'dimLabels': [[], [], [], []],
+  'dimLabelsSize': array([0, 0, 0, 0]),
+  'formula': 'PolarRadiusFunction(radiusQ1,1,-40) * sin(PolarAngleFunction(angleQ1,2,2,2))\x00',
+  'formulaSize': 78,
+  'note': 'shadowX=W_plrX6,appendRadius=radiusQ1,appendAngleData=angleQ1,angleDataUnits=2',
+  'noteSize': 78,
+  'optionsSize1': 0,
+  'optionsSize2': 0,
+  'sIndicesSize': 0,
+  'version': 5,
+  'wfmSize': 576},
+ {'aModified': 0,
+  'bname': array(['W', '_', 'p', 'l', 'r', 'Y', '6', '', '', '', '', '', '', '', '',
+       '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''],
+      dtype='|S1'),
+  'botFullScale': 0.0,
+  'creationDate': 0,
+  'dFolder': 7848580,
+  'dLock': 0,
+  'dataEUnits': 0,
+  'dataUnits': array(['', '', '', ''],
+      dtype='|S1'),
+  'depID': 32,
+  'dimEUnits': array([0, 0, 0, 0]),
+  'dimLabels': array([0, 0, 0, 0]),
+  'dimUnits': array([['', '', '', ''],
+       ['', '', '', ''],
+       ['', '', '', ''],
+       ['', '', '', '']],
+      dtype='|S1'),
+  'fileName': 0,
+  'formula': 7995612,
+  'fsValid': 0,
+  'kindBits': '\x00',
+  'modDate': 2985072242,
+  'nDim': array([64,  0,  0,  0]),
+  'next': 0,
+  'npnts': 64,
+  'sIndices': 0,
+  'sfA': array([ 1.,  1.,  1.,  1.]),
+  'sfB': array([ 0.,  0.,  0.,  0.]),
+  'srcFldr': 0,
+  'swModified': 0,
+  'topFullScale': 0.0,
+  'type': 2,
+  'useBits': '\x00',
+  'wData': 8.19404411315918,
+  'wModified': 0,
+  'waveNoteH': 7998208,
+  'whUnused': array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
+  'whVersion': 1,
+  'whpad1': array(['', '', '', '', '', ''],
+      dtype='|S1'),
+  'whpad2': 0,
+  'whpad3': 0,
+  'whpad4': 0})
 record 40:
 <FolderStartRecord ...>
 record 41:
@@ -701,6 +1267,7 @@ import sys
 
 from igor.binarywave import load as loadibw
 from igor.packed import load as loadpxp
+from igor.packed import WaveRecord
 
 
 _this_dir = os.path.dirname(__file__)
@@ -720,7 +1287,10 @@ def dumppxp(filename, strict=True):
     records = loadpxp(path, strict=strict)
     for i,record in enumerate(records):
         print('record {}:'.format(i))
-        pprint(record)
+        if isinstance(record, WaveRecord):
+            pprint(record.wave)
+        else:
+            pprint(record)
 
 def pprint(data):
     lines = pformat(data).splitlines()