@@ -4800,7 +4800,9 @@ def get_samples(self, population_id=None):
4800
4800
# Deprecated alias for samples()
4801
4801
return self .samples (population_id )
4802
4802
4803
- def samples (self , population = None , population_id = None ):
4803
+ def samples (
4804
+ self , population = None , population_id = None , max_time = None , min_time = None
4805
+ ):
4804
4806
"""
4805
4807
Returns an array of the sample node IDs in this tree sequence. If the
4806
4808
``population`` parameter is specified, only return sample IDs from that
@@ -4820,10 +4822,17 @@ def samples(self, population=None, population_id=None):
4820
4822
if population_id is not None :
4821
4823
population = population_id
4822
4824
samples = self ._ll_tree_sequence .get_samples ()
4825
+ keep = np .full (shape = samples .shape , fill_value = True )
4823
4826
if population is not None :
4824
4827
sample_population = self .tables .nodes .population [samples ]
4825
- samples = samples [sample_population == population ]
4826
- return samples
4828
+ keep = np .logical_and (keep , sample_population == population )
4829
+ if max_time is not None :
4830
+ sample_times = self .tables .nodes .time [samples ]
4831
+ keep = np .logical_and (keep , sample_times <= max_time )
4832
+ if min_time is not None :
4833
+ sample_times = self .tables .nodes .time [samples ]
4834
+ keep = np .logical_and (keep , sample_times >= min_time )
4835
+ return samples [keep ]
4827
4836
4828
4837
def write_fasta (self , output , sequence_ids = None , wrap_width = 60 ):
4829
4838
""
0 commit comments