Giter Club home page Giter Club logo

cuneiform-legacy's Issues

Adapt Macro calls

Macro calls should look more like apply calls. Thus

  • keyword arguments
  • allow expressions, not only ids

Stdout and error channel into workflow trace

Each task invocation writes things to the stdout and the stderr. Instead of just losing this information, the controlled side-effects of the invocation should appear in the controlled side effect of the workflow execution: the worklfow trace.

Create signatures also for task nodes

Task nodes have ids which are stored in the log. Since these ids may not be the same in a subsequent run, all task node ids have to be exchanged for signatures, as done for invocations.

Check whether all occurrences of task node ids can be replaced by signatures.

Higher Order Functions

Cuneiform has support of higher order functions. Consider the following example

declare higher-order-fn;

deftask calculate-fn( fn : ) {
echo my-task > $fn
}

deftask my-task( out : a b ) {
cat $a $b > $out
}

target x;

x = apply(
task: apply( task: calculate-fn )
a: ~'hello'
b: ~'world'
);

Error in output reduce

The invocations that are supposed to be started after an output reduce task, are never invoked.

Problem in hashing task calls

  • Altering the body of a function must also alter its hash.
  • Altered intermediate data should affect downstream invocations.
  • If an invocation did not produce an output it has to be recomputed.

This is especially important when workflow leaves are heavily altered. Because the current state forces the user to delete all cached results prior to his next run.

Improve invocation signatures

Invocation signatures must reliably represent invocations.

  • if a task body is altered, the signature is altered too
  • if an invocation signature changes, all downstream signatures also change
  • use long signatures
  • before any intermediate results are reused, compare all logs with all created directories and delete any directories, that aren't mentioned in any log

Relax import

Some people prefer include. Make them interchangeable. Also can an import eat a string expression instead of just an identifier.

Make all logging information JSON

Make the log a bag of JSON objects. In the following, it might be useful to create a KNIME node that extracts a table out of the log.

BashInvocation: catch error signal

Currently, when an error occurs in a Bash script, it may be, that the workflow just continues.

It collects the error messages, but does not halt.

Store log to file

By default, store the log in a separate file in the build directory.

Allow empty lists as task output

In order to allow provenance-explicit filters we need to be able to produce the empty list as a task result.

However, as task input it shouldn't be allowed.

Support of other scripting languages, e.g., Python

It should be possible to create foreign code in any given scripting language. Consider the example below:

declare python-example;

deftask + in python( ~result : ~<operand> ) *{
    #!/usr/bin/env python

    result = 0
    for line in operand:
        result += float( line )
}*

target x;

x = apply(
    task: +
    operand: ~'5' ~'10' ~'-7' ~'1'
);

Type checking

Types should be checked.

Literals must not anymore be decorated. It suffices to have the task definition prototypes typed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.