override public void ThreadProc(Object stateInfo)
        {
            int i, j;

            i = (stateInfo as QAlInfo).i;
            j = (stateInfo as QAlInfo).j;
            QAlignment Align = new QAlignment(Peptides, Proteins, i, j);

            Align.Run();
            Align.Proteins.Sort(new ProteinPair.byIPI());
            Align.Peptides.Sort(new PeptidePair.bySet());
            //копирование итоговых значений в итоговые массивы
            for (int k = 0; k < Peptides.Count; k++)
            {
                PeptidePair PP = Align.Peptides[k];
                if (PP.Ratio == 0.0)
                {
                    PeptideRatios[i, j][k] = 0.0;
                }
                else
                {
                    PeptideRatios[i, j][k] = PP.Ratio;
                }
            }
            for (int k = 0; k < Proteins.Count; k++)
            {
                ProteinPair PP = Align.Proteins[k];
                ProteinMedians[i, j, k] = PP.Median;
                ProteinSlopes[i, j, k]  = PP.Slope;
                ProteinDeltas[i, j, k]  = PP.SlopeDelta;
            }
            lock (ForCountLock){
                Count++;
            }
        }
 public RefAligner(List <QPeptide> Peptides, List <QProtein> Proteins, int FileCount, int RefNumber)
 {
     AlList         = new List <Object>();
     AlLine         = new QAlignment[FileCount];
     this.FileCount = FileCount;
     this.RefNumber = RefNumber;
     for (int i = 0; i < FileCount; i++)
     {
         AlLine[i] = new QAlignment(Peptides, Proteins, i, RefNumber);
         AlList.Add(AlLine[i]);
     }
 }
        public override ProteinPair GetProtPair(QProtein Prot, int Left, int Right)
        {
            if (Right != RefNumber || Left > FileCount - 1)
            {
                return(null);
            }
            QAlignment TargetAl = AlLine[Left];

            for (int i = 0; i < TargetAl.Proteins.Count; i++)
            {
                if (TargetAl.Proteins[i].Protein == Prot)
                {
                    return(TargetAl.Proteins[i]);
                }
            }
            return(null);
        }
        public override PeptidePair GetPeptPair(QPeptide Pept, int Left, int Right)
        {
            if (Right != RefNumber || Left > FileCount - 1)
            {
                return(null);
            }
            QAlignment TargetAl = AlLine[Left];

            for (int i = 0; i < TargetAl.Peptides.Count; i++)
            {
                if (TargetAl.Peptides[i].Peptide == Pept)
                {
                    return(TargetAl.Peptides[i]);
                }
            }
            return(null);
        }