Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Holger Niemann
IR_data_access
Commits
261b46fa
Commit
261b46fa
authored
May 03, 2019
by
Holger Niemann
Browse files
Merge branch 'master' into 'Holgers'
Master See merge request
holn/IR_data_access!33
parents
9282d458
1c3d364c
Changes
2
Hide whitespace changes
Inline
Side-by-side
downloadversionIRdata.py
View file @
261b46fa
...
...
@@ -257,7 +257,7 @@ def get_NUC_by_program(port,program,exposure,version=0,verbose=0):
if
prog
[
0
]:
starttime
=
prog
[
1
][
'trigger'
][
'0'
][
0
]
stoptime
=
prog
[
1
][
'trigger'
][
'1'
][
0
]
return
get_NUC_by_times
(
port
,
starttime
,
stoptime
,
exposure
,
version
=
0
,
verbose
=
verbose
-
1
)
return
get_NUC_by_times
(
port
,
starttime
,
stoptime
,
exposure
,
version
=
0
,
verbose
=
verbose
)
else
:
# except:
print
(
"get_NUC_by_program: Error! cannot find the program"
)
...
...
@@ -567,12 +567,12 @@ def download_raw_images_by_program(port,program,time_window=0,version=0,verbose=
tstop
=
time_window
[
1
]
if
tstop
<
tstart
:
raise
Exception
(
"download_raw_images_by_program: endtime before starttime"
)
return
download_raw_images_by_times
(
port
,
int
(
starttime
+
tstart
*
1e9
),
int
(
starttime
+
tstop
*
1e9
),
version
,
verbose
=
verbose
-
1
)
return
download_raw_images_by_times
(
port
,
int
(
starttime
+
tstart
*
1e9
),
int
(
starttime
+
tstop
*
1e9
),
version
,
verbose
=
verbose
)
else
:
if
time_window
==
0
:
return
download_raw_images_by_times
(
port
,
starttime
,
stoptime
,
version
,
verbose
=
verbose
-
1
)
return
download_raw_images_by_times
(
port
,
starttime
,
stoptime
,
version
,
verbose
=
verbose
)
else
:
return
download_raw_images_by_times
(
port
,
starttime
,
int
(
starttime
+
time_window
*
1e9
),
version
,
verbose
=
verbose
-
1
)
return
download_raw_images_by_times
(
port
,
starttime
,
int
(
starttime
+
time_window
*
1e9
),
version
,
verbose
=
verbose
)
except
:
print
(
"download_raw_images_by_program: Error! cannot find the program"
)
return
False
,
0
,
0
...
...
@@ -584,7 +584,7 @@ def download_raw_images_by_times(port,starttime,stoptime,version=0,intervalSize=
if
version
==
0
:
version
=
get_latest_version
(
portpathdict
[
OP
][
"AEF"
+
str
(
port
)]
+
"raw_DATASTREAM"
,
t_from
=
starttime
,
t_to
=
stoptime
)
larchivepath
=
archivepath
+
"W7X/"
+
portpathdict
[
OP
][
"AEF"
+
str
(
port
)]
+
"raw_DATASTREAM/V"
+
str
(
version
)
+
"/0/raw"
return
download_images_by_times
(
larchivepath
,
starttime
=
starttime
,
stoptime
=
stoptime
,
version
=
version
,
intervalSize
=
intervalSize
,
verbose
=
verbose
-
1
)
return
download_images_by_times
(
larchivepath
,
starttime
=
starttime
,
stoptime
=
stoptime
,
version
=
version
,
intervalSize
=
intervalSize
,
verbose
=
verbose
)
def
download_images_by_times
(
larchivepath
,
starttime
,
stoptime
,
version
=
0
,
intervalSize
=
1E9
,
verbose
=
0
):
"""
...
...
@@ -606,7 +606,10 @@ def download_images_by_times(larchivepath,starttime,stoptime,version=0,intervalS
success
=
False
for
i
in
range
(
nrinterv
):
try
:
res
=
urllib
.
request
.
urlopen
(
larchivepath
+
"/_signal.json?from="
+
str
(
intervalls
[
i
])
+
"&upto="
+
str
(
intervalls
[
i
+
1
]))
url
=
larchivepath
+
"/_signal.json?from="
+
str
(
intervalls
[
i
])
+
"&upto="
+
str
(
intervalls
[
i
+
1
])
if
verbose
>
2
:
print
(
"download_images_by_times: reading from
\n
{0}"
.
format
(
url
))
res
=
urllib
.
request
.
urlopen
(
url
)
signal_list
=
json
.
loads
(
res
.
read
().
decode
(
'utf-8'
))
res
.
close
()
images
=
[
np
.
array
(
ele
,
dtype
=
typo
)
for
ele
in
signal_list
[
'values'
]]
...
...
@@ -2573,7 +2576,7 @@ def download_heatflux_by_program(port,program,time_window=0,threads=1,testmode=F
if
givealpha
:
tstart
=
tstart
-
1.1e9
return
download_heatflux_by_times
(
port
=
port
,
tstart
=
tstart
,
tend
=
tend
,
time_window
=
0
,
testmode
=
testmode
,
version
=
version
,
verbose
=
verbose
-
1
,
testmode
=
testmode
,
version
=
version
,
verbose
=
verbose
,
request
=
request
)
else
:
print
(
"download_heatflux_by_program: Error! program not found"
)
...
...
@@ -2638,7 +2641,7 @@ def download_heatflux_by_times(port,tstart,tend,time_window=0,threads=1,testmode
if
exist
==
False
:
now
=
datetime
.
datetime
.
now
()
if
verbose
>
0
:
print
(
now
,
"download_heatflux_by_times: heat flux data is not available
, creating request
"
)
print
(
now
,
"download_heatflux_by_times: heat flux data is not available"
)
if
request
:
f
=
open
(
heatflux_requestlist_path
+
str
(
now
.
year
)
+
str
(
now
.
month
-
1
)
+
"_q_requests.txt"
,
'a'
)
try
:
...
...
@@ -2649,9 +2652,12 @@ def download_heatflux_by_times(port,tstart,tend,time_window=0,threads=1,testmode
programid
=
str
(
tstart
)
f
.
write
(
programid
+
"
\t
AEF"
+
str
(
port
)
+
"
\n
"
)
f
.
close
()
if
verbose
>
0
:
print
(
"download_heatflux_by_times: heat flux calculation request logged for automatic processing (within ca. 1 day)"
)
return
exist
,
time
,
frames
def
download_heatflux_mapping_reference
(
timepoint
=
None
,
version
=
0
,
testmode
=
False
,
verbose
=
0
):
def
download_heatflux_mapping_reference
(
timepoint
=
None
,
version
=
0
,
testmode
=
False
,
get_thickness
=
False
,
verbose
=
0
):
"""
return exist(boolean) and dictonary of the mappings informations
"""
...
...
@@ -2680,6 +2686,84 @@ def download_heatflux_mapping_reference(timepoint=None,version=0,testmode=False,
mappings
[
'Finger_Y'
]
=
frames
[
4
]
mappings
[
'Finger_ID'
]
=
(
frames
[
5
],
"legend: first three digits are fingernumber,starting @0, last two are the profile number"
)
mappings
[
'Target'
]
=
(
frames
[
6
],{
1
:
"TM1-4h"
,
2
:
"TM5-6h"
,
3
:
"TM7-9h"
,
4
:
"TM1-3v"
})
# derive thickness of profile line (for integration)
if
get_thickness
:
profile_no
=
mappings
[
'Finger_ID'
][
0
]
profile_ID
=
np
.
unique
(
profile_no
)
profile_ID
=
profile_ID
[:
np
.
where
(
np
.
isnan
(
profile_ID
))[
0
][
0
]]
profile_ID
=
profile_ID
.
astype
(
np
.
int16
)
d
=
np
.
zeros
(
np
.
shape
(
mappings
[
's'
]))
for
i_profile
in
profile_ID
:
x_f
=
mappings
[
'Finger_X'
][
np
.
where
(
profile_no
==
i_profile
)]
y_f
=
mappings
[
'Finger_Y'
][
np
.
where
(
profile_no
==
i_profile
)]
if
i_profile
-
1
not
in
profile_ID
:
# i_profile is first profile of finger
#
# thickness of this profile at each point [x_f,y_f] is equal to
# the distance to the next line from [x1, y1] to [x2, y2]
# https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line
x_f_next
=
mappings
[
'Finger_X'
][
np
.
where
(
profile_no
==
i_profile
+
1
)]
x1
=
x_f_next
[
0
]
x2
=
x_f_next
[
-
1
]
y_f_next
=
mappings
[
'Finger_Y'
][
np
.
where
(
profile_no
==
i_profile
+
1
)]
y1
=
y_f_next
[
0
]
y2
=
y_f_next
[
-
1
]
d
[
np
.
where
(
profile_no
==
i_profile
)]
=
\
abs
((
y2
-
y1
)
*
x_f
-
(
x2
-
x1
)
*
y_f
+
x2
*
y1
-
y2
*
x1
)
/
np
.
sqrt
((
y2
-
y1
)
**
2
+
(
x2
-
x1
)
**
2
)
elif
i_profile
+
1
not
in
profile_ID
:
# i_profile is last profile of finger
#
# thickness of this profile at each point [x_f,y_f] is equal to
# the distance to the previous line from [x1, y1] to [x2, y2]
# https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line
x_f_prev
=
mappings
[
'Finger_X'
][
np
.
where
(
profile_no
==
i_profile
-
1
)]
x1
=
x_f_prev
[
0
]
x2
=
x_f_prev
[
-
1
]
y_f_prev
=
mappings
[
'Finger_Y'
][
np
.
where
(
profile_no
==
i_profile
-
1
)]
y1
=
y_f_prev
[
0
]
y2
=
y_f_prev
[
-
1
]
d
[
np
.
where
(
profile_no
==
i_profile
)]
=
\
abs
((
y2
-
y1
)
*
x_f
-
(
x2
-
x1
)
*
y_f
+
x2
*
y1
-
y2
*
x1
)
/
np
.
sqrt
((
y2
-
y1
)
**
2
+
(
x2
-
x1
)
**
2
)
else
:
# a previous and next profile line exists on this finger
#
# thickness of this profile at each point [x_f,y_f] is the sum
# of half the distance to the previous line from [x1_p, y1_p] to [x2_p, y2_p]
# and half the distance to the next line from [x1_n, y1_n] to [x2_n, y2_n]
# https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line
x_f_prev
=
mappings
[
'Finger_X'
][
np
.
where
(
profile_no
==
i_profile
-
1
)]
x1_p
=
x_f_prev
[
0
]
x2_p
=
x_f_prev
[
-
1
]
y_f_prev
=
mappings
[
'Finger_Y'
][
np
.
where
(
profile_no
==
i_profile
-
1
)]
y1_p
=
y_f_prev
[
0
]
y2_p
=
y_f_prev
[
-
1
]
x_f_next
=
mappings
[
'Finger_X'
][
np
.
where
(
profile_no
==
i_profile
+
1
)]
x1_n
=
x_f_next
[
0
]
x2_n
=
x_f_next
[
-
1
]
y_f_next
=
mappings
[
'Finger_Y'
][
np
.
where
(
profile_no
==
i_profile
+
1
)]
y1_n
=
y_f_next
[
0
]
y2_n
=
y_f_next
[
-
1
]
d
[
np
.
where
(
profile_no
==
i_profile
)]
=
\
abs
((
y2_p
-
y1_p
)
*
x_f
-
(
x2_p
-
x1_p
)
*
y_f
+
x2_p
*
y1_p
-
y2_p
*
x1_p
)
/
np
.
sqrt
((
y2_p
-
y1_p
)
**
2
+
(
x2_p
-
x1_p
)
**
2
)
/
2
+
\
abs
((
y2_n
-
y1_n
)
*
x_f
-
(
x2_n
-
x1_n
)
*
y_f
+
x2_n
*
y1_n
-
y2_n
*
x1_n
)
/
np
.
sqrt
((
y2_n
-
y1_n
)
**
2
+
(
x2_n
-
x1_n
)
**
2
)
/
2
mappings
[
'thickness'
]
=
d
if
verbose
>
0
:
print
(
"download_heatflux_mapping_reference: 'thickness' of profiles added to mapping reference dictionary"
)
# shift vertical target in X and Y if it is centered on top of horizontal target
index_ver
=
np
.
where
(
mappings
[
'Target'
][
0
]
==
4
)
X
=
mappings
[
'X'
]
Y
=
mappings
[
'Y'
]
if
abs
(
np
.
nanmean
(
mappings
[
'X'
][
index_ver
]))
<
0.015
and
abs
(
np
.
nanmean
(
mappings
[
'Y'
][
index_ver
]))
<
0.01
:
x1
=
X
[
index_ver
]
y1
=
Y
[
index_ver
]
X
[
index_ver
]
=
np
.
cos
(
22.5
/
180
*
np
.
pi
)
*
x1
+
np
.
sin
(
22.5
/
180
*
np
.
pi
)
*
y1
-
0.9
Y
[
index_ver
]
=
-
np
.
sin
(
22.5
/
180
*
np
.
pi
)
*
x1
+
np
.
cos
(
22.5
/
180
*
np
.
pi
)
*
y1
+
0.7
if
verbose
>
0
:
print
(
"download_heatflux_mapping_reference: vertical target moved and rotated in 'X' and 'Y' for better plotting"
)
return
exist
,
mappings
def
download_heatflux_scene_model_reference
(
port
,
timepoint
=
None
,
program
=
None
,
version
=
0
,
testmode
=
False
,
verbose
=
0
):
...
...
@@ -2752,7 +2836,7 @@ def give_finger_ID(profile,finger=None):
"tm1h"
:
0
,
"tm2h"
:
6
,
"tm3h"
:
13
,
"tm4h"
:
21
,
"tm5h"
:
29
,
"tm6h"
:
53
,
"tm7h"
:
77
,
"tm8h"
:
83
,
"tm9h"
:
95
,
"tm1v"
:
107
,
"tm2v"
:
117
,
"tm3v"
:
127
}
### go throw the different cases, case: only one if given
fingerID
=-
1
if
finger
==
None
:
##combinations
t
here only profile is given
if
finger
==
None
:
##combinations
w
here only profile is given
if
type
(
profile
)
==
int
:
fingerID
=
profile
success
=
True
...
...
plot_heatflux_example.py
View file @
261b46fa
...
...
@@ -9,8 +9,8 @@ import downloadversionIRdata as IR
import
matplotlib.pyplot
as
plt
import
datetime
port
=
20
program
=
"20181004.012"
port
=
10
#
20
program
=
"20171207.022"
#
"20181004.012"
if
__name__
==
'__main__'
:
...
...
@@ -44,7 +44,7 @@ if __name__=='__main__':
plt
.
xlabel
(
"s [m]"
,
fontsize
=
26
)
plt
.
ylabel
(
"q [MW/m2]"
,
fontsize
=
26
)
plt
.
tick_params
(
labelsize
=
26
)
plt
.
title
(
"
20171109.008
heat flux profile for TM3, finger 5, profile 5 @1s"
,
fontsize
=
26
)
plt
.
title
(
"
{0}
heat flux profile for TM3, finger 5, profile 5 @1s"
.
format
(
program
)
,
fontsize
=
26
)
plt
.
grid
()
plt
.
ylim
(
bottom
=
0
)
plt
.
show
()
...
...
@@ -58,7 +58,7 @@ if __name__=='__main__':
cb
=
plt
.
colorbar
()
cb
.
set_label
(
'heatflux in MW/m²'
,
rotation
=
270
,
labelpad
=
15
,
fontsize
=
26
)
cb
.
ax
.
tick_params
(
labelsize
=
26
)
plt
.
title
(
"
20171109.008
heat flux profile for TM3, finger 5, profile 5"
,
fontsize
=
26
)
plt
.
title
(
"
{0}
heat flux profile for TM3, finger 5, profile 5"
.
format
(
program
)
,
fontsize
=
26
)
plt
.
show
()
# status3,mapping=IR.download_heatflux_scene_model_reference(port,program=program,verbose=0)
# bild=np.zeros((768,1024))
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