@@ -365,24 +365,43 @@ def _njt(
365365 from scipy .spatial .distance import squareform # type: ignore
366366
367367 # Compute pairwise distances.
368- dist , samples , n_snps = self .biallelic_diplotype_pairwise_distances (
369- region = region ,
370- n_snps = n_snps ,
371- metric = metric ,
372- sample_sets = sample_sets ,
373- sample_indices = sample_indices ,
374- site_mask = site_mask ,
375- site_class = site_class ,
376- inline_array = inline_array ,
377- chunks = chunks ,
378- cohort_size = cohort_size ,
379- min_cohort_size = min_cohort_size ,
380- max_cohort_size = max_cohort_size ,
381- random_seed = random_seed ,
382- max_missing_an = max_missing_an ,
383- min_minor_ac = min_minor_ac ,
384- thin_offset = thin_offset ,
385- )
368+ try :
369+ dist , samples , n_snps_used = self .biallelic_diplotype_pairwise_distances (
370+ region = region ,
371+ n_snps = n_snps ,
372+ metric = metric ,
373+ sample_sets = sample_sets ,
374+ sample_indices = sample_indices ,
375+ site_mask = site_mask ,
376+ site_class = site_class ,
377+ inline_array = inline_array ,
378+ chunks = chunks ,
379+ cohort_size = cohort_size ,
380+ min_cohort_size = min_cohort_size ,
381+ max_cohort_size = max_cohort_size ,
382+ random_seed = random_seed ,
383+ max_missing_an = max_missing_an ,
384+ min_minor_ac = min_minor_ac ,
385+ thin_offset = thin_offset ,
386+ )
387+
388+ except ValueError as e :
389+ raise ValueError (
390+ f"Unable to construct neighbour-joining tree. { e } "
391+ f"This could be because the selected region does not "
392+ f"contain enough polymorphic SNPs for the given sample "
393+ f"sets and query parameters."
394+ ) from e
395+
396+ # Validate enough samples for a tree.
397+ n_samples = len (samples )
398+ if n_samples < 3 :
399+ raise ValueError (
400+ f"Not enough samples to construct a neighbour-joining tree. "
401+ f"A minimum of 3 samples is required, but only { n_samples } "
402+ f"were found for the given region and sample sets."
403+ )
404+
386405 D = squareform (dist )
387406
388407 # anjl supports passing in a progress bar function to get progress on the
0 commit comments