Scientific Computing with Python
Florianópolis, Santa Catarina, Brazil • May 16-20
Registration are open

Sponsors

SciPyLA 2016 Tutorials

Get your ticket

List of Accepted Tutorials

Day Time Place Title Speaker Level
5/16/2016 9:00-17:00 CIASC Software Carpentry Workshop Raniere Silva et al Introductory
5/16/2016 9:00-12:00 Auditório Elke Hering I see 42 everywhere Fernando Masanori Introductory
5/16/2016 9:00-12:00 Sala de projeção Harry Laus Python for geoscientist Filipe Fernandes Intermediate
5/16/2016 9:00-12:00 Sala de projeção Henrique da Silva Fontes Introduction to MPI on python using mpi4py Jeudy Blanco Introductory
5/16/2016 14:00-17:00 Auditório Elke Hering The stupid content tracker Tomas Aliaga Introductory
5/16/2016 14:00-17:00 Sala de projeção Harry Laus Utilización de Vispy para visualización rápida en 3D David Ochoa Intermediate
5/16/2016 14:00-17:00 Sala de projeção Henrique da Silva Fontes Introduction to High-Performance Scientific Computing with PyOpenCL Celia Cintas Introductory
5/17/2016 9:00-17:00 CIASC Software Carpentry Workshop Raniere Silva et al Introductory
5/17/2016 9:00-12:00 Auditório Elke Hering DSL on the top of Python Object Model Juan Cabral Introductory
5/17/2016 9:00-12:00 Sala de projeção Harry Laus Fit and predict your data: Introduction to Scikit-learn Celia Cintas Introductory
5/17/2016 9:00-12:00 Sala de projeção Henrique da Silva Fontes Scientific Python applied to Petroleum Engineering - an Introduction Igor T. Ghisi Introductory
5/17/2016 14:00-17:00 Auditório Elke Hering Usando R com o Python - rpy2 Arnaldo Russo Intermediate
5/17/2016 14:00-17:00 Sala de projeção Harry Laus (40) Automatizando a criação de PDF's com LaTeX + Python Melissa Mendonça Introductory
5/17/2016 14:00-17:00 Sala de projeção Henrique da Silva Fontes SQL-Alchemy Juan Cabral Intermediate

I see 42 everywhere

Instructor

Fernando Masanori

Fernando is a Professor at FATEC São José dos Campos and loves teaching. He developed projects for Software Express, Cobra Technology, Credicard Mastercard, PwC (PriceWaterhouseCoopers) and ITAÚ Bank Boston. His interests are Python, Business Analytics, NoSQL. He is creator of the first brazilian MOOC to teach programming "Python for Zombies"

Description

Hacking basic modules and classes to obtain the "Answer to the Ultimate Question of Life, the Universe, and Everything". The funny way to learn the importance of Free Software and inheritance and overloading in OOP or advanced topics like metaprogramming in Python.

Abstract

Interactive tutorial for people, with the basics of programming, in some other language, and who know nothing of Python. Let's hack basic modules and classes to obtain the "Answer to the Ultimate Question of Life, the Universe and Everything." This tutorial assumes that you have a few basics (data input, data output, boolean operators, flow control, functions, repetitions). We will cover in Python 3: 1. The interactive Python mode 2. Variations in the guess the number game 3. Hacking basic modules and classes 4. Scraping Public Data in order to calculate World Cup costs 5. Chuck Norris nerd jokes and World Cup games in six lines of code. 6. Facebook Hackaton Selective Test in one line of code. Important note: I'm not a Python guru, just a passionate teacher!

SQL-Alchemy

Instructor

Juan Cabral

I’m a full stack developer and software engineer with extensive Python, web programming, and distributed systems experience.

I am an experienced and respected community organizer. I am most deeply involved in the Python community. I have been the chair of PyCon Argentina 2012, the Python Argentina flagship conference, and i founded the SciPy Argentina Community and also i was elected chari of SCiPy Argentina 2015

Description

SQL-Alchemy is the most advanced way to interact from Python for mostly all relational and non-relational databases. With a complex interface offer a uniform tool for manage almost all the capabilities of your data-warehouse. Here we are going to try to understand why SQL is still the one of best alternative to manage your data.

Abstract

Topics:

  • SQL
  • Why SQL is still a great choice
  • SqlAlchemy
  • The Core
  • Declarative Bas

Python for geoscientist

Instructor

Filipe Fernandes

