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
Rick and Morty Data Visualization with python

Rick and Morty Data Visualization For this project I looked at data for the TV show Rick and Morty Number of Episodes at a Certain Location Here is th

7 Aug 29, 2022
Insert SVGs into matplotlib

Insert SVGs into matplotlib

Andrew White 35 Dec 29, 2022
A Simple Flask-Plotly Example for NTU 110-1 DSSI Class

A Simple Flask-Plotly Example for NTU 110-1 DSSI Class Live Demo Prerequisites We will use Flask and Ploty to build a Flask application. If you haven'

Ting Ni Wu 1 Dec 11, 2021
Design your own matplotlib stylefile interactively

Tired of playing with font sizes and other matplotlib parameters every time you start a new project or write a new plotting function? Want all you plots have the same style? Use matplotlib configurat

yobi byte 207 Dec 08, 2022
ICS-Visualizer is an interactive Industrial Control Systems (ICS) network graph that contains up-to-date ICS metadata

ICS-Visualizer is an interactive Industrial Control Systems (ICS) network graph that contains up-to-date ICS metadata (Name, company, port, user manua

QeeqBox 2 Dec 13, 2021
Visualization Data Drug in thailand during 2014 to 2020

Visualization Data Drug in thailand during 2014 to 2020 Data sorce from ข้อมูลเปิดภาครัฐ สำนักงาน ป.ป.ส Inttroducing program Using tkinter module for

Narongkorn 1 Jan 05, 2022
A tool to plot and execute Rossmos's Formula, that helps to catch serial criminals using mathematics

Rossmo Plotter A tool to plot and execute Rossmos's Formula using python, that helps to catch serial criminals using mathematics Author: Amlan Saha Ku

Amlan Saha Kundu 3 Aug 29, 2022
clock_plot provides a simple way to visualize timeseries data, mapping 24 hours onto the 360 degrees of a polar plot

clock_plot clock_plot provides a simple way to visualize timeseries data mapping 24 hours onto the 360 degrees of a polar plot. For usage, please see

12 Aug 24, 2022
Visualise Ansible execution time across playbooks, tasks, and hosts.

ansible-trace Visualise where time is spent in your Ansible playbooks: what tasks, and what hosts, so you can find where to optimise and decrease play

Mark Hansen 81 Dec 15, 2022
Here I plotted data for the average test scores across schools and class sizes across school districts.

HW_02 Here I plotted data for the average test scores across schools and class sizes across school districts. Average Test Score by Race This graph re

7 Oct 27, 2021
Parallel t-SNE implementation with Python and Torch wrappers.

Multicore t-SNE This is a multicore modification of Barnes-Hut t-SNE by L. Van der Maaten with python and Torch CFFI-based wrappers. This code also wo

Dmitry Ulyanov 1.7k Jan 09, 2023
Plotting library for IPython/Jupyter notebooks

bqplot 2-D plotting library for Project Jupyter Introduction bqplot is a 2-D visualization system for Jupyter, based on the constructs of the Grammar

3.4k Dec 30, 2022
CompleX Group Interactions (XGI) provides an ecosystem for the analysis and representation of complex systems with group interactions.

XGI CompleX Group Interactions (XGI) is a Python package for the representation, manipulation, and study of the structure, dynamics, and functions of

Complex Group Interactions 67 Dec 28, 2022
A set of three functions, useful in geographical calculations of different sorts

GreatCircle A set of three functions, useful in geographical calculations of different sorts. Available for PHP, Python, Javascript and Ruby. Live dem

72 Sep 30, 2022
A TileDB backend for xarray.

TileDB-xarray This library provides a backend engine to xarray using the TileDB Storage Engine. Example usage: import xarray as xr dataset = xr.open_d

TileDB, Inc. 14 Jun 02, 2021
Python package for the analysis and visualisation of finite-difference fields.

discretisedfield Marijan Beg1,2, Martin Lang2, Samuel Holt3, Ryan A. Pepper4, Hans Fangohr2,5,6 1 Department of Earth Science and Engineering, Imperia

ubermag 12 Dec 14, 2022
This project is an Algorithm Visualizer where a user can visualize algorithms like Bubble Sort, Merge Sort, Quick Sort, Selection Sort, Linear Search and Binary Search.

Algo_Visualizer This project is an Algorithm Visualizer where a user can visualize common algorithms like "Bubble Sort", "Merge Sort", "Quick Sort", "

Rahul 4 Feb 07, 2022
a robust room presence solution for home automation with nearly no false negatives

Argos Room Presence This project builds a room presence solution on top of Argos. Using just a cheap raspberry pi zero w (plus an attached pi camera,

Angad Singh 46 Sep 18, 2022
Machine learning beginner to Kaggle competitor in 30 days. Non-coders welcome. The program starts Monday, August 2, and lasts four weeks. It's designed for people who want to learn machine learning.

30-Days-of-ML-Kaggle 🔥 About the Hands On Program 💻 Machine learning beginner → Kaggle competitor in 30 days. Non-coders welcome The program starts

Roja Achary 145 Jan 01, 2023
Typical: Fast, simple, & correct data-validation using Python 3 typing.

typical: Python's Typing Toolkit Introduction Typical is a library devoted to runtime analysis, inference, validation, and enforcement of Python types

Sean 171 Jan 02, 2023