Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Vasudevan, Rama K
pycroscopy
Commits
af42f3db
Commit
af42f3db
authored
Nov 13, 2017
by
Unknown
Browse files
Remove nanonispy test folder
parent
4b9805d7
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
pycroscopy/io/translators/df_utils/nanonispy/tests/Bias-Spectroscopy002.dat
deleted
100755 → 0
View file @
4b9805d7
This diff is collapsed.
Click to expand it.
pycroscopy/io/translators/df_utils/nanonispy/tests/__init__.py
deleted
100644 → 0
View file @
4b9805d7
pycroscopy/io/translators/df_utils/nanonispy/tests/test_read.py
deleted
100644 → 0
View file @
4b9805d7
import
unittest
import
tempfile
import
os
import
numpy
as
np
import
nanonispy
as
nap
class
TestNanonisFileBaseClass
(
unittest
.
TestCase
):
"""
Testing class for NanonisFile base class.
"""
def
setUp
(
self
):
self
.
temp_dir
=
tempfile
.
TemporaryDirectory
()
def
tearDown
(
self
):
self
.
temp_dir
.
cleanup
()
def
test_is_instance_nanonis_file
(
self
):
"""
Check for correct instance of NanonisFile object.
"""
f
=
tempfile
.
NamedTemporaryFile
(
mode
=
'wb'
,
suffix
=
'.3ds'
,
dir
=
self
.
temp_dir
.
name
,
delete
=
False
)
f
.
write
(
b
':HEADER_END:'
)
f
.
close
()
NF
=
nap
.
read
.
NanonisFile
(
f
.
name
)
self
.
assertIsInstance
(
NF
,
nap
.
read
.
NanonisFile
)
def
test_unsupported_filetype
(
self
):
"""
Handle unsupported file gracefully.
"""
with
self
.
assertRaises
(
nap
.
read
.
UnhandledFileError
):
f
=
tempfile
.
NamedTemporaryFile
(
mode
=
'wb'
,
suffix
=
'.txt'
,
dir
=
self
.
temp_dir
.
name
,
delete
=
False
)
f
.
close
()
NF
=
nap
.
read
.
NanonisFile
(
f
.
name
)
def
test_3ds_suffix_parsed
(
self
):
"""
3ds file recognized.
"""
f
=
tempfile
.
NamedTemporaryFile
(
mode
=
'wb'
,
suffix
=
'.3ds'
,
dir
=
self
.
temp_dir
.
name
,
delete
=
False
)
f
.
write
(
b
':HEADER_END:'
)
f
.
close
()
NF
=
nap
.
read
.
NanonisFile
(
f
.
name
)
self
.
assertEqual
(
NF
.
filetype
,
'grid'
)
def
test_sxm_suffix_parsed
(
self
):
"""
Sxm file recognized.
"""
f
=
tempfile
.
NamedTemporaryFile
(
mode
=
'wb'
,
suffix
=
'.sxm'
,
dir
=
self
.
temp_dir
.
name
,
delete
=
False
)
f
.
write
(
b
'SCANIT_END'
)
f
.
close
()
NF
=
nap
.
read
.
NanonisFile
(
f
.
name
)
self
.
assertEqual
(
NF
.
filetype
,
'scan'
)
def
test_dat_suffix_parsed
(
self
):
"""
Dat file recognized.
"""
f
=
tempfile
.
NamedTemporaryFile
(
mode
=
'wb'
,
suffix
=
'.dat'
,
dir
=
self
.
temp_dir
.
name
,
delete
=
False
)
f
.
write
(
b
'[DATA]'
)
f
.
close
()
NF
=
nap
.
read
.
NanonisFile
(
f
.
name
)
self
.
assertEqual
(
NF
.
filetype
,
'spec'
)
def
test_find_start_byte
(
self
):
f
=
tempfile
.
NamedTemporaryFile
(
mode
=
'wb'
,
suffix
=
'.3ds'
,
dir
=
self
.
temp_dir
.
name
,
delete
=
False
)
f
.
write
(
b
'header_entry
\n
:HEADER_END:
\n
'
)
f
.
close
()
NF
=
nap
.
read
.
NanonisFile
(
f
.
name
)
byte_offset
=
NF
.
start_byte
()
self
.
assertEqual
(
byte_offset
,
26
)
def
test_no_header_tag_found
(
self
):
with
self
.
assertRaises
(
nap
.
read
.
FileHeaderNotFoundError
):
f
=
tempfile
.
NamedTemporaryFile
(
mode
=
'wb'
,
suffix
=
'.3ds'
,
dir
=
self
.
temp_dir
.
name
,
delete
=
False
)
f
.
close
()
NF
=
nap
.
read
.
NanonisFile
(
f
.
name
)
def
test_header_raw_is_str
(
self
):
f
=
tempfile
.
NamedTemporaryFile
(
mode
=
'wb'
,
suffix
=
'.3ds'
,
dir
=
self
.
temp_dir
.
name
,
delete
=
False
)
f
.
write
(
b
'header_entry
\n
:HEADER_END:
\n
'
)
f
.
close
()
NF
=
nap
.
read
.
NanonisFile
(
f
.
name
)
self
.
assertIsInstance
(
NF
.
header_raw
,
str
)
class
TestGridFile
(
unittest
.
TestCase
):
def
setUp
(
self
):
self
.
temp_dir
=
tempfile
.
TemporaryDirectory
()
def
tearDown
(
self
):
self
.
temp_dir
.
cleanup
()
def
create_dummy_grid_data
(
self
,
suffix
=
'3ds'
):
"""
return tempfile file object with dummy header info
"""
f
=
tempfile
.
NamedTemporaryFile
(
mode
=
'wb'
,
suffix
=
suffix
,
dir
=
self
.
temp_dir
.
name
,
delete
=
False
)
f
.
write
(
b
'Grid dim="230 x 230"
\r\n
Grid settings=4.026839E-8;-4.295725E-8;1.500000E-7;1.500000E-7;0.000000E+0
\r\n
Sweep Signal="Bias (V)"
\r\n
Fixed parameters="Sweep Start;Sweep End"
\r\n
Experiment parameters="X (m);Y (m);Z (m);Z offset (m);Settling time (s);Integration time (s);Z-Ctrl hold;Final Z (m)"
\r\n
# Parameters (4 byte)=10
\r\n
Experiment size (bytes)=2048
\r\n
Points=512
\r\n
Channels="Input 3 (A)"
\r\n
Delay before measuring (s)=0.000000E+0
\r\n
Experiment="Grid Spectroscopy"
\r\n
Start time="21.10.2014 16:48:06"
\r\n
End time="23.10.2014 10:42:19"
\r\n
User=
\r\n
Comment=
\r\n
:HEADER_END:
\r\n
'
)
a
=
np
.
linspace
(
0
,
100.0
,
230
*
230
*
(
10
+
512
))
b
=
np
.
asarray
(
a
,
dtype
=
'>f4'
)
b
.
tofile
(
f
)
f
.
close
()
return
f
def
create_dummy_grid_data_v2
(
self
,
suffix
=
'3ds'
):
"""
return tempfile file object with dummy header info
"""
f
=
tempfile
.
NamedTemporaryFile
(
mode
=
'wb'
,
suffix
=
suffix
,
dir
=
self
.
temp_dir
.
name
,
delete
=
False
)
f
.
write
(
b
'Grid dim="230 x 230"
\r\n
Grid settings=4.026839E-8;-4.295725E-8;1.500000E-7;1.500000E-7;0.000000E+0
\r\n
Filetype=Linear
\r\n
Sweep Signal="Bias (V)"
\r\n
Fixed parameters="Sweep Start;Sweep End"
\r\n
Experiment parameters="X (m);Y (m);Z (m);Z offset (m);Settling time (s);Integration time (s);Z-Ctrl hold;Final Z (m)"
\r\n
# Parameters (4 byte)=10
\r\n
Experiment size (bytes)=2048
\r\n
Points=512
\r\n
Channels="Input 3 (A)"
\r\n
Delay before measuring (s)=0.000000E+0
\r\n
Experiment="Grid Spectroscopy"
\r\n
Start time="21.10.2014 16:48:06"
\r\n
End time="23.10.2014 10:42:19"
\r\n
User=
\r\n
Comment=
\r\n
:HEADER_END:
\r\n
'
)
a
=
np
.
linspace
(
0
,
100.0
,
230
*
230
*
(
10
+
512
))
b
=
np
.
asarray
(
a
,
dtype
=
'>f4'
)
b
.
tofile
(
f
)
f
.
close
()
return
f
def
test_is_instance_grid_file
(
self
):
"""
Check for correct instance of Grid object.
"""
f
=
self
.
create_dummy_grid_data
()
GF
=
nap
.
read
.
Grid
(
f
.
name
)
self
.
assertIsInstance
(
GF
,
nap
.
read
.
Grid
)
def
test_data_has_right_shape
(
self
):
f
=
self
.
create_dummy_grid_data
()
GF
=
nap
.
read
.
Grid
(
f
.
name
)
self
.
assertEqual
(
GF
.
signals
[
'Input 3 (A)'
].
shape
,
(
230
,
230
,
512
))
def
test_sweep_signal_calculated
(
self
):
f
=
self
.
create_dummy_grid_data
()
GF
=
nap
.
read
.
Grid
(
f
.
name
)
self
.
assertEqual
(
GF
.
signals
[
'sweep_signal'
].
shape
,
(
512
,))
def
test_raises_correct_instance_error
(
self
):
with
self
.
assertRaises
(
nap
.
read
.
UnhandledFileError
):
f
=
self
.
create_dummy_grid_data
(
suffix
=
'sxm'
)
GF
=
nap
.
read
.
Grid
(
f
.
name
)
def
test_header_entries
(
self
):
f
=
self
.
create_dummy_grid_data
()
GF
=
nap
.
read
.
Grid
(
f
.
name
)
test_dict
=
{
'angle'
:
'0.0'
,
'channels'
:
"['Input 3 (A)']"
,
'comment'
:
''
,
'dim_px'
:
'[230, 230]'
,
'end_time'
:
'23.10.2014 10:42:19'
,
'experiment_name'
:
'Grid Spectroscopy'
,
'experiment_size'
:
'2048'
,
'experimental_parameters'
:
"['X (m)', 'Y (m)', 'Z (m)', 'Z offset (m)', 'Settling time (s)', 'Integration time (s)', 'Z-Ctrl hold', 'Final Z (m)']"
,
'fixed_parameters'
:
"['Sweep Start', 'Sweep End']"
,
'measure_delay'
:
'0.0'
,
'num_channels'
:
'1'
,
'num_parameters'
:
'10'
,
'num_sweep_signal'
:
'512'
,
'pos_xy'
:
'[4.026839e-08, -4.295725e-08]'
,
'size_xy'
:
'[1.5e-07, 1.5e-07]'
,
'start_time'
:
'21.10.2014 16:48:06'
,
'sweep_signal'
:
'Bias (V)'
,
'user'
:
''
}
for
key
in
GF
.
header
:
a
=
''
.
join
(
sorted
(
str
(
GF
.
header
[
key
])))
b
=
''
.
join
(
sorted
(
test_dict
[
key
]))
self
.
assertEqual
(
a
,
b
)
def
test_both_header_formats
(
self
):
f
=
self
.
create_dummy_grid_data
()
f2
=
self
.
create_dummy_grid_data_v2
()
GF
=
nap
.
read
.
Grid
(
f
.
name
)
GF2
=
nap
.
read
.
Grid
(
f2
.
name
)
self
.
assertEqual
(
GF
.
header
,
GF2
.
header
)
class
TestScanFile
(
unittest
.
TestCase
):
def
setUp
(
self
):
self
.
temp_dir
=
tempfile
.
TemporaryDirectory
()
def
tearDown
(
self
):
self
.
temp_dir
.
cleanup
()
def
create_dummy_scan_data
(
self
,
suffix
=
'.sxm'
):
"""
return tempfile file object with dummy header info
"""
f
=
tempfile
.
NamedTemporaryFile
(
mode
=
'wb'
,
suffix
=
suffix
,
dir
=
self
.
temp_dir
.
name
,
delete
=
False
)
f
.
write
(
b
':NANONIS_VERSION:
\n
2
\n
:SCANIT_TYPE:
\n
FLOAT MSBFIRST
\n
:REC_DATE:
\n
21.11.2014
\n
:REC_TIME:
\n
17:19:32
\n
:REC_TEMP:
\n
290.0000000000
\n
:ACQ_TIME:
\n
470.3
\n
:SCAN_PIXELS:
\n
64 64
\n
:SCAN_FILE:
\n
C:
\\
STM data
\\
2014-11
\\
2014-11-21
\\
ScanAg111_November2014_001.sxm
\n
:SCAN_TIME:
\n
3.533E+0 3.533E+0
\n
:SCAN_RANGE:
\n
1.500000E-7 1.500000E-7
\n
:SCAN_OFFSET:
\n
7.217670E-8 2.414175E-7
\n
:SCAN_ANGLE:
\n
0.000E+0
\n
:SCAN_DIR:
\n
up
\n
:BIAS:
\n
-5.000E-2
\n
:Z-CONTROLLER:
\n\t
Name
\t
on
\t
Setpoint
\t
P-gain
\t
I-gain
\t
T-const
\n\t
Current #3
\t
1
\t
1.000E-10 A
\t
7.000E-12 m
\t
3.500E-9 m/s
\t
2.000E-3 s
\n
:COMMENT:
\n\n
:NanonisMain>Session Path:
\n
C:
\\
STM data
\\
2014-11
\\
2014-11-21
\n
:NanonisMain>SW Version:
\n
Generic 4
\n
:NanonisMain>UI Release:
\n
3180
\n
:NanonisMain>RT Release:
\n
3130
\n
:NanonisMain>RT Frequency (Hz):
\n
5E+3
\n
:NanonisMain>Signals Oversampling:
\n
10
\n
:NanonisMain>Animations Period (s):
\n
20E-3
\n
:NanonisMain>Indicators Period (s):
\n
300E-3
\n
:NanonisMain>Measurements Period (s):
\n
500E-3
\n
:DATA_INFO:
\n\t
Channel
\t
Name
\t
Unit
\t
Direction
\t
Calibration
\t
Offset
\n\t
14
\t
Z
\t
m
\t
both
\t
-3.480E-9
\t
0.000E+0
\n\t
2
\t
Input_3
\t
A
\t
both
\t
1.000E-9
\t
0.000E+0
\n\t
20
\t
LIX_1_omega
\t
A
\t
both
\t
1.000E+0
\t
0.000E+0
\n\t
21
\t
LIY_1_omega
\t
A
\t
both
\t
1.000E+0
\t
0.000E+0
\n\n
:SCANIT_END:
\n
'
)
a
=
np
.
linspace
(
0
,
100.0
,
1
+
4
*
2
*
64
*
64
)
b
=
np
.
asarray
(
a
,
dtype
=
'>f4'
)
b
.
tofile
(
f
)
f
.
close
()
return
f
def
test_header_entries
(
self
):
f
=
self
.
create_dummy_scan_data
()
SF
=
nap
.
read
.
Scan
(
f
.
name
)
test_dict
=
{
'acq_time'
:
'470.3'
,
'bias'
:
'-0.05'
,
'comment'
:
''
,
'data_info'
:
"{'Channel': ('14', '2', '20', '21'), 'Unit': ('m', 'A', 'A', 'A'), 'Direction': ('both', 'both', 'both', 'both'), 'Offset': ('0.000E+0', '0.000E+0', '0.000E+0', '0.000E+0'), 'Name': ('Z', 'Input_3', 'LIX_1_omega', 'LIY_1_omega'), 'Calibration': ('-3.480E-9', '1.000E-9', '1.000E+0', '1.000E+0')}"
,
'nanonis_version'
:
'2'
,
'nanonismain>animations period (s)'
:
'20E-3'
,
'nanonismain>indicators period (s)'
:
'300E-3'
,
'nanonismain>measurements period (s)'
:
'500E-3'
,
'nanonismain>rt frequency (hz)'
:
'5E+3'
,
'nanonismain>rt release'
:
'3130'
,
'nanonismain>session path'
:
'C:
\\
STM data
\\
2014-11
\\
2014-11-21'
,
'nanonismain>signals oversampling'
:
'10'
,
'nanonismain>sw version'
:
'Generic 4'
,
'nanonismain>ui release'
:
'3180'
,
'rec_date'
:
'21.11.2014'
,
'rec_temp'
:
'290.0000000000'
,
'rec_time'
:
'17:19:32'
,
'scan_angle'
:
'0.000E+0'
,
'scan_dir'
:
'up'
,
'scan_file'
:
'C:
\\
STM data
\\
2014-11
\\
2014-11-21
\\
ScanAg111_November2014_001.sxm'
,
'scan_offset'
:
'[ 7.21767000e-08 2.41417500e-07]'
,
'scan_pixels'
:
'[64 64]'
,
'scan_range'
:
'[ 1.50000000e-07 1.50000000e-07]'
,
'scan_time'
:
'[ 3.533 3.533]'
,
'scanit_type'
:
'FLOAT MSBFIRST'
,
'z-controller'
:
"{'P-gain': ('7.000E-12 m',), 'Setpoint': ('1.000E-10 A',), 'on': ('1',), 'T-const': ('2.000E-3 s',), 'Name': ('Current #3',), 'I-gain': ('3.500E-9 m/s',)}"
}
for
key
in
SF
.
header
:
a
=
''
.
join
(
sorted
(
str
(
SF
.
header
[
key
])))
b
=
''
.
join
(
sorted
(
test_dict
[
key
]))
self
.
assertEqual
(
a
,
b
)
def
test_raises_correct_instance_error
(
self
):
with
self
.
assertRaises
(
nap
.
read
.
UnhandledFileError
):
f
=
self
.
create_dummy_scan_data
(
suffix
=
'.3ds'
)
SF
=
nap
.
read
.
Scan
(
f
.
name
)
class
TestSpecFile
(
unittest
.
TestCase
):
def
setUp
(
self
):
self
.
temp_dir
=
tempfile
.
TemporaryDirectory
()
def
tearDown
(
self
):
self
.
temp_dir
.
cleanup
()
def
create_dummy_spec_data
(
self
,
suffix
=
'dat'
):
base
=
os
.
path
.
dirname
(
__file__
)
f
=
open
(
base
+
'/Bias-Spectroscopy002.dat'
,
'rb'
)
f
.
close
()
return
f
def
test_header_entries
(
self
):
f
=
self
.
create_dummy_spec_data
()
SP
=
nap
.
read
.
Spec
(
f
.
name
)
test_dict
=
{
'Cutoff frq'
:
''
,
'Date'
:
'04.08.2015 08:49:41'
,
'Experiment'
:
'bias spectroscopy'
,
'Filter type'
:
'Gaussian'
,
'Final Z (m)'
:
'N/A'
,
'Integration time (s)'
:
'200E-6'
,
'Order'
:
'6'
,
'Settling time (s)'
:
'200E-6'
,
'User'
:
''
,
'X (m)'
:
'-19.4904E-9'
,
'Y (m)'
:
'-73.1801E-9'
,
'Z (m)'
:
'-13.4867E-9'
,
'Z offset (m)'
:
'-250E-12'
,
'Z-Ctrl hold'
:
'TRUE'
}
for
key
in
SP
.
header
:
a
=
''
.
join
(
sorted
(
str
(
SP
.
header
[
key
])))
b
=
''
.
join
(
sorted
(
test_dict
[
key
]))
self
.
assertEqual
(
a
,
b
)
class
TestUtilFunctions
(
unittest
.
TestCase
):
def
setUp
(
self
):
self
.
temp_dir
=
tempfile
.
TemporaryDirectory
()
def
tearDown
(
self
):
self
.
temp_dir
.
cleanup
()
def
test_arr_roundtrip
(
self
):
fname
=
self
.
temp_dir
.
name
+
'/test_roundtrip.npy'
a
=
np
.
linspace
(
0
,
1.00
,
dtype
=
'>f4'
)
nap
.
read
.
save_array
(
fname
,
a
)
b
=
nap
.
read
.
load_array
(
fname
)
np
.
testing
.
assert_array_equal
(
a
,
b
)
if
__name__
==
'__main__'
:
unittest
.
main
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment