1import os 2import unittest 3 4from ont_fast5_api.fast5_file import Fast5File 5from ont_fast5_api.fast5_interface import get_fast5_file, check_file_type, MULTI_READ, SINGLE_READ 6from ont_fast5_api.multi_fast5 import MultiFast5File 7from test.helpers import test_data 8 9 10 11class TestFast5Interface(unittest.TestCase): 12 13 def test_correct_type(self): 14 single_read_path = os.path.join(test_data, "single_reads", "read0.fast5") 15 single_read_id = Fast5File(single_read_path).get_read_id() 16 with get_fast5_file(single_read_path) as f5: 17 self.assertTrue(isinstance(f5, Fast5File)) 18 self.assertEqual(check_file_type(f5), SINGLE_READ) 19 self.assertEqual(len(f5.get_read_ids()), 1) 20 self.assertEqual(single_read_id, f5.get_read_ids()[0]) 21 self.get_raw(f5) 22 23 multi_read_path = os.path.join(test_data, "multi_read", "batch_0.fast5") 24 with get_fast5_file(multi_read_path) as f5: 25 self.assertTrue(isinstance(f5, MultiFast5File)) 26 self.assertEqual(check_file_type(f5), MULTI_READ) 27 self.assertTrue(len(f5.get_read_ids()) >= 1) 28 self.get_raw(f5) 29 30 def get_raw(self, f5): 31 # Test we can get raw data using the same method for single and multi 32 raw_data = f5.get_read(f5.get_read_ids()[0]).get_raw_data() 33 self.assertTrue(len(raw_data) >= 0) 34