private void button5_Click(object sender, EventArgs e) { double flujo_r = 0; makefba.Fba(sbml, Funcion_obj, pd); z = makefba.Lp.GetObjectiveValue(); string[] aux_flujos = new String[sbml.ListReaction.Length]; for (int j = 0; j < sbml.ListReaction.Length; j++) { aux_flujos[j] = makefba.Lp.GetColPrimal(j + 1).ToString(); } int pos = 1; for (int i = 0; i < sbml.ListReaction.Length; i++)// { if (makefba.Lp.GetColPrimal(i + 1) < 9000 && makefba.Lp.GetColPrimal(i + 1) > -9000) { flujo_r = makefba.Lp.GetColPrimal(i + 1); pos = i; double viejo_low = sbml.ListReaction[i].LowerBound; // double viejo_up = sbml.ListReaction[i].UpperBound; // double nuevo_low = 0; double nuevo_up = 0; if (flujo_r == 0) { nuevo_low = 0.002; nuevo_up = 0.003; } else { nuevo_low = flujo_r * 1 / 100; nuevo_low = flujo_r - nuevo_low; nuevo_up = flujo_r * 1.1 / 100; nuevo_up = flujo_r - nuevo_up; } sbml.ListReaction[i].LowerBound = nuevo_low; // sbml.ListReaction[i].UpperBound = nuevo_up; // MakeFba makefba_shadows = new MakeFba(); makefba_shadows.Fba(sbml, Funcion_obj, pd); // double z_prima = makefba_shadows.Lp.GetObjectiveValue(); double aux = makefba_shadows.Lp.GetColPrimal(pos + 1); double shadows = (z - z_prima) / (flujo_r - makefba_shadows.Lp.GetColPrimal(pos + 1)); if (flujo_r - makefba_shadows.Lp.GetColPrimal(pos + 1) != 0) { string[] str = new string[3] { sbml.ListReaction[i].Id, aux_flujos[i], shadows.ToString() }; ListViewItem list = new ListViewItem(str); resultlist.Items[pos + 1] = list; } else { string[] str = new string[3] { sbml.ListReaction[i].Id, aux_flujos[i], "Infinito." }; ListViewItem list = new ListViewItem(str); resultlist.Items[pos + 1] = list; } sbml.ListReaction[i].LowerBound = viejo_low; sbml.ListReaction[i].UpperBound = viejo_up; } } }
private void button2_Click(object sender, EventArgs e) { if (reactionObjetiveComboBox.Text.Length > 0) { makefba = new MakeFba(); int i = 0; bool find = false; foreach (Reaction item in sbml.ListReaction) { if (item.Id == reactionObjetiveComboBox.Text) { reactionoptimize = reactionObjetiveComboBox.Text; find = true; break; } i++; } if (find) { if (radiomax.Checked) { pd = OptimisationDirection.MAXIMISE; } else { pd = OptimisationDirection.MINIMISE; } Funcion_obj = i; makefba.Fba(sbml, i, pd); double z = makefba.Lp.GetObjectiveValue(); resultlist.Items.Clear(); string[] str = new string[2] { "Z = " + reactionObjetiveComboBox.Text, z.ToString() }; ListViewItem list = new ListViewItem(str); resultlist.Items.Add(list); for (int k = 0; k < sbml.ListReaction.Length; k++) { str = new string[2] { sbml.ListReaction[k].Id, makefba.Lp.GetColPrimal(k + 1).ToString() }; list = new ListViewItem(str); resultlist.Items.Add(list); } results = true; button5.Enabled = true; button3.Enabled = true; } else { results = false; button3.Enabled = false; MessageBox.Show("This reaction not exist in the model", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show("Select the function to optimize", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }