Source code for fluidimage.topologies.launcher
"""
Launchers for topologies used for GUI (:mod:`fluidimage.topologies.launcher`)
=============================================================================
.. autoclass:: TopologyLauncher
:members:
:private-members:
.. autoclass:: TopologyPIVLauncher
:members:
:private-members:
.. autoclass:: TopologyPreprocLauncher
:members:
:private-members:
"""
import inspect
import json
from fluidimage.topologies.piv import TopologyPIV
from fluidimage.topologies.preproc import TopologyPreproc
def _get_args_bound_method(method):
try: # python 3
arg_spec = inspect.getfullargspec(method)
except AttributeError: # python 2
arg_spec = inspect.getargspec(method.__func__)
# key args without 'self' and 'params'
key_args = arg_spec.args[2:]
defaults = arg_spec.defaults[1:]
return key_args, defaults
[docs]class TopologyLauncher:
"""Launcher (class to be subclassed)."""
Topology = TopologyPIV
@classmethod
def create_default_params(cls):
params = cls.Topology.create_default_params()
key_args, defaults = _get_args_bound_method(cls.Topology.__init__)
params._set_child("topology")
for key, value in zip(key_args, defaults):
params.topology._set_attrib(key, value)
params.topology._set_doc(cls.Topology.__doc__)
key_args, defaults = _get_args_bound_method(cls.Topology.compute)
params.topology._set_child("compute")
for key, value in zip(key_args, defaults):
params.topology.compute._set_attrib(key, value)
params.topology.compute._set_doc(cls.Topology.compute.__doc__)
params._set_internal_attr(
"_value_text",
json.dumps(
{
"program": "fluidimage",
"module": cls.__module__,
"class": cls.__name__,
}
),
)
return params
def __init__(self, params):
self.params = params
kwargs = params.topology._make_dict_attribs()
print(kwargs)
self.topology = self.Topology(params, **kwargs)
def compute(self):
kwargs = self.params.topology.compute._make_dict_attribs()
print(kwargs)
self.topology.compute(**kwargs)
[docs]class TopologyPIVLauncher(TopologyLauncher):
"""PIV topology launcher"""
[docs]class TopologyPreprocLauncher(TopologyLauncher):
"""Preproc topology launcher"""
Topology = TopologyPreproc