|
|
from os import listdir |
|
|
from os.path import isfile, join |
|
|
from shutil import move |
|
|
import random |
|
|
import sys |
|
|
from tqdm import tqdm |
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
|
|
root = sys.argv[1] |
|
|
new_root = sys.argv[2] |
|
|
|
|
|
|
|
|
print("Getting MIDI files") |
|
|
onlyfiles = [f for f in listdir(root)] |
|
|
n = len(onlyfiles) |
|
|
print("Num files: " + str(n)) |
|
|
|
|
|
|
|
|
|
|
|
idx = [i for i in range(n)] |
|
|
split_idx = random.shuffle(idx) |
|
|
|
|
|
train_len = int(0.8 * n) |
|
|
test_len = int(0.1 * n) |
|
|
valid_len = n - train_len - test_len |
|
|
|
|
|
train_idx = idx[:train_len] |
|
|
test_idx = idx[train_len:test_len + train_len] |
|
|
valid_idx = idx[test_len + train_len:] |
|
|
|
|
|
|
|
|
|
|
|
o = 0 |
|
|
|
|
|
print('Spliting Train Set') |
|
|
for i in tqdm(range(train_len)): |
|
|
move(join(root, onlyfiles[train_idx[i]]), join(new_root, "train", onlyfiles[train_idx[i]])) |
|
|
o += 1 |
|
|
|
|
|
print('Spliting Test Set') |
|
|
for i in tqdm(range(test_len)): |
|
|
move(join(root, onlyfiles[test_idx[i]]), join(new_root, "test", onlyfiles[test_idx[i]])) |
|
|
o += 1 |
|
|
|
|
|
print('Spliting Validation Set') |
|
|
for i in tqdm(range(valid_len)): |
|
|
move(join(root, onlyfiles[valid_idx[i]]), join(new_root, "valid", onlyfiles[valid_idx[i]])) |
|
|
o += 1 |
|
|
|
|
|
print("Succes Test: " + str(o == n)) |
|
|
|
|
|
print(join(new_root, "valid", onlyfiles[valid_idx[100]])) |
|
|
print(isfile(join(new_root, "valid", onlyfiles[valid_idx[100]]))) |