You are here: Foswiki>AgMathLife Web>MolnetzASS16>MolnetzASS16_3 (02 Jun 2016, AnnikaRoehl)
Exercise 3: Shortest EFMs

Shortest EFM
Write a program that:
• reads in a metabolic network: a struct in a .mat file:
• S: stoichiometric matrix
• rev: reversibility-vector (rev(i) = 0: reaction i is not reversible, rev(i) = 1: reaction i is reversible)
• lb: lower bounds
• ub: upper bounds
• The program should do the following:
Based on the method explained here it should compute the shortest EFM of the network.
• Output:
EFM is the computed fuxdistribution. It does not have to be stored.
• Program call:
Your program should be called as: `EFM=shortestEFM(network)`
Note: The program should compute only one EFM!

k-shortest EFMs
Write a program that:
• reads in a metabolic network: a struct in a .mat file:
• S: stoichiometric matrix
• rev: reversibility-vector (rev(i) = 0: reaction i is not reversible, rev(i) = 1: reaction i is reversible)
• lb: lower bounds
• ub: upper bounds
• reads in a second argument, k, where k is the number of EFMs which should be computed.
• reads in a third argument, which is the name of the output file.
• The program should do the following:
Based on the method explained here it should compute the k shortest EFMs of the network. If the number of EFMs in the network is less than k it should compute all EFMs and display: Computed all EFMs. There exists n number of EFMs (n is the number of all EFMs of the network).
• Output:
A .mat file where the EFMs are stored: A matrix, where each colum corresponds to one EFM (fluxdistribution).
• Program call:
Your program should be called as: `KshortestEFMs(network, k)`

You can use these play_networks to debug your program. The corresponding EFMs can be found here.

Hint
• Start with the first programm. If this works, try to implement the loop such that you call the first programm k times. In each loop the solutions before have to be excluded such that you generate new solutions.
• You have to split the reversible reactions. You have to resplit them for the solution.
• You have two types of variables: continuous and binary variables. The continuous (t in the paper) are the fluxdistributions. The binary variables (z) indicate if a reaction is active or not. How to connect these two types you will find in the paper.
• Your objective is to minimize the sum over the zi.

No Explanation
Do not write any explanations. You can get for each program 3 points (thus 6 points in total).