//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); } } } }
//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))); } }
//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); } } } }