GR.jl Plotting for Julia based on GR



Similar documents
Getting more out of Matplotlib with GR

GR Framework / MODBUS on Raspberry Pi

GR A universal framework for visualization applications

Neutron Science Visualization Software

Scientific Visualization

Visualizing Data: Scalable Interactivity

Introduction to WebGL

BogDan Vatra and Andy Gryc. Qt on Android: Is it right for you?

Lecture Notes, CEng 477

CSE 237A Final Project Final Report

Android Architecture. Alexandra Harrison & Jake Saxton

Developing Applications for ios

The Most Popular UI/Apps Framework For IVI on Linux

A Hybrid Visualization System for Molecular Models

Parallel Visualization of Petascale Simulation Results from GROMACS, NAMD and CP2K on IBM Blue Gene/P using VisIt Visualization Toolkit

Extending Tizen Native Framework with Node.js

Session 85 IF, Predictive Analytics for Actuaries: Free Tools for Life and Health Care Analytics--R and Python: A New Paradigm!

Advertising Specifications, Standards and Guidelines

Performance Optimization and Debug Tools for mobile games with PlayCanvas

Nicolas P. Rougier PyConFr Conference 2014 Lyon, October 24 25

Mobile Phones Operating Systems

HTML5 the new. standard for Interactive Web

Parallel Web Programming

Lecture 1 Introduction to Android

-Android 2.3 is the most used version of Android on the market today with almost 60% of all Android devices running 2.3 Gingerbread -Winner of

Development. SriSeshaa Technologies. Table of Contents

imc FAMOS 6.3 visualization signal analysis data processing test reporting Comprehensive data analysis and documentation imc productive testing

Color correction in 3D environments Nicholas Blackhawk

Unlocking the True Value of Hadoop with Open Data Science

Why are we teaching you VisIt?

imc FAMOS 6.3 visualization signal analysis data processing test reporting Comprehensive data analysis and documentation imc productive testing

Chapter 13: Program Development and Programming Languages

IDL. Get the answers you need from your data. IDL

Programming 3D Applications with HTML5 and WebGL

Research on HTML5 in Web Development

Windmill. Automated Testing for Web Applications

SYST35300 Hybrid Mobile Application Development

Web-Based Enterprise Data Visualization a 3D Approach. Oleg Kachirski, Black and Veatch

Технологии Java. Android: Введение. Кузнецов Андрей Николаевич. Санкт-Петербургский Государственный Политехнический Университет

Windows Embedded Compact 7 Multimedia Features 1

Today's Topics. COMP 388/441: Human-Computer Interaction. simple 2D plotting. 1D techniques. Ancient plotting techniques. Data Visualization:

2: Introducing image synthesis. Some orientation how did we get here? Graphics system architecture Overview of OpenGL / GLU / GLUT

Data analysis and visualization topics

2311A: Advanced Web Application Development using Microsoft ASP.NET Course 2311A Three days Instructor-led

HTML5, The Future of App Development

An Introduction to Android

Firefox for Android. Reviewer s Guide. Contact us: press@mozilla.com

4/25/2016 C. M. Boyd, Practical Data Visualization with JavaScript Talk Handout

Geant4 Visualization. Andrea Dotti April 19th, 2015 Geant4 M&C+SNA+MC 2015

Océ PRISMA archive software. Archiving made easy. Powerful, high-volume. archiving software

AUTOMATED CONFERENCE CD-ROM BUILDER AN OPEN SOURCE APPROACH Stefan Karastanev

Introduce Web3D Development and Visualization. Moxie Zhang Esri R&D Center Beijing

<Insert Picture Here> Java, the language for the future

Distributed Systems Seminar Spatio-Temporal Visualization System - STVS

How To Write A Trusted Analytics Platform (Tap)

ECWM511 MOBILE APPLICATION DEVELOPMENT Lecture 1: Introduction to Android

Introduction to Android

Writing standalone Qt & Python applications for Android

MathCloud: From Software Toolkit to Cloud Platform for Building Computing Services

Cisco Interactive Services Solution: Cisco Interactive Experience Client 4600 Series