I grew up (mostly) in Southeast Brazil, but headed South to Universidade Federal do Rio Grande, where I received a Bachelor of Sciences in Oceanography. After college I attend the Universidade de São Paulo. I received a Masters of Science in Physical Oceanography in August 2005. I am currently a Ph.D. candidate in Marine Sciences at School of Marine Science and Technology.

Detailed bio

Description

A tour, with some in depth examples, to the Geosciences Python software stack. The goal is to expose professionals and students to the state of the art Python libraries used for mapping, data exploration, data analyses, and visualization. This tutorial is aimed at intermediate Python users.

Abstract

This tutorial won't focus in one tool, nor it is aimed to teach any tool from the ground up. The goal is to expose the attendees to a set of useful tools via applied examples.

The ideal audience are intermediate users who can, after the tutorial, dig deeper and learn a new tool using the examples as a starting point.

The tools we plan to cover are:

  • NumPy: Basic file reading and array manipulation
  • Pandas (GeoPandas, CTD, xarray): How to take advantage of the index for time-series analysis and the labeled columns to store important metadata.
  • Seaborn: Basic stats plotting
  • Statsmodels: Basic model fitting
  • Dask: How to deal with arrays that don't fit in your laptop RAM.
  • Rasterio, fiona, and gdal: GIS cheat-sheet
  • Cartopy, folium: Mapping
  • Iris: The Climate and forecast convention object in Python.
  • Some oceanographic libraries tour: odvc, pyoos, pyugrid, pysgrid, ciso, utide, etc.
  • Basic optimizations techniques: (a) ditch the for loop in NumPy. (b) Bring the for loop back with Cython and Numba.
  • Using Python as a glue language: calling Fortran, R, MatlabTM, and octave from the Jupyter Notebook.

Introduction to MPI on python using mpi4py

Instructor

Jeudy Blanco

Professor and researcher at Centro de Investigaciones Espaciales, Universidad de Costa Rica. 8 years of experience as python developer and 4 years of experience working with MPI in different programming languages (Fortran, python). Professor of Scientific Computing with python at UCR where MPI with mpi4py is one of the course subjects. Administrator of the Chirripo cluster at UCR.

Description

The goal of the tutorial is to introduce the participants to basic concepts of parallel programming using the MPI specification and the mpi4py library, going through several basic examples that cover the main features of the library. At the end of the tutorial, a practical exercise will be assigned to the participants.

Abstract

MPI is widely used in the scientific community and is supported on several programming languages, python being one of them. The selected library is mpi4py which implements most of the MPI specification.

The tutorial will start with a brief description of parallel programming topics, including the different parallelism models such as data parallelism, tasks parallelism, introduction to beowolf clusters and the different paradigms in parallel programming and their approaches (OpenMP and MPI).

Then an historic overview of MPI, the main concepts (Communicators, Ranks) and the main library functions: MPI_Init, MPI_Comm_size, MPI_Comm_rank, MPI_Send, MPI_Recv, MPI_Finalize. Hand on examples covering all these functions will be presented to the participants, going from a simple Hello World to point to point communication and collective communication that covers Broadcast, Reduce, Scatter and Gather operations.

At the end of the tutorial, an exercise will be given to be solved in the class. A serial code for calculating Pi will be provided, and it will be the students task to parallelize it using mpi4py. The students will also have the opportunity to run benchmarks and compare the performance enhancement after parallelizing the code.

The stupid content tracker

Instructor

Tomas Aliaga

Description

This tutorial is aimed for those who would like to improve their skills with Git. Either if you have never used Git or have only used the basics of its power, you are invited to take part in this hands-on tutorial to gain a better understanding of the underlying concepts and hopefully take away some tips and tricks.

Abstract

The following is a brief description of the topics I will try to cover in the agenda. It might suffer slight adjustments to fit audience interests and potential timing constraints if required.

  • Understanding the four core concepts
  • Branching, merging and rebasing
  • Working with remotes
  • Workflows overview
  • Tips, tricks and good practices

Utilización de Vispy para visualización rápida en 3D

Instructor

David Ochoa

Ingeniero mecánico y desarrollador de software. Actualmente trabajando en el proyecto de Doctorado con foco principal en algoritmos para la generación y evaluación de trayectorias de fresado para maquinas CNC (CAM). Apasionado en crear las herramientas computacionales correctas para resolver problemas complejos.

Mechanical engineer and software developer. Currently working in my Doctorate research project creating and evaluating toolpath generation algorithms for CNC milling (CAM). Passionate about creating the right tools for solving complex problems by coding.

Description

