示例#1
0
        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);
                }
            }
        }
示例#2
0
        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);
            }
        }