private static void Run(Options options) { if (!ValidateOptions(options)) { _printHelp = true; return; } string sequence1 = File.ReadAllText(options.Sequence1Path); string sequence2 = File.ReadAllText(options.Sequence2Path); int[,] similiarityMatrix = null; if (!string.IsNullOrWhiteSpace(options.SimiliarityMatrixPath)) { similiarityMatrix = GetMatrix(options.SimiliarityMatrixPath, 5); } DNAMatcher matcher = new DNAMatcher(sequence1, sequence2, similiarityMatrix, options.PenaltyFunctionEnabled); matcher.Verbose = options.Verbose; string[] matching; if (options.Verbose) { Console.WriteLine("Input sequences:"); Console.WriteLine(sequence1); Console.WriteLine(sequence2); Console.WriteLine(); } if (similiarityMatrix != null) { if (options.PenaltyFunctionEnabled) { int similiarity = matcher.ComputeSimiliarityWithPenalty(out matching); Console.WriteLine($"Optimal global similiarity (with penalty function): {similiarity}\n"); PrintMatching(matching); } else { int similiarity = matcher.Hirschberg(out matching); Console.WriteLine($"Optimal global similiarity (Hirschberg): {similiarity}\n"); PrintMatching(matching); } } }
private static void Run(Options options) { if (!ValidateOptions(options)) { _printHelp = true; return; } string sequence1 = File.ReadAllText(options.Sequence1Path); string sequence2 = File.ReadAllText(options.Sequence2Path); int[,] distanceMatrix = null; int[,] similiarityMatrix = null; IMatcher matcher; if (options.IsRNA) { if (!string.IsNullOrWhiteSpace(options.DistanceMatrixPath)) { distanceMatrix = GetMatrix(options.DistanceMatrixPath, 21); } if (!string.IsNullOrWhiteSpace(options.SimiliarityMatrixPath)) { similiarityMatrix = GetMatrix(options.SimiliarityMatrixPath, 21); } matcher = new RNAMatcher(sequence1, sequence2, distanceMatrix, similiarityMatrix); } else { if (!string.IsNullOrWhiteSpace(options.DistanceMatrixPath)) { distanceMatrix = GetMatrix(options.DistanceMatrixPath, 5); } if (!string.IsNullOrWhiteSpace(options.SimiliarityMatrixPath)) { similiarityMatrix = GetMatrix(options.SimiliarityMatrixPath, 5); } matcher = new DNAMatcher(sequence1, sequence2, distanceMatrix, similiarityMatrix); } matcher.Verbose = options.Verbose; string[] matching; if (options.Verbose) { Console.WriteLine("Input sequences:"); Console.WriteLine(sequence1); Console.WriteLine(sequence2); Console.WriteLine(); } if (distanceMatrix != null) { int editDistance = matcher.ComputeEditDistance(out matching); Console.WriteLine($"Optimal edit distance: {editDistance}\n"); PrintMatching(matching); } if (similiarityMatrix != null) { int similiarity = matcher.ComputeSimiliarity(out matching); Console.WriteLine($"Optimal global similiarity: {similiarity}\n"); PrintMatching(matching); int localSimiliarity = matcher.ComputeLocalSimiliarity(out matching); Console.WriteLine($"Optimal local similiarity: {localSimiliarity}\n"); PrintMatching(matching); } }