private void GoButton_Click(object sender, EventArgs e) { //merge by IPIs ProtMatrix Merged = new ProtMatrix(); //samples for (int i = 0; i < FileList.Items.Count; i++) { Merged.Samples.AddRange(PM[i].Samples); } //make a proterin list List <List <string> > ProteinsIPIs = new List <List <string> >(); if (radioButton1.Checked) { //skip proteins for (int i = 0; i < PM[0].Proteins.Count; i++) { List <string> PIPIs = PM[0].Proteins[i].IPIS; bool GlobalFlag = true; for (int j = 1; j < PM.GetLength(0); j++) { bool flag = false; foreach (Prot PS in PM[j].Proteins) { if (Cross(PIPIs, PS.IPIS)) { flag = true; break; } } GlobalFlag &= flag; } if (GlobalFlag) { ProteinsIPIs.Add(PIPIs); } } } else { //keep proteins for (int k = 0; k < PM.GetLength(0); k++) { for (int i = 0; i < PM[k].Proteins.Count; i++) { bool flag = false; foreach (List <string> PS in ProteinsIPIs) { if (Cross(PM[k].Proteins[i].IPIS, PS)) { flag = true; break; } } if (!flag) { ProteinsIPIs.Add(PM[k].Proteins[i].IPIS); } } } } //proteins for (int i = 0; i < ProteinsIPIs.Count; i++) { List <string> PL = ProteinsIPIs[i]; Prot P = null; for (int j = 0; j < PM.GetLength(0); j++) { bool flag = false; foreach (Prot PS in PM[j].Proteins) { if (Cross(PL, PS.IPIS)) { flag = true; if (P == null) { P = PS.Clone(); //leading zeroes for (int k = 0; k < j; k++) { foreach (string S in PM[k].Samples) { P.Abunds.Insert(0, 0.0); } } } else { P.Abunds.AddRange(PS.Abunds); } break; } } if (P != null && !flag) { foreach (string S in PM[j].Samples) { P.Abunds.Add(0.0); } } } if (P.Abunds.Count == Merged.Samples.Count) { //maximum zero filtering int ZeroCount = 0; for (int j = 0; j < P.Abunds.Count; j++) { ZeroCount += P.Abunds[j] == 0.0 ? 1 : 0; } if (ZeroCount < Convert.ToInt32(textBox2.Text)) { Merged.Proteins.Add(P); } } } //writing StreamWriter sw = new StreamWriter(OutFileBox.Text); //Caption sw.WriteLine(Text); sw.WriteLine("Original Fies:"); for (int i = 0; i < FileList.Items.Count; i++) { sw.WriteLine(FileList.Items[i].ToString()); } sw.WriteLine("Unique proteins has {0}; Maximum zeroes {1}.", radioButton1.Checked ? "skipped" : "kept", textBox2.Text); //Matrix Merged.Save(sw); sw.Close(); }