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
On Thursday, 7th July from 1 to 3 pm there will be a maintenance with a short downtime of GitLab.
Open sidebar
Holger Niemann
IR_data_access
Commits
08098036
Commit
08098036
authored
Jul 03, 2018
by
Peter Drewelow
Browse files
clarified error message of program trigger were not found in get_calib_data
parent
782d0a01
Changes
2
Hide whitespace changes
Inline
Side-by-side
IR_image_tools.py
View file @
08098036
...
...
@@ -217,11 +217,11 @@ def correct_images(images,badpixels):
if
type
(
badpixels
)
!=
int
:
if
type
(
images
)
==
list
:
# return corrected images also as list of 2D arrays
images
=
restore_bad_pixels
(
images
,
np
.
invert
(
badpixels
==
1
))
.
astype
(
np
.
float32
)
images
=
restore_bad_pixels
(
images
,
np
.
invert
(
badpixels
==
1
))
images
=
list
(
images
)
else
:
# keep shape
images
=
restore_bad_pixels
(
images
,
np
.
invert
(
badpixels
==
1
))
.
astype
(
np
.
float32
)
images
=
restore_bad_pixels
(
images
,
np
.
invert
(
badpixels
==
1
))
# for i in range(len(images)):
# images[i]=(restore_pixels(images[i],np.invert(badpixels==1))).astype(np.float32)
...
...
downloadversionIRdata.py
View file @
08098036
...
...
@@ -1340,137 +1340,140 @@ def get_calib_data(port,program,emissivity=0.8,Temp_V=2,version=0,back_emissivit
t0
=
prog
[
0
][
'trigger'
][
'0'
][
0
]
t1
=
prog
[
0
][
'trigger'
][
'1'
][
0
]
t6
=
prog
[
0
][
'trigger'
][
'6'
][
0
]
OP
=
get_OP_by_program
(
program
)
Camera
=
portcamdict
[
OP
][
'AEF'
+
str
(
port
)]
if
Camera
.
split
(
"_"
)[
0
]
==
"Infratec"
:
cf
=
get_INFRATEC_filter_by_program
(
program
,
version
)
if
cf
[
0
]:
cfilter
=
cf
[
2
]
else
:
cfilter
=-
1
raise
Exception
(
"Filter not found for INFRATEC Camera"
)
except
Exception
as
E
:
print
(
"Warning: Program trigger were not found"
)
print
(
E
)
return
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
OP
=
get_OP_by_program
(
program
)
Camera
=
portcamdict
[
OP
][
'AEF'
+
str
(
port
)]
if
Camera
.
split
(
"_"
)[
0
]
==
"Infratec"
:
cf
=
get_INFRATEC_filter_by_program
(
program
,
version
)
if
cf
[
0
]:
cfilter
=
cf
[
2
]
else
:
cfilter
=
0
expo_DL
=
get_exposure_by_times
(
port
,
t1
,
t6
,
version
)
if
expo_DL
[
0
]:
t_exp
=
int
(
expo_DL
[
2
][
0
])
del
expo_DL
time
=
int
(
TimeToNs
([
2017
,
9
,
26
],[
8
,
0
,
0
,
0
]))
LUT_DL
=
download_LUT
(
port
,
time
,
t_exp
,
emissivity
,
cfilter
,
version
,
verbose
=
verbose
-
1
)
if
LUT_DL
[
0
]:
LUT
=
LUT_DL
[
1
]
del
LUT_DL
back_DL
=
download_background_by_times
(
port
,
t0
,
t1
,
t_exp
,
cfilter
,
version
)
if
back_DL
[
0
]:
background
=
back_DL
[
2
]
if
Temp_V
==
1
:
if
verbose
>
0
:
print
(
'use temperature calibration version 1'
)
backtime
=
back_DL
[
1
]
backtime
=
backtime
.
tolist
()
divertorpart
=
"all"
TCT_dl
=
get_average_divertor_TC_for_camtemp
(
port
,
int
(
backtime
-
2e9
),
int
(
backtime
+
2e9
),
divertorpart
)
cfilter
=-
1
raise
Exception
(
"Filter not found for INFRATEC Camera"
)
else
:
cfilter
=
0
expo_DL
=
get_exposure_by_times
(
port
,
t1
,
t6
,
version
)
if
expo_DL
[
0
]:
t_exp
=
int
(
expo_DL
[
2
][
0
])
del
expo_DL
time
=
int
(
TimeToNs
([
2017
,
9
,
26
],[
8
,
0
,
0
,
0
]))
LUT_DL
=
download_LUT
(
port
,
time
,
t_exp
,
emissivity
,
cfilter
,
version
,
verbose
=
verbose
-
1
)
if
LUT_DL
[
0
]:
LUT
=
LUT_DL
[
1
]
del
LUT_DL
back_DL
=
download_background_by_times
(
port
,
t0
,
t1
,
t_exp
,
cfilter
,
version
)
if
back_DL
[
0
]:
background
=
back_DL
[
2
]
if
Temp_V
==
1
:
if
verbose
>
0
:
print
(
'use temperature calibration version 1'
)
backtime
=
back_DL
[
1
]
backtime
=
backtime
.
tolist
()
divertorpart
=
"all"
TCT_dl
=
get_average_divertor_TC_for_camtemp
(
port
,
int
(
backtime
-
2e9
),
int
(
backtime
+
2e9
),
divertorpart
)
if
TCT_dl
[
0
]:
refT
=
np
.
average
(
TCT_dl
[
2
])
else
:
TCT_dl
=
get_average_divertor_TC_for_camtemp
(
port
,
int
(
backtime
-
6e9
),
int
(
backtime
+
6e9
),
divertorpart
)
if
TCT_dl
[
0
]:
refT
=
np
.
average
(
TCT_dl
[
2
])
else
:
TCT_dl
=
get_average_divertor_TC_for_camtemp
(
port
,
int
(
backtime
-
6e9
),
int
(
backtime
+
6e9
),
divertorpart
)
if
TCT_dl
[
0
]:
refT
=
np
.
average
(
TCT_dl
[
2
])
else
:
raise
Exception
(
"Unable to find thermocouple data"
)
elif
Temp_V
==
2
:
if
verbose
>
0
:
print
(
'use temperature calibration version 2'
)
frame
=
background
.
copy
()
background
=
get_average_background_recangle
(
port
,
background
)
refT
=
28.5
elif
Temp_V
==
3
:
if
verbose
>
0
:
print
(
'use temperature calibration version 3'
)
frame
=
background
.
copy
()
background
=
get_average_background_recangle
(
port
,
background
)
refT
=
28.5
raise
Exception
(
"Unable to find thermocouple data"
)
elif
Temp_V
==
2
:
if
verbose
>
0
:
print
(
'use temperature calibration version 2'
)
frame
=
background
.
copy
()
background
=
get_average_background_recangle
(
port
,
background
)
refT
=
28.5
elif
Temp_V
==
3
:
if
verbose
>
0
:
print
(
'use temperature calibration version 3'
)
frame
=
background
.
copy
()
background
=
get_average_background_recangle
(
port
,
background
)
refT
=
28.5
# back_off=estimate_offset(port,program)
# background=(background-back_off)/(back_emissivity)+back_off
else
:
raise
Exception
(
"Unknown temperature calibration method"
)
if
cfilter
==
0
and
not
Camera
.
split
(
"_"
)[
0
]
==
"Infratec"
:
if
(
port
==
31
)
or
(
port
==
21
and
float
(
program
[
4
:])
>
1110
):
print
(
"rebuilding coldframe"
)
#use any way the rebuilt coldframe.
sT
=
get_sensor_temp_by_program
(
port
,
program
)[
2
][
0
]
coldref
,
hotref
=
IR_tools
.
load_ref_images
(
'AEF'
+
str
(
port
),
t_exp
)
filestring
=
'AEF'
+
str
(
port
)
+
'_et'
+
str
(
t_exp
)
amap
=
np
.
load
(
join
(
IRCamColdframes_fittingpath
,
filestring
+
'_a.npy'
))
bmap
=
np
.
load
(
join
(
IRCamColdframes_fittingpath
,
filestring
+
'_b.npy'
))
cirebuild
=
IR_tools
.
reconstruct_coldframe
(
t_exp
,
sT
,
amap
,
bmap
,
coldref
)
gain
,
offset
=
IR_tools
.
calculate_gain_offset_image
(
cirebuild
,
None
,
coldref
,
hotref
)
gain
[
gain
==
np
.
inf
]
=
0
offset
[
offset
==
np
.
inf
]
=
0
badpixels
=
find_badpixels
(
port
,
gain
,
offset
,
niterations
=
10
,
tolerance
=
10
)
gain_error
=
0
offset_error
=
0
exist
,
time
,
frames
=
download_raw_images_by_times
(
port
,
t1
,
int
(
t1
+
0.02
*
1e9
),
version
)
if
exist
:
frames
=
[
im
.
swapaxes
(
0
,
1
)
for
im
in
frames
]
bim
=
apply_NUC
([
frames
[
0
]],
gain
,
offset
)
background
=
get_average_background_recangle
(
port
,
bim
[
0
])
else
:
raise
Exception
(
"cannot find the first frame of the discharge, reconstruction failed"
)
elif
(
port
==
11
)
or
(
port
==
21
):
coldref
,
hotref
=
IR_tools
.
load_ref_images
(
'AEF'
+
str
(
port
),
t_exp
)
NUC_DL
=
download_NUC_by_times
(
port
,
t0
,
t1
,
t_exp
,
version
)
if
NUC_DL
[
0
]
==
False
:
raise
Exception
(
"NUC was not found"
)
else
:
ci
=
NUC_DL
[
1
][
2
]
gain
,
offset
=
IR_tools
.
calculate_gain_offset_image
(
ci
,
None
,
coldref
,
hotref
)
gain
[
gain
==
np
.
inf
]
=
0
offset
[
offset
==
np
.
inf
]
=
0
badpixels
=
find_badpixels
(
port
,
gain
,
offset
,
niterations
=
10
,
tolerance
=
10
)
gain_error
=
0
offset_error
=
0
exist
,
time
,
frames
=
download_raw_images_by_times
(
port
,
t1
,
int
(
t1
+
0.02
*
1e9
),
version
)
if
exist
:
frames
=
[
im
.
swapaxes
(
0
,
1
)
for
im
in
frames
]
bim
=
apply_NUC
([
frames
[
0
]],
gain
,
offset
)
background
=
get_average_background_recangle
(
port
,
bim
[
0
])
else
:
raise
Exception
(
"background wrong due to wrong NUC, firstframe not found, reconstruction failed"
)
else
:
raise
Exception
(
"Unknown temperature calibration method"
)
if
cfilter
==
0
and
not
Camera
.
split
(
"_"
)[
0
]
==
"Infratec"
:
if
(
port
==
31
)
or
(
port
==
21
and
float
(
program
[
4
:])
>
1110
):
print
(
"rebuilding coldframe"
)
#use any way the rebuilt coldframe.
sT
=
get_sensor_temp_by_program
(
port
,
program
)[
2
][
0
]
coldref
,
hotref
=
IR_tools
.
load_ref_images
(
'AEF'
+
str
(
port
),
t_exp
)
filestring
=
'AEF'
+
str
(
port
)
+
'_et'
+
str
(
t_exp
)
amap
=
np
.
load
(
join
(
IRCamColdframes_fittingpath
,
filestring
+
'_a.npy'
))
bmap
=
np
.
load
(
join
(
IRCamColdframes_fittingpath
,
filestring
+
'_b.npy'
))
cirebuild
=
IR_tools
.
reconstruct_coldframe
(
t_exp
,
sT
,
amap
,
bmap
,
coldref
)
gain
,
offset
=
IR_tools
.
calculate_gain_offset_image
(
cirebuild
,
None
,
coldref
,
hotref
)
gain
[
gain
==
np
.
inf
]
=
1
offset
[
offset
==
np
.
inf
]
=
0
badpixels
=
find_badpixels
(
port
,
gain
,
offset
,
niterations
=
10
,
tolerance
=
10
)
gain_error
=
0
offset_error
=
0
exist
,
time
,
frames
=
download_raw_images_by_times
(
port
,
t1
,
int
(
t1
+
0.02
*
1e9
),
version
)
if
exist
:
frames
=
[
im
.
swapaxes
(
0
,
1
)
for
im
in
frames
]
bim
=
apply_NUC
([
frames
[
0
]],
gain
,
offset
)
background
=
get_average_background_recangle
(
port
,
bim
[
0
])
else
:
NUC_DL
=
download_NUC_by_times
(
port
,
t0
,
t1
,
t_exp
,
version
)
if
NUC_DL
[
0
]
==
False
:
raise
Exception
(
"NUC was not found"
)
else
:
gain
=
np
.
array
(
NUC_DL
[
1
][
0
])
offset
=
np
.
array
(
NUC_DL
[
1
][
1
])
offset
[
offset
<-
1e300
]
=
0
gain_error
=
np
.
array
(
NUC_DL
[
1
][
4
])
offset_error
=
np
.
array
(
NUC_DL
[
1
][
5
])
badpixels
=
np
.
array
(
NUC_DL
[
1
][
3
],
dtype
=
np
.
ubyte
)
if
np
.
max
(
badpixels
)
==
0
:
if
verbose
>
0
:
print
(
datetime
.
datetime
.
now
(),
"Scanning for bad pixel"
)
# initial list from config files
init_bp_list
=
IR_tools
.
read_bad_pixels_from_file
(
port
,
program
=
program
)
# find more bad pixel
badpixels
=
find_badpixels
(
port
,
gain
,
offset
,
init_bp_list
=
init_bp_list
,
niterations
=
10
,
tolerance
=
10
,
verbose
=
verbose
-
1
)
else
:
gain
=
0
offset
=
0
badpixels
=
find_badpixels
(
port
,
frame
-
background
,
offset
,
niterations
=
10
,
tolerance
=
10
,
plot_it
=
False
)
#find_badpixels(port,gain,offset)
raise
Exception
(
"cannot find the first frame of the discharge, reconstruction failed"
)
elif
(
port
==
11
)
or
(
port
==
21
):
coldref
,
hotref
=
IR_tools
.
load_ref_images
(
'AEF'
+
str
(
port
),
t_exp
)
NUC_DL
=
download_NUC_by_times
(
port
,
t0
,
t1
,
t_exp
,
version
)
if
NUC_DL
[
0
]
==
False
:
raise
Exception
(
"NUC was not found"
)
else
:
ci
=
NUC_DL
[
1
][
2
]
gain
,
offset
=
IR_tools
.
calculate_gain_offset_image
(
ci
,
None
,
coldref
,
hotref
)
gain
[
gain
==
np
.
inf
]
=
1
offset
[
offset
==
np
.
inf
]
=
0
badpixels
=
find_badpixels
(
port
,
gain
,
offset
,
niterations
=
10
,
tolerance
=
10
)
gain_error
=
0
offset_error
=
0
exist
,
time
,
frames
=
download_raw_images_by_times
(
port
,
t1
,
int
(
t1
+
0.02
*
1e9
),
version
)
if
exist
:
frames
=
[
im
.
swapaxes
(
0
,
1
)
for
im
in
frames
]
bim
=
apply_NUC
([
frames
[
0
]],
gain
,
offset
)
background
=
get_average_background_recangle
(
port
,
bim
[
0
])
else
:
raise
Exception
(
"background wrong due to wrong NUC, firstframe not found, reconstruction failed"
)
else
:
NUC_DL
=
download_NUC_by_times
(
port
,
t0
,
t1
,
t_exp
,
version
)
if
NUC_DL
[
0
]
==
False
:
raise
Exception
(
"NUC was not found"
)
else
:
gain
=
np
.
array
(
NUC_DL
[
1
][
0
])
offset
=
np
.
array
(
NUC_DL
[
1
][
1
])
offset
[
offset
<-
1e300
]
=
0
gain_error
=
np
.
array
(
NUC_DL
[
1
][
4
])
offset_error
=
np
.
array
(
NUC_DL
[
1
][
5
])
badpixels
=
np
.
array
(
NUC_DL
[
1
][
3
],
dtype
=
np
.
ubyte
)
if
np
.
max
(
badpixels
)
==
0
:
if
verbose
>
0
:
print
(
datetime
.
datetime
.
now
(),
"Scanning for bad pixel"
)
# initial list from config files
init_bp_list
=
IR_tools
.
read_bad_pixels_from_file
(
port
,
program
=
program
)
# find more bad pixel
badpixels
=
find_badpixels
(
port
,
gain
,
offset
,
init_bp_list
=
init_bp_list
,
niterations
=
10
,
tolerance
=
10
,
verbose
=
verbose
-
1
)
else
:
raise
Exception
(
"no background image found"
)
gain
=
0
offset
=
0
badpixels
=
find_badpixels
(
port
,
frame
-
background
,
offset
,
niterations
=
10
,
tolerance
=
10
,
plot_it
=
False
)
#find_badpixels(port,gain,offset)
gain_error
=
0
offset_error
=
0
else
:
raise
Exception
(
"no
LUT
found"
)
raise
Exception
(
"no
background image
found"
)
else
:
raise
Exception
(
"no
exposure time
found"
)
return
background
,
LUT
,
refT
,
gain
,
offset
,
badpixels
,
t_exp
,
cfilter
,
gain_error
,
offset_error
except
:
print
(
"Warning: Program was not found"
)
return
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
raise
Exception
(
"no
LUT
found"
)
else
:
raise
Exception
(
"no exposure time found"
)
return
background
,
LUT
,
refT
,
gain
,
offset
,
badpixels
,
t_exp
,
cfilter
,
gain_error
,
offset_error
def
find_badpixels
(
port
,
gain
,
offset
,
init_bp_list
=
None
,
niterations
=
3
,
tolerance
=
10
,
plot_it
=
False
,
verbose
=
0
):
...
...
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