Scientific Programming, Analysis, and Visualization with Python. Mteor 227 Fall 2015

QML and JavaScript for Native App Development

Rich Internet Applications

Programming in HTML5 with JavaScript and CSS3

Mobile App Infrastructure for Cross-Platform Deployment (N11-38)

zen Platform technical white paper

OpenEXR Image Viewing Software

USE OF PYTHON AS A SATELLITE OPERATIONS AND TESTING AUTOMATION LANGUAGE

Key Benefits of Microsoft Visual Studio 2008

Data analysis and visualization topics

Web Based 3D Visualization for COMSOL Multiphysics

Interactive Data Visualization for the Web Scott Murray

Introduction to Web Development with R

Introduction to Computer Graphics

ANSA and μeta as a CAE Software Development Platform

A Way Out of the Mobile App Development Conundrum

ADVERTISING SPECS. Base File Weight

Outline. 1.! Development Platforms for Multimedia Programming!

CS 378: Computer Game Technology

JavaFX Session Agenda

Development Techniques for Native/Hybrid Tizen Apps. Presented by Kirill Kruchinkin

Overview of CS 282 & Android

Introduction to Python

Questions and Answers

Facebook Twitter YouTube Google Plus Website . o Zooming and Panning. Panel. 3D commands. o Working with Canvas

ECWM511 MOBILE APPLICATION DEVELOPMENT Lecture 1: Introduction to Android

Reviewer s Guide. Morpheus Photo Animation Suite. Screenshots. Tutorial. Included in the Reviewer s Guide:

PyCompArch: Python-Based Modules for Exploring Computer Architecture Concepts

Coding for Desktop and Mobile with HTML5 and Java EE 7

Develop Computer Animation

HTML5 AUTOMOTIVE 2013 White Paper Series

DEVELOPING MOBILE APPLICATIONS USING ANDROID

Transcription:

Member of the Helmholtz Association GR.jl Plotting for Julia based on GR June 24 th 28 th, 2015 Massachusetts Institute of Technology, Cambridge, Massachusetts JuliaCon 2015 Josef Heinen @josef_heinen

Motivation The GR framework was originally developed for Python with the objective of providing easy-to-use methods for: displaying scattering spectra in real-time visualizing and analyzing two- and three-dimensional data sets creating publication-quality and web-ready graphics making glossy figures for scientific journals or press releases 2

a bunch of (new) requirements speed up plotting times for real-time monitoring purposes visualize large data sets, probably with a dynamic component, preferably in real-time create animations or videos on the fly 3

which lead to performance problems How can we fix them? Several Python modules can be compiled into native code, making them much faster (Cython) Compiling hotspots on the fly (Numba, PyPy) can significantly speed up numerical code segments Computations can be distributed, but these approaches cannot easily be applied to visualization software! What about Julia? 4

Julia visualization solutions Plotly Bokeh Gadfly most popular 2D plotting system for Julia PyPlot Python de-facto standard ( workhorse ) PyPlot Winston MATLAB-like 2D plotting Plotly Julia wrapper for the plot.ly REST API GLPlot powerful 3D graphics (successor GLVisualize on the way) OpenGL fast, but low-level API Winston Gadfly GLPlot 2D 3D 5

Problems so far Crux of the matter separated 2D and (hardware accelerated) 3D world Interop some graphics backends "only" produce "figures" no presentation of continuous data streams poor performance on large data sets Speed Quality 6

Use GR to achieve more graphics performance procedural graphics backend (completely written in C) presentation of continuous data streams builtin support for 2D plotting and OpenGL (GR3) coexistent 2D and 3D world interoperability with GUI toolkits and Web frameworks good user interaction ready for Julia v0.4 7

Use GR to extend PyPlot s capabilities combine the power of PyPlot and GR next Matplotlib release will allow selecting the backend by setting the environment variable MPLBACKEND produce video contents on the fly by adding a single line of code no need to import an animation module or write extra code create plots containing both 2D and 3D graphics elements 8

