Life after Matplotlib: Harder, Better, Faster, Stronger by Kayla Lacovino

Post on 12-May-2015

877 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Life after Matplotlib: Harder, Better, Faster, Stronger by Kayla Lacovino

Transcript

Life after matplotlib:Harder, better, faster, stronger

Kayla Iacovino

http://code.google.com/p/avoplot

A brief history of me.

A brief history of me.

A brief history of me.

It all started with a bang...

...and a rather chilly garage

Data Problems

+

Existing Python tools

● Aims● Design● Current state● Future

=

Science in a nutshell.

Data Import

Processing

Visualisation

What is the problem?● Need general tools that can be specialised for the task at hand.

● Specialisations should be easily reusable.

Python solves all?

Data Import

Processing

Visualisation

● xlrd● NumPy● csv● Pandas

● SciPy● NumPy

● matplotlib

What is the real problem?● Scientists are not (usually) programmers.

● Scientists are usually in a hurry.

● Scientists are stupid (outside of their field).

● Scripting is a frustrating way to achieve visualisation tasks.

AvoPlot: Aims● Graphical frontend to matplotlib.

● Graphical import of common data formats (txt, csv, xls etc.).

● Basic data processing capabilities.

● Drag and drop replacement for matplotlib's pyplot interface.

● Easily customisable.

● Framework for scientists to create GUIs for their processing tools.

AvoPlot: Aims 2

GUI interface for easy data visualisation

Plugins mean AvoPlot isversatile – and extensible!

Powered by Python with apowerful scripting interface

Anatomy of AvoPlot

“Open-source software is written by a bunch of hippies living in a commune in Palo Alto. With their beards down to their socks and sandals, living on nothing but organic avocados. Look at me, I am so moral.”

- Talfan Barnie, 2010 (somewhere in Ethiopia)

But what has this got to do with avocados?

import matplotlib.pyplot as pltimport numpy

xdata = numpy.linspace(0, 7, 500)ydata = numpy.cos(xdata)

plt.plot(xdata, ydata, 'r-')plt.show() import avoplot.pyplot as plt

import numpy

xdata = numpy.linspace(0, 7, 500)ydata = numpy.cos(xdata)

plt.plot(xdata, ydata, 'r-')plt.show()

Scripting interface

Plugins● Python module or Python package

● Allow import of new data types, and provision of new manipulation or processing tools.

● Distributed with distutils.

● Highly integrated with the GUI.

FTIR Plugin#define new data series type for FTIR dataclass FTIRSpectrumData(series.XYDataSeries): def __init__(self, *args, **kwargs): super(FTIRSpectrumData, self).__init__(*args, **kwargs)

self.add_control_panel(BackgroundCalcCtrl(self)) @staticmethod def get_supported_subplot_type(): return FTIRSpectrumSubplot

class FTIRPlugin(plugins.AvoPlotPluginSimple): def __init__(self): super(FTIRPlugin, self).__init__("FTIR Plugin", FTIRSpectrumData) self.set_menu_entry(['FTIR', 'New Spectrum'], "Plot an FTIR spectrum")

AvoPlot: the future X Y0.3 0.2960.4 0.3890.5 0.4790.6 0.5650.7 0.6440.8 0.7670.9 0.7831.0 0.8411.1 0.8911.2 0.932

Overview/Conclusions● It works (sort of).

● It's useful (at least we think so).

● More developers are needed!

Questions

http://code.google.com/p/avoplot

top related