VisPy es una librería OpenGL para Python (2, 3) que puede ser utilizada por programadores que conozcan de OpenGL o por científicos que necesiten una plataforma de visualización de alto nivel y alto desempeño. En este tutorial se desarrollará un ejercicio de visualización de múltiples con diferentes características (posición, velocidad, tamaño, color) en un espacio 3D bajo el paradigma de POO.

Abstract

VisPy inició cuando cuatro diferentes desarrolladores decidieron juntarse para hacer una sola librería de visualización: Luke Campagnola (PyQtGraph), Almar Klein (Visvis), Cyrille Rossant (Galry) y Nicolas Rougier (Glumpy). Ellos nos ofrecen una librería OpenGL de alto desempeño para Python (2, 3) que puede ser utilizada por programadores que conozcan de OpenGL o por científicos que necesiten una plataforma de visualización de alto nivel y alto desempeño. A pesar de estar todavía en desarrollo continuo, esta librería es estable y tiene un buen desempeño. La librería es altamente versátil y se apoya en los objetos de Numpy, siendo muy simple modificar los datos mostrados en la ventana gráfica con instrucciones del tipo: visual.set_data(pos = new_position) Donde new_position es un arreglo numerico Numpy.

Tutorial: visualización de objetos esféricos en un espacio definido.

En este tutorial se desarrollarán dos partes:

  • En la primera se presentarán algunas de las caracteristicas básicas de la librería y con estas se hará un sistema simple de presentación de objetos wireframe en un ambiente 3D. En este sistema se simulará el comportamiento múltiples de pelotas en volumen rectangular. Cada pelota es, en el código propuesto, un objeto y cada una de ellas tiene un comportamiento programado independientemente. Cada una de ellas controla, también, su propia contraparte en la visualización, que al igual que su posición y velocidad, es actualizada a cada timestep.
  • Utilizando la misma plataforma de la primera en la segunda parte se desarrollarán objetos tipo burbuja. Estos son formados aleatoriamente en el fondo de un tanque y tienen un comportamiento diferente de las anteriores cambiando propiedades diferentes de tamaño y de color.

El tutorial no esta pensado en una visualización con el desempeño más rápido, sino para mostrar la utilización de la librería VisPy en una simulación programada en el paradigma POO, integrando naturalmente los objetos, sus características intrínsecas y su visualización.

Introduction to High-Performance Scientific Computing with PyOpenCL

Instructor

Celia Cintas

PhD student in Computer Science working at CENPAT-CONICET on "Diversity, Systemic and Evolution" group. Focused on 2 and 3D landmarking, reconstruction and visualization. Free software advocate. Assistant Professor at UNPSJB in Fundamentals of Computer Science and Business Intelligence.

Description

This tutorial will show how to build efficient hardware independent solutions (CPUs, DSP, FPGAs and GPUs) using PyOpenCL. The tutorial will give a brief introduction to the programming basics such as architecture, memory types, execution models. After the basic concepts, we will dive into PyOpenCL and how to use it to resolve parallel problems, from basic matrix operations to image processing.

Abstract

OpenCL is an open, royalty-free standard for general purpose parallel programming across CPUs, GPUs. OpenCL let us develop fast and efficient code for a number of applications with different workload behaviors: control intensive (searching and sorting), data intensive ( image processing, simulation and modeling, and data mining), compute intensive (iterative methods, numerical methods and financial modeling).

OpenCL abstracts the code from specific hardware perks, allowing our programs to run over a wide range of hardware configurations. PyOpenCL is a Python programming environment, that reduce the amount of C code to only writing kernels, leaving the rest of our code (the host part) in Python, without renounce efficiency either speed and keeping hardware independence.

An overview of the tutorial structure:

  • What is GPGPU Programming?
  • What is OpenCL? Components.
  • Abstract Architecture of OpenCL
  • Memory Types of OpenCL
  • Execution Model of OpenCL
  • Introduction to PyOpenCL (hands-on)
  • Getting information about our platform and hardware capabilities.
  • Contexts
  • Queue
  • Kernel Code & Programs
  • Buffers (I/O)
    • Practical examples:
    • Basic matrix operations.
    • Image processing.
    • Fractal and multifractals computations.

Prior to the talk a github repo will be made available so attendees will be able to follow the talk. In the hands-on part the audience can run all the code shown in the talk and we will leave time to solve simple problems included in the tutorial.

DSL on the top of Python Object Model

Instructor

Juan Cabral

I’m a full stack developer and software engineer with extensive Python, web programming, and distributed systems experience.

