public AncestryDnaHierarchicalClusteringViewModel(IMatchesLoader matchesLoader, IAnonymizer anonymizer)
        {
            _matchesLoader = matchesLoader;
            _anonymizer    = anonymizer;

            SelectFileCommand = new RelayCommand(SelectFile);

            SelectCorrelationFileCommand = new RelayCommand(SelectCorrelationFile);

            ProcessSavedDataCommand = new RelayCommand(async() => await ProcessSavedDataAsync());

            MinClusterSize = Settings.Default.MinClusterSize;
            Filename       = Settings.Default.Filename;
            MinCentimorgansInSharedMatches = Settings.Default.MinCentimorgansInSharedMatches;
            MinCentimorgansToCluster       = Settings.Default.MinCentimorgansToCluster;
            MaxMatchesPerClusterFile       = Settings.Default.MaxMatchesPerClusterFile;
            MaxGrayPercentage             = Settings.Default.MaxGrayPercentage;
            FilterToGuids                 = Settings.Default.FilterToGuids;
            AncestryHostName              = Settings.Default.AncestryHostName;
            ExcludeClustersGreaterThan    = Settings.Default.ExcludeClustersGreaterThan > 0 ? Settings.Default.ExcludeClustersGreaterThan : (int?)null;
            CorrelationFilename           = Settings.Default.CorrelationFilename;
            ShowAdvancedClusteringOptions = Settings.Default.ShowAdvancedClusteringOptions;
            ClusterTypeVeryClose          = Settings.Default.ClusterTypeVeryClose;
            ClusterTypeOver20             = Settings.Default.ClusterTypeOver20;
            ClusterTypeComplete           = Settings.Default.ClusterTypeComplete;
            OpenClusterFileWhenComplete   = Settings.Default.OpenClusterFileWhenComplete;
        }
        public AncestryDnaExportViewModel(IMatchesLoader matchesLoader)
        {
            _matchesLoader = matchesLoader;

            ExportCommand = new RelayCommand(async() => await ExportAsync());

            AncestryHostName = Settings.Default.AncestryHostName;
        }
        public AncestryDnaSimilarityViewModel(IMatchesLoader matchesLoader)
        {
            _matchesLoader = matchesLoader;

            SelectFileCommand = new RelayCommand(SelectFile);

            SelectSimilarityFileCommand = new RelayCommand(SelectSimilarityFile);

            ProcessSavedDataCommand = new RelayCommand(async() => await ProcessSavedDataAsync());

            MinClusterSizeSimilarity                 = Settings.Default.MinClusterSizeSimilarity;
            FilenameSimilarity                       = Settings.Default.FilenameSimilarity;
            MinCentimorgansToCompareSimilarity       = Settings.Default.MinCentimorgansToCompareSimilarity;
            MinCentimorgansInSharedMatchesSimilarity = Settings.Default.MinCentimorgansInSharedMatchesSimilarity;
            SimilarityBasisIds                       = Settings.Default.SimilarityBasisIds;
            SimilarityFilename                       = Settings.Default.SimilarityFilename;
            ShowAdvancedSimilarityOptions            = Settings.Default.ShowAdvancedSimilarityOptions;
            OpenSimilarityFileWhenComplete           = Settings.Default.OpenSimilarityFileWhenComplete;
        }