summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/client/modules/samplernn/index.js3
-rw-r--r--app/client/modules/samplernn/samplernn.actions.js42
-rw-r--r--app/client/modules/samplernn/samplernn.datasets.js58
-rw-r--r--app/relay/runner.js4
4 files changed, 73 insertions, 34 deletions
diff --git a/app/client/modules/samplernn/index.js b/app/client/modules/samplernn/index.js
index 7795df0..7066942 100644
--- a/app/client/modules/samplernn/index.js
+++ b/app/client/modules/samplernn/index.js
@@ -7,7 +7,7 @@ import SampleRNNLoss from './samplernn.loss'
function router () {
return (
<div>
- <Route exact path='/samplernn/loss/' component={SampleRNNLoss} />
+ <Route exact path='/samplernn/graph/' component={SampleRNNLoss} />
<Route exact path='/samplernn/inspect/' component={SampleRNNInspect} />
<Route exact path='/samplernn/datasets/:id/' component={SampleRNNDatasets} />
<Route exact path='/samplernn/datasets/new/' component={SampleRNNDatasets} />
@@ -19,6 +19,7 @@ function links(){
return (
<span>
<span><Link to="/samplernn/datasets/">datasets</Link></span>
+ <span><Link to="/samplernn/graph/">graph</Link></span>
<span><Link to="/samplernn/results/">results</Link></span>
</span>
)
diff --git a/app/client/modules/samplernn/samplernn.actions.js b/app/client/modules/samplernn/samplernn.actions.js
index b69da2e..cb8b47b 100644
--- a/app/client/modules/samplernn/samplernn.actions.js
+++ b/app/client/modules/samplernn/samplernn.actions.js
@@ -18,14 +18,14 @@ export const load_directories = (id) => (dispatch) => {
const empty_dataset = (name) => ({
name,
- input: null,
+ input: [],
checkpoints: [],
- results: [],
+ output: [],
})
// take all of the folders and put them in a lookup
const folderLookup = folders.reduce((folderLookup, folder) => {
- folderLookup[folder.id] = folder
+ folderLookup[folder.id] = { id: folder.id, name: folder.name, folder, datasets: [] }
folder.datasets = []
return folderLookup
}, {
@@ -37,27 +37,33 @@ export const load_directories = (id) => (dispatch) => {
})
// prepare the files by splitting into two groups
- const processedFiles = files.filter(file => file.processed)
- const unprocessedFiles = files.filter(file => !file.processed)
+ const generatedFiles = files.filter(file => file.generated)
+ const ungeneratedFiles = files.filter(file => !file.generated)
- // build the initial dataset lookup table using the unprocessed files
- const datasetLookup = unprocessedFiles.reduce((datasetLookup, file) => {
+ // build the initial dataset lookup table using the ungenerated files
+ const datasetLookup = ungeneratedFiles.reduce((datasetLookup, file) => {
file.checkpoints = []
if (! file.name) {
file.name = (file.opt || {}).token || file.url
- // datasetLookup[(file.name || 'unsorted').split('.')[0]] = file
+ // datasetLookup[] = file
+ }
+ const name = (file.name || 'unsorted').split('.')[0]
+ if (! datasetLookup[name]) {
+ const dataset = empty_dataset(name)
+ datasetLookup[dataset.name] = dataset
+ dataset.input.push(file)
+ folderLookup[file.folder_id].datasets.push(dataset)
+ }
+ else {
+ datasetLookup[name].input.push(file)
}
- const dataset = empty_dataset((file.name).split('.')[0])
- datasetLookup[dataset.name] = dataset
- dataset.input = input
- folderLookup[file.folder_id].datasets.push(dataset)
return datasetLookup
}, {
unsorted: empty_dataset('unsorted')
})
- // go over the processed files and add addl datasets (if the files were deleted)
- processedFiles.map(file => {
+ // go over the generated files and add addl datasets (if the files were deleted)
+ generatedFiles.map(file => {
const pair = file.name.split('.')[0].split('-')
let dataset = datasetLookup[pair[0]]
if (!dataset) {
@@ -65,7 +71,7 @@ export const load_directories = (id) => (dispatch) => {
datasetLookup[dataset.name] = dataset
folderLookup[file.folder_id].datasets.push(dataset)
}
- dataset.results.push(file)
+ dataset.output.push(file)
file.epoch = file.epoch || pair[1]
})
@@ -89,7 +95,6 @@ export const load_directories = (id) => (dispatch) => {
.map(s => s.split(':'))
.filter(b => b.length && b[1])
.reduce((a,b) => (a[b[0]] = b[1]) && a, {})
- // console.log(checkpoint.dataset)
checkpoint.name = checkpoint.dataset || checkpoint.exp
checkpoint.dir = s
let dataset = datasetLookup[checkpoint.dataset]
@@ -110,7 +115,7 @@ export const load_directories = (id) => (dispatch) => {
datasetLookup[dataset.name] = dataset
folderLookup.unsorted.datasets.push(dataset)
}
- dataset.results.push(file)
+ dataset.output.push(file)
file.epoch = file.epoch || pair[1]
})
@@ -125,9 +130,10 @@ export const load_directories = (id) => (dispatch) => {
},
})
if (id) {
+ let folder = id === 'unsorted' ? folderLookup.unsorted : folderLookup[id]
dispatch({
type: types.samplernn.set_folder,
- folder: folderLookup[parseInt(id)],
+ folder: folder,
})
}
}).catch(e => {
diff --git a/app/client/modules/samplernn/samplernn.datasets.js b/app/client/modules/samplernn/samplernn.datasets.js
index 63c4eaf..8b86007 100644
--- a/app/client/modules/samplernn/samplernn.datasets.js
+++ b/app/client/modules/samplernn/samplernn.datasets.js
@@ -10,7 +10,7 @@ import Group from '../../common/group.component'
import Slider from '../../common/slider.component'
import Select from '../../common/select.component'
import Button from '../../common/button.component'
-import FileList from '../../common/fileList.component'
+import { FileList, FileRow } from '../../common/fileList.component'
import TextInput from '../../common/textInput.component'
class SampleRNNDatasets extends Component {
@@ -54,29 +54,59 @@ class SampleRNNDatasets extends Component {
}
render(){
const { samplernn } = this.props
- // console.log(samplernn.upload)
- // sort files??
+ const folder = samplernn.folder
+ if (!folder.name) return
+ console.log(folder)
+ const datasets = folder.datasets.map(dataset =>{
+ console.log(dataset)
+ return (
+ <div className='row dataset'>
+ <div className='col'>
+ {!!dataset.input.length && <FileList files={dataset.input} />}
+ </div>
+ <div className='col quiet'>
+ <div>{dataset.isBuilt ? 'has dataset' : 'not built'}</div>
+ </div>
+ <div className='col checkpoint'>
+ {!!dataset.checkpoints.length && <FileRow file={dataset.checkpoints[0]} />}
+ </div>
+ <div className='col'>
+ {!!dataset.output.length && <FileList files={dataset.output} />}
+ </div>
+ </div>
+ )
+ })
return (
<div className='app'>
<div className='heading'>
<h3>SampleRNN</h3>
</div>
- <Dataset
- canRename
- canUpload
- canAddURL
- canDeleteFile
- linkFiles
- fileOptions={this.fileOptions}
- onPick={this.handlePick}
- folder={samplernn.folder}
- files={samplernn.folder.files}
- />
+ <div class='rows params datasets'>
+ <div class='row dataset'>
+ <div class='col'>input</div>
+ <div class='col'>dataset</div>
+ <div class='col'>checkpoint</div>
+ <div class='col'>output</div>
+ </div>
+ {datasets}
+ </div>
</div>
)
}
}
+// <Dataset
+// canRename
+// canUpload
+// canAddURL
+// canDeleteFile
+// linkFiles
+// fileOptions={this.fileOptions}
+// onPick={this.handlePick}
+// folder={samplernn.folder}
+// files={samplernn.folder.files}
+// />
+
const mapStateToProps = state => ({
samplernn: state.module.samplernn,
runner: state.system.runner,
diff --git a/app/relay/runner.js b/app/relay/runner.js
index 493df23..deb3aa0 100644
--- a/app/relay/runner.js
+++ b/app/relay/runner.js
@@ -117,7 +117,7 @@ export function list_directory(opt, cb) {
const module = modules[opt.module]
const dir = path.join(module.cwd, opt.dir.replace(/\.\.?\//g, ''))
fs.readdir(dir, (err, files) => {
- const statPromises = files.filter(f => f[0] !== '.').map(f => {
+ const statPromises = (files || []).filter(f => f[0] !== '.').map(f => {
return new Promise((resolve, reject) => {
const full_path = path.join(dir, f)
fs.stat(full_path, (err, stat={}) => {
@@ -133,6 +133,8 @@ export function list_directory(opt, cb) {
})
Promise.all(statPromises).then(stats => {
cb(stats)
+ }).catch(error => {
+ cb(error)
})
})
}