1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
import socket from '../../socket'
import types from '../../types'
import actions from '../../actions'
export const load_directories = () => (dispatch) => {
// console.log(actions)
Promise.all([
actions.folder.index({ module: 'samplernn' }),
actions.file.index({ module: 'samplernn' }),
actions.task.index({ module: 'samplernn' }),
actions.socket.list_directory({ module: 'samplernn', dir: 'results' }),
actions.socket.list_directory({ module: 'samplernn', dir: 'datasets' }),
actions.socket.run_script({ module: 'samplernn', activity: 'report' })
]).then(res => {
const [folders, files, tasks, results, datasets, report] = res
const folderLookup = folders.reduce((folderLookup, folder) => {
folderLookup[folder.id] = folder
folder.files = []
folder.results = []
return folderLookup
}, {
'unsorted': {
id: 0,
name: 'unsorted',
files: [],
results: [],
}
})
const processedFiles = files.filter(file => file.processed)
const unprocessedFiles = files.filter(file => !file.processed)
const fileLookup = unprocessedFiles.reduce((fileLookup, file) => {
file.checkpoints = []
if (! file.name) {
file.name = (file.opt || {}).token || 'unloaded'
// fileLookup[(file.name || 'unsorted').split('.')[0]] = file
} else {
fileLookup[(file.name).split('.')[0]] = file
}
folderLookup[file.folder_id] && folderLookup[file.folder_id].files.push(file)
return fileLookup
}, {
unsorted: {
checkpoints: [],
results: [],
}
})
processedFiles.map(result => {
const pair = result.name.split('.')[0].split('-')
const file = fileLookup[pair[0]]
if (file) {
file.results.push(result)
} else {
folderLookup[file.folder_id] && folderLookup[file.folder_id].results.push(file)
}
result.epoch = result.epoch || pair[1]
})
folderLookup.unsorted.files.push(fileLookup.unsorted)
// console.log(datasets)
// const flatDatasets = datasets.filter(s => s.name.match(/(wav|aiff?|flac|mp3)$/) && !s.dir)
const builtDatasets = datasets.filter(s => s.dir)
builtDatasets.forEach(dataset => {
const file = fileLookup[dataset.name] || fileLookup.unsorted
file.hasDataset = true
})
// exp:coccokit_3-frame_sizes:8,2-n_rnn:2-dataset:coccokit_3
const checkpoints = results.filter(s => s.dir).map(s => {
const checkpoint = s.name.split('-').map(s => s.split(':')).reduce((a,b) => (a[b[0]] = b[1])&&a, {})
checkpoint.dir = s
const file = fileLookup[checkpoint.dataset] || fileLookup.unsorted
file.checkpoints.push(checkpoint)
return checkpoint
})
// console.log(folders.length, files.length, tasks.length, results.length, datasets.length)
// console.log(report)
report.stdout.split('\n\n').filter(a=>!!a).forEach(data => {
const [ name, ...lines ] = data.split('\n')
const file = fileLookup[name] || fileLookup.unsorted
file.log = lines.map(s => s.split('\t')).map(s => s.split(': ')).reduce((a,b) => (a[b[0]] = b[1])&&a, {})
})
dispatch({
type: types.samplernn.init,
data: {
folderLookup,
// folders, files,
// checkpoints,
// builtDatasets,
// flatDatasets,
// report
},
})
dispatch({
type: types.samplernn.set_folder,
folder: folders[0].name,
})
})
}
export const set_folder = (folder) => { types.samplernn.set_folder, folder }
export const fetch_url = (url) => (dispatch) => {
console.log(url)
actions.task.start_task({
activity: 'fetch',
module: 'samplernn',
dataset: 'test',
epochs: 1,
opt: { url }
}, { preempt: true, watch: true })
}
|