Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
tomotools
tomoscan
Commits
fd9acd3d
Commit
fd9acd3d
authored
May 19, 2020
by
Tomas Farago
Browse files
Merge branch 'master' of gitlab.esrf.fr:tomotools/tomoscan
parents
0b5f22f7
cb256fbc
Pipeline
#26039
passed with stages
in 3 minutes and 16 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
tomoscan/esrf/hdf5scan.py
View file @
fd9acd3d
...
...
@@ -161,6 +161,8 @@ class HDF5TomoScan(TomoScanBase):
# image dimensions
self
.
_x_pixel_size
=
None
self
.
_y_pixel_size
=
None
self
.
_x_magnified_pixel_size
=
None
self
.
_y_magnified_pixel_size
=
None
# pixel dimensions (tuple)
self
.
_frames
=
None
self
.
_image_keys
=
None
...
...
@@ -235,7 +237,7 @@ class HDF5TomoScan(TomoScanBase):
if
not
os
.
path
.
isfile
(
file_path
):
raise
ValueError
(
'given file path should be a file'
)
with
h5py
.
File
(
file_path
,
'r'
)
as
h5f
:
with
h5py
.
File
(
file_path
,
'r'
,
swmr
=
True
)
as
h5f
:
for
root_node
in
h5f
.
keys
():
node
=
h5f
[
root_node
]
if
HDF5TomoScan
.
node_is_nxtomo
(
node
)
is
True
:
...
...
@@ -403,7 +405,7 @@ class HDF5TomoScan(TomoScanBase):
def
rotation_angle
(
self
)
->
typing
.
Union
[
None
,
list
]:
if
self
.
_rotation_angles
is
None
:
self
.
_check_hdf5scan_validity
()
with
h5py
.
File
(
self
.
master_file
,
'r'
)
as
h5_file
:
with
h5py
.
File
(
self
.
master_file
,
'r'
,
swmr
=
True
)
as
h5_file
:
_rotation_angles
=
h5_file
[
self
.
_entry
][
self
.
_ROTATION_ANGLE_PATH
][()]
# cast in float
self
.
_rotation_angles
=
tuple
([
float
(
angle
)
for
angle
in
_rotation_angles
])
...
...
@@ -413,7 +415,7 @@ class HDF5TomoScan(TomoScanBase):
def
image_key
(
self
)
->
typing
.
Union
[
list
,
None
]:
if
self
.
_entry
and
self
.
_image_keys
is
None
:
self
.
_check_hdf5scan_validity
()
with
h5py
.
File
(
self
.
master_file
,
'r'
)
as
h5_file
:
with
h5py
.
File
(
self
.
master_file
,
'r'
,
swmr
=
True
)
as
h5_file
:
self
.
_image_keys
=
h5_file
[
self
.
_entry
][
self
.
_IMG_KEY_PATH
][()]
return
self
.
_image_keys
...
...
@@ -421,7 +423,7 @@ class HDF5TomoScan(TomoScanBase):
def
image_key_control
(
self
)
->
typing
.
Union
[
list
,
None
]:
if
self
.
_entry
and
self
.
_image_keys_control
is
None
:
self
.
_check_hdf5scan_validity
()
with
h5py
.
File
(
self
.
master_file
,
'r'
)
as
h5_file
:
with
h5py
.
File
(
self
.
master_file
,
'r'
,
swmr
=
True
)
as
h5_file
:
if
self
.
_IMG_KEY_CONTROL_PATH
in
h5_file
[
self
.
_entry
]:
self
.
_image_keys_control
=
h5_file
[
self
.
_entry
][
self
.
_IMG_KEY_CONTROL_PATH
][()]
else
:
...
...
@@ -492,7 +494,7 @@ class HDF5TomoScan(TomoScanBase):
def
_get_x_y_pixel_values
(
self
):
"""read x and y pixel values"""
with
h5py
.
File
(
self
.
master_file
,
'r'
)
as
h5_file
:
with
h5py
.
File
(
self
.
master_file
,
'r'
,
swmr
=
True
)
as
h5_file
:
x_pixel_dataset
=
h5_file
[
self
.
_entry
][
self
.
_X_PIXEL_SIZE_PATH
]
_x_pixel_size
=
self
.
_get_value
(
x_pixel_dataset
,
default_unit
=
'micrometer'
)
y_pixel_dataset
=
h5_file
[
self
.
_entry
][
self
.
_Y_PIXEL_SIZE_PATH
]
...
...
@@ -500,7 +502,7 @@ class HDF5TomoScan(TomoScanBase):
return
_x_pixel_size
,
_y_pixel_size
def
_get_x_y_magnified_pixel_values
(
self
):
with
h5py
.
File
(
self
.
master_file
,
'r'
)
as
h5_file
:
with
h5py
.
File
(
self
.
master_file
,
'r'
,
swmr
=
True
)
as
h5_file
:
x_m_pixel_dataset
=
h5_file
[
self
.
_entry
][
self
.
_X_PIXEL_MAG_SIZE_PATH
]
_x_m_pixel_size
=
self
.
_get_value
(
x_m_pixel_dataset
,
default_unit
=
'micrometer'
)
y_m_pixel_dataset
=
h5_file
[
self
.
_entry
][
self
.
_Y_PIXEL_MAG_SIZE_PATH
]
...
...
@@ -539,7 +541,7 @@ class HDF5TomoScan(TomoScanBase):
if
(
self
.
_distance
is
None
and
self
.
master_file
and
os
.
path
.
exists
(
self
.
master_file
)):
self
.
_check_hdf5scan_validity
()
with
h5py
.
File
(
self
.
master_file
,
'r'
)
as
h5_file
:
with
h5py
.
File
(
self
.
master_file
,
'r'
,
swmr
=
True
)
as
h5_file
:
distance_dataset
=
h5_file
[
self
.
_entry
][
self
.
_DISTANCE_PATH
]
self
.
_distance
=
self
.
_get_value
(
distance_dataset
,
default_unit
=
'm'
)
return
self
.
_distance
...
...
@@ -549,7 +551,7 @@ class HDF5TomoScan(TomoScanBase):
if
(
self
.
_energy
is
None
and
self
.
master_file
and
os
.
path
.
exists
(
self
.
master_file
)):
self
.
_check_hdf5scan_validity
()
with
h5py
.
File
(
self
.
master_file
,
'r'
)
as
h5_file
:
with
h5py
.
File
(
self
.
master_file
,
'r'
,
swmr
=
True
)
as
h5_file
:
energy_dataset
=
h5_file
[
self
.
_entry
][
self
.
_ENERGY_PATH
]
self
.
_energy
=
self
.
_get_value
(
energy_dataset
,
default_unit
=
'keV'
)
return
self
.
_energy
...
...
@@ -659,7 +661,7 @@ class HDF5TomoScan(TomoScanBase):
raise
ValueError
(
'No master file provided'
)
if
self
.
entry
is
None
:
raise
ValueError
(
'No entry provided'
)
with
h5py
.
File
(
self
.
master_file
,
'r'
)
as
h5_file
:
with
h5py
.
File
(
self
.
master_file
,
'r'
,
swmr
=
True
)
as
h5_file
:
if
self
.
_entry
not
in
h5_file
:
raise
ValueError
(
'Given entry %s is not in the master '
'file %s'
%
(
self
.
_entry
,
self
.
master_file
))
...
...
tomoscan/esrf/mock.py
View file @
fd9acd3d
...
...
@@ -246,7 +246,7 @@ class MockHDF5(_ScanMock):
def
_append_frame
(
self
,
data_
,
rotation_angle
,
image_key
,
image_key_control
):
with
h5py
.
File
(
self
.
scan_master_file
,
'r+'
)
as
h5_file
:
with
h5py
.
File
(
self
.
scan_master_file
,
'r+'
,
swmr
=
True
)
as
h5_file
:
entry_one
=
h5_file
.
require_group
(
self
.
scan_entry
)
instrument_grp
=
entry_one
.
require_group
(
'instrument'
)
detector_grp
=
instrument_grp
.
require_group
(
'detector'
)
...
...
@@ -297,7 +297,7 @@ class MockHDF5(_ScanMock):
else
:
new_count_time
=
[
self
.
_PROJ_COUNT
,
]
with
h5py
.
File
(
self
.
scan_master_file
,
'a'
)
as
h5_file
:
with
h5py
.
File
(
self
.
scan_master_file
,
'a'
,
swmr
=
True
)
as
h5_file
:
entry_one
=
h5_file
.
require_group
(
self
.
scan_entry
)
instrument_grp
=
entry_one
.
require_group
(
'instrument'
)
if
'NX_class'
not
in
instrument_grp
.
attrs
:
...
...
@@ -317,7 +317,7 @@ class MockHDF5(_ScanMock):
sample_grp
[
'rotation_angle'
]
=
new_rot_angle
def
write_metadata
(
self
,
n_radio
,
scan_range
,
ref_n
,
dark_n
):
with
h5py
.
File
(
self
.
scan_master_file
,
'a'
)
as
h5_file
:
with
h5py
.
File
(
self
.
scan_master_file
,
'a'
,
swmr
=
True
)
as
h5_file
:
entry_one
=
h5_file
.
require_group
(
self
.
scan_entry
)
instrument_grp
=
entry_one
.
require_group
(
'instrument'
)
detector_grp
=
instrument_grp
.
require_group
(
'detector'
)
...
...
tomoscan/version.py
View file @
fd9acd3d
...
...
@@ -68,7 +68,7 @@ RELEASE_LEVEL_VALUE = {"dev": 0,
MAJOR
=
0
MINOR
=
2
MICRO
=
2
MICRO
=
3
RELEV
=
"dev"
# <16
SERIAL
=
0
# <16
...
...
Write
Preview
Supports
Markdown
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