@@ -463,6 +463,73 @@ def test_allele_frequencies_with_str_cohorts_and_sample_query(
463463 )
464464
465465
466+ @parametrize_with_cases ("fixture,api" , cases = "." )
467+ def test_allele_frequencies_with_str_cohorts_and_sample_query_options (
468+ fixture ,
469+ api : AnophelesSnpFrequencyAnalysis ,
470+ ):
471+ # Pick test parameters at random.
472+ sample_sets = None
473+ site_mask = random .choice (api .site_mask_ids + (None ,))
474+ min_cohort_size = 0
475+ transcript = random_transcript (api = api )
476+ cohorts = random .choice (
477+ ["admin1_year" , "admin1_month" , "admin2_year" , "admin2_month" ]
478+ )
479+ df_samples = api .sample_metadata (sample_sets = sample_sets )
480+ countries = df_samples ["country" ].unique ().tolist ()
481+ countries_list = random .sample (countries , 2 )
482+ sample_query_options = {
483+ "local_dict" : {
484+ "countries_list" : countries_list ,
485+ }
486+ }
487+ sample_query = "country in @countries_list"
488+
489+ # Figure out expected cohort labels.
490+ df_samples = api .sample_metadata (
491+ sample_sets = sample_sets ,
492+ sample_query = sample_query ,
493+ sample_query_options = sample_query_options ,
494+ )
495+ cohort_column = "cohort_" + cohorts
496+ cohort_counts = df_samples [cohort_column ].value_counts ()
497+ cohort_labels = cohort_counts [cohort_counts >= min_cohort_size ].index .to_list ()
498+
499+ # Set up call params.
500+ params = dict (
501+ transcript = transcript .name ,
502+ cohorts = cohorts ,
503+ min_cohort_size = min_cohort_size ,
504+ site_mask = site_mask ,
505+ sample_sets = sample_sets ,
506+ sample_query = sample_query ,
507+ sample_query_options = sample_query_options ,
508+ drop_invariant = True ,
509+ )
510+
511+ # Run the function under test.
512+ df_snp = api .snp_allele_frequencies (** params )
513+
514+ # Standard checks.
515+ check_snp_allele_frequencies (
516+ api = api ,
517+ df = df_snp ,
518+ cohort_labels = cohort_labels ,
519+ transcript = transcript ,
520+ )
521+
522+ # Run the function under test.
523+ df_aa = api .aa_allele_frequencies (** params )
524+
525+ # Standard checks.
526+ check_aa_allele_frequencies (
527+ df = df_aa ,
528+ cohort_labels = cohort_labels ,
529+ transcript = transcript ,
530+ )
531+
532+
466533@parametrize_with_cases ("fixture,api" , cases = "." )
467534def test_allele_frequencies_with_dict_cohorts (
468535 fixture , api : AnophelesSnpFrequencyAnalysis
0 commit comments