Wednesday, January 27, 2010

Python \o/

Então, nas ultimas semanas estive envolvido com Python bastante. O motivo disso é que o Dark Energy Survey (DES) adota o python como sua linguagem de frontend. Como eu faço parte do grupo de populações estelares do DES fui obrigado a lidar com Python em diversos níveis. Então vou explicar uma das coisas que tive que desenvolver nesse projeto.

O objetivo desse tuturial é gerar uma carta do céu e identificar certas estrelas nesta carta. O propósito é o planejamento de uma observação astronômica, nesse caso do aglomerado globular NGC 2298. Com essa carta o observador vai saber se o telescópio está apontando na direção que deveria estar apontando. O campo é uma simulação do campo de visão do instrumento MOSAIC2 do telescópio Blanco de 4m.

Bom, vamos ao Python... Para rodar esse programa você vai precisar dos módulos NumPy e PyLab, ambos disponíveis através do repositório Debian/Ubuntu e do módulo APLpy que deve ser instalado manualmente. Além disso para rodar você precisa baixar e descompactar os arquivos específicos para esse problema aqui.

O produto final, se tudo der certo, deve ser algo do tipo:


#!/usr/bin/python
from pylab import *
import aplpy
import numpy as np

Alphabet = map(chr, range(65, 91)) # Capitalized alphabet

fig = figure(figsize=(10,10))
gc = aplpy.FITSFigure('field.fits',figure=fig, subplot=[0.15,0.1,0.8,0.8])
gc.show_grayscale()
gc.show_grid()
gc.set_grid_alpha(0.2)

# read and plot the GSC stars
f = np.loadtxt('gsc.dat')
ra,dec = f[:,0],f[:,1]
gc.show_markers(ra,dec,edgecolor='red',marker='o',s=50)

#this convert from world coordinates to pixel (canvas) coordinates
newra,newdec = gc.world2pixel(ra+0.025,dec)

#place a tag near each marked point in the image
for i in range(f.shape[0]):
text(newra[i],newdec[i],Alphabet[i],fontsize=16,color='red')

#save as png
gc.save('findingchart.png')

2 comments:

  1. Cara, valeu pelos exemplos com Python, continua postando! Agora mesmo estou instalando o numpy e outras bibliotecas via macports. Talvez no futuro eu passe a usar Python ao invés de fortran 90 para fazer umas contas mais cabeludas.

    Pergunta: tu sabes se tem openmp implementado para python?

    ReplyDelete
  2. sugiro que continue fazendo as coisas cabeludas em fortran ou C.

    O python permite exportar rotinas do fortran usando o programa f2py e as rotinas do C são automaticamente suportadas. Estão dá pra paralelizar em fortran e rodar em python usando o OpenMP ou OpenMPI, não me pergunte como... um dia eu posto um exemplo de como usar o f2py.

    ReplyDelete

 
Locations of visitors to this page