11from hep_ipython_tools
import calculation_queue, calculation, information, calculation_list
17 Handler class to start processes in an IPython notebook in a convenient way.
18 From this whole framework you should
not need to create any instances by yourself but rather use the
19 given ipython handler
for this.
21 Create a handler object
in the beginning of your NB
and use the two methods `process()`
23 Do
not create calculations on you own::
25 from tracking.validation.ipython_handler
import handler
27 calculation = handler.process(parameters)
33 Each created log file gets registered and deleted
if there are more than 20 log files present
34 or if the get_log function of the process
is called (the log
is saved elsewhere).
35 As the log files are saved to /tmp you have probably
not to care about deleting them.
47 def process(self, result_queue=None, **kwargs):
49 Turn a parameter set into a Calculation that you can start, stop or whatever you want.
52 result_queue: The CalculationQueue you want to use. Without giving
53 this
as a parameter the function creates one
for you. Create
54 one on your own
with the function create_queue.
57 if result_queue
is None:
61 calculation.append(result_queue=result_queue, log_file_name=self.
next_log_file_name(), parameters=
None, **kwargs)
67 Create a list of calculations by combining all parameters with all parameters you provide
and
68 feeding the tuple into the parameter_creator_function.
69 If the kwargs_creator_function has a parameter named queue, the function feeds the corresponding
70 created queue into the parameter_creator_function.
71 The parameter_creator_function must
return a dictionary
for every combination of parameters it gets,
72 which will be used to construct a process out of it.
73 See ipython_handler_basf2/ipython_handler
for an example.
75 Please note that a list of calculations acts the same
as a single calculation you would get
from
76 the process function. You can handle 10 calculations the same way you would handle a single one.
78 The kwargs_creator_function can transform the incoming parameters into different ones. To make this
79 more clear, the resulting dictionary created by the kwargs_creator_function
is called kwargs.
80 These are the ones, that will be used to create a calculation process, so they must be compatible to the
81 calculation you chose (namely compatible
with the append function of the _calculation_type).
84 kwargs_creator_function: A function
with as many input parameters
85 as parameters you provide. If the function has an additional
86 queue parameter it
is fed
with the corresponding queue
for this
88 parameter_lists: As many lists
as you want. Every list
is one
89 parameter. If you do
not want a specific parameter
90 constellation to occur, you can
return None in your
91 parameter_creator_function
for this combination.
95 def kwargs_creator_function(par_1, par_2, par_3, queue):
96 kwargs = {... f(par_1) ... g(par_2) ... h(par_3)}
100 calculations = handler.process_parameter_space(kwargs_creator_function,
101 par_1=[1, 2, 3], par_2=[
"x",
"y",
"z"], par_3=[3, 4, 5])
103 The calculations will be created
with the kwargs arguments.
106 all_kwargs, all_queues, all_parameters = calculation_list.create_all_calculations(kwargs_creator_function,
111 for kwargs, q, parameters
in zip(all_kwargs, all_queues, all_parameters):
113 parameters=parameters, **kwargs)
119 Return the name of the next log file.
120 If there are more than 20 log files present,
121 start deleting the oldest ones.
123 next_log_file = tempfile.mkstemp()
127 f = first_log_file[0]
128 log_file_name = first_log_file[1]
132 os.unlink(log_file_name)
135 return next_log_file[1]
140 Create a Calculation queue. You need to do this if you want to
pass it to your modules
141 and write to it
while processing the events.