//http://rosalind.info/problems/corr/

        public ErrorCorrectionInReads()
        {
            string[] dnaStrings = FASTAToDictionary.Convert(File.ReadAllLines(@"C:\code\dataset.txt").ToList()).Values.ToArray();

            var valid   = new List <string>();
            var invalid = new List <string>();

            foreach (string dnaString in dnaStrings)
            {
                bool   isValid = false;
                string reverse = ComplementingAStrandOfDna.ReverseCompliment(dnaString, false);

                for (int i = 0; i < valid.Count; i++)
                {
                    if (dnaString.Equals(valid[i]) || reverse.Equals(valid[i]))
                    {
                        isValid = true;
                        break;
                    }
                }

                if (isValid)
                {
                    continue;
                }

                for (int i = 0; i < invalid.Count; i++)
                {
                    if (dnaString.Equals(invalid[i]) || reverse.Equals(invalid[i]))
                    {
                        valid.Add(dnaString);
                        valid.Add(reverse);
                        invalid.RemoveAt(i);
                        isValid = true;
                        break;
                    }
                }

                if (isValid == false)
                {
                    invalid.Add(dnaString);
                }
            }

            foreach (string inv in invalid)
            {
                foreach (var val in valid)
                {
                    if (CountingPointMutations.GetHammingDistance(inv, val) == 1)
                    {
                        Console.WriteLine(inv + "->" + val);
                    }
                }
            }
        }
Beispiel #2
0
        //http://rosalind.info/problems/orf/

        public OpenReadingFrames()
        {
            var    proteins = new List <ProteinString>();
            string input    = FASTAToDictionary.Convert(File.ReadAllLines(@"C:\code\dataset.txt").ToList()).First().Value.Replace('T', 'U');

            FindProteinOpenFrames(proteins, input);
            FindProteinOpenFrames(proteins, input.Substring(1));
            FindProteinOpenFrames(proteins, input.Substring(2));

            input = ComplementingAStrandOfDna.ReverseCompliment(input, true);

            FindProteinOpenFrames(proteins, input);
            FindProteinOpenFrames(proteins, input.Substring(1));
            FindProteinOpenFrames(proteins, input.Substring(2));

            proteins.Select(p => p.Protein).Distinct().ToList().ForEach(p => Console.WriteLine(p));
        }
        //http://rosalind.info/problems/dbru/

        public ConstructingADeBruijnGraph()
        {
            string[] inputList = File.ReadAllLines(@"C:\code\dataset.txt");
            var      dnaList   = new List <string>(inputList);

            foreach (var item in inputList)
            {
                dnaList.Add(ComplementingAStrandOfDna.ReverseCompliment(item, false));
            }

            dnaList = dnaList.Distinct().ToList();

            foreach (var item in dnaList)
            {
                Console.WriteLine(string.Format("({0}, {1})", item.Substring(0, item.Length - 1), item.Substring(1, item.Length - 1)));
            }
        }
Beispiel #4
0
        //http://rosalind.info/problems/revp/

        public LocatingRestrictionSites()
        {
            string input    = FASTAToDictionary.Convert(File.ReadAllLines(@"C:\code\dataset.txt").ToList()).First().Value;
            string reversed = ComplementingAStrandOfDna.ReverseCompliment(input, false);

            for (int i = 0; i < input.Length - 3; i++)
            {
                for (int j = 4; j <= 12; j++)
                {
                    if (i + j > input.Length)
                    {
                        break;
                    }

                    if (input.Substring(i, j).Equals(reversed.Substring(input.Length - (i + j), j)))
                    {
                        Console.WriteLine(i + 1 + " " + j);
                    }
                }
            }
        }