summaryrefslogtreecommitdiff
path: root/app/client/modules/samplernn
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2018-06-02 13:02:47 +0200
committerJules Laplace <julescarbon@gmail.com>2018-06-02 13:02:47 +0200
commita6a529a5757417906f6df60ca7557fac3a380966 (patch)
tree2791fccff9c24035da59106fb7bfcdefd444186a /app/client/modules/samplernn
parent4d6835094db8d3171d2ba42967a1dff9e622055a (diff)
work out data relationships for samplernn
Diffstat (limited to 'app/client/modules/samplernn')
-rw-r--r--app/client/modules/samplernn/samplernn.actions.js95
-rw-r--r--app/client/modules/samplernn/samplernn.datasets.js11
-rw-r--r--app/client/modules/samplernn/samplernn.reducer.js22
3 files changed, 99 insertions, 29 deletions
diff --git a/app/client/modules/samplernn/samplernn.actions.js b/app/client/modules/samplernn/samplernn.actions.js
index 55bd9f3..b9789c7 100644
--- a/app/client/modules/samplernn/samplernn.actions.js
+++ b/app/client/modules/samplernn/samplernn.actions.js
@@ -4,9 +4,7 @@ import types from '../../types'
import actions from '../../actions'
export const load_directories = () => (dispatch) => {
- // load datasets
- // load directories from server
- console.log(actions)
+ // console.log(actions)
Promise.all([
actions.folder.index({ module: 'samplernn' }),
actions.file.index({ module: 'samplernn' }),
@@ -15,26 +13,97 @@ export const load_directories = () => (dispatch) => {
actions.socket.list_directory({ module: 'samplernn', dir: 'datasets' }),
actions.socket.run_script({ module: 'samplernn', activity: 'report' })
]).then(res => {
- console.log(res)
const [folders, files, tasks, results, datasets, report] = res
- console.log(datasets)
+
+ 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)
- const flatDatasets = datasets.filter(s => s.name.match(/(wav|aiff?|flac|mp3)$/) && !s.dir)
- const checkpoints = results.filter(s => s.dir)
- console.log(folders.length, files.length, tasks.length, results.length, datasets.length)
- console.log(report)
+ 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: {
- folders, files,
- checkpoints,
- builtDatasets, flatDatasets,
- report
+ 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({
diff --git a/app/client/modules/samplernn/samplernn.datasets.js b/app/client/modules/samplernn/samplernn.datasets.js
index 58e6df4..bcc7878 100644
--- a/app/client/modules/samplernn/samplernn.datasets.js
+++ b/app/client/modules/samplernn/samplernn.datasets.js
@@ -66,15 +66,15 @@ class SampleRNNDatasets extends Component {
linkFiles
fileOptions={this.fileOptions}
onPick={this.handlePick}
- folder={samplernn.input.folder}
- files={samplernn.input.files}
+ folder={samplernn.folder}
+ files={samplernn.folder.files}
/>
- {this.renderData()}
</div>
)
}
renderData(){
- const { samplernn } = this.props
+ // {this.renderData()}
+ const { samplernn, actions } = this.props
if (samplernn.data === null) {
return
}
@@ -82,6 +82,9 @@ class SampleRNNDatasets extends Component {
<div class='row params'>
<FileList
title='Folders'
+ className='folders'
+ fields='name'
+ onPick={actions.set_folder}
files={samplernn.data.folders}
/>
<FileList
diff --git a/app/client/modules/samplernn/samplernn.reducer.js b/app/client/modules/samplernn/samplernn.reducer.js
index 8d1ed74..5e83e98 100644
--- a/app/client/modules/samplernn/samplernn.reducer.js
+++ b/app/client/modules/samplernn/samplernn.reducer.js
@@ -1,20 +1,10 @@
import types from '../../types'
const samplernnInitialState = {
- loading: false,
+ loading: true,
error: null,
- folder: {},
folders: [],
- datasets: [],
- results: [],
- input: {
- folder: {},
- files: [],
- },
- output: {
- folder: {},
- files: [],
- },
+ folder: {},
data: null,
}
@@ -23,6 +13,7 @@ const samplernnReducer = (state = samplernnInitialState, action) => {
case types.samplernn.init:
return {
...state,
+ loading: false,
data: action.data,
}
case types.socket.connect:
@@ -55,6 +46,13 @@ const samplernnReducer = (state = samplernnInitialState, action) => {
return state
case types.socket.status:
return samplernnSocket(state, action.data)
+
+ case types.samplernn.set_folder:
+ return {
+ ...state,
+ folder: action.folder,
+ }
+
default:
return state
}