public string GetString(int MatchNumber,int RefMatchNumber /* if no refs =-1 */)
        {
            ProteinPair Pair;
            if (Aligner != null) {
                Pair = Aligner.GetProtPair(this, MatchNumber, RefMatchNumber);
            }else{
                Pair = new ProteinPair();
                //чего можем то заполним
                for (int i = 0 ; i < Peptides.Count ; i++){
                    if (Peptides[i].Matches[MatchNumber] != null){
                        Pair.LeftScore += Peptides[i].Matches[MatchNumber].Score;
                        Pair.NCount++;
                    }
                }
                Pair.RightScore = Pair.LeftScore;
            }

            string Res =
                ((ReportString[0]!='1')?"":String.Format("\"{0}\"\t",ipi))+
                ((ReportString[1]!='1')?"":String.Format("{0:f4}\t",Pair.LeftScore))+
                ((ReportString[2]!='1')?"":String.Format("{0:f4}\t",Pair.RightScore))+
                ((ReportString[3]!='1')?"":String.Format("\"{0}\"\t",Desc))+
                ((ReportString[4]!='1')?"":(Utils.IPIListtoString(ipis))+"\t")+
                ((ReportString[5]!='1')?"":String.Format("{0}\t",Peptides.Count))+
                ((ReportString[6]!='1')?"":String.Format("{0}\t",Pair.NCount))+
                ((ReportString[7]!='1')?"":String.Format("{0:f4}\t",Pair.RSquare))+
                ((ReportString[8]!='1')?"":String.Format("{0:f4}\t",Pair.Slope))+
                ((ReportString[9]!='1')?"":String.Format("{0:f4}\t",Pair.Median))+
                ((ReportString[10]!='1')?"":String.Format("{0:f4}\t",Pair.PrAverage))+
                ((ReportString[11]!='1')?"":String.Format("{0:f4}\t",Pair.MinInterval))+
                ((ReportString[12]!='1')?"":String.Format("{0:f4}\t",Pair.MaxInterval))+
                ((ReportString[13]!='1')?"":String.Format("{0:e4}",Pair.PValue));
            return Res;
        }
        public string GetSheetString(int RefNumber)
        {
            ProteinPair Pair;
            if (Aligner != null) {
                Pair = Aligner.GetProtPair(this, RefNumber, RefNumber);
            }else{
                Pair = new ProteinPair();
                Pair.RightScore = 0.0;
            }

            string Res =
                ((SheetReportString[0]!='1')?"":String.Format("{0}\t",ipi))+
                ((SheetReportString[1]!='1')?"":String.Format("{0:f2}\t",Pair.RightScore))+
                ((SheetReportString[2]!='1')?"":String.Format("{0}\t",Desc))+
                ((SheetReportString[3]!='1')?"":(Utils.IPIListtoString(ipis))+"\t")+
                ((SheetReportString[4]!='1')?"":String.Format("{0}\t",Peptides.Count));

            for (int i = 0 ; i < FileList.Count ; i++){
                if (Aligner != null){
                    Pair = Aligner.GetProtPair(this, i, RefNumber);
                }else{
                    break;
                }
                Res = Res +
                    ((SheetReportString[5]!='1')?"":String.Format("{0:f5}\t",Pair.Median))+
                    ((SheetReportString[6]!='1')?"":String.Format("{0:f5}\t",Pair.Slope))+
                    ((SheetReportString[7]!='1')?"":String.Format("{0:f5}\t",Pair.PrAverage))+
                    ((SheetReportString[8]!='1')?"":String.Format("{0:f5}\t",Pair.MinInterval))+
                    ((SheetReportString[9]!='1')?"":String.Format("{0:f5}\t",Pair.MaxInterval))+
                    ((SheetReportString[10]!='1')?"":String.Format("{0:f5}\t",Pair.RSquare));
            }

            double[] RawScores = new double[FileList.Count];
            if (SheetReportString[12]=='1' || SheetReportString[1]=='1'){
                for (int i = 0 ; i < FileList.Count ; i++){
                    for (int j = 0 ; j<Peptides.Count ; j++){
                        if (Peptides[j].Matches[i] != null &&
                            Peptides[j].Matches[i].Score > 0.0){
                            if (RefNumber <0 || Peptides[j].Matches[RefNumber] != null){
                                RawScores[i] += Peptides[j].Matches[i].Score;
                            }
                        }
                    }
                }
            }

            //ppm's
            if (SheetReportString[12]=='1'){
                Res += "\t";
                for (int i = 0 ; i < FileList.Count ; i++){
                    double PPM = (RawScores[i] / FileFactors[i]) * 1000000.0;
                    Res += String.Format("{0:f5}\t",PPM);
                }
            }

            //Raw values
            if (SheetReportString[13]=='1'){
                Res += "\t";
                for (int i = 0 ; i < FileList.Count ; i++){
                    Res += String.Format("{0:f5}\t",RawScores[i]);
                }
            }

            return Res;
        }