I am an experienced and respected community organizer. I am most deeply involved in the Python community. I have been the chair of PyCon Argentina 2012, the Python Argentina flagship conference, and i founded the SciPy Argentina Community and also i was elected chari of SCiPy Argentina 2015

Description

If you don't know why in Numpy you can make things like array[array[0] == 'foo'] here we are going to analize all the object oriented capabilities of Python and how Numpy and other libraries creates their Doman Specific Language (DSL) around it.

Fit and predict your data: Introduction to Scikit-learn

Instructor

Celia Cintas

PhD student in Computer Science working at CENPAT-CONICET on "Diversity, Systemic and Evolution" group. Focused on 2 and 3D landmarking, reconstruction and visualization. Free software advocate. Assistant Professor at UNPSJB in Fundamentals of Computer Science and Business Intelligence.

Description

Scikit-learn has an extensive collection of supervised and unsupervised learning algorithms with tools for preprocessing, metrics and cross validation. This tutorial will show how to build solutions based on classification, regression, clustering, and dimensionality reduction methods. We will introduce aspects of the library and explore examples of some of the most popular learning methods.

Abstract

Machine learning consist with the development of algorithms which can be trained by previously-seen data in order to make predictions about unseen data. It has become an important aspect of work in a variety of topics, such as, optimization of web searches, financial forecasts, physics, genomics, epidemics, etc. Scikit-learn it's a uniform and well-documented library, with an efficient implementation of the most used machine learning algorithms.

This tutorial will show how to build solutions based on classification, regression, clustering, and dimensionality reduction methods. In each topic, we will introduce aspects of the Scikit-learn library and explore practical examples of some of the most popular methods from the machine learning literature.

An overview of the tutorial structure:

  • What is Machine Learning?
  • What is Scikit-learn? Modules.
    • Preprocessing
    • Cross_validation
    • Metrics
    • Regression
    • Classification
    • Clustering
    • Dimensionality reduction
  • Ensemble methods
  • Introduction to Scikit-learn (hands-on) All the examples have the classic pipeline preprocessing -> split -> method -> metrics & cross validation.
  • Dimensionality reduction: different PCA over satellite images.
  • Classification example: several algorithms (ETC, SVM) with satellite images (3 million elements labeled) to discriminate if it's water or not.
  • Clustering example: K-Means clustering on the handwritten digits data.
  • Regression example: climate and lat/lon variables with SVR and DTR.

Prior to the talk a github repo will be made available so attendees will be able to follow the talk. In the hands-on part the audience can run all the code shown in the talk and we will leave time to solve simple problems included in the tutorial.

Scientific Python applied to Petroleum Engineering

Instructor

Igor T. Ghisi

Igor T. Ghisi is senior developer at ESSS, with over 10 years of experience building software solutions for R&D in petroleum engineering, in areas such as geology, reservoir engineering, optimization and HPC. He holds a M.S. in Computational Mechanics from Federal University of Rio de Janeiro and B.S. in Computer Science by Federal University of Santa Catarina.

Description

Use of Python language has been growing in the scientific community, in exchange for proprietary solutions, due it's high flexibility and large collection of open source libraries. In this tutorial we will introduce Python as a solutions for scientific computing and show its application to solve basic petroleum engineering problems. The course is not targeted to petroleum engineers, but any researcher that want to use Python as a day-to-day tool for scientific programming.

Usando R com o Python

Instructor

Arnaldo Russo

Arnaldo D'Amaral Pereira Granja Russo is PhD in Biological Oceanography and researcher at Instituto Ambiental Boto Flipper and core developer of DataSounds. While not teaching or programming he is surfing, climbing or paragliding. You can find him at ciclotux.org or in his Github page.

Description

Processamento de variáveis Python através do programa R (software estatístico). O R possui linguagem própria e ampla divulgação na comunidade científica, possuindo diversos pacotes para análises estatísticas, ecológicas e geoespaciais. Nesse tutorial abordaremos os passos iniciais de instalação da biblioteca rpy2 e seus mecanismos na conversação entre R e Python.

Abstract

Esse tutorial abordará aspectos inicias de como exportar variáveis Python para o ecossistema R, processá-las e obter os resultados para serem reutilizados no Python.

A biblioteca rPy foi otimizada e recebe o nome de rpy2 por possuir uma interfácie mais direta e aproximada com a sintaxe de Python que do R

Abordaremos também a distinção entre as duas bibliotecas e a utilização do R através do pandas outra biblioteca de manipulação de dados científicos que se apropriou do esquema de DataFrames do R, para constituir algumas ideias de desenvolvimento.

