diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..8876979 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,47 @@ +module.exports = { + "env": { + "browser": true, + "commonjs": true, + "es6": true, + "node": true + }, + "extends": ["plugin:requirejs/recommended", "eslint:recommended"], + "rules": { + "indent": [ + "error", + 4 + ], + "linebreak-style": [ + "error", + "unix" + ], + "quotes": [ + "error", + "double" + ], + "semi": [ + "error", + "always" + ], + "no-unused-vars": "off", + "jsdoc/check-param-names": 2, + "jsdoc/check-tag-names": 2, + "jsdoc/check-types": 2, + "jsdoc/newline-after-description": 2, + "jsdoc/require-description-complete-sentence": 2, + "jsdoc/require-hyphen-before-param-description": 2, + "jsdoc/require-param": 2, + "jsdoc/require-param-description": 2, + "jsdoc/require-param-type": 2, + "jsdoc/require-returns-description": 2, + "jsdoc/require-returns-type": 2, + "jsdoc/require-description-complete-sentence": 1, + "requirejs/no-invalid-define": 2, + "requirejs/no-multiple-define": 2, + "requirejs/no-named-define": 2, + "requirejs/no-commonjs-wrapper": 2, + "requirejs/no-object-define": 1, + "requirejs/amd-function-arity": [2, {"allowExtraDependencies": true}] + }, + "plugins": ["requirejs", "jsdoc"] +}; diff --git a/.gitignore b/.gitignore index 21a3311..a56ccf1 100644 --- a/.gitignore +++ b/.gitignore @@ -15,7 +15,7 @@ dist/ downloads/ eggs/ .eggs/ -lib/ +/lib/ lib64/ parts/ sdist/ @@ -91,3 +91,4 @@ ENV/ sacredboard/Scripts/ \.idea/ +node_modules diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..9f4e02e --- /dev/null +++ b/.travis.yml @@ -0,0 +1,54 @@ +matrix: + include: + - language: node_js + env: + - INFO=JavaScriptTests + node_js: "7" + before_script: + - npm install + script: + - npm test + - language: node_js + env: + - INFO=JavaScriptStyleCheck + node_js: "7" + before_script: + - npm install + script: + - npm run lint -s +language: python +python: "3.5" +git: + depth: 3 +cache: pip +before_script: + - pip install tox +env: +- TOX_ENV=py34 +- TOX_ENV=py35 +- TOX_ENV=flake8 +- TOX_ENV=pydocstyle +- TOX_ENV=coverage +script: +- tox -e $TOX_ENV + + +# safelist +branches: + only: + - master + - develop + +#- pip install flake8 +#- pip install coveralls + + + + +# command to install dependencies +# install: python setup.py install +# command to run tests + +#after_success: +# not necessary, done by tox +# coveralls diff --git a/README.md b/README.md index 885c1f4..775f798 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,18 @@ # Sacredboard -Sacredboard is a web dashboard for [Sacred](https://github.com/IDSIA/sacred). +Sacredboard is a web dashboard for the [Sacred](https://github.com/IDSIA/sacred) +machine learning experiment management tool. It connects to the MongoDB database used by Sacred and displays a list of experiments, their state, Sacred configuration and the standard output from the running program. Python 3.5 and a modern web browser are required for it to work properly. -## Features in version 0.1.2 +# Features in version 0.2 - Get an overview of running and finished experiments in a table, such as experiment name, machine on which it runs etc. +- Filter experiments - Get detailed information of the experiment, such as the text output produced by the experiment. - Run [Tensorboard](https://www.tensorflow.org/versions/r0.10/how_tos/summaries_and_tensorboard/) @@ -20,29 +22,11 @@ Python 3.5 and a modern web browser are required for it to work properly. [Integration with Tensorflow](https://github.com/IDSIA/sacred/blob/develop/docs/tensorflow.rst) (currently in the development branch of Sacred). -### Changes in 0.1.2 since 0.1.1 - -- Added a command line option to specify a custom connection string for MongoDB, -thus enabling connections to password-protected databases etc. - -### Changes in 0.1.1 since 0.1 - -- Added a command line option to specify the MongoDB collection that contains -the runs. This is useful when using a custom collection name or for - [compatibility reasons](https://github.com/chovanecm/sacredboard/issues/20). ## Roadmap -### v0.2 - -- Filtering experiments based on their configuration -- Displaying the `info` dictionary - ### Further Versions - -- Filtering experiments based on custom queries on the data produced by experiments. -- In addition, to support the users in using Sacredboard features, - sacred will be enhanced with API to store common experiment information (such as error, accuracy etc). +- Sacred Metrics API data viewer (currently in Sacred development branch) - TBD ## Screenshots @@ -104,3 +88,13 @@ contributions of new features should be developed against the `develop` branch. Feel free to open new issues in case of requests or bugs found. Maintainer / Developer: Martin Chovanec, chovamar@fit.cvut.cz + + +Current master branch status: +[![Build Status](https://travis-ci.org/chovanecm/sacredboard.svg?branch=master)](https://travis-ci.org/chovanecm/sacredboard) +[![Coverage Status](https://coveralls.io/repos/github/chovanecm/sacredboard/badge.svg?branch=master)](https://coveralls.io/github/chovanecm/sacredboard?branch=master) + + +Current develop branch status: +[![Build Status](https://travis-ci.org/chovanecm/sacredboard.svg?branch=develop)](https://travis-ci.org/chovanecm/sacredboard) +[![Coverage Status](https://coveralls.io/repos/github/chovanecm/sacredboard/badge.svg?branch=develop)](https://coveralls.io/github/chovanecm/sacredboard?branch=develop) diff --git a/dev-requirements.txt b/dev-requirements.txt index 370fcd4..c72ab82 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -1,3 +1,8 @@ pytest pytest-timeout -setuptools \ No newline at end of file +setuptools +mongomock +sphinx +sphinx_rtd_theme +flake8 +pydocstyle diff --git a/dev/knockout-3.4.1.debug.js b/dev/knockout-3.4.1.debug.js new file mode 100644 index 0000000..e30ca5a --- /dev/null +++ b/dev/knockout-3.4.1.debug.js @@ -0,0 +1,5894 @@ +/*! + * Knockout JavaScript library v3.4.1 + * (c) The Knockout.js team - http://knockoutjs.com/ + * License: MIT (http://www.opensource.org/licenses/mit-license.php) + */ + +(function(){ +var DEBUG=true; +(function(undefined){ + // (0, eval)('this') is a robust way of getting a reference to the global object + // For details, see http://stackoverflow.com/questions/14119988/return-this-0-evalthis/14120023#14120023 + var window = this || (0, eval)('this'), + document = window['document'], + navigator = window['navigator'], + jQueryInstance = window["jQuery"], + JSON = window["JSON"]; +(function(factory) { + // Support three module loading scenarios + if (typeof define === 'function' && define['amd']) { + // [1] AMD anonymous module + define(['exports', 'require'], factory); + } else if (typeof exports === 'object' && typeof module === 'object') { + // [2] CommonJS/Node.js + factory(module['exports'] || exports); // module.exports is for Node.js + } else { + // [3] No module loader (plain + + + + + +
+ + + +