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