def test_channels(channels): db = audb.load( DB_NAME, channels=channels, full_path=False, num_workers=pytest.NUM_WORKERS, verbose=False, ) original_files = db['files']['original'].get() df = audb.cached() for converted_file, original_file in zip(db.files, original_files): converted_file = os.path.join(db.meta['audb']['root'], converted_file) original_file = os.path.join(DB_ROOT, original_file) if channels is None: assert audiofile.channels(converted_file) == \ audiofile.channels(original_file) assert df['channels'].values[0] == channels elif isinstance(channels, int): assert audiofile.channels(converted_file) == 1 assert df['channels'].values[0] == [1] else: assert audiofile.channels(converted_file) == len(channels)
def test_format(format): db = audb.load( DB_NAME, format=format, full_path=False, num_workers=pytest.NUM_WORKERS, verbose=False, ) original_files = db['files']['original'].get() df = audb.cached() assert df['format'].values[0] == format for converted_file, original_file in zip(db.files, original_files): converted_file = os.path.join(db.meta['audb']['root'], converted_file) original_file = os.path.join(DB_ROOT, original_file) if format is None: assert converted_file[-4:] == original_file[-4:] else: assert converted_file.endswith(format)
def test_sampling_rate(sampling_rate): db = audb.load( DB_NAME, sampling_rate=sampling_rate, full_path=False, num_workers=pytest.NUM_WORKERS, verbose=False, ) original_files = db['files']['original'].get() df = audb.cached() assert df['sampling_rate'].values[0] == sampling_rate for converted_file, original_file in zip(db.files, original_files): converted_file = os.path.join(db.meta['audb']['root'], converted_file) original_file = os.path.join(DB_ROOT, original_file) if sampling_rate is None: assert audiofile.sampling_rate(converted_file) == \ audiofile.sampling_rate(original_file) else: assert audiofile.sampling_rate(converted_file) == sampling_rate
def test_mixdown(mixdown): db = audb.load( DB_NAME, mixdown=mixdown, full_path=False, num_workers=pytest.NUM_WORKERS, verbose=False, ) original_files = db['files']['original'].get() df = audb.cached() assert df['mixdown'].values[0] == mixdown for converted_file, original_file in zip(db.files, original_files): converted_file = os.path.join(db.meta['audb']['root'], converted_file) original_file = os.path.join(DB_ROOT, original_file) if mixdown: assert audiofile.channels(converted_file) == 1 else: assert audiofile.channels(converted_file) == \ audiofile.channels(original_file)
def test_bit_depth(bit_depth): db = audb.load( DB_NAME, bit_depth=bit_depth, full_path=False, num_workers=pytest.NUM_WORKERS, verbose=False, ) original_files = db['files']['original'].get() df = audb.cached() assert df['bit_depth'].values[0] == bit_depth for converted_file, original_file in zip(db.files, original_files): converted_file = os.path.join(db.meta['audb']['root'], converted_file) original_file = os.path.join(DB_ROOT, original_file) if bit_depth is None: assert audiofile.bit_depth(converted_file) == \ audiofile.bit_depth(original_file) else: assert audiofile.bit_depth(converted_file) == bit_depth
def test_load(format, version): assert not audb.exists( DB_NAME, version=version, format=format, ) db = audb.load( DB_NAME, version=version, format=format, full_path=False, num_workers=pytest.NUM_WORKERS, verbose=False, ) db_root = db.meta['audb']['root'] assert audb.exists(DB_NAME, version=version) if version is None: resolved_version = audb.latest_version(DB_NAME) else: resolved_version = version db_original = audformat.Database.load(DB_ROOT_VERSION[resolved_version]) if format is not None: db_original.map_files( lambda x: audeer.replace_file_extension(x, format) ) pd.testing.assert_index_equal(db.files, db_original.files) for file in db.files: assert os.path.exists(os.path.join(db_root, file)) for table in db.tables: assert os.path.exists(os.path.join(db_root, f'db.{table}.csv')) pd.testing.assert_frame_equal( db_original[table].df, db[table].df, ) df = audb.cached() assert df.loc[db_root]['version'] == resolved_version deps = audb.dependencies(DB_NAME, version=version) assert str(deps().to_string()) == str(deps) assert len(deps) == len(db.files) + len(db.tables) # from cache with full path db = audb.load( DB_NAME, version=version, full_path=True, num_workers=pytest.NUM_WORKERS, verbose=False, ) for file in db.files: assert os.path.exists(file) for table in db.tables: assert os.path.exists(os.path.join(db_root, f'db.{table}.csv'))