Skip to content

pkarasev3/ecto

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ecto

ecto is a dynamically configurable Directed Acyclic processing Graph (DAG) framework. Users may write reusable ecto::modules which become the nodes in the DAG, or ecto::plasm. Modules may be written in c++ as boost::python extensions, or in pure python, and python is used for the declaration of the DAG.

Contents:

building client_usage auto_docs tendril tendrils module plasm

ecto at a glance

  • Simple processing node interface for building your own modules.
  • Inputs, outputs and parameters are templated, and type erasing, giving typesafety and the ability to use your own data types..
  • Python is used as the plugin architecture of ecto. Exposing your modules to python is dead simple. The use of boost::python means that the python bindings for your data types are an optional powerful tool.
  • ecto forces your modules to be somewhat self documenting, and allows full introspection from python and c++, including type names, docstrings and variable names.
  • The plasm (DAG) executes in compiled code.
  • Python is used for declaring the processing graph, or as its known to ecto, the plasm.
#!/usr/bin/env python
import ecto #ecto core library
import hello_ecto #a user library, that has a few ecto modules

#instantiate a plasm, our DAG structure
plasm = ecto.Plasm()

#instantiate processing modules
r = hello_ecto.Reader()

#notice the keyword args, these get mapped
#as parameters
p = hello_ecto.Printer(str="default")

#connect outputs to inputs
plasm.connect(r, "output", p, "str")

#an execution loop
print "Enter input, q to quit"
while r.outputs.output != 'q':
  plasm.execute() #this executes the graph  
  • The ecto::plasm is easily inspected using graphviz tools.

image

  • Each module is self documenting by design.

About

ecto is a dynamically configurable Directed Acyclic processing Graph (DAG) framework.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published