Simple, realtime visualization of neural network training performance.

Overview

Build Status

pastalog

Simple, realtime visualization server for training neural networks. Use with Lasagne, Keras, Tensorflow, Torch, Theano, and basically everything else.

alt text

Installation

Easiest method for python

The python package pastalog has a node.js server packaged inside python module, as well as helper functions for logging data.

You need node.js 5+:

brew install node

(If you don't have homebrew, download an installer from https://nodejs.org/en/)

pip install pastalog
pastalog --install
pastalog --serve 8120
# - Open up http://localhost:8120/ to see the server in action.

Just node.js server (useful if you don't want the python API)

git clone https://github.com/rewonc/pastalog && cd pastalog
npm install
npm run build
npm start -- --port 8120
# - Open up http://localhost:8120/ to see the server in action.

Logging data

Once you have a server running, you can start logging your progress.

Using Python module

from pastalog import Log

log_a = Log('http://localhost:8120', 'modelA')

# start training

log_a.post('trainLoss', value=2.7, step=1)
log_a.post('trainLoss', value=2.15, step=2)
log_a.post('trainLoss', value=1.32, step=3)
log_a.post('validLoss', value=1.56, step=3)
log_a.post('validAccuracy', value=0.15, step=3)

log_a.post('trainLoss', value=1.31, step=4)
log_a.post('trainLoss', value=1.28, step=5)
log_a.post('trainLoss', value=1.11, step=6)
log_a.post('validLoss', value=1.20, step=6)
log_a.post('validAccuracy', value=0.18, step=6)

Voila! You should see something like the below:

alt text

Now, train some more models:

log_b = Log('http://localhost:8120', 'modelB')
log_c = Log('http://localhost:8120', 'modelC')

# ...

log_b.post('trainLoss', value=2.7, step=1)
log_b.post('trainLoss', value=2.0, step=2)
log_b.post('trainLoss', value=1.4, step=3)
log_b.post('validLoss', value=2.6, step=3)
log_b.post('validAccuracy', value=0.14, step=3)

log_c.post('trainLoss', value=2.7, step=1)
log_c.post('trainLoss', value=2.0, step=2)
log_c.post('trainLoss', value=1.4, step=3)
log_c.post('validLoss', value=2.6, step=3)
log_c.post('validAccuracy', value=0.18, step=3)

Go to localhost:8120 and view your logs updating in real time.

Using the Torch wrapper (Lua)

Use the Torch interface, available here: https://github.com/Kaixhin/torch-pastalog. Thanks to Kaixhin for putting it together.

Using a POST request

See more details in the POST endpoint section

curl -H "Content-Type: application/json" -X POST -d '{"modelName":"model1","pointType":"validLoss", "pointValue": 2.5, "globalStep": 1}' http://localhost:8120/data

Python API

pastalog.Log(server_path, model_name)
  • server_path: The host/port (e.g. http://localhost:8120)
  • model_name: The name of the model as you want it displayed (e.g. resnet_48_A_V5).

This returns a Log object with one method:

Log.post(series_name, value, step)
  • series_name: typically the type of metric (e.g. validLoss, trainLoss, validAccuracy).
  • value: the value of the metric (e.g. 1.56, 0.20, etc.)
  • step: whatever quantity you want to plot on the x axis. If you run for 10 epochs of 100 batches each, you could pass to step the number of batches have been seen already (0..1000).

Note: If you want to compare models across batch sizes, a good approach is to pass to step the fractional number of times the model has seen the data (number of epochs). In that case, you will have a fairer comparison between a model with batchsize 50 and another with batchsize 100, for example.

POST endpoint

If you want to use pastalog but don't want to use the Python interface or the Torch interface, you can just send POST requests to the Pastalog server and everything will work the same. The data should be json and encoded like so:

{"modelName":"model1","pointType":"validLoss", "pointValue": 2.5, "globalStep": 1}

modelName, pointType, pointValue, globalStep correspond with model_name, series_name, value, step above.

An example with curl:

curl -H "Content-Type: application/json" -X POST -d '{"modelName":"model1","pointType":"validLoss", "pointValue": 2.5, "globalStep": 1}' http://localhost:8120/data

Usage notes

Automatic candlesticking

alt text

Once you start viewing a lot of points (typically several thousand), the app will automatically convert them into candlesticks for improved visibility and rendering performance. Each candlestick takes a "batch" of points on the x axis and shows aggregate statistics for the y points of that batch:

  • Top of line: max
  • Top of box: third quartile
  • Solid square in middle: median
  • Bottom of box: first quartile
  • Bottom of line: min

This tends to be much more useful to visualize than a solid mass of dots. Computationally, it makes the app a lot faster than one which renders each point.

Panning and zooming

Drag your mouse to pan. Either scroll up or down to zoom in or out.

Note: you can also pinch in/out on your trackpad to zoom.

Toggling visibility of lines

Simply click the name of any model under 'series.' To toggle everything from a certain model (e.g. modelA, or to toggle an entire type of points (e.g. validLoss), simply click those names in the legend to the right.

Deleting logs

Click the x next to the name of the series. If you confirm deletion, this will remove it on the server and remove it from your view.

Note: if you delete a series, then add more points under the same, it will act as if it is a new series.

Backups

You should backup your logs on your own and should not trust this library to store important data. Pastalog does keep track of what it sees, though, inside a file called database.json and a directory called database/, inside the root directory of the package, in case you need to access it.

Contributing

Any contributors are welcome.

# to install
git clone https://github.com/rewonc/pastalog
cd pastalog
npm install

# build + watch
npm run build:watch

# dev server + watch
npm run dev

# tests
npm test

# To prep the python module
npm run build
./package_python.sh

Misc

License

MIT License (MIT)

Copyright (c) 2016 Rewon Child

Thanks

This is named pastalog because I like to use lasagne. Props to those guys for a great library!

Comments
  • Webpack compatibility and addition of feature to delete models.

    Webpack compatibility and addition of feature to delete models.

    • Modified webpack file so that it is compatible with webpack 2.7+ (latest version)
    • Modified legend so that we see Models first, then types and then series (Reason being this seems much more intuitive than earlier one, one can easily switch models they want to see and select what types, rather than individually selecting series names.)
    • Added feature so that you can delete the complete model data.

    TODO - Backup the data when model is deleted.

    opened by shubhamjain0594 4
  • Torch interface

    Torch interface

    I made a simple Torch interface here - should simplify the process for people who want to use pastalog with Torch. You may want to add in your readme somewhere?

    opened by Kaixhin 3
  • Server crashes when trying to rename not-existing database.json

    Server crashes when trying to rename not-existing database.json

    The server always crashes on Windows if there is no "database.json" file. The error message is this:

    D:\Software\pastalog\build\server.js:7357 throw renameError; ^

    Error: ENOENT: no such file or directory, rename 'D:\Software\pastalog\database.json' -> 'D:\Software\pastalog\database.json.~BACKUP' at Error (native)

    Apparently it's trying to rename the file, but this fails if there is no file to rename. After I manually added an empty file "database.json" everything works fine.

    opened by nlessmann 3
  • Update pip package

    Update pip package

    If I install Pastalog directly from pip, I get the missing parenthesis error of Python 2. After looking at the code, this is not the case and the code is Python 3 compatible.

    Would really appreciate it if the pip package was updated so we can enjoy pastalog in all its glory.

    opened by varunagrawal 2
  • Browser UI keeps downloading the whole data in a loop

    Browser UI keeps downloading the whole data in a loop

    screen shot 2016-04-16 at 12 04 49 When you accumulate some training data, it becomes unusable. My connection with a remote server is completely clogged with repeated data transfers. It downloads **everything every time**, but since pastalog already uses web sockets, it could only push out diffs.

    Also, I can't delete the old series anymore, so I can't stop it anyhow :confused:

    opened by apaszke 2
  • Trying to run serve causes error

    Trying to run serve causes error

    When I try pastalog --serve 8120 or even with sudo, I get this error:

    npm ERR! Error: ENOENT, open '/usr/local/lib/python2.7/dist-packages/pastalog/node_modules/--port/package.json'
    npm ERR! If you need help, you may report this *entire* log,
    npm ERR! including the npm and node versions, at:
    npm ERR!     <http://github.com/npm/npm/issues>
    
    npm ERR! System Linux 3.13.0-58-generic
    npm ERR! command "/usr/bin/node" "/usr/bin/npm" "start" "--" "--port" "8120"
    npm ERR! cwd /usr/local/lib/python2.7/dist-packages/pastalog
    npm ERR! node -v v0.10.37
    npm ERR! npm -v 1.4.28
    npm ERR! path /usr/local/lib/python2.7/dist-packages/pastalog/node_modules/--port/package.json
    npm ERR! code ENOENT
    npm ERR! errno 34
    npm ERR! 
    npm ERR! Additional logging details can be found in:
    npm ERR!     /usr/local/lib/python2.7/dist-packages/pastalog/npm-debug.log
    npm ERR! not ok code 0
    

    Here is the output of less /usr/local/lib/python2.7/dist-packages/pastalog/npm-debug.log:

    0 info it worked if it ends with ok
    1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'start', '--', '--port', '8120' ]
    2 info using [email protected]
    3 info using [email protected]
    4 verbose node symlink /usr/bin/node
    5 error Error: ENOENT, open '/usr/local/lib/python2.7/dist-packages/pastalog/node_modules/--port/package.json'
    6 error If you need help, you may report this *entire* log,
    6 error including the npm and node versions, at:
    6 error     <http://github.com/npm/npm/issues>
    7 error System Linux 3.13.0-58-generic
    8 error command "/usr/bin/node" "/usr/bin/npm" "start" "--" "--port" "8120"
    9 error cwd /usr/local/lib/python2.7/dist-packages/pastalog
    10 error node -v v0.10.37
    11 error npm -v 1.4.28
    12 error path /usr/local/lib/python2.7/dist-packages/pastalog/node_modules/--port/package.json
    13 error code ENOENT
    14 error errno 34
    15 verbose exit [ 34, true ]
    
    opened by shaneh2 2
  • Client assembles URL incorrectly under Windows

    Client assembles URL incorrectly under Windows

    The client (Log class) does not work under Windows because it assembles the URL using os.path.join(), which is intended for filesystem paths and not URLs:

    self.url = os.path.join(url, 'data')
    

    Under Windows, the path fragments are concatenated with a backslash, so that the URL turns out as "http://localhost:8120\data".

    opened by nlessmann 2
  • Install not recognizing npm and node

    Install not recognizing npm and node

    When installing, it doesn't seem to recognize that I have node and npm? I have restarted and tried again and the same results below. Sorry if this isn't really a pastalog problem, but rather on my end, I'm just not sure what to do.

    $ pastalog --install
    Please install npm and node.
    
    Li@Talon ~/pastalog (master)
    $ npm -v
    3.10.5
    
    Li@Talon ~/pastalog (master)
    $ node -v
    v6.3.1
    
    
    opened by linamnt 1
  • Adds support to python 3

    Adds support to python 3

    This commit changes the print functions in pastalog to comply with python 3 syntax. Additionally it changes the import of urljoin to work on both python 2 and 3.

    opened by fmfn 1
  • How to clear the previous results?

    How to clear the previous results?

    I am running pastalog server as:

    pastalog --serve 8120
    

    Running several models leaves traces but would like to be able to clear the previous results and start anew. How to do that?

    opened by tastyminerals 0
  • Background and foreground colors are too dark sometimes

    Background and foreground colors are too dark sometimes

    Current dark background does not always work well with the randomly selected foreground color for the training curve. Is there a way I could change the color of the curve quickly?

    2017-11-20-135101_743x887_scrot

    It is really too dark and when you have several models it becomes worse.

    opened by tastyminerals 0
  • npm run build error

    npm run build error

    I am using NPM version v7.9.0. I am facing the following error while running npm run build for pastalog. could you please let me know how to resolve this?

    -> % npm run build    
    
    > [email protected] build /media/data/arul/miscellanous/pastalog
    > webpack
    
    (node:22322) DeprecationWarning: loaderUtils.parseQuery() received a non-string value which can be problematic, see https://github.com/webpack/loader-utils/issues/56
    parseQuery() will be replaced with getOptions() in the next major version of loader-utils.
    Hash: 7f2522d0b30b7d93f2acefee6480ee97bc23e1e6dcc1ef502acc1bbb5073
    Version: webpack 2.4.1
    Child
        Hash: 7f2522d0b30b7d93f2ac
        Time: 2380ms
                        Asset     Size  Chunks             Chunk Names
        ./build/assets/app.js  4.17 kB       0  [emitted]  main
           [0] ./src/client.js 1.53 kB {0} [built] [failed] [1 error]
        
        ERROR in ./src/client.js
        Module build failed: Error: Couldn't find preset "es2015-webpack" relative to directory "/media/data/arul/miscellanous/pastalog/src"
            at /media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/options/option-manager.js:293:19
            at Array.map (native)
            at OptionManager.resolvePresets (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/options/option-manager.js:275:20)
            at OptionManager.mergePresets (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/options/option-manager.js:264:10)
            at OptionManager.mergeOptions (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/options/option-manager.js:249:14)
            at OptionManager.init (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/options/option-manager.js:368:12)
            at File.initOptions (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/index.js:212:65)
            at new File (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/index.js:135:24)
            at Pipeline.transform (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/pipeline.js:46:16)
            at transpile (/media/data/arul/miscellanous/pastalog/node_modules/babel-loader/lib/index.js:46:20)
            at Object.module.exports (/media/data/arul/miscellanous/pastalog/node_modules/babel-loader/lib/index.js:163:20)
    Child
        Hash: efee6480ee97bc23e1e6
        Time: 2360ms
                    Asset     Size  Chunks             Chunk Names
        ./build/server.js  4.17 kB       0  [emitted]  main
           [0] ./src/server.js 1.53 kB {0} [built] [failed] [1 error]
        
        ERROR in ./src/server.js
        Module build failed: Error: Couldn't find preset "es2015-webpack" relative to directory "/media/data/arul/miscellanous/pastalog/src"
            at /media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/options/option-manager.js:293:19
            at Array.map (native)
            at OptionManager.resolvePresets (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/options/option-manager.js:275:20)
            at OptionManager.mergePresets (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/options/option-manager.js:264:10)
            at OptionManager.mergeOptions (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/options/option-manager.js:249:14)
            at OptionManager.init (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/options/option-manager.js:368:12)
            at File.initOptions (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/index.js:212:65)
            at new File (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/index.js:135:24)
            at Pipeline.transform (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/pipeline.js:46:16)
            at transpile (/media/data/arul/miscellanous/pastalog/node_modules/babel-loader/lib/index.js:46:20)
            at Object.module.exports (/media/data/arul/miscellanous/pastalog/node_modules/babel-loader/lib/index.js:163:20)
    Child
        Hash: dcc1ef502acc1bbb5073
        Time: 2357ms
                        Asset     Size  Chunks             Chunk Names
        ./test/build/index.js  4.17 kB       0  [emitted]  main
           [0] ./test/index.js 1.54 kB {0} [built] [failed] [1 error]
        
        ERROR in ./test/index.js
        Module build failed: Error: Couldn't find preset "es2015-webpack" relative to directory "/media/data/arul/miscellanous/pastalog/test"
            at /media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/options/option-manager.js:293:19
            at Array.map (native)
            at OptionManager.resolvePresets (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/options/option-manager.js:275:20)
            at OptionManager.mergePresets (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/options/option-manager.js:264:10)
            at OptionManager.mergeOptions (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/options/option-manager.js:249:14)
            at OptionManager.init (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/options/option-manager.js:368:12)
            at File.initOptions (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/index.js:212:65)
            at new File (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/file/index.js:135:24)
            at Pipeline.transform (/media/data/arul/miscellanous/pastalog/node_modules/babel-core/lib/transformation/pipeline.js:46:16)
            at transpile (/media/data/arul/miscellanous/pastalog/node_modules/babel-loader/lib/index.js:46:20)
            at Object.module.exports (/media/data/arul/miscellanous/pastalog/node_modules/babel-loader/lib/index.js:163:20)
    
    npm ERR! Linux 3.13.0-32-generic
    npm ERR! argv "/home/arul/.nvm/v7.9.0/bin/node" "/home/arul/.nvm/v7.9.0/bin/npm" "run" "build"
    npm ERR! node v7.9.0
    npm ERR! npm  v4.2.0
    npm ERR! code ELIFECYCLE
    npm ERR! errno 2
    npm ERR! [email protected] build: `webpack`
    npm ERR! Exit status 2
    npm ERR! 
    npm ERR! Failed at the [email protected] build script 'webpack'.
    npm ERR! Make sure you have the latest version of node.js and npm installed.
    npm ERR! If you do, this is most likely a problem with the pastalog package,
    npm ERR! not with npm itself.
    npm ERR! Tell the author that this fails on your system:
    npm ERR!     webpack
    npm ERR! You can get information on how to open an issue for this project with:
    npm ERR!     npm bugs pastalog
    npm ERR! Or if that isn't available, you can get their info via:
    npm ERR!     npm owner ls pastalog
    npm ERR! There is likely additional logging output above.
    
    npm ERR! Please include the following file with any support request:
    npm ERR!     /home/arul/.npm/_logs/2017-04-23T19_07_24_649Z-debug.log
    
    
    opened by InnovArul 2
  • FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

    FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

    After start the server, the server seems to work fine until I try to access localhost:8120 via web brower. It seems that the issue is because there were too much data loaded before. I have tried reboot the system. It doesn't help.

    Any suggestion will be very appreciated.

    (DL) chih-yao@chihyao-ubuntu:~/DL$ pastalog --serve 8120

    [email protected] start /home/chih-yao/DL/lib/python2.7/site-packages/pastalog node build/server.js "--port" "8120"

    pastalog server listening on port: 8120

    <--- Last few GCs --->

    13396 ms: Mark-sweep 1378.7 (1434.6) -> 1378.7 (1434.6) MB, 433.6 / 0 ms [allocation failure] [GC in old space requested]. 13831 ms: Mark-sweep 1378.7 (1434.6) -> 1378.7 (1434.6) MB, 434.9 / 0 ms [allocation failure] [GC in old space requested]. 14266 ms: Mark-sweep 1378.7 (1434.6) -> 1378.7 (1434.6) MB, 434.7 / 0 ms [last resort gc]. 14703 ms: Mark-sweep 1378.7 (1434.6) -> 1378.7 (1434.6) MB, 437.1 / 0 ms [last resort gc].

    <--- JS stacktrace --->

    ==== JS stack trace =========================================

    Security context: 0x36629b1c9e31 2: encode(aka utf8encode) [/home/chih-yao/DL/lib/python2.7/site-packages/pastalog/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/utf8.js:~103] [pc=0x66f6db90c9f](this=0xec9e8310179 <an Object with map 0x275a26662199>,string=0x36629b104189 <undefined) 3: encodePacket [/home/chih-yao/DL/lib/python2.7/site-packages/pastalog/node_modules/sock...

    FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 1: node::Abort() [node] 2: 0xfc3f6c [node] 3: v8::Utils::ReportApiFailure(char const_, char const_) [node] 4: v8::internal::V8::FatalProcessOutOfMemory(char const_, bool) [node] 5: v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [node] 6: v8::internal::Runtime_AllocateInTargetSpace(int, v8::internal::Object__, v8::internal::Isolate_) [node] 7: 0x66f6da06338 Aborted (core dumped)

    npm ERR! Linux 4.4.0-34-generic npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "start" "--" "--port" "8120" npm ERR! node v6.4.0 npm ERR! npm v3.10.3 npm ERR! code ELIFECYCLE npm ERR! [email protected] start: node build/server.js "--port" "8120" npm ERR! Exit status 134 npm ERR! npm ERR! Failed at the [email protected] start script 'node build/server.js "--port" "8120"'. npm ERR! Make sure you have the latest version of node.js and npm installed. npm ERR! If you do, this is most likely a problem with the pastalog package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node build/server.js "--port" "8120" npm ERR! You can get information on how to open an issue for this project with: npm ERR! npm bugs pastalog npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm owner ls pastalog npm ERR! There is likely additional logging output above.

    npm ERR! Please include the following file with any support request: npm ERR! /home/chih-yao/DL/lib/python2.7/site-packages/pastalog/npm-debug.log

    opened by chihyaoma 1
  • Plot a list of points

    Plot a list of points

    It would be great to be able to plot a list of points instead of one single point at the time. E.g.

    from pastalog import Log
    log_a = Log('http://localhost:8120', 'modelA')
    
    log_a.post('trainLoss', value=[2.7, 3.1, 1.2, 2.8, 3.7], step=range(5))
    

    This would allow to significantly reduce the number of POST requests, moving the iteration over the data from the user's code to javascript.

    I am using pastalog to plot some historical data: I have around 100+ parameters of ~200 points each. With the current code I have to cycle through all the points and plot them one at the time. This is extremely slow, at the point that the plots are rendered several minutes after my plotting script ended.

    opened by fvisin 0
  • Change the database location

    Change the database location

    Currently the database is where the python package is installed. This is a pretty bad idea for several reasons: security, mixing code with data... and in my case the home directory is an nfs drive which is very slow. A better default would be at least /tmp/....

    I tried to change the database path I found here, but it doesn't seem to be working. Can you point me how to properly set the db path?

    opened by dmitriy-serdyuk 1
  • Building error with latest version from github

    Building error with latest version from github

    I'm trying to build the latest version of the code (pypi package works fine) and getting the following error:

    $ npm run build
    
    > [email protected] build /Volumes/data/projects/pastalog
    > webpack
    
    [BABEL] Note: The code generator has deoptimised the styling of "/Volumes/data/projects/pastalog/node_modules/immutable/dist/immutable.js" as it exceeds the max of "100KB".
    Hash: a50dc1dbe900ea6bcb4d244164e0fcd2efaf88086482cdaa7e742230415b
    Version: webpack 2.1.0-beta.13
    Child
        Hash: a50dc1dbe900ea6bcb4d
        Version: webpack 2.1.0-beta.13
        Time: 17305ms
                        Asset     Size  Chunks             Chunk Names
        ./build/assets/app.js  1.23 MB       0  [emitted]  main
            + 373 hidden modules
    
        ERROR in ./~/css-loader!./~/sass-loader!./src/styles.scss
        Module build failed:
            @extend .h3;
           ^
              ".gridMark" failed to @extend ".h3".
        The selector ".h3" was not found.
        Use "@extend .h3 !optional" if the extend should be able to fail.
              in /Volumes/data/projects/pastalog/src/styles.scss (line 131, column 5)
         @ ./src/styles.scss 4:14-117
    Child
        Hash: 244164e0fcd2efaf8808
        Version: webpack 2.1.0-beta.13
        Time: 17296ms
                    Asset    Size  Chunks             Chunk Names
        ./build/server.js  864 kB       0  [emitted]  main
            + 313 hidden modules
    Child
        Hash: 6482cdaa7e742230415b
        Version: webpack 2.1.0-beta.13
        Time: 17357ms
                        Asset    Size  Chunks             Chunk Names
        ./test/build/index.js  135 kB       0  [emitted]  main
            + 121 hidden modules
    
    npm ERR! Darwin 15.2.0
    npm ERR! argv "/usr/local/Cellar/node/6.2.0/bin/node" "/usr/local/bin/npm" "run" "build"
    npm ERR! node v6.2.0
    npm ERR! npm  v3.8.9
    npm ERR! code ELIFECYCLE
    npm ERR! [email protected] build: `webpack`
    npm ERR! Exit status 2
    npm ERR!
    npm ERR! Failed at the [email protected] build script 'webpack'.
    npm ERR! Make sure you have the latest version of node.js and npm installed.
    npm ERR! If you do, this is most likely a problem with the pastalog package,
    npm ERR! not with npm itself.
    npm ERR! Tell the author that this fails on your system:
    npm ERR!     webpack
    npm ERR! You can get information on how to open an issue for this project with:
    npm ERR!     npm bugs pastalog
    npm ERR! Or if that isn't available, you can get their info via:
    npm ERR!     npm owner ls pastalog
    npm ERR! There is likely additional logging output above.
    
    npm ERR! Please include the following file with any support request:
    npm ERR!     /Volumes/data/projects/pastalog/npm-debug.log
    

    After some time investigating, I discovered that this line causes the problem, the build runs fine if I delete it. What does this line do? What is the proper fix for this problem?

    opened by dmitriy-serdyuk 2
Owner
Rewon Child
Rewon Child
D-Analyst : High Performance Visualization Tool

D-Analyst : High Performance Visualization Tool D-Analyst is a high performance data visualization built with python and based on OpenGL. It allows to

null 4 Apr 14, 2022
Realtime Viewer Mandelbrot set with Python and Taichi (cpu, opengl, cuda, vulkan, metal)

Mandelbrot-set-Realtime-Viewer- Realtime Viewer Mandelbrot set with Python and Taichi (cpu, opengl, cuda, vulkan, metal) Control: "WASD" - movement, "

null 22 Oct 31, 2022
Learning Convolutional Neural Networks with Interactive Visualization.

CNN Explainer An interactive visualization system designed to help non-experts learn about Convolutional Neural Networks (CNNs) For more information,

Polo Club of Data Science 6.3k Jan 1, 2023
Simple spectra visualization tool for astronomers

SpecViewer A simple visualization tool for astronomers. Dependencies Python >= 3.7.4 PyQt5 >= 5.15.4 pyqtgraph == 0.10.0 numpy >= 1.19.4 How to use py

null 5 Oct 7, 2021
Boltzmann visualization - Visualize the Boltzmann distribution for simple quantum models of molecular motion

Boltzmann visualization - Visualize the Boltzmann distribution for simple quantum models of molecular motion

null 1 Jan 22, 2022
Simple CLI python app to show a stocks graph performance. Made with Matplotlib and Tiingo.

stock-graph-python Simple CLI python app to show a stocks graph performance. Made with Matplotlib and Tiingo. Tiingo API Key You will need to add your

Toby 3 May 14, 2022
Declarative statistical visualization library for Python

Altair http://altair-viz.github.io Altair is a declarative statistical visualization library for Python. With Altair, you can spend more time understa

Altair 8k Jan 5, 2023
Interactive Data Visualization in the browser, from Python

Bokeh is an interactive visualization library for modern web browsers. It provides elegant, concise construction of versatile graphics, and affords hi

Bokeh 17.1k Dec 31, 2022
Statistical data visualization using matplotlib

seaborn: statistical data visualization Seaborn is a Python visualization library based on matplotlib. It provides a high-level interface for drawing

Michael Waskom 10.2k Dec 30, 2022
Fast data visualization and GUI tools for scientific / engineering applications

PyQtGraph A pure-Python graphics library for PyQt5/PyQt6/PySide2/PySide6 Copyright 2020 Luke Campagnola, University of North Carolina at Chapel Hill h

pyqtgraph 3.1k Jan 8, 2023
Apache Superset is a Data Visualization and Data Exploration Platform

Superset A modern, enterprise-ready business intelligence web application. Why Superset? | Supported Databases | Installation and Configuration | Rele

The Apache Software Foundation 50k Jan 6, 2023
Debugging, monitoring and visualization for Python Machine Learning and Data Science

Welcome to TensorWatch TensorWatch is a debugging and visualization tool designed for data science, deep learning and reinforcement learning from Micr

Microsoft 3.3k Dec 27, 2022
Python script to generate a visualization of various sorting algorithms, image or video.

sorting_algo_visualizer Python script to generate a visualization of various sorting algorithms, image or video.

null 146 Nov 12, 2022
Statistical data visualization using matplotlib

seaborn: statistical data visualization Seaborn is a Python visualization library based on matplotlib. It provides a high-level interface for drawing

Michael Waskom 8.1k Feb 13, 2021
Interactive Data Visualization in the browser, from Python

Bokeh is an interactive visualization library for modern web browsers. It provides elegant, concise construction of versatile graphics, and affords hi

Bokeh 14.7k Feb 13, 2021
Declarative statistical visualization library for Python

Altair http://altair-viz.github.io Altair is a declarative statistical visualization library for Python. With Altair, you can spend more time understa

Altair 6.4k Feb 13, 2021
Fast data visualization and GUI tools for scientific / engineering applications

PyQtGraph A pure-Python graphics library for PyQt5/PyQt6/PySide2/PySide6 Copyright 2020 Luke Campagnola, University of North Carolina at Chapel Hill h

pyqtgraph 2.3k Feb 13, 2021
Missing data visualization module for Python.

missingno Messy datasets? Missing values? missingno provides a small toolset of flexible and easy-to-use missing data visualizations and utilities tha

Aleksey Bilogur 3.4k Dec 29, 2022
Streaming pivot visualization via WebAssembly

Perspective is an interactive visualization component for large, real-time datasets. Originally developed for J.P. Morgan's trading business, Perspect

The Fintech Open Source Foundation (www.finos.org) 5.1k Dec 27, 2022