Commit 3f3fda2b authored by Holger Niemann's avatar Holger Niemann
Browse files

update of version number, include function download_wetted_area,...

update of version number, include function download_wetted_area, download_peak_heatflux, download_peaking_factor, download_strikeline_width (all not fully functional, preparations for V3.5), change of upload_config to download_config and change in the IR_constants to allow sandbox use. More or less V3.4.4
parent 95f0faa1
# -*- coding: utf-8 -*-
"""
Created on Tue Jun 5 09:26:06 2018
Version: 3.3.0
Version: 3.4.4
@author: holn
constants and config parameters
"""
......@@ -18,15 +18,13 @@ parameter_file_path = ospath.join(ospath.dirname(__file__), 'data')
try:
# import sys
path=str(repr(__file__)).split("IR_config_constants")[0].split("'")[1]+"upload_config"
path=str(repr(__file__)).split("IR_config_constants")[0].split("'")[1]+"download_config"
cFile=open(path.replace('\\\\',"\\"))#+"upload_config")
for line in cFile:
if line[0:3]!="###":
if line.split("=")[0]=='archivedb':
if eval(line.split("=")[1].split("\n")[0]):
archivepath="http://archive-webapi.ipp-hgw.mpg.de/ArchiveDB/raw/"
else:
archivepath="http://archive-webapi.ipp-hgw.mpg.de/Test/raw/"
database = eval(line.split("=")[1].strip())
archivepath = "http://archive-webapi.ipp-hgw.mpg.de/{0}/raw/".format(database)
cFile.close()
except Exception as E:
archivepath="http://archive-webapi.ipp-hgw.mpg.de/Test/raw/"
......
# -*- coding: utf-8 -*-
"""
Created on Wed May 9 14:56:32 2018
Version: 3.4.3
Version: 3.4.4
@author: Holger Niemann, Peter Drewelow, Yu Gao
mainly to clean up the downloadversionIRdata code
......@@ -833,7 +833,8 @@ def get_work_list(pipepath,typ="q"):
the path to the folder where the files are located
typ: string
the typ of data which is requested in the working list\n
possiblities: q, Aw, qpeak, width, load\n
possiblities: q, Aw, qpeak, width, load. q_old, load_old\n
both old parameters are opening the files bevore version 3.4.1\n
or anything else for the problematic programs
RESULT
------
......
### specifications ###
local=True
### settings ###
retry=2
### target database (ArchiveDB/Test/Sandbox) ###
archivedb='ArchiveDB'
......@@ -4,7 +4,7 @@ Created on Wed Oct 25 15:51:46 2017
updated on Tue Aug 21 10:20:00 2018
last update on Fr Nov 23 15:37:00 2018
Version: 3.4.3
Version: 3.4.4
(Numbering: #of big changes(OP1.2a download V1, OP1.2b download V2, heatflux V3)
.
#of updates to add functionalities
......@@ -12,7 +12,7 @@ Version: 3.4.3
#number of updates for bug fixes )
@author: holn
"""
version = "V3.4.3"
version = "V3.4.4"
import numpy as np
import IR_image_tools as IR_tools
......@@ -61,10 +61,28 @@ def get_started():
it opens a weblink to a presentation and as well a flow chart
"""
print("Welcome")
import webbrowser
webbrowser.open('https://wikis.ipp-hgw.mpg.de/PhysicsW7X/images/9/9f/2019-04-24_20190424_How_to_access_Infrared_Data.pdf', new=2)
link = "https://wikis.ipp-hgw.mpg.de/PhysicsW7X/images/9/9f/2019-04-24_20190424_How_to_access_Infrared_Data.pdf"
path=str(repr(__file__)).split("downloadversionIRdata")[0].split("'")[1]
os.startfile(path+"IR_data_access_flow_chart.png")
image = path + "IR_data_access_flow_chart.png"
try:
import webbrowser
webbrowser.open(link, new=2)
try:
os.startfile(image)
except AttributeError:
# Non-windows os:
webbrowser.open(image)
except Exception:
# When ever that fails, just print the links:
print("Some slides can be found in the wiki:")
print(link)
plt.figure()
im=plt.imread(image)
plt.imshow(im)
print("And a flow-chart for getting and using the data can be found here:")
print(image)
plt.show()
def get_latest_version(stream, project="W7X", testmode=False, t_from=None,
......@@ -3159,7 +3177,7 @@ def get_temp_from_raw_by_program_V1(portnr, program, time_window=0, emi=0.8,dive
time: list
a list containing the time stamp of each frame
frames: list
a list of frames, 2D numpy arrays
a list of frames, 2D numpy arrays, values are in Kelvin
valid: boolean
True if the data can be used/trusted
optional: error_frames: list
......@@ -3291,7 +3309,7 @@ def get_temp_from_raw_by_program_V2(portnr, program, time_window=0, emi=0.8, ver
time: list
a list containing the time stamp of each frame
frames: list
a list of frames, 2D numpy arrays
a list of frames, 2D numpy arrays, values are in Kelvin
valid: boolean
True if the data can be used/trusted
optional: error_frames: list
......@@ -3343,7 +3361,8 @@ def get_temp_from_raw_by_program(portnr, program, time_window=0, emi=0.8, T_vers
testmode: boolean, optional, default False
if True, the data will be loaded from the test archive
framerate: string or integer, optional, default 'max'
sets the framerate to downsample the data. normal rate is 100.
sets the framerate to downsample the data. normal rate is 100. \n
works only if w7xarchive is available!
RESULT
------
exist: boolean
......@@ -4682,7 +4701,8 @@ def download_heatflux_by_program(port, program, time_window=0, testmode=False,
verbose: integer, optional, default 0
feedback level (details of print messages)
givealpha: boolean, default False
switch to turn on or off the return of the alpha image from the THEODOR calculation, it wil be returned as first image
switch to turn on or off the return of the alpha image from the THEODOR calculation, it wil be returned as first image\n
it sets the timewindow start automatically to t1 if active
request: boolean, default True
switch to turn on or off the request of data if the data is not available in the database
RESULT
......@@ -5523,7 +5543,7 @@ def download_divertor_load(port, targetmodule=None, program=None, tstart=None,
port: int or str
the port description for the camera as number or full string (e.g. 'AEF10')
targetmodule: str or list/ndarray of str, optional
name or description of the target module, nothing wil return total load
name or description of the target module, nothing will return total load of the requested divertor(camera)
program: str
program id as str in the format yyyymmdd.pid
tstart: integer
......@@ -5547,7 +5567,7 @@ def download_divertor_load(port, targetmodule=None, program=None, tstart=None,
time: list
a list containing the time stamp of each frame, time is in nanoseconds UTC
load: list
a list of values, values in the images are in W
a list of values, values in the list are in W
error: list
a list of values, the error of each timepoint, values are in W
"""
......@@ -5566,11 +5586,136 @@ def download_divertor_load(port, targetmodule=None, program=None, tstart=None,
'TM2V':(22,23, 'TM2v_load'), '2V':(22,23, 'TM2v_load'),
'TM3V':(24,25, 'TM3v_load'), '3V':(24,25, 'TM3v_load')
}
__download_module_based_data__(kind="load",TMchadict=TMchadict,port=port,
targetmodule=targetmodule,program=program, tstart=tstart, tend=tend,
version=version, verbose=verbose, testmode=testmode,
request=request, request_ALL=request_ALL)
def download_peak_heatflux(port, targetmodule=None, program=None, tstart=None,
tend=None, version=0, verbose=0, testmode=False,
request=True, request_ALL=False):
"""
downloads the evaluated peak heat flux, based on the heat flux evaluation of the temperature data from the IR cameras.\n
The data is structed in maximum peak heat flux per divertor, identified by the port, and also in target-modules of the divertor.\n
An estiamted error for the data is given back.
To get the total divertor load, please download the data of each of the 10 AEF ports.\n
In case one or more ports are missing, request can be created (console will give feedback on the request).\n
The data will be evaluated by a server over time.
INPUT
------
port: int or str
the port description for the camera as number or full string (e.g. 'AEF10')
targetmodule: str or list/ndarray of str, optional
name or description of the target module, nothing will return total load of the requested divertor(camera)
program: str
program id as str in the format yyyymmdd.pid
tstart: integer
time in ns where the search should start
tend: integer
time in ns where the search should end
version: integer, optional, default 0
Version of the data in the archiveDB, in case of 0 the highest version will be used
verbose: integer, optional
feedback level (details of print messages)
testmode: boolean, default False
True to load data from testarchive
request: boolean, optional, default True
switch to turn on or off the request of data if the data is not available in the database
request_ALL: boolean, optional, default False
switch to turn on the request of data for all AEF ports
RESULT
------
exist: boolean
True if data was found, False if not
time: list
a list containing the time stamp of each frame, time is in nanoseconds UTC
peakflux: list
a list of values, values in the list are in W/m^2
error: list
a list of values, the error of each timepoint, values are in W/m^2
"""
TMchadict={
'ALL':(0,1, 'divertor_maximum_heatflux'), 'FULL':(0,1, 'divertor_maximum_heatflux'),
'TM1H':(2,3, 'TM1h_qpeak'), '1H':(2,3, 'TM1h_qpeak'),
'TM2H':(4,5, 'TM2h_qpeak'), '2H':(4,5, 'TM2h_qpeak'),
'TM3H':(6,7, 'TM3h_qpeak'), '3H':(6,7, 'TM3h_qpeak'),
'TM4H':(8,9, 'TM4h_qpeak'), '4H':(8,9, 'TM4h_qpeak'),
'TM5H':(10,11, 'TM5h_qpeak'), '5H':(10,11, 'TM5h_qpeak'),
'TM6H':(12,13, 'TM6h_qpeak'), '6H':(12,13, 'TM6h_qpeak'),
'TM7H':(14,15, 'TM7h_qpeak'), '7H':(14,15, 'TM7h_qpeak'),
'TM8H':(16,17, 'TM8h_qpeak'), '8H':(16,17, 'TM8h_qpeak'),
'TM9H':(18,19, 'TM9h_qpeak'), '9H':(18,19, 'TM9h_qpeak'),
'TM1V':(20,21, 'TM1v_qpeak'), '1V':(20,21, 'TM1v_qpeak'),
'TM2V':(22,23, 'TM2v_qpeak'), '2V':(22,23, 'TM2v_qpeak'),
'TM3V':(24,25, 'TM3v_qpeak'), '3V':(24,25, 'TM3v_qpeak')
}
__download_module_based_data__(kind="qpeak",TMchadict=TMchadict,port=port,
targetmodule=targetmodule,program=program, tstart=tstart, tend=tend,
version=version, verbose=verbose, testmode=testmode,
request=request, request_ALL=request_ALL)
def __download_module_based_data__(kind, TMchadict, port, targetmodule=None,
program=None, tstart=None, tend=None,
version=0, verbose=0, testmode=False,
request=True, request_ALL=False):
"""
downloads the integrated divertor load or the peak heat flux, based on the heat flux evaluation of the temperature data from the IR cameras.\n
The data is structed in total load/peak heat flux per divertor, identified by the port, and also in target-modules of the divertor.\n
An estiamted error for the data is given back.
To get the total divertor load, please download the data of each of the 10 AEF ports.\n
In case one or more ports are missing, request can be created (console will give feedback on the request).\n
The data will be evaluated by a server over time.
INPUT
------
port: int or str
the port description for the camera as number or full string (e.g. 'AEF10')
targetmodule: str or list/ndarray of str, optional
name or description of the target module, nothing will return total load of the requested divertor(camera)
program: str
program id as str in the format yyyymmdd.pid
tstart: integer
time in ns where the search should start
tend: integer
time in ns where the search should end
version: integer, optional, default 0
Version of the data in the archiveDB, in case of 0 the highest version will be used
verbose: integer, optional
feedback level (details of print messages)
testmode: boolean, default False
True to load data from testarchive
request: boolean, optional, default True
switch to turn on or off the request of data if the data is not available in the database
request_ALL: boolean, optional, default False
switch to turn on the request of data for all AEF ports
RESULT
------
exist: boolean
True if data was found, False if not
time: list
a list containing the time stamp of each frame, time is in nanoseconds UTC
load: list
a list of values, values in the list are in W
error: list
a list of values, the error of each timepoint, values are in W
"""
if kind in ["load","qpeak"]:
if kind == "load":
datcha_name = 'divertor_total_load'
funname = "download_divertor_load"
streamname = "loads"
else:
datcha_name = 'divertor_maximum_heatflux'
funname = "download_peak_heatflux"
streanname = ""
else:
raise Exception("__download_module_based_data__: wrong input!")
#interpretation of the targetmodule input, string or List of strings, numbers does not make sense here?
if targetmodule == None:
datcha = 0
ercha = 1
datcha_name='divertor_total_load'
elif type(targetmodule)== list or type(targetmodule)==np.ndarray:## okay maybe more than one targetmodule is requested
datcha = []
datcha_name = []
......@@ -5609,7 +5754,7 @@ def download_divertor_load(port, targetmodule=None, program=None, tstart=None,
# else:
exist, _, tstart, tend = get_trigger_from_PID(program, port, testmode, verbose=verbose-1)
if not exist:
print("download_divertor_load: Error! program not found")
print(f"{funname}: Error! program not found")
return False, 0,-1,-1
else:
if tend == None:
......@@ -5619,7 +5764,7 @@ def download_divertor_load(port, targetmodule=None, program=None, tstart=None,
# tend=prog[1]['trigger']['6'][0]
exist, _, _, tend = get_trigger_from_PID(program, port, testmode, verbose=verbose-1)
if not exist:
print("download_divertor_load: Error! end trigger not found")
print(f"{funname}: Error! end trigger not found")
return False, 0,-1,-1
#channels known, time known, okay lets get the data
# tstart=int(tstart-100e6)
......@@ -5631,8 +5776,8 @@ def download_divertor_load(port, targetmodule=None, program=None, tstart=None,
if type(port) == int:
port = "AEF"+str(port)
if version == 0:
version = get_latest_version(portpathdict[OP][str(port)]+"loads_DATASTREAM", project=project_ana, t_from=tstart, t_to=tend, testmode=testmode)
larchivepath = base+project_ana+"/"+portpathdict[OP][str(port)]+"loads_DATASTREAM/V"+str(version)
version = get_latest_version(portpathdict[OP][str(port)]+streamname+"_DATASTREAM", project=project_ana, t_from=tstart, t_to=tend, testmode=testmode)
larchivepath = base+project_ana+"/"+portpathdict[OP][str(port)]+streanname+"_DATASTREAM/V"+str(version)
if type(datcha) == list:#case of several requested channels
load = []
error = []
......@@ -5668,34 +5813,265 @@ def download_divertor_load(port, targetmodule=None, program=None, tstart=None,
if exist == False:
now = datetime.datetime.now()
if verbose > 0:
print(now, "download_divertor_load: divertor_load data is not available")
print(now, f"{funname}: divertor_load data is not available")
if request:
try:
programid=AKF_2.get_program_id(tstart)
except Exception as E:
if verbose > 0:
print('download_divertor_load: Error! ', E)
print(f'{funname}: Error! ', E)
programid=str(tstart)
cam_progs=IR_tools.get_work_list(heatflux_requestlist_path, typ='load')
cam_progs=IR_tools.get_work_list(heatflux_requestlist_path, typ=kind)
cam_progs_ig,reasons=IR_tools.get_work_list(heatflux_requestlist_path, typ='ignore')
cam_p = cam_progs+cam_progs_ig
if (programid, str(port)) not in cam_p and (programid, "ALL") not in cam_p:
f = open(heatflux_requestlist_path+"Auto_load_requests.txt", 'a')
f = open(heatflux_requestlist_path+"Auto_"+kind+"_requests.txt", 'a')
if request_ALL:
f.write(programid+"\tALL\n")
else:
f.write(programid+"\t"+str(port)+"\n")
f.close()
if verbose > 0:
print(now, "download_divertor_load: request created")
print(now,f"{funname}: request created")
elif verbose > 0:
if (programid, str(port)) in cam_progs:
print(now, "download_divertor_load: request exist already")
print(now, f"{funname}: request exist already")
else:
pid = cam_progs_ig.index((programid, str(port)))
print(now, "download_divertor_load: request ignored, data not available, reason: {0}".format(reasons[pid]))
print(now, f"{funname}: request ignored, data not available, reason: {0}".format(reasons[pid]))
return exist, time, load, error
def download_wetted_area(typ="total", program=None, tstart=None,
tend=None, version=0, verbose=0, request=True, return_used_divertors=False):
"""
downloads the wetted area on the divertor, based on the heat flux evaluation of the temperature data from the IR cameras.\n
The data is structed in total wetted area, and also in wetted area on upper and on lower targets.\n
In case data is missing, request can be created (console will give feedback on the request).\n
The data will be evaluated by a server over time.
INPUT
------
typ: string, optional, default 'total'
name or description of the requested data, nothing will return total wetted area\n
options are: "total", "all", "upper", "lower", "qmaxUP", "qmaxDOWN"
program: str
program id as str in the format yyyymmdd.pid
tstart: integer
time in ns where the search should start
tend: integer
time in ns where the search should end
version: integer, optional, default 0
Version of the data in the archiveDB, in case of 0 the highest version will be used
verbose: integer, optional
feedback level (details of print messages)
testmode: boolean, default False
True to load data from testarchive
request: boolean, optional, default True
switch to turn on or off the request of data if the data is not available in the database
return_used_divertors: boolean, optional, default False
if turned on, it will return also the list of divertors which were used to calculated the wetted area
RESULT
------
exist: boolean
True if data was found, False if not
time: list
a list containing the time stamp of each frame, time is in nanoseconds UTC
wetted area/qmax: list or dictionary
for total, upper or lower type of data a list of values, values are in m^2\n
for qmaxUP or qmaxDOWN are list of values, vales are in W/m^2
for all a dictionary with total, upper and lower as list in the dictionary are returned
reference divertors: list, optional
if return_used_divertors if True, it will return a list with the port numbers of the cameras
"""
__download_derived_data__(kind="Aw",typ=typ,program=program,tstart=tstart,
tend=tend,version=version,verbose=verbose,
request=request,return_used_divertors=return_used_divertors)
def download_strikeline_width(typ="total", program=None, tstart=None,
tend=None, version=0, verbose=0, request=True, return_used_divertors=False):
"""
downloads the averaged strike-line width on the divertors, based on the heat flux evaluation of the temperature data from the IR cameras.\n
The data is structed in mean strike-line width, and also in strike-line width on upper and on lower targets.\n
In case data is missing, request can be created (console will give feedback on the request).\n
The data will be evaluated by a server over time.
INPUT
------
typ: string, optional, default 'total'
name or description of the requested data, nothing will return strike-line width\n
options are: "total", "all", "upper", "lower", "qmaxUP", "qmaxDOWN"
program: str
program id as str in the format yyyymmdd.pid
tstart: integer
time in ns where the search should start
tend: integer
time in ns where the search should end
version: integer, optional, default 0
Version of the data in the archiveDB, in case of 0 the highest version will be used
verbose: integer, optional
feedback level (details of print messages)
testmode: boolean, default False
True to load data from testarchive
request: boolean, optional, default True
switch to turn on or off the request of data if the data is not available in the database
return_used_divertors: boolean, optional, default False
if turned on, it will return also the list of divertors which were used to calculated the wetted area
RESULT
------
exist: boolean
True if data was found, False if not
time: list
a list containing the time stamp of each frame, time is in nanoseconds UTC
wetted area/qmax: list or dictionary
for total, upper or lower type of data a list of values, values are in m\n
for qmaxUP or qmaxDOWN are list of values, vales are in W/m^2
for all a dictionary with total, upper and lower as list in the dictionary are returned
reference divertors: list, optional
if return_used_divertors if True, it will return a list with the port numbers of the cameras
"""
__download_derived_data__(kind="width",typ=typ,program=program,tstart=tstart,
tend=tend,version=version,verbose=verbose,
request=request,return_used_divertors=return_used_divertors)
def download_peaking_factor(typ="total", program=None, tstart=None,
tend=None, version=0, verbose=0, request=True, return_used_divertors=False):
"""
downloads the averaged peaking factor on the divertors, based on the heat flux evaluation of the temperature data from the IR cameras.\n
The data is structed in mean peaking factor, and also in peaking factor on upper and on lower targets.\n
In case data is missing, request can be created (console will give feedback on the request).\n
The data will be evaluated by a server over time.
INPUT
------
typ: string, optional, default 'total'
name or description of the requested data, nothing will return strike-line width\n
options are: "total", "all", "upper", "lower", "qmaxUP", "qmaxDOWN"
program: str
program id as str in the format yyyymmdd.pid
tstart: integer
time in ns where the search should start
tend: integer
time in ns where the search should end
version: integer, optional, default 0
Version of the data in the archiveDB, in case of 0 the highest version will be used
verbose: integer, optional
feedback level (details of print messages)
testmode: boolean, default False
True to load data from testarchive
request: boolean, optional, default True
switch to turn on or off the request of data if the data is not available in the database
return_used_divertors: boolean, optional, default False
if turned on, it will return also the list of divertors which were used to calculated the wetted area
RESULT
------
exist: boolean
True if data was found, False if not
time: list
a list containing the time stamp of each frame, time is in nanoseconds UTC
wetted area/qmax: list or dictionary
for total, upper or lower type of data a list of values, values are in m\n
for qmaxUP or qmaxDOWN are list of values, vales are in W/m^2
for all a dictionary with total, upper and lower as list in the dictionary are returned
reference divertors: list, optional
if return_used_divertors if True, it will return a list with the port numbers of the cameras
"""
__download_derived_data__(kind="qpeak",typ=typ,program=program,tstart=tstart,
tend=tend,version=version,verbose=verbose,
request=request,return_used_divertors=return_used_divertors)
def __download_derived_data__(kind, typ="total", program=None, tstart=None,
tend=None, version=0, verbose=0, request=True, return_used_divertors=False):
"""
downloads the averaged strike-line width, peaking factor or wetted area on the divertors, based on the heat flux evaluation of the temperature data from the IR cameras.\n
The data is structed in a total value (wetted area) or mean value(width and peaking), and also in strike-line width on upper and on lower targets.\n
In case data is missing, request can be created (console will give feedback on the request).\n
The data will be evaluated by a server over time.
INPUT
------
kind: string
the kind of data which is should be downloaded, options are: "Aw","PF","width"
typ: string, optional, default 'total'
name or description of the requested data, nothing will return the requested kind of data\n
options are: "total", "all", "upper", "lower", "qmaxUP", "qmaxDOWN"
program: str
program id as str in the format yyyymmdd.pid
tstart: integer
time in ns where the search should start
tend: integer
time in ns where the search should end
version: integer, optional, default 0
Version of the data in the archiveDB, in case of 0 the highest version will be used
verbose: integer, optional
feedback level (details of print messages)
testmode: boolean, default False
True to load data from testarchive
request: boolean, optional, default True
switch to turn on or off the request of data if the data is not available in the database
return_used_divertors: boolean, optional, default False
if turned on, it will return also the list of divertors which were used to calculated the wetted area
RESULT
------
exist: boolean
True if data was found, False if not
time: list
a list containing the time stamp of each frame, time is in nanoseconds UTC
wetted area/qmax: list or dictionary
for total, upper or lower type of data a list of values, values are in m\n
for qmaxUP or qmaxDOWN are list of values, vales are in W/m^2
for all a dictionary with total, upper and lower as list in the dictionary are returned
reference divertors: list, optional
if return_used_divertors if True, it will return a list with the port numbers of the cameras
"""
if kind in ["Aw","PF","width","wetted_area","wetted area","peaking factor","peaking_factor","strike-line_width","strikeline_width","strike line width"]:
if kind in ["Aw","wetted_area","wetted area"]:
funname = "download_wetted_area"
kind = "Aw"
elif kind in ["PF","peaking factor","peaking_factor"]:
funname = "download_peaking_factor"
kind = "qpeak"
else:
funname = "download_strikeline_width"
kind = "width"
else:
raise Exception("__download_derived_data__: wrong input!")
print("to be implemented in version 3.5.0")
exist = False
if exist == False:
now = datetime.datetime.now()
if verbose > 0:
print(now, f"{funname}: wetted area data is not available")
if request:
try:
programid=AKF_2.get_program_id(tstart)
except Exception as E:
if verbose > 0:
print(f'{funname}: Error! ', E)
programid=str(tstart)
cam_progs=IR_tools.get_work_list(heatflux_requestlist_path, typ=kind)
cam_progs_ig,reasons=IR_tools.get_work_list(heatflux_requestlist_path, typ='ignore')
cam_p = cam_progs+cam_progs_ig
portsblocked = 0
blockedports=[]
for port in [10,11,20,21,30,31,40,41,50,51]:
if (programid, str(port)) in cam_p:
portsblocked+=1
blockedports.append(port)
if (programid, "ALL") not in cam_p and portsblocked < 5:#(programid, str(port)) not in cam_p and
f = open(heatflux_requestlist_path+"Auto_"+kind+"_requests.txt", 'a')
f.write(programid+"\tALL\n")
f.close()
if verbose > 0:
print(now, f"{funname}: request created")
elif verbose > 0:
if (programid, "ALL") in cam_progs:
print(now, f"{funname}: request exist already")
else:
for port in blockedports:
pid = cam_progs_ig.index((programid, str(port)))
print(now, f"{funname}: request ignored, data not available, reason: {0}".format(reasons[pid]))
def download_scene_model(port, program=None, timepoint=None, version=0, testmode=False, verbose=0):
''' downloading the scene model, provided by F. Pisano
......
......@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
setup(
name = 'ir-data-access',
version = '3.4.3',
version = '3.4.4',
author = 'Holger Niemann, Peter Drewelow',
author_email = 'holger.niemann@ipp.mpg.de',
description = 'Access Frontend for IR camera data',
......@@ -16,7 +16,7 @@ setup(
'plot_heatflux_example'
],
data_files=[