Example #1
0
        public TrinucCalculation Calc()
        {
            TrinucCalculation tri         = new TrinucCalculation();
            TrinucArray       trinucArray = new TrinucArray();
            string            seqTrinuc   = string.Empty;
            int trinucIndex = 0;
            int firstFrame  = 0;
            int secondFrame = 0;
            int thirdFrame  = 0;

            string seqCalc = seq + seq.Substring(0, 6);

            for (int i = 0; i < seq.Length; i += 3)
            {
                seqTrinuc   = seqCalc.Substring(i, 3);
                trinucIndex = Array.FindIndex(trinucArray.trinuc, item => item == seqTrinuc);
                tri.trinucleotides[trinucIndex].Trinuc1st += 1;
                firstFrame += 1;
            }

            for (int i = 1; i < seq.Length + 1; i += 3)
            {
                seqTrinuc   = seqCalc.Substring(i, 3);
                trinucIndex = Array.FindIndex(trinucArray.trinuc, item => item == seqTrinuc);
                tri.trinucleotides[trinucIndex].Trinuc2nd += 1;
                secondFrame += 1;
            }

            for (int i = 2; i < seq.Length + 2; i += 3)
            {
                seqTrinuc   = seqCalc.Substring(i, 3);
                trinucIndex = Array.FindIndex(trinucArray.trinuc, item => item == seqTrinuc);
                tri.trinucleotides[trinucIndex].Trinuc3rd += 1;
                thirdFrame += 1;
            }

            foreach (var item in tri.trinucleotides)
            {
                item.TrinucFrq1st = (double)item.Trinuc1st / (double)firstFrame;
                item.TrinucFrq2nd = (double)item.Trinuc2nd / (double)secondFrame;
                item.TrinucFrq3rd = (double)item.Trinuc3rd / (double)thirdFrame;
            }

            foreach (var item in tri.trinucleotides)
            {
                item.TrinucDiff1st2nd = Math.Abs(item.TrinucFrq1st - item.TrinucFrq2nd);
                item.TrinucDiff2nd3rd = Math.Abs(item.TrinucFrq2nd - item.TrinucFrq3rd);
                item.TrinucDiff1st3rd = Math.Abs(item.TrinucFrq1st - item.TrinucFrq3rd);
            }

            foreach (var item in tri.trinucleotides)
            {
                item.TrinucDiffSum = item.TrinucDiff1st2nd + item.TrinucDiff2nd3rd + item.TrinucDiff1st3rd;
            }

            //TrinucOutput trinucOutput = new TrinucOutput(seq, trinucleotide);
            //trinucOutput.TrinucOut();
            return(tri);
        }
Example #2
0
        public static void Main(string[] args)
        {
            Console.WriteLine("CDS search using trinuc frequencies in three frames.");

            TrinucCalculation trinucCalculation = new TrinucCalculation();

            string FASTAfileName = @"/home/alvydas/Sequencies/Bacteria/Escherichia.coli.fasta";

            int           seqLength     = 3000;
            int           stepLength    = 10;
            int           fragmentLengt = 100;
            List <double> fragTrinucFrq = new List <double>();

            string seq = string.Empty;

            using (StreamReader streamReader = new StreamReader(FASTAfileName))
            {
                seq = streamReader.ReadToEnd().ToLower().Replace("\n", string.Empty);
            }

            string fragSeq = seq.Substring(0, seqLength);

            for (int i = 0; i < fragSeq.Length - fragmentLengt + stepLength; i += stepLength)
            {
                string frag = fragSeq.Substring(i, fragmentLengt);
                //Console.WriteLine(frag);
                TriCalc triCalc = new TriCalc(frag);
                var     tri     = triCalc.Calc();

                double sum = 0;
                foreach (var item in tri.trinucleotides)
                {
                    sum += item.TrinucDiffSum;
                }

                fragTrinucFrq.Add(sum);
                Console.WriteLine(i + "\t" + sum);
            }
        }
Example #3
0
        public TrinucDiff Calculation(string seqType, string seq)
        {
            TrinucCalculation trinucCalculation = new TrinucCalculation();
            TrinucDiff        trinucDiff        = new TrinucDiff();
            int    trinucCount = 0;
            string seqCalc     = "nnn" + seq + seq.Substring(0, 9);
            string oligoFrag   = string.Empty;

            for (int i = 0; i < seqCalc.Length - 9; i++)
            {
                oligoFrag = seqCalc.Substring(i, 3);

                if (Array.IndexOf(trinucArray.trinuc, oligoFrag) < 0)
                {
                    trinucleotideMatch.Add(new TrinucleotideMatch {
                        TrinucPosition = i, TrinucMatch = oligoFrag
                    });
                    continue;
                }

                if (i % 3 == 0)
                {
                    var index = Array.FindIndex(trinucCalculation.trinucleotides, row => row.Trinuc == oligoFrag);
                    trinucCalculation.trinucleotides [index].Trinuc1st += 1;
                    trinucCount += 1;
                }
                else if ((i - 1) % 3 == 0)
                {
                    var index = Array.FindIndex(trinucCalculation.trinucleotides, row => row.Trinuc == oligoFrag);
                    trinucCalculation.trinucleotides [index].Trinuc2nd += 1;
                }
                else if ((i - 2) % 3 == 0)
                {
                    var index = Array.FindIndex(trinucCalculation.trinucleotides, row => row.Trinuc == oligoFrag);
                    trinucCalculation.trinucleotides [index].Trinuc3rd += 1;
                }
            }

            trinucDiff.SeqType = seqType;

            foreach (var item in trinucCalculation.trinucleotides)
            {
                item.TrinucFrq1st = ( double )item.Trinuc1st / trinucCount;
                item.TrinucFrq2nd = ( double )item.Trinuc2nd / trinucCount;
                item.TrinucFrq3rd = ( double )item.Trinuc3rd / trinucCount;

                item.TrinucFrqDiff1st2nd = Math.Abs(item.TrinucFrq1st - item.TrinucFrq2nd);
                item.TrinucFrqDiff1st3rd = Math.Abs(item.TrinucFrq1st - item.TrinucFrq3rd);
                item.TrinucFrqDiff2nd3rd = Math.Abs(item.TrinucFrq2nd - item.TrinucFrq3rd);
            }

            foreach (var item in trinucCalculation.trinucleotides)
            {
                trinucDiff.DiffSum1st2nd += item.TrinucFrqDiff1st2nd;
                trinucDiff.DiffSum1st3rd += item.TrinucFrqDiff1st3rd;
                trinucDiff.DiffSum2nd3rd += item.TrinucFrqDiff2nd3rd;
            }

            trinucDiff.DiffSum = trinucDiff.DiffSum1st2nd + trinucDiff.DiffSum1st3rd + trinucDiff.DiffSum2nd3rd;

            return(trinucDiff);
        }