How it works: GR layer architecture Qt console interaction Notebooks support for Python or Julia kernels Use GR as a Matplotlib backend; mix GR, MPL and GR3 code glgr / igr App C / ObjC OpenGL Qt / wx event loop ES socket communication IPython GR off-screen rendering PyPy Swift direct rendering GR3 C / C++ JavaScript generation Browser... POV-Ray generation GLUT GLFW wxglcanvas QGLWidget Generate ray-traced graphics scenes Create HTML5 output GKS WebGL OpenGL (WGL / CGL / GLX) POV-Ray Create video animations on the fly GKS logical device drivers Qt wx X11 Quartz Win32 TikZ PDF MOV gksqt GKSTerm LATEX PS 0MQ HTML5 SVG OpenGL... More logical device drivers / plugins: CGM, GKSM, GIF, RF, UIL WMF, Xfig GS (BMP, JPEG, PNG, TIFF) Highlights: simultaneous output to multiple output devices direct generation of MPEG4 image sequences flicker-free display ("double buffering ) IPython / Jupyter notebook integration

Matplotlib using the GR backend $( $& Arrow Line2D %#"# $% $)"' $# * $%"' ( $#"# Ellipse FancyBoxPatch & )"' % '"#! $! "!! %! $! #! "! #! "! # % & + ( #"* #") &"( #"& &"# #"# %"( 135 $"( &"# &"( '"# '"( ("# #"* #") &"( #"& &"# #"# %"( %"#! #") $"( &"( #!"# "!)+ "!'( "!%& "!## "!## "!%& "!'( "!)+ #!"# 6 4 0 ( 225 315! #"* &"# #! # &$% # %$') # &$* # %$(+ # '$% # '$% 2! #"& %"( %! $! 10 180 '"# %"# %! $"% '"( $"( $! 8! #"* %"( #! # %$&' # &$* '"# '"( # &$% # %$* %$% %$* &$% &$* '$% )/07,5/2- * (,0*82*9 1,6.!*440/+*7/32 73./-.# 5,63087/32 75/+327385/2-" 45! #") +327385- :/7. 0,9,06 %$%% &$%! #"& %"# %"# "! #"# $# *!! "! ( $"% '"# $"( %$&' ) %$% %"'!%!% '"( $"# $"# %$') 90 4+30351,6. :/7. 0,9,06 ("# &$% &! ' PathPatch %$(+ # %$* # Polygon &$* %$* %! Circle %$), &! $'"# - Rectangle "!! +, Wedge 051..-7-7/67!'%% 431276" '$% %%"' & $ " $ $ & " $ & ( "!' %$' "!* "!( "!& "!$ "!" "!$ "!& "!( "!* "!% "!$ "!" %$% "!$ "!% "!' #!" # %$' "!& #!" & ( ( 270 # &$% # &$% # %$' %$% %$' &$% "!& "!" "!" "!& "!& #!" #!" 10

GR.jl in action 11

GR + PyPlot interop Important: tells MPL backend not to update PyPlot GR3 GR 12

using GR in Juno simple IDE syntax highlighting command completion inline graphics click images to view notebooks

or Jupyter 700 Performance (anim.jl) 600 fps 500 400 300 200 100 0 MPL MPL+GR GR click images to view notebooks

What happens next? provide more convenience function migrate the GR3 library to modern OpenGL (using OpenGL shader language) visualize millions of vertices / faces simplify the installation migrate the molecule renderer (mogli) from Python to C create a JavaScript based GR backend using an LLVM-to-JS compiler infrastructure, e.g. emscripten (in a proof-of-concept we could show, that GR + GKS can be transpiled to JS without any modifications) 15

Resources Website: http://gr-framework.org GR package: https://github.com/jheinen/gr.jl Mogli package: https://pypi.python.org/pypi/mogli Talk material: GR.jl Plotting for Julia based on GR 16

Thank you for your attention Questions? Contact: j.heinen@fz-juelich.de @josef_heinen Thanks to: Florian Rhiem, Ingo Heimbach, Christian Felder, David Knodt, Jörg Winkler, Fabian Beule, Philip Klinkhammer, Marvin Goblet, Daniel Kaiser, et al. 17