Example #1
0
def test_add_sample_metadata():
    for storage in get_storages():
        storage.delete_all()
        sm = SampleMetadata(storage=storage)
        sample_name = "sample_name"
        colour = sm.add_sample(sample_name)
        assert sm.samples_to_colours([sample_name]) == {sample_name: 0}
        assert sm.colours_to_samples([0]) == {0: sample_name}
        assert sm.num_samples == 1
        assert sm.sample_name_exists(sample_name)
        assert not sm.sample_name_exists("sample_name2")

        sample_name = "sample_name2"
        colour = sm.add_sample(sample_name)
        assert sm.sample_to_colour(sample_name) == 1
        assert sm.colour_to_sample(1) == sample_name
        assert sm.num_samples == 2
Example #2
0
def migrate(mapping_filepath, storage_engine, storage_filename=None):
    config = determine_config(storage_engine, storage_filename)
    storage = get_storage(config)
    current_metadata = SampleMetadata(storage)
    with open(mapping_filepath, 'rb') as infile:
        mapping = pickle.load(infile)

    for old_id in mapping:
        new_id = mapping.get(old_id)
        if new_id and new_id != old_id:
            colour = current_metadata.sample_to_colour(old_id)
            if colour:
                current_metadata._validate_sample_name(new_id)
                current_metadata._set_sample_colour(new_id, colour)
                current_metadata._set_colour_sample(colour, new_id)
                current_metadata._set_sample_colour(old_id, -1)

    storage.sync()
    storage.close()