@@ -366,6 +366,26 @@ def test_gap_handling_v563(self):
366366 # self.assertEqual(len(block.channel_indexes[-1].units[0].spiketrains), n_gaps + 1)
367367
368368
369+ class TestMultiSamplingRates (CommonNeuralynxIOTest , unittest .TestCase ):
370+ def test_multi_sampling_rates (self ):
371+ # Test Cheetah 6.4.1, with different sampling rates across ncs files.
372+ nio = NeuralynxIO (self .get_local_path ('neuralynx/Cheetah_v6.4.1dev/original_data' ))
373+ block = nio .read_block ()
374+
375+ self .assertEqual (len (block .segments ), 1 )
376+ seg = block .segments [0 ]
377+ self .assertEqual (len (seg .analogsignals ), 3 )
378+ self .assertEqual (len (np .unique ([sig .sampling_rate for sig in seg .analogsignals ])), 3 )
379+
380+ # check if the sampling rate of analogsignals are correct
381+ expected_rates = [2 , 2.66667 , 32 ] * pq .kHz
382+ for sig in block .segments [0 ].analogsignals :
383+ observed_rate = sig .sampling_rate .rescale (expected_rates .units )
384+ # using isclose for flexible float comparison
385+ self .assertTrue (any ([np .isclose (observed_rate , exp_rate )]) for
386+ exp_rate in expected_rates )
387+
388+
369389def compare_neo_content (bl1 , bl2 ):
370390 print ('*' * 5 , 'Comparison of blocks' , '*' * 5 )
371391 object_types_to_test = [Segment , AnalogSignal ,
0 commit comments