1 / 61

Bruno collaço IME-usp 2012

+. Caixa de Ferramentas Python p ara Sismologia o u O Q ue Python Pode Fazer P elos Observatórios Sismológicos?. Bruno collaço IME-usp 2012. Minas Tirith – C idade de Reis. Sismologia IAG. Introdução. Trinity:

zarita
Télécharger la présentation

Bruno collaço IME-usp 2012

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. + Caixa de Ferramentas Python para Sismologia ou O Que Python Pode Fazer Pelos Observatórios Sismológicos? Bruno collaço IME-usp 2012 Minas Tirith – Cidade de Reis Sismologia IAG

  2. Introdução • Trinity: • I know why you’re here, Neo. I know what you’ve been doing. . . why you hardly sleep, why you live alone, and why night after night, you sit by your computer. [...] It’s the question that brought you here. You know the question, just as I did. • Neo: • What is Python?* • Trinity: • The answer is out there, Neo, and it’s looking for you, and it will find you if you want it to. • * Citação ligeiramente modificada.

  3. Introdução • Tópicos de programação básica: • Ié, ié! Não teremos. • Vamos assumir que a gente já saiba: • Variáveis; • Loops; • Condicionais (if/else); • Tipos de dados: int, float, string, lists, arrays; • Ler e escrever arquivos.

  4. Por que lutar por python?

  5. Python X • Difusão entre a comunidade científica; • Sintaxe simples; • Simulação, visualização e análise integradas; • Flexibilidade; • Diversas bibliotecas para criação de GUI’s; • Interface para códigos antigos; • Linguagem OO: programas complexos;

  6. Legibilidade Sintaxe: • Determinado elemento está presente em uma lista? • Substring em uma string: • Booleanos e operadores lógicos:

  7. Legibilidade Indentação: • Blocos de código são definidos por indentação, sem nenhum caractere explícito de início ou fim, Usa-se apenas o “:” como delimitador:

  8. Legibilidade Guido van Rossum (Python’soriginalauthor) : This emphasis on readability is no accident. As an object-oriented language, Python aims to encourage the creation of reusable code. Even if we all wrote perfect documentation all of the time, code can hardly be considered reusable if it’s not readable. Many of Python’s features, in addition to its use of indentation, conspire to make Python code highly readable.

  9. Python na Ciência Por que é perfeito pra ciência? • Sintaxe e semântica simples, limpas e minimalistas: • Código curto = menos erros; • E também: rápido desenvolvimento, entendimento, digitação, procura de erros e fácil de modificar. • Vasto número de bibliotecas padrão; • Persistência de dados; • Criptografia; • Protocolos de internet; • Manuseio de dados web; • Expressões regulares; • Documentação poderosa e de fácil acesso;

  10. Python na Ciência Por que é perfeito pra ciência? • SciPy / NumPy: vetores e matrizes, rotinas de álgebra linear, otimização numérica, geração de números aleatórios, modelagem de equações diferenciais, transformadas de Fourier e processamento de sinais, processamento de imagem, computação espacial, e muitas outras rotinas matemáticas; • Matplotlib: plotagem 2D que produz figuras de qualidade de publicação através de um conjunto de funções familiares aos usuários de MatLab; • Interfaces para MatLab, Mathematica, Maple, Octave;

  11. Python na Ciência Velocidade “Por ser uma linguagem interpretada, Python é lento e ocupa memória” 2,4% de memória utilizada e execução em .02s

  12. Python na Ciência Velocidade • Sempre existe a ferramenta certa para o trabalho: 0.9% de memória utilizada e execução em .002s

  13. Python na Ciência Interoperabilidade • Python foi desenvolvido para a produtividade; • É especialista em unir linguagens distintas: • FORTRAN: f2py – interface fortran para python; • Bibliotecas C e C++: Ctypes, Cython, SWIG; • R: rpy -interface simples e robusta à linguagem de programação R. Pode gerenciar todos os tipos de objetos R e pode executar funções Rarbitrárias (incluindo as funções gráficas);

  14. Python na Ciência Mais Razões • Open-source; • Multiplatforma; • Disponibilidade: é componente de muitos sistemas operacionais; • Aplicações: • Útil como calculadora; • Pode substituir shell scripts; • Para criar aplicações GUI; • Pode substituir o MatLab; • Fácil de aprender; • Linguagem de programação de altíssimo nível; • Suporta todos os paradigmas de programação; • Tipagem dinâmica, gerenciamento de memória e coleta de lixo;

  15. Python na Ciência Bruce Eckel (fundador do comitê ANSI/ISO C++) Python is about you! I feel Python was designed for the person who is actually doing the programming, to maximize their productivity. And that just makes me feel warm and fuzzy all over. [...] When you have the experience of really being able to be as productive as possible, then you start to get pissed off at other languages. You think, ”Gee, I’ve been wasting my time with these other languages.”

  16. Mãos na massa iPython

  17. Mãos na massa iPython • Python “shell”; • Principais características: • Ajuda dinâmica; • Procura por módulos; • Tab completion; • Acesso completo ao shell do sistema; • Log de seção; • Exceções coloridas e descritivas; • Altamente configurável e programável (Macros, aliases ...); • Embarcável;

  18. Mãos na massa iPython • Obtendo ajuda: • Ajuda para alguma função: • >>> funcao? • Olhar a implementação: • >>> funcao?? • Procurar por funções/variáveis que iniciam por “ab”: • >>> ab<Tab> • Quais atributos/funcões existem em um módulo? • >>> objeto.<Tab> • Ajuda para um objeto/classe/função/atributo: • >>> objeto.<Tab>?

  19. ipython Tipos primitivos

  20. ipython Tipos numéricos

  21. ipython Tipos numéricos

  22. ipython Tipos numéricos

  23. ipython Strings

  24. ipython Strings

  25. ipython Strings

  26. ipython Containers

  27. ipython Listas

  28. ipython Tuplas, Boolean, None • Tuplas são listas imutáveis: • Boolean: • None:

  29. ipython Dicionários

  30. ipython NumPy Arrays

  31. ipython NumPy Arrays

  32. ipython NumPy Arrays

  33. ipython Controle de Fluxo

  34. ipython IF-ELSE

  35. ipython FOR

  36. ipython WHILE

  37. ipython Definindo funções

  38. ipython Definindo funções

  39. ipython Entrada e Saída

  40. ipython Entrada e Saída • Para abrir um arquivo se usa open(arquivo, modo). O resultado é um objeto do tipo arquivo: • fh = open("/Users/bruno/Desktop/sismos.txt", "r”) • Possíveis modos: • r: abre somente leitura; • w: abre leitura e escrita; • a: anexar arquivo; • rb: leitura de arquivo binário; • wb: leitura e escrita de arquivo binário; • Para fechar o arquivo: • fh.close()

  41. ipython Entrada e Saída

  42. ipython Controle de Erros

  43. ipython Controle de Erros

  44. Mais python Referências: • The Python Tutorial (http://docs.python.org/tutorial/) • Sebastian Heimann - The Informal Python Boot Camp • (http://emolch.org/pythonbootcamp.html) • Hoyt Koepke - 10 Reasons Python Rocks for Research (http://www.stat.washington.edu/ hoytak/blog/whypython.html) • Software Carpentry (http://software-carpentry.org/4 0/python/) • Kent S Johnson - Python Rocks! and other rants (http://personalpages.tds.net/ kent37/stories/00020.html)

  45. http://github.com/obspy

  46. Introdução Formatos distintos de dados: RefTek DAS130 Nanometrics Taurus Kinemetrics Q330

  47. Introdução Ferramentas de Análise: • SAC (escrito em C, 1995); • SEISAN (C e FORTRAN, 1990); • SeismicHandler (C, 1992); • PITSA (FORTRAN, 1992);

  48. obspy • Open-Source (GPL); • Win, Mac e Linux; • Desenvolvimento guiado por testes (309); • Bibliotecas já conhecidas (numpy, scipy, matplotlib); • Reuso de código; • Completa documentação e comunidade ativa;

  49. obspy • Forma de onda: GSE2, MiniSEED, SAC, WAV, Q/ASCII; • Metadados: Dataless SEED, XML-SEED, RESP; • Requisição de dados: ArcLink/WebDC, IRIS DHI/Fissures/WS, SeisHub, NERIES WS; • Pickers, filtros, rotinas de plotagem; • Gerenciamento de formas de onda, indexação.

  50. obspy

More Related