@@ -1085,11 +1085,11 @@ def snp_calls(
10851085 del site_mask
10861086
10871087 # Convert lists to tuples to avoid CacheMiss "TypeError: unhashable type: 'list'".
1088- prepared_regions_tuple : Tuple [ Region , ...] = tuple (prepared_regions )
1089- prepared_sample_sets_tuple : Optional [Tuple [ str , ...] ] = (
1088+ prepared_regions_tuple : base_params . regions_tuple = tuple (prepared_regions )
1089+ prepared_sample_sets_tuple : Optional [base_params . sample_sets_tuple ] = (
10901090 tuple (prepared_sample_sets ) if prepared_sample_sets is not None else None
10911091 )
1092- prepared_sample_indices_tuple : Optional [Tuple [ int , ...] ] = (
1092+ prepared_sample_indices_tuple : Optional [base_params . sample_indices_tuple ] = (
10931093 tuple (prepared_sample_indices )
10941094 if prepared_sample_indices is not None
10951095 else None
@@ -1125,6 +1125,7 @@ def _raw_snp_calls(
11251125 lx = []
11261126 for r in regions :
11271127 ly = []
1128+ assert sample_sets is not None
11281129 for s in sample_sets :
11291130 y = self ._snp_calls_for_contig (
11301131 contig = r .contig ,
@@ -1405,6 +1406,15 @@ def snp_allele_counts(
14051406 sample_query_options = sample_query_options ,
14061407 sample_indices = sample_indices ,
14071408 )
1409+ # Convert lists to tuples to avoid CacheMiss "TypeError: unhashable type: 'list'".
1410+ sample_sets_prepped_tuple : Optional [base_params .sample_sets_tuple ] = (
1411+ tuple (sample_sets_prepped ) if sample_sets_prepped is not None else None
1412+ )
1413+ sample_indices_prepped_tuple : Optional [base_params .sample_indices_tuple ] = (
1414+ tuple (sample_indices_prepped )
1415+ if sample_indices_prepped is not None
1416+ else None
1417+ )
14081418 del sample_sets
14091419 del sample_query
14101420 del sample_query_options
@@ -1415,8 +1425,8 @@ def snp_allele_counts(
14151425 del site_mask
14161426 params = dict (
14171427 region = region_prepped ,
1418- sample_sets = sample_sets_prepped ,
1419- sample_indices = sample_indices_prepped ,
1428+ sample_sets = sample_sets_prepped_tuple ,
1429+ sample_indices = sample_indices_prepped_tuple ,
14201430 site_mask = site_mask_prepped ,
14211431 site_class = site_class ,
14221432 cohort_size = cohort_size ,
@@ -1430,7 +1440,17 @@ def snp_allele_counts(
14301440
14311441 except CacheMiss :
14321442 results = self ._snp_allele_counts (
1433- ** params , inline_array = inline_array , chunks = chunks
1443+ inline_array = inline_array ,
1444+ chunks = chunks ,
1445+ region = region_prepped ,
1446+ sample_sets = sample_sets_prepped_tuple ,
1447+ sample_indices = sample_indices_prepped_tuple ,
1448+ site_mask = site_mask_prepped ,
1449+ site_class = site_class ,
1450+ cohort_size = cohort_size ,
1451+ min_cohort_size = min_cohort_size ,
1452+ max_cohort_size = max_cohort_size ,
1453+ random_seed = random_seed ,
14341454 )
14351455 self .results_cache_set (name = name , params = params , results = results )
14361456
@@ -1967,6 +1987,16 @@ def biallelic_diplotypes(
19671987 prepared_region = self ._prep_region_cache_param (region = region )
19681988 prepared_site_mask = self ._prep_optional_site_mask_param (site_mask = site_mask )
19691989
1990+ # Convert lists to tuples to avoid CacheMiss "TypeError: unhashable type: 'list'".
1991+ prepared_sample_sets_tuple : Optional [base_params .sample_sets_tuple ] = (
1992+ tuple (prepared_sample_sets ) if prepared_sample_sets is not None else None
1993+ )
1994+ prepared_sample_indices_tuple : Optional [base_params .sample_indices_tuple ] = (
1995+ tuple (prepared_sample_indices )
1996+ if prepared_sample_indices is not None
1997+ else None
1998+ )
1999+
19702000 # Delete original parameters to prevent accidental use.
19712001 del sample_sets
19722002 del sample_query
@@ -1979,8 +2009,8 @@ def biallelic_diplotypes(
19792009 region = prepared_region ,
19802010 n_snps = n_snps ,
19812011 thin_offset = thin_offset ,
1982- sample_sets = prepared_sample_sets ,
1983- sample_indices = prepared_sample_indices ,
2012+ sample_sets = prepared_sample_sets_tuple ,
2013+ sample_indices = prepared_sample_indices_tuple ,
19842014 site_mask = prepared_site_mask ,
19852015 site_class = site_class ,
19862016 cohort_size = cohort_size ,
@@ -1997,7 +2027,21 @@ def biallelic_diplotypes(
19972027
19982028 except CacheMiss :
19992029 results = self ._biallelic_diplotypes (
2000- inline_array = inline_array , chunks = chunks , ** params
2030+ inline_array = inline_array ,
2031+ chunks = chunks ,
2032+ region = prepared_region ,
2033+ sample_sets = prepared_sample_sets_tuple ,
2034+ sample_indices = prepared_sample_indices_tuple ,
2035+ site_mask = prepared_site_mask ,
2036+ site_class = site_class ,
2037+ cohort_size = cohort_size ,
2038+ min_cohort_size = min_cohort_size ,
2039+ max_cohort_size = max_cohort_size ,
2040+ random_seed = random_seed ,
2041+ n_snps = n_snps ,
2042+ thin_offset = thin_offset ,
2043+ min_minor_ac = min_minor_ac ,
2044+ max_missing_an = max_missing_an ,
20012045 )
20022046 self .results_cache_set (name = name , params = params , results = results )
20032047
@@ -2011,9 +2055,9 @@ def _biallelic_diplotypes(
20112055 self ,
20122056 * ,
20132057 region : Union [dict , List [dict ]],
2014- sample_sets : Optional [Tuple [ str , ...] ],
2015- sample_indices : Optional [Tuple [ int , ...] ],
2016- site_mask : Optional [str ],
2058+ sample_sets : Optional [base_params . sample_sets_tuple ],
2059+ sample_indices : Optional [base_params . sample_indices_tuple ],
2060+ site_mask : Optional [base_params . site_mask ],
20172061 site_class : Optional [base_params .site_class ],
20182062 cohort_size : Optional [base_params .cohort_size ],
20192063 min_cohort_size : Optional [base_params .min_cohort_size ],
0 commit comments