Automatizando a criação de PDF's com LaTeX + Python

Instructor

Melissa Mendonça

Description

LaTeX é um sistema de composição tipográfica de alta qualidade, muito usado para a geração de documentos científicos (artigos, papers, teses, etc), principalmente nas ciências exatas. Entre as vantagens do LaTeX estão a geração automática de numeração de seções/capítulos/equações, o gerenciamento de texto (separação de sílabas, seleção automática de idioma) e o gerenciamento de referências bibliográficas, incluindo citações e formatação (utilizando bibLaTeX).

Abstract

Neste tutorial, vamos estudar uma introdução rápida ao LaTeX e como utilizar Python+LaTeX pra automatizar a geração de documentos PDF. Exemplos incluem:

  • Geração automática de certificados, com nomes extraídos de um banco de dados sqlite
  • Geração automática de gráficos a partir de dados numéricos usando TiKZ Geração de tabelas com dados obtidos do código
  • Utilização de pandas+scikit-learn pra geração de métricas sobre dados obtidos pelo código e posterior geração de relatório com gráficos, tabelas, etc
  • Visualização de dados em documentos PDF (para impressão)
  • Utilizaremos bibliotecas básicas do python e também um pouco de pandas/scipy para alguns exemplos.


    Call for Submissions

    Call for submission is close!!!

    SciPyLA 2016, the forth annual Scientific Computing with Python in Latin America conference, will be held this May 16th-20th in Florianópolis, Santa Catarina, Brazil. SciPy is a community dedicated to the advancement of scientific computing through open source Python software for mathematics, science, and engineering. The annual SciPyLA Conference allows participants from academic, commercial, and governmental organizations to showcase their latest projects, learn from skilled users and developers, and collaborate on code development.

    The conference will kick off with two days of tutorials. These sessions provide access to expert training, and consistently receive fantastic feedback from participants.

    We are now accepting tutorial proposals from individuals or teams that would like to teach a tutorial at SciPyLA 2016.

    Whether you are a major contributor to a scientific Python library or an expert-level user, this is a great opportunity to share your knowledge and offset some of the costs of your SciPyLA 2016 attendance.

    Topics

    Tutorials should be focused on covering a well-defined topic in a hands-on manner. We want to see attendees coding! We encourage submissions to be designed to allow at least 50% of the time for hands-on exercises even if this means the subject matter needs to be limited.

    For examples of content and format, you can refer to past tutorials from SciPy tutorial sessions (SciPy2015, SciPy2014). We are looking for awesome techniques or packages, helping new or advanced python programmers develop better or faster scientific applications.

    Proposal Submission

    To submit a proposal, sign up or log in to your account and proceed to your account dashboard.

    Click submit proposal, tutorials, create new...

    For the submission you will need the following information:

    • A short bio of the presenter or team members, containing a description of past experiences as a trainer/teacher/speaker, and (ideally) links to videos of these experiences if available.
    • Which track the tutorial would fit best in (Introductory, Intermediate, or Advanced) and, in the case of an Introductory tutorial submission, select one of the 4 introductory topics.
    • A description of the tutorial, suitable for posting on the SciPy website for attendees to view. It should include the target audience, the expected level of knowledge prior to the class, and the goals of the class.
    • A more detailed outline of the tutorial content including the duration of each part and exercise sessions. Please include a description of how you plan to make the tutorial hands-on.
    • A list of Python packages that attendees will need to have installed prior to the class to follow along. Please mention if any packages are not cross platform. Installation instructions or links to installation documentation should be provided for packages that are not available through easy_install, pip, EPD, Anaconda, etc., or that require third party or compiled libraries.
    • If available, the tutorial notes, slides, exercise files, and iPython notebooks, even if they are preliminary.

    Review and Proceedings

    Each tutorial will be peer-reviewed by multiple members of the Program Committee Board. This year final tutorial materials and instructions for attendees will be due on May 9th. This will include final version numbers of required software and a test script that can be run by attendees to ensure that they have sufficient time to prepare their laptops before the conference.

    Announcement

    Accepted tutorials will be announced on April 22nd.

    Important dates:

    • March 1st: Initial date for submission of tutorials
    • April 8th: Deadline for submission of tutorials
    • April 22nd: Notification of acceptance for tutorials
    • May 16th-17th: SciPyLA 2016, 2 days of tutorials

    We look forward to very exciting tutorials and hope to see you all at the conference.

    The SciPyLA 2016 Tutorial Chairs