SED-ML / sed-ml

Simulation Experiment Description Markup Language (SED-ML)
http://sed-ml.org
5 stars 2 forks source link

Support factorial RepeatedTasks for more abstraction in descriptions of complex simulation experiments #100

Open jonrkarr opened 3 years ago

jonrkarr commented 3 years ago

RepeatedTask allows iteration over a single range (or more specifically simultaneous iteration over multiple ranges).

For example, with three ranges, the equivalent Python code looks roughly like this:

for val1, val2, val3 in zip(range1, range2, range3):
    # modify model according to val1, val2, val3
    # exec task with modified model

Some workflow systems such as GitHub actions support "matrices" (outer cross product) of ranges. The equivalent Python for this is

for val1 in range1:
    for val2 in range2:
        for val3 in range3:
            # modify model according to val1, val2, val3
            # exec task with modified model

Essentially, this could be used to described factorial designs of simulation experiments.

Example:

Such factorial designs could encoded into the existing Range classes, but this would lose the semantic meaning of the factorial design. For the same reason its useful to have RepeatedTask, its useful to have yet more abstraction over designs of simulation experiments.

Unfortunately, I can't think of a way to achieve this with just a minor tweak to the existing schema. This requires a distinct mechanism to define products of ranges from the existing listOfRanges which captures co-iteration (zipping) of ranges.

matthiaskoenig commented 3 years ago

I agree. This is important. I currently just write these ranges out and loose the underlying factorial design in the process.

jonrkarr commented 3 years ago

Related to this issue, I think it should also be possible to iterate over targets. For example, you might want to iterate over a list of genes and for each gene change a parameter corresponding to knocking out that gene. This is not possible with the current SED-ML design. Tomas highlighted an example like this during our discussion this week. This can kind of iteration is common in larger network models such as flux balance and logical models.

matthiaskoenig commented 3 years ago

This should be possible by just using xpath to all genes. I.e. via an xpath expression you can easily select all individual genes as a target. We just would need to document this clearly. But as I understand xpath and SED-ML this is currently supported. The problem is that this results in an addional implicit layer of iteration on the level of the subtask. It would be much cleaner/more intuitive to have this iteration on the range.

jonrkarr commented 3 years ago

I don't see how this is currently possible. Currently a target could be used to change many genes at once. There is no way to iterate over targets one at a time.

On Mon, Mar 29, 2021, 7:03 AM Matthias König @.***> wrote:

This should be possible by just using xpath to all genes. I.e. via an xpath expression you can easily select all individual genes as a target. We just would need to document this clearly. But as I understand xpath and SED-ML this is currently supported. The problem is that this results in an addional implicit layer of iteration on the level of the subtask. It would be much cleaner/more intuitive to have this iteration on the range.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/SED-ML/sed-ml/issues/100#issuecomment-809289121, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAVXMKNFIHLH6DGV43NMKODTGBUBNANCNFSM4W6FBPCA .