Exercise 3: Shortest EFMs
Deadline: Tuesday, 14.06.2016, 08:00 a.m.
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)
Please download these
networks to test your program.
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).