620 likes | 773 Views
+. 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:
E N D
+ 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
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.
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.
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;
Legibilidade Sintaxe: • Determinado elemento está presente em uma lista? • Substring em uma string: • Booleanos e operadores lógicos:
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:
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.
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;
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;
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
Python na Ciência Velocidade • Sempre existe a ferramenta certa para o trabalho: 0.9% de memória utilizada e execução em .002s
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);
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;
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.”
Mãos na massa iPython
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;
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>?
ipython Tipos primitivos
ipython Tipos numéricos
ipython Tipos numéricos
ipython Tipos numéricos
ipython Strings
ipython Strings
ipython Strings
ipython Containers
ipython Listas
ipython Tuplas, Boolean, None • Tuplas são listas imutáveis: • Boolean: • None:
ipython Dicionários
ipython NumPy Arrays
ipython NumPy Arrays
ipython NumPy Arrays
ipython Controle de Fluxo
ipython IF-ELSE
ipython FOR
ipython WHILE
ipython Definindo funções
ipython Definindo funções
ipython Entrada e Saída
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()
ipython Entrada e Saída
ipython Controle de Erros
ipython Controle de Erros
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)
Introdução Formatos distintos de dados: RefTek DAS130 Nanometrics Taurus Kinemetrics Q330
Introdução Ferramentas de Análise: • SAC (escrito em C, 1995); • SEISAN (C e FORTRAN, 1990); • SeismicHandler (C, 1992); • PITSA (FORTRAN, 1992);
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;
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.