11import pandas as pd
22import xarray as xr
3- from typing import Optional , Union , List , Dict , Any
3+ from typing import Callable , Optional , Union , List , Dict , Any
44import warnings
5+ import fsspec
56
67
78class PhenotypeDataMixin :
89 """
910 Mixin providing methods for accessing insecticide resistance phenotypic data.
1011 """
1112
13+ _fs : fsspec .AbstractFileSystem
14+ _phenotype_gcs_path_template : str
15+ sample_metadata : pd .DataFrame
16+ sample_sets : list [str ]
17+ snp_calls : Callable [..., Any ]
18+ haplotypes : Callable [..., Any ]
19+
1220 def _load_phenotype_data (
1321 self ,
14- sample_sets : List [str ],
15- insecticide : Optional [ List [ str ]] = None ,
16- dose : Optional [ List [ float ]] = None ,
17- phenotype : Optional [ List [ str ]] = None ,
22+ sample_sets : list [str ],
23+ insecticide : list [ str ] | None = None ,
24+ dose : list [ float ] | None = None ,
25+ phenotype : list [ str ] | None = None ,
1826 ) -> pd .DataFrame :
1927 """
2028 Load raw phenotypic data from GCS for given sample sets.
@@ -240,7 +248,7 @@ def phenotype_data(
240248 """
241249 # 1. Normalize sample_sets
242250 if sample_sets is None :
243- sample_sets = self .sample_sets ()
251+ sample_sets = self .sample_sets
244252 elif isinstance (sample_sets , str ):
245253 sample_sets = [sample_sets ]
246254
@@ -252,9 +260,9 @@ def phenotype_data(
252260 # 3. Load raw phenotype data
253261 df_phenotypes = self ._load_phenotype_data (
254262 sample_sets = sample_sets ,
255- insecticide = insecticide ,
256- dose = dose ,
257- phenotype = phenotype ,
263+ insecticide = [ insecticide ] if isinstance ( insecticide , str ) else insecticide ,
264+ dose = [ dose ] if isinstance ( dose , float ) else dose ,
265+ phenotype = [ phenotype ] if isinstance ( phenotype , str ) else phenotype ,
258266 )
259267
260268 # 4. Get metadata for those samples
@@ -344,6 +352,8 @@ def phenotypes(
344352 max_cohort_size = max_cohort_size ,
345353 )
346354
355+ print (f"snp_calls is callable? { callable (self .snp_calls )} " )
356+ print (f"haplotypes is callable? { callable (self .haplotypes )} " )
347357 # 2. Optionally load variant data if region is specified
348358 variant_data = None
349359 if region is not None :
@@ -373,7 +383,7 @@ def phenotype_sample_sets(self) -> List[str]:
373383 """
374384 Get list of sample sets that have phenotypic data available.
375385 """
376- all_sample_sets = self .sample_sets ()
386+ all_sample_sets = self .sample_sets
377387 phenotype_sample_sets = []
378388 for sample_set in all_sample_sets :
379389 try :
0 commit comments