TensorDebugger (TDB) is a visual debugger for deep learning. It extends TensorFlow with breakpoints + real-time visualization of the data flowing through the computational graph

Related tags

Data Visualizationtdb
Overview

TDB

*Note: This project is no longer actively being maintained. Please check out the official tfdbg debugger

TensorDebugger (TDB) is a visual debugger for deep learning. It extends TensorFlow (Google's Deep Learning framework) with breakpoints + real-time visualization of the data flowing through the computational graph.

Video Demo

Specifically, TDB is the combination of a Python library and a Jupyter notebook extension, built around Google's TensorFlow framework. Together, these extend TensorFlow with the following features:

  • Breakpoints: Set breakpoints on Ops and Tensors in the graph. Graph execution is paused on breakpoints and resumed by the user (via tdb.c()) Debugging features can be used with or without the visualization frontend.
  • Arbitrary Summary Plots: Real-time visualization of high-level information (e.g. histograms, gradient magnitudes, weight saturation) while the network is being trained. Supports arbitrary, user-defined plot functions.
  • Flexible: Mix user-defined Python and plotting functions with TensorFlow Nodes. These take in tf.Tensors and output placeholder nodes to be plugged into TensorFlow nodes. The below diagram illustrates how TDB nodes can be mixed with the TensorFlow graph.

heterogenous

Motivations

Modern machine learning models are parametrically complex and require considerable intuition to fine-tune properly.

In particular, Deep Learning methods are especially powerful, but hard to interpret in regards to their capabilities and learned representations.

Can we enable better understanding of how neural nets learn, without having to change model code or sacrifice performance? Can I finish my thesis on time?

TDB addresses these challenges by providing run-time visualization tools for neural nets. Real-time visual debugging allows training bugs to be detected sooner, thereby reducing the iteration time needed to build the right model.

Setup

To install the Python library,

pip install tfdebugger

To install the Jupyter Notebook extension, run the following in a Python terminal (you will need to have IPython or Jupyter installed)

import notebook.nbextensions
import urllib
import zipfile
SOURCE_URL = 'https://github.com/ericjang/tdb/releases/download/tdb_ext_v0.1/tdb_ext.zip'
urllib.urlretrieve(SOURCE_URL, 'tdb_ext.zip')
with zipfile.ZipFile('tdb_ext.zip', "r") as z:
    z.extractall("")
notebook.nbextensions.install_nbextension('tdb_ext',user=True)

Tutorial

To get started, check out the MNIST Visualization Demo. More examples and visualizations to come soon.

User Guide

Debugging

Start

status,result=tdb.debug(evals,feed_dict=None,breakpoints=None,break_immediately=False,session=None)

debug() behaves just like Tensorflow's Session.run(). If a breakpoint is hit, status is set to 'PAUSED' and result is set to None. Otherwise, status is set to 'FINISHED' and result is set to a list of evaluated values.

Continue

status,result=tdb.c()

Continues execution of a paused session, until the next breakpoint or end. Behaves like debug.

Step

status,result=tdb.s()

Evaluate the next node, then pause immediately to await user input. Unless we have reached the end of the execution queue, status will remain 'PAUSED'. result is set to the value of the node we just evaluated.

Where

q=tdb.get_exe_queue()

Return value: list of remaining nodes to be evaluated, in order.

print

val=tdb.get_value(node)

Returns value of an evaluated node (a string name or a tf.Tensor)

Custom Nodes

TDB supports 2 types of custom Ops:

Python

Here is an example of mixing tdb.PythonOps with TensorFlow.

Define the following function:

def myadd(ctx,a,b):
	return a+b
a=tf.constant(2)
b=tf.constant(3)
c=tdb.python_op(myadd,inputs=[a,b],outputs=[tf.placeholder(tf.int32)]) # a+b
d=tf.neg(c)
status,result=tdb.debug([d], feed_dict=None, breakpoints=None, break_immediately=False)	

When myadd gets evaluated, ctx is the instance of the PythonOp that it belongs to. You can use ctx to store state information (i.e. accumulate loss history).

Plotting

PlotOps are a special instance of PythonOp that send graphical output to the frontend.

This only works with Matplotlib at the moment, but other plotting backends (Seaborn, Bokeh, Plotly) are coming soon.

def watch_loss(ctx,loss):
  if not hasattr(ctx, 'loss_history'):
    ctx.loss_history=[]
  ctx.loss_history.append(loss)
  plt.plot(ctx.loss_history)
  plt.ylabel('loss')
ploss=tdb.plot_op(viz.watch_loss,inputs=[loss])

Refer to the MNIST Visualization Demo for more examples. You can also find more examples in the tests/ directory.

FAQ

Is TDB affiliated with TensorFlow?

No, but it is built on top of it.

What is TDB good for?

TDB is especially useful at the model prototyping stage and verifying correctness in an intuitive manner. It is also useful for high-level visualization of hidden layers during training.

How is TDB different from TensorBoard?

TensorBoard is a suite of visualization tools included with Tensorflow. Both TDB and TensorBoard attach auxiliary nodes to the TensorFlow graph in order to inspect data.

TensorBoard cannot be used concurrently with running a TensorFlow graph; log files must be written first. TDB interfaces directly with the execution of a TensorFlow graph, and allows for stepping through execution one node at a time.

Out of the box, TensorBoard currently only supports logging for a few predefined data formats.

TDB is to TensorBoard as GDB is to printf. Both are useful in different contexts.

License

Apache 2.0

Comments
  • Connecting debugger and TensorFlow

    Connecting debugger and TensorFlow

    I have followed the instructions and changed the example on two computers:

    sys.path.append('/home/evjang/thesis/tensor_debugger')

    sys.path.append('/home/lee/softwareinstalled/anaconda3-5/tdb_ext')

    sys.path.append('/home/mylao/tdb')

    Is this the correct location? I get this message: “Waiting for TDB to connect...”

    The MNIST exapmle was not in the tdb_ext download so I cloned TDB from Git also. https://github.com/ericjang/tdb/releases/download/tdb_ext_v0.1/tdb_ext.zip https://github.com/ericjang/tdb.git


    import notebook.nbextensions import urllib import zipfile SOURCE_URL = 'https://github.com/ericjang/tdb/releases/download/tdb_ext_v0.1/tdb_ext.zip' urllib.urlretrieve(SOURCE_URL, 'tdb_ext.zip') with zipfile.ZipFile('tdb_ext.zip', "r") as z: z.extractall("") notebook.nbextensions.install_nbextension('tdb_ext',user=True)

    There has been some change, I think it is supposed to be like this now: http://stackoverflow.com/questions/17960942/attributeerror-module-object-has-no-attribute-urlretrieve

    import urllib.request data = urllib.request.urlretrieve("http://...")


    I foolishly thought this comment was changing the location was was trying to modify it there!

    sys.path.append('/home/

    Now I think it means to change /home/.bashrc Here is a helpful note for noobs like me:

    add this line to the bottom of /home/.bashrc

    export PATH="/home/lee/softwareInstalled/anaconda3-5/tdb_ext:$PATH"

    refresh .bashrc with . ~/.bashrc or logout and logback in

    It seems to load tensorflow and urllib but not the other imports.

    This is the bottom of /home/.bashrc

    added by Anaconda3 2.4.1 installer

    export PATH="/home/lee/anaconda3/bin:$PATH" export PATH="/home/lee/softwareInstalled/anaconda3-5/tdb_ext:$PATH" export PATH="/home/lee/softwareInstalled/anaconda3-5/tdb_ext/tdb:$PATH" export PATH="/home/lee/softwareinstalled/anaconda3-5/tdb_ext/tdb/tdb/examples:$PATH"

    [email protected]:~$ echo $PATH /home/lee/softwareInstalled/anaconda3-5/tdb_ext/tdb:/home/lee/softwareInstalled/anaconda3-5/tdb_ext:/home/lee/anaconda3/bin:/home/lee/softwareInstalled/anaconda3-5/tdb_ext/tdb:/home/lee/anaconda3/bin:/home/lee/softwareInstalled/anaconda3-5/tdb_ext:/home/lee/anaconda3/bin:/home/lee/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

    import tdb from tdb.examples import mnist, viz import matplotlib.pyplot as plt import tensorflow as tf

    import urllib

    ImportError Traceback (most recent call last) in () 5 #refresh .bashrc with . ~/.bashrc or logout and logback in 6 ----> 7 import tdb 8 from tdb.examples import mnist, viz 9 import matplotlib.pyplot as plt

    /home/lee/anaconda3/lib/python3.5/site-packages/tdb/init.py in () 6 """ 7 ----> 8 from interface import debug, c, s, get_exe_queue, get_value 9 import op_store 10 from plot_op import plot_op

    ImportError: No module named 'interface'


    I uncommented this line, now I get: sys.path.append('/home/lee/softwareinstalled/anaconda3-5/tdb_ext')

    ----> 2 sys.path.append('/home/lee/softwareinstalled/anaconda3-5/tdb_ext')

    NameError: name 'sys' is not defined


    I uncommented this line so the 'sys' error goes away. import sys

    Now I am back to this error:

    7 import tdb 8 from tdb.examples import mnist, viz 9 import matplotlib.pyplot as plt

    /home/lee/anaconda3/lib/python3.5/site-packages/tdb/init.py in () 6 """ 7 ----> 8 from interface import debug, c, s, get_exe_queue, get_value 9 import op_store 10 from plot_op import plot_op

    ImportError: No module named 'interface'


    Now I have this: import sys sys.path.append('/home/lee/softwareinstalled/anaconda3-5/tdb_ext') sys.path.append('/home/lee/softwareinstalled/anaconda3-5/tdb_ext/tdb/tdb/') sys.path.append('/usr/local/lib/python2.7/dist-packages/tensorflow')

    /home/lee/anaconda3/lib/python3.5/site-packages/tdb/init.py in () 6 """ 7 ----> 8 from interface import debug, c, s, get_exe_queue, get_value 9 import op_store 10 from plot_op import plot_op

    /home/lee/softwareinstalled/anaconda3-5/tdb_ext/tdb/tdb/interface.py in () 4 """ 5 ----> 6 import debug_session 7 8 # default session

    /home/lee/softwareinstalled/anaconda3-5/tdb_ext/tdb/tdb/debug_session.py in () 1 2 from ht_op import HTOp ----> 3 import op_store 4 import tensorflow as tf 5

    /home/lee/softwareinstalled/anaconda3-5/tdb_ext/tdb/tdb/op_store.py in () 1 from toposort import toposort, toposort_flatten 2 from transitive_closure import transitive_closure ----> 3 import tensorflow as tf 4 5 _ops={} # Map<string,tdb.PythonOp>

    ImportError: No module named 'tensorflow'


    [email protected]:~$ echo $PATH /usr/local/lib/python2.7/dist-packages/tensorflow: /home/lee/softwareinstalled/anaconda3-5/tdb_ext/tdb/tdb/examples: /home/lee/softwareInstalled/anaconda3-5/tdb_ext/tdb: /home/lee/softwareInstalled/anaconda3-5/tdb_ext: /home/lee/anaconda3/bin:/home/lee/softwareinstalled/anaconda3-5/tdb_ext/tdb/tdb/examples: /home/lee/softwareInstalled/anaconda3-5/tdb_ext/tdb:/home/lee/softwareInstalled/anaconda3-5/tdb_ext: /home/lee/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin: /usr/bin:/sbin:/bin:/usr/games: /usr/local/games

    [email protected]:~$ echo $PYTHONPATH


    Now it looks like this, still not finding TensorFlow:

    import sys sys.path.append('/home/lee/softwareinstalled/anaconda3-5/tdb_ext') sys.path.append('/home/lee/softwareinstalled/anaconda3-5/tdb_ext/tdb/tdb/') sys.path.append('/usr/local/lib/python2.7/dist-packages/tensorflow') print (sys.path)

    import tdb from tdb.examples import mnist, viz import matplotlib.pyplot as plt import tensorflow as tf import urllib

    ['', '/home/lee/anaconda3/lib/python35.zip', '/home/lee/anaconda3/lib/python3.5', '/home/lee/anaconda3/lib/python3.5/plat-linux', '/home/lee/anaconda3/lib/python3.5/lib-dynload', '/home/lee/anaconda3/lib/python3.5/site-packages/Sphinx-1.3.1-py3.5.egg', '/home/lee/anaconda3/lib/python3.5/site-packages/setuptools-19.4-py3.5.egg', '/home/lee/anaconda3/lib/python3.5/site-packages', '/home/lee/anaconda3/lib/python3.5/site-packages/cryptography-1.0.2-py3.5-linux-x86_64.egg', '/home/lee/anaconda3/lib/python3.5/site-packages/IPython/extensions', '/home/lee/.ipython', '/home/lee/softwareinstalled/anaconda3-5/tdb_ext', '/home/lee/softwareinstalled/anaconda3-5/tdb_ext/tdb/tdb/', '/usr/local/lib/python2.7/dist-packages/tensorflow']

    ImportError Traceback (most recent call last) in () 8 #refresh .bashrc with . ~/.bashrc or logout and logback in 9 ---> 10 import tdb 11 from tdb.examples import mnist, viz 12 import matplotlib.pyplot as plt

    /home/lee/anaconda3/lib/python3.5/site-packages/tdb/init.py in () 6 """ 7 ----> 8 from interface import debug, c, s, get_exe_queue, get_value 9 import op_store 10 from plot_op import plot_op

    /home/lee/softwareinstalled/anaconda3-5/tdb_ext/tdb/tdb/interface.py in () 4 """ 5 ----> 6 import debug_session 7 8 # default session

    /home/lee/softwareinstalled/anaconda3-5/tdb_ext/tdb/tdb/debug_session.py in () 1 2 from ht_op import HTOp ----> 3 import op_store 4 import tensorflow as tf 5

    /home/lee/softwareinstalled/anaconda3-5/tdb_ext/tdb/tdb/op_store.py in () 1 from toposort import toposort, toposort_flatten 2 from transitive_closure import transitive_closure ----> 3 import tensorflow as tf 4 5 _ops={} # Map<string,tdb.PythonOp>

    ImportError: No module named 'tensorflow'

    Any advice would be appreciated Thanks, Lee

    opened by technologiclee 9
  • How to plot validation loss and training loss?

    How to plot validation loss and training loss?

    g=tf.get_default_graph()
    ploss=tdb.plot_op(viz.watch_loss,inputs=[loss])
    # plot realtime metrics
        status,result=tdb.debug([loss,ploss,], feed_dict={inputs: data.train.X, outputs: data.train.labels},, session=sess)
    

    Works on plotting the training loss.

    But if I try:

    g=tf.get_default_graph()
    ploss=tdb.plot_op(viz.watch_loss,inputs=[loss])
    # plot realtime metrics
        status,result=tdb.debug([loss,ploss,], feed_dict={inputs: data.validation.X, outputs: data.validation.labels}, session=sess)
    

    But this doesn't work. Is there an example of how to also plot training and validation loss on the same plot?

    Thanks so much.

    opened by bcordo 1
  • IOError: Not a gzipped file

    IOError: Not a gzipped file

    I stepped throught the example three times. First after it installed, it gave some numerical output and no images. Then I restarted the computer. Second it gave the following errors and no images. The third time, no numerical output and no images. Are there other packages that should be installed in the virtual environment for the graphs to work?

    Step 4 works: train-images-idx3-ubyte.gz train-labels-idx1-ubyte.gz t10k-images-idx3-ubyte.gz t10k-labels-idx1-ubyte.gz

    Step 5:

    (train_data, 
     train_labels, 
     validation_data, 
     validation_labels, 
     test_data, 
     test_labels) = mnist.get_data(download_dir)
    
    
    ('Extracting', '/tmp/train-images-idx3-ubyte.gz')
    ---------------------------------------------------------------------------
    IOError                                   Traceback (most recent call last)
    <ipython-input-7-aa08c9ebe098> in <module>()
          5  validation_labels,
          6  test_data,
    ----> 7  test_labels) = mnist.get_data(download_dir)
    
    /home/lee/.local/lib/python2.7/site-packages/tdb/examples/mnist.pyc in get_data(data_root)
         61 
         62   # Extract it into numpy arrays.
    ---> 63   train_data = extract_data(train_data_filename, 60000)
         64   train_labels = extract_labels(train_labels_filename, 60000)
         65   test_data = extract_data(test_data_filename, 10000)
    
    /home/lee/.local/lib/python2.7/site-packages/tdb/examples/mnist.pyc in extract_data(filename, num_images)
         35   print('Extracting', filename)
         36   with gzip.open(filename) as bytestream:
    ---> 37     bytestream.read(16)
         38     buf = bytestream.read(IMAGE_SIZE * IMAGE_SIZE * num_images)
         39     data = np.frombuffer(buf, dtype=np.uint8).astype(np.float32)
    
    /home/lee/anaconda2/lib/python2.7/gzip.pyc in read(self, size)
        266             try:
        267                 while size > self.extrasize:
    --> 268                     self._read(readsize)
        269                     readsize = min(self.max_read_chunk, readsize * 2)
        270             except EOFError:
    
    /home/lee/anaconda2/lib/python2.7/gzip.pyc in _read(self, size)
        301 
        302             self._init_read()
    --> 303             self._read_gzip_header()
        304             self.decompress = zlib.decompressobj(-zlib.MAX_WBITS)
        305             self._new_member = False
    
    /home/lee/anaconda2/lib/python2.7/gzip.pyc in _read_gzip_header(self)
        195         magic = self.fileobj.read(2)
        196         if magic != '\037\213':
    --> 197             raise IOError, 'Not a gzipped file'
        198         method = ord( self.fileobj.read(1) )
        199         if method != 8:
    
    IOError: Not a gzipped file
    
    
    opened by technologiclee 1
  • How to run in python3

    How to run in python3

    First of all, Thank you for this. It is awesome.

    Second, I have started porting the code to python3 (all my env is python3) and I have got the extension and the plots to show on Jupyter. However I am now running into problems when setting breakpoints. What happens is, once the bp is hit, the code keeps executing. I have looked at the code, and I don't know if I am using the bp capability wrong, or if there is issues with python3.

    Here is where I use tdb

    for _ in range(n_batches):
        batch = data_gen.get_batch(batch_size)
        feed = {X: batch[0], y: one_hot(batch[1], n_classes)}
        stat, res = tdb.debug([train_step, cross_entropy, accuracy, y_],
                                          feed_dict=feed, break_immediately=True,
                                          session=sess)
    

    And this is the output when I run that:

    Breakpoint triggered. Next Node:  SoftmaxCrossEntropyWithLogits_1:0
    Breakpoint triggered. Next Node:  SoftmaxCrossEntropyWithLogits_1:0
    Breakpoint triggered. Next Node:  SoftmaxCrossEntropyWithLogits_1:0
    Breakpoint triggered. Next Node:  SoftmaxCrossEntropyWithLogits_1:0
    Breakpoint triggered. Next Node:  SoftmaxCrossEntropyWithLogits_1:0
    Breakpoint triggered. Next Node:  SoftmaxCrossEntropyWithLogits_1:0
    Breakpoint triggered. Next Node:  SoftmaxCrossEntropyWithLogits_1:0
    Breakpoint triggered. Next Node:  SoftmaxCrossEntropyWithLogits_1:0
    

    It doesn't stop until after the code has executed. My changes to make the code python3 compatible include very simple things:

    • Make all the imports relative, i.e. change import asdf for from . import asdf
    • Change StringIO for io.BytesIO.
    • Change base64.b64encode for base64.encodebytes.

    I have the suspicion that this is the intended behavior and that I should check the value of status and stop execution based on it, however I want to make sure this is the case.

    opened by green-john 0
  • Cannot load required js.

    Cannot load required js.

    I have installed the 'tdb' by

    python notebook.nbextensions.install_nbextension('tdb_ext',user=True)

    But when

    %%javascript Jupyter.utils.load_extensions('tdb_ext/main')

    However, on the right of Chrome, there was a panel show 'Waiting for TDB to connect...'

    Besides, Chrome show errors

    Failed http://localhost:8888/nbextensions/tdb_ext.js to load resource: the server responded with a status of 404 (Not Found)

    Could someone help #me?

    opened by fortyMiles 1
  • import tdb occurs error in python3.5

    import tdb occurs error in python3.5

    Traceback (most recent call last): File "", line 1, in File "/Users/shawn/anaconda/lib/python3.5/site-packages/tdb/init.py", line 8, in from interface import debug, c, s, get_exe_queue, get_value ImportError: No module named 'interface' >>> import tdb Traceback (most recent call last): File "", line 1, in File "/Users/shawn/anaconda/lib/python3.5/site-packages/tdb/init.py", line 8, in from interface import debug, c, s, get_exe_queue, get_value ImportError: No module named 'interface'

    opened by Shawn1993 4
  • Import tdb

    Import tdb

    Hi i am getting error while i use this command in jupyter note books, I check first two lines in the program, they are working fine, but i cant go pass this stage. Can you help me?

    import sys sys.path.append('C:\Users\kiran\Desktop\tdb-master')

    import tdb from tdb.examples import mnist, viz

    opened by kirangavini 0
  • How to set breakpoints?

    How to set breakpoints?

    Hi eric, this tool is cool. Could you show me some example about how to set breakpoints?

    status,result=tdb.debug(evals,feed_dict=None,breakpoints=None,break_immediately=False,session=None)

    How to config breakpoints argument in above code

    opened by jerryli1981 1
  • notebook.nbextensions: invalid syntax

    notebook.nbextensions: invalid syntax

    Hi everyone,

    I got this error message when run the script to install the Jupyter Notebook extension.

    ... notebook.nbextensions.install_nbextension('tdb_ext',user=True) File "", line 3 notebook.nbextensions.install_nbextension('tdb_ext',user=True) ^ SyntaxError: invalid syntax

    When I try to run this script on Jupter notebook, the script can run through without error message. However, when I run the whole demo script, I got the message: InternalError: cuDNN launch failure I think as the script on Jupyter notebook only install the extension virtually.

    copying /home/anhxtuan/Dropbox/0-PhD/1-Tutorials/TensorFlow/tdb_ext/main.js -> /home/anhxtuan/.local/share/jupyter/nbextensions/tdb_ext/main.js

    I think the correct path should be: /usr/local/share/jupyter/nbextensions/tdb_ext/main.js. Right?

    What could be the issue here and how can I resolve it?

    Btw, I have successfully installed the TDB library:

    sudo pip install tfdebugger [sudo] password for anhxtuan: Requirement already satisfied (use --upgrade to upgrade): tfdebugger in /usr/local/lib/python2.7/dist-packages Requirement already satisfied (use --upgrade to upgrade): toposort>=1.4 in /usr/local/lib/python2.7/dist-packages (from tfdebugger) Cleaning up...

    And I also can run the TensorFlow demo without TDB successfully, so I think it should not be a problem with cnDNN library.

    Thank you very much.

    opened by hnanhtuan 0
Releases(tdb_ext_v0.1)
Owner
Eric Jang
Robotics researcher at Google Brain
Eric Jang
Use Perspective to create the chart for the trader’s dashboard

Task Overview | Installation Instructions | Link to Module 3 Introduction Experience Technology at JP Morgan Chase Try out what real work is like in t

Abdulazeez Jimoh 1 Jan 22, 2022
Visualizations of some specific solutions of different differential equations.

Diff_sims Visualizations of some specific solutions of different differential equations. Heat Equation in 1 Dimension (A very beautiful and elegant ex

2 Jan 13, 2022
This GitHub Repository contains Data Analysis projects that I have completed so far! While most of th project are focused on Data Analysis, some of them are also put here to show off other skills that I have learned.

Welcome to my Data Analysis projects page! This GitHub Repository contains Data Analysis projects that I have completed so far! While most of th proje

Kyle Dini 1 Jan 31, 2022
Uniform Manifold Approximation and Projection

UMAP Uniform Manifold Approximation and Projection (UMAP) is a dimension reduction technique that can be used for visualisation similarly to t-SNE, bu

Leland McInnes 6k Jan 08, 2023
nptsne is a numpy compatible python binary package that offers a number of APIs for fast tSNE calculation.

nptsne nptsne is a numpy compatible python binary package that offers a number of APIs for fast tSNE calculation and HSNE modelling. For more detail s

Biomedical Visual Analytics Unit LUMC - TU Delft 29 Jul 05, 2022
🐍PyNode Next allows you to easily create beautiful graph visualisations and animations

PyNode Next A complete rewrite of PyNode for the modern era. Up to five times faster than the original PyNode. PyNode Next allows you to easily create

ehne 3 Feb 12, 2022
3D plotting and mesh analysis through a streamlined interface for the Visualization Toolkit (VTK)

PyVista Deployment Build Status Metrics Citation License Community 3D plotting and mesh analysis through a streamlined interface for the Visualization

PyVista 1.6k Jan 08, 2023
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
A declarative (epi)genomics visualization library for Python

gos is a declarative (epi)genomics visualization library for Python. It is built on top of the Gosling JSON specification, providing a simplified interface for authoring interactive genomic visualiza

Gosling 107 Dec 14, 2022
High-level geospatial data visualization library for Python.

geoplot: geospatial data visualization geoplot is a high-level Python geospatial plotting library. It's an extension to cartopy and matplotlib which m

Aleksey Bilogur 1k Jan 01, 2023
Visual Python is a GUI-based Python code generator, developed on the Jupyter Notebook environment as an extension.

Visual Python is a GUI-based Python code generator, developed on the Jupyter Notebook environment as an extension.

Visual Python 564 Jan 03, 2023
Alternative layout visualizer for ZSA Moonlander keyboard

General info This is a keyboard layout visualizer for ZSA Moonlander keyboard (because I didn't find their Oryx or their training tool particularly us

10 Jul 19, 2022
DataVisualization - The evolution of my arduino and python journey. New level of competence achieved

DataVisualization - The evolution of my arduino and python journey. New level of competence achieved

1 Jan 03, 2022
This is a Web scraping project using BeautifulSoup and Python to scrape basic information of all the Test matches played till Jan 2022.

Scraping-test-matches-data This is a Web scraping project using BeautifulSoup and Python to scrape basic information of all the Test matches played ti

Souradeep Banerjee 4 Oct 10, 2022
Fractals plotted on MatPlotLib in Python.

About The Project Learning more about fractals through the process of visualization. Built With Matplotlib Numpy License This project is licensed unde

Akeel Ather Medina 2 Aug 30, 2022
Advanced hot reloading for Python

The missing element of Python - Advanced Hot Reloading Details Reloadium adds hot reloading also called "edit and continue" functionality to any Pytho

Reloadware 1.9k Jan 04, 2023
Simple Inkscape Scripting

Simple Inkscape Scripting Description In the Inkscape vector-drawing program, how would you go about drawing 100 diamonds, each with a random color an

Scott Pakin 140 Dec 27, 2022
Arras.io Highest Scores Over Time Bar Chart Race

Arras.io Highest Scores Over Time Bar Chart Race This repo contains a python script (make_racing_bar_chart.py) that can generate a csv file which can

Road 2 Jan 16, 2022
Project coded in Python using Pandas to look at changes in chase% for batters facing a pitcher first time through the order vs. thrid time

Project coded in Python using Pandas to look at changes in chase% for batters facing a pitcher first time through the order vs. thrid time

Jason Kraynak 1 Jan 07, 2022
Visualize your pandas data with one-line code

PandasEcharts 简介 基于pandas和pyecharts的可视化工具 安装 pip 安装 $ pip install pandasecharts 源码安装 $ git clone https://github.com/gamersover/pandasecharts $ cd pand

陈华杰 2 Apr 13, 2022