Commit a2151cb1 authored by W. Trevor King's avatar W. Trevor King
Browse files

Add test-igorpy.py for testing igor.igorpy.

parent 6a09fdfc
# This program is in the public domain
"""
IGOR file reader.
"""`igor.py` compatibility layer on top of the `igor` package.
igor.load('filename') or igor.loads('data') loads the content of an igore file
into memory as a folder structure.
......@@ -14,7 +13,9 @@ To see the whole tree, use: print folder.format()
The usual igor folder types are given in the technical reports
PTN003.ifn and TN003.ifn.
"""
__version__="0.9"
from __future__ import absolute_import
__version__='1.0'
import struct
import numpy
......
# Copyright
r"""Test the igor.igorpy compatibility layer by loading sample files.
>>> from pprint import pprint
>>> import igor.igorpy as igor
Load a packed experiment:
>>> path = data_path('polar-graphs-demo.pxp')
>>> d = igor.load(path)
>>> print(d)
<igor.Folder root>
>>> dir(d) # doctest: +ELLIPSIS
['Packages', 'W_plrX5', 'W_plrX6', ..., 'radiusData', 'radiusQ1']
Navigation:
>>> print(d.Packages)
<igor.Folder root/Packages>
>>> print(d[0]) # doctest: +ELLIPSIS
<igor.igorpy.Variables object at 0x...>
Variables:
>>> v = d[0]
>>> dir(v) # doctest: +ELLIPSIS
['__class__', ..., 'depstr', 'depvar', 'format', 'sysvar', 'userstr', 'uservar']
>>> v.depstr
{}
>>> v.depvar
{}
>>> v.format()
'<Variables: system 21, user 0, dependent 0>'
>>> pprint(v.sysvar) # doctest: +REPORT_UDIFF
{'K0': 0.0,
'K1': 0.0,
'K10': 0.0,
'K11': 0.0,
'K12': 0.0,
'K13': 0.0,
'K14': 0.0,
'K15': 0.0,
'K16': 0.0,
'K17': 0.0,
'K18': 0.0,
'K19': 0.0,
'K2': 0.0,
'K20': 128.0,
'K3': 0.0,
'K4': 0.0,
'K5': 0.0,
'K6': 0.0,
'K7': 0.0,
'K8': 0.0,
'K9': 0.0}
>>> v.userstr
{}
>>> v.uservar
{}
Waves:
>>> d.W_plrX5
<igor.Wave W_plrX5 data (128)>
>>> dir(d.W_plrX5) # doctest: +ELLIPSIS
['__array__', ..., 'axis', 'axis_units', 'data', ..., 'name', 'notes']
>>> d.W_plrX5.axis # doctest: +ELLIPSIS
[array([ 0.04908739, 0.04870087, 0.04831436, 0.04792784, 0.04754133,
0.04715481, 0.0467683 , 0.04638178, 0.04599527, 0.04560875,
...
0.00077303, 0.00038651, 0. ]), array([], dtype=float64), array([], dtype=float64), array([], dtype=float64)]
>>> d.W_plrX5.axis_units
('', '', '', '')
>>> d.W_plrX5.data # doctest: +ELLIPSIS
array([ 1.83690956e-17, 2.69450769e-02, 7.65399113e-02,
1.44305170e-01, 2.23293692e-01, 3.04783821e-01,
...
-2.72719120e-03, 5.24539061e-08], dtype=float32)
Dump the whole thing:
>>> print(d.format())
root
<Variables: system 21, user 0, dependent 0>
<History>
radiusData data (128)
angleData data (128)
W_plrX5 data (128)
W_plrY5 data (128)
angleQ1 data (64)
radiusQ1 data (64)
W_plrX6 data (64)
W_plrY6 data (64)
Packages
WMDataBase
<Variables: system 21, user 6, dependent 0>
PolarGraphs
<Variables: system 21, user 38, dependent 0>
<Recreation>
<GetHistory>
<Procedure>
Load a packed experiment without ignoring unknown records:
>>> d = igor.load(path, ignore_unknown=False)
>>> print(d.format())
root
<Unknown type 11>
<Unknown type 12>
<Unknown type 13>
<Unknown type 13>
<Unknown type 13>
<Unknown type 13>
<Unknown type 13>
<Unknown type 13>
<Unknown type 13>
<Unknown type 14>
<Unknown type 15>
<Unknown type 16>
<Unknown type 16>
<Unknown type 17>
<Unknown type 17>
<Unknown type 17>
<Unknown type 17>
<Unknown type 17>
<Unknown type 17>
<Unknown type 16>
<Unknown type 17>
<Unknown type 17>
<Unknown type 17>
<Unknown type 17>
<Unknown type 17>
<Unknown type 17>
<Unknown type 18>
<Unknown type 11>
<Unknown type 26>
<Unknown type 26>
<Variables: system 21, user 0, dependent 0>
<History>
radiusData data (128)
angleData data (128)
W_plrX5 data (128)
W_plrY5 data (128)
angleQ1 data (64)
radiusQ1 data (64)
W_plrX6 data (64)
W_plrY6 data (64)
Packages
WMDataBase
<Variables: system 21, user 6, dependent 0>
PolarGraphs
<Variables: system 21, user 38, dependent 0>
<Recreation>
<GetHistory>
<Procedure>
Try to load a binary wave:
>>> path = data_path('mac-double.ibw')
>>> d = igor.load(path)
Traceback (most recent call last):
...
IOError: final record too long; bad pxp file?
"""
import os.path
from igor import LOG
_this_dir = os.path.dirname(__file__)
_data_dir = os.path.join(_this_dir, 'data')
def data_path(filename):
LOG.info('Testing igorpy compatibility {}\n'.format(filename))
path = os.path.join(_data_dir, filename)
return path
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment