def app(msd_ids: List[str]):
    start = timeit.default_timer()

    # Cleanup the output directory
    shutil.rmtree(args.path_output_dir, ignore_errors=True)

    # Starts the threads
    with Pool(args.pool_size) as pool:
        manager = Manager()
        counter = AtomicCounter(manager, len(msd_ids))
        print("START")
        results = pool.starmap(process, zip(msd_ids, cycle([counter])))
        results = [result for result in results if result]
        print("END")
        results_percentage = len(results) / len(msd_ids) * 100
        print(f"Number of tracks: {len(MSD_SCORE_MATCHES)}, "
              f"number of tracks in sample: {len(msd_ids)}, "
              f"number of results: {len(results)} "
              f"({results_percentage:.2f}%)")

    # Creates an histogram for the piano lengths
    pm_pianos_list = [result["pm_pianos"] for result in results]
    pm_piano_lengths = [
        pm_piano.get_end_time() for pm_pianos in pm_pianos_list
        for pm_piano in pm_pianos
    ]
    #plt.figure(num=None, figsize=(10, 8), dpi=500)
    plt.hist(pm_piano_lengths, bins=100, color="darkmagenta")
    plt.title('Piano lengths')
    plt.ylabel('length (sec)')
    plt.show()

    stop = timeit.default_timer()
    print("Time: ", stop - start)
Example #2
0
def app(msd_ids: List[str]):
  start = timeit.default_timer()

  # Starts the threads
  with Pool(args.pool_size) as pool:
    manager = Manager()
    counter = AtomicCounter(manager, len(msd_ids))
    print("START")
    results = pool.starmap(process, zip(msd_ids, cycle([counter])))
    results = [result for result in results if result]
    print("END")
    results_percentage = len(results) / len(msd_ids) * 100
    print(f"Number of tracks: {len(MSD_SCORE_MATCHES)}, "
          f"number of tracks in sample: {len(msd_ids)}, "
          f"number of results: {len(results)} "
          f"({results_percentage:.2f}%)")

  # Creates a bar chart for the most common artists
  artists = [result["artist"] for result in results]
  most_common_artists = Counter(artists).most_common(25)
  print(f"Most common artists: {most_common_artists}")
  plot_bars(most_common_artists, "Artist song count")

  stop = timeit.default_timer()
  print("Time: ", stop - start)
Example #3
0
def app(msd_ids: List[str]):
    start = timeit.default_timer()

    # Starts the threads
    with Pool(args.pool_size) as pool:
        manager = Manager()
        counter = AtomicCounter(manager, len(msd_ids))
        print("START")
        results = pool.starmap(process, zip(msd_ids, cycle([counter])))
        results = [result for result in results if result]
        print("END")
        results_percentage = len(results) / len(msd_ids) * 100
        print(f"Number of tracks: {len(MSD_SCORE_MATCHES)}, "
              f"number of tracks in sample: {len(msd_ids)}, "
              f"number of results: {len(results)} "
              f"({results_percentage:.2f}%)")

    # Creates a bar chart for the most common artists
    artists = [result["artist"] for result in results]
    most_common_artists = Counter(artists).most_common(25)
    print(f"Most common artists: {most_common_artists}")
    plt.figure(num=None, figsize=(10, 8), dpi=500)
    plt.bar([artist for artist, _ in most_common_artists],
            [count for _, count in most_common_artists],
            color=[color.name for color in colors if color.name != "lavender"])
    plt.title("Artist song count")
    plt.xticks(rotation=30, horizontalalignment="right")
    plt.ylabel("count")
    plt.show()

    stop = timeit.default_timer()
    print("Time: ", stop - start)
Example #4
0
def app(msd_ids: List[str]):
    start = timeit.default_timer()

    # Starts the threads
    with Pool(args.pool_size) as pool:
        manager = Manager()
        counter = AtomicCounter(manager, len(msd_ids))
        print("START")
        results = pool.starmap(process, zip(msd_ids, cycle([counter])))
        results = [result for result in results if result]
        print("END")
        results_percentage = len(results) / len(msd_ids) * 100
        print(f"Number of tracks: {len(MSD_SCORE_MATCHES)}, "
              f"number of tracks in sample: {len(msd_ids)}, "
              f"number of results: {len(results)} "
              f"({results_percentage:.2f}%)")

    # Finds which tags matches and count the results
    tags = []
    unique_tags = set()
    for result in results:
        result_tags = result["tags"]
        matching_tags = [tag for tag in result_tags if tag in TAGS]
        if matching_tags:
            joined_tag = "+".join(matching_tags)
            tags.append(joined_tag)
            unique_tags.add(joined_tag)
    match_percentage = len(tags) / len(results) * 100
    print(f"Number of results: {len(results)}, "
          f"number of matched tags: {len(tags)} "
          f"({match_percentage:.2f}%)")

    # Creates a bar chart for the most common tags
    most_common_tags = Counter(tags).most_common()
    plot_bars(most_common_tags, "Tags count for " + ",".join(TAGS))

    # plt.figure(num=None, figsize=(10, 8), dpi=500)
    # plt.bar([tag for tag, _ in most_common_tags],
    #         [count for _, count in most_common_tags],
    #         color=[color.name for color in colors
    #                if color.name != "lavender"])
    # plt.title("Tags count for " + ",".join(TAGS))
    # plt.xticks(rotation=30, horizontalalignment="right")
    # plt.ylabel("count")
    # plt.show()

    stop = timeit.default_timer()
    print("Time: ", stop - start)
Example #5
0
def app(msd_ids: List[str]):
    start = timeit.default_timer()

    # Cleanup the output directory
    shutil.rmtree(args.path_output_dir, ignore_errors=True)

    # Starts the threads
    with Pool(args.pool_size) as pool:
        manager = Manager()
        counter = AtomicCounter(manager, len(msd_ids))
        print("START")
        results = pool.starmap(process, zip(msd_ids, cycle([counter])))
        results = [result for result in results if result]
        print("END")
        results_percentage = len(results) / len(msd_ids) * 100
        print(f"Number of tracks: {len(MSD_SCORE_MATCHES)}, "
              f"number of tracks in sample: {len(msd_ids)}, "
              f"number of results: {len(results)} "
              f"({results_percentage:.2f}%)")

    # Creates an histogram for the piano lengths
    pm_pianos_list = [result["pm_pianos"] for result in results]
    pm_piano_lengths = [
        pm_piano.get_end_time() for pm_pianos in pm_pianos_list
        for pm_piano in pm_pianos
    ]
    plt.figure(num=None, figsize=(10, 8), dpi=500)
    plt.hist(pm_piano_lengths, bins=100, color="darkmagenta")
    plt.title('Piano lengths')
    plt.ylabel('length (sec)')
    plt.show()

    # Creates a bar chart for the tags
    tags_list = [result["tags"] for result in results]
    tags = [tag for tags in tags_list for tag in tags]
    most_common_tags = Counter(tags).most_common()
    plt.figure(num=None, figsize=(10, 8), dpi=500)
    plt.bar([tag for tag, _ in most_common_tags],
            [count for _, count in most_common_tags],
            color=[color.name for color in colors if color.name != "lavender"])
    plt.title("Tags count for " + ",".join(TAGS))
    plt.xticks(rotation=30, horizontalalignment="right")
    plt.ylabel("count")
    plt.show()

    stop = timeit.default_timer()
    print("Time: ", stop - start)
def app(midi_paths: List[str]):
    start = timeit.default_timer()

    # Cleanup the output directory
    shutil.rmtree(args.path_output_dir, ignore_errors=True)

    # Starts the threads
    with Pool(args.pool_size) as pool:
        manager = Manager()
        counter = AtomicCounter(manager, len(midi_paths), 1000)
        print("START")
        results = pool.starmap(process, zip(midi_paths, cycle([counter])))
        results = [result for result in results if result]
        print("END")
        results_percentage = len(results) / len(midi_paths) * 100
        print(f"Number of tracks: {len(MIDI_PATHS)}, "
              f"number of tracks in sample: {len(midi_paths)}, "
              f"number of results: {len(results)} "
              f"({results_percentage:.2f}%)")

    # Creates an histogram for the drum lengths
    pm_drums = [result["pm_drums"] for result in results]
    pm_drums_lengths = [pm.get_end_time() for pm in pm_drums]
    plt.figure(num=None, figsize=(10, 8), dpi=500)
    plt.hist(pm_drums_lengths, bins=100, color="darkmagenta")
    plt.title('Drums lengths')
    plt.ylabel('length (sec)')
    plt.show()

    # Creates an histogram for the bass drums on beat
    bass_drums_on_beat = [result["bass_drums_on_beat"] for result in results]
    plt.figure(num=None, figsize=(10, 8), dpi=500)
    plt.hist(bass_drums_on_beat, bins=100, color="darkmagenta")
    plt.title('Bass drums on beat')
    plt.ylabel('count')
    plt.show()

    stop = timeit.default_timer()
    print("Time: ", stop - start)