Sunday, January 31, 2010

Dropbox: online folder to easily sync your data across different computers

Like many users, I regularly use more than one computer: one at home (a Mac) and one at work (Linux workstation). This kind of situation creates some challenges regarding how to keep your data synchronized between the different computers/operating systems.

That's where the free online service Dropbox comes handy. It creates a local folder called Dropbox in your "home". Everything that you dump in that folder is automatically synced with the online folder, and immediately made available to all your computers. You just need to install a dropbox client in each computer, and that's it. Thanks to Dropbox, I almost don't need to use USB flash drives anymore to sync data between different computers. Sweet!

Dropbox has a cool feature: it lets you share a folder among a group of people. Let me give an example of how that can be useful. Suppose you have coworkers/collaborators and you are working together on some code, paper or data. Suppose that you are constantly updating your code/paper/data and your collaborator wants to always have the latest version of it. When you share a dropbox folder with your collaborators, every change that you or your coworker make to any file in that folder is automatically made available to all the people sharing the folder. See how the sharing feature can be useful?

Dropbox gives you a free 2 GB account. For paid accounts, they provide more space (up to 100 GB).

Link to join Dropbox (includes a tour of the features).

Changelog:
  • May 31 2010: Added "sharing" feature.

Saturday, January 30, 2010

Syntax Highlight

Testando os scripts de syntax highlight do blogger

#!/bin/bash
# converte qq formato para qq formato (muhahahaha!)

for file in $1/*
do
ext=$(echo $file | sed 's/.*\([^\.]\+\)\.\([^\.]\+\)$/\2/')
name=$(basename $file .$ext) #elimina $ext do nome
a2ping $file png:$name.png --nocompress --papersize=unchanged

done


Funciona! Então, pra usar é só só escrever o código entre as tags PRE usando os modificadores name='code' e class='linguagem'. Por enquanto linguagem pode ser: C, C#, CSS, Bash, Java, JavaScript, Perl, PHP, Python, Ruby e Sql

Qualquer dúvida dá uma espiada no código fonte desse post.

Ah sim, o script ali é para converter qualquer formato em qualquer formato todos os arquivos de um diretório. Usa o comando a2ping e transforma, nesse caso, qualquer formato para png (Portable network graphs).

Thursday, January 28, 2010

Vim Tip: como comentar multiplas linhas?

Isso é muito útil na hora de mascarar um bloco de código comentando-o.

Para fazer isso basta entrar no modo visual do vi (CTRL + I) na primeira linha que deseja comentar. Vá até a ultima linha que deseja comentar e aperte I (Letra I maiúscula; insere no começo da linha) e insira o caractere de comentário (#: python,bash ; !: fortran; %: latex ...) e em seguida aperte ESC para sair do modo visual.

Simples, não? X é para os fracos.

Obs.: Para descomentar, no modo visual selecione a primeira coluna e aperte x.

Wednesday, January 27, 2010

Mais Python?

Só pra mostrar que eu faço alguma coisa da vida, ai vai mais um post com um tutorial em python.

Agora vou mostrar como interagir com gráficos. Isso na verdade é bastante complicado, requer um entendimento forte de orientação a objetos(OO). Nesse exemplo eu tentei evitar OO, justamente porque não estou tão familiarizado com isso.

A proposta é: dado um conjunto de pontos como selecionar somente aqueles dentro de um polígono definido pelo usuário interagindo com o gráfico? A solução é o seguinte a seguir. Como de costume, precisa o NumPy, MatPlotLib e PyLab.

O programa funciona da seguinte maneira. Enquanto você vai com o mouse no ponto onde quer definir um dos vértices do polígono e aperta alguma tecla do teclado que não seja a tecla 'q', um ponto será marcado. Ao apertar 'q' você sai do programa e os pontos dentro do polígono são marcados pela cor vermelha.

#!/usr/bin/python
from pylab import *
import numpy as np
import matplotlib.nxutils as nx

poly=np.zeros([100,2]) #limits the number of vertices to 100 (how to ovecome this?)
i = int(0) #not very python-ish
x = np.random.rand(1000)
y = np.random.rand(1000)
f = np.array([x,y])
f = np.transpose(f)

def click(event):
global poly,f,i,g
tb = get_current_fig_manager().toolbar
if event.key != 'q' and event.inaxes and tb.mode == '':
poly[i,0],poly[i,1] = event.xdata,event.ydata
plot(poly[0:i+1,0],poly[0:i+1,1],'rs-')
draw()
i += 1
else:
poly[i,0],poly[i,1] = poly[0,0],poly[0,1]
poly = np.resize(poly,(i+1,2))
inside = nx.points_inside_poly(f[:,0:2], poly)
g = f[nonzero(inside),] #this adds an extra dimension to the array (why?!)
plot(g[:,:,0],g[:,:,1],'r.',markersize=6)
return g

fig = figure()
ax = fig.add_subplot(111,autoscale_on=True)
ax.plot(f[:,0],f[:,1],'k.',markersize=4)

#connects python with the display
cid = connect('key_press_event', click)
show()
disconnect(cid)


Felizmente, nesse exemplo não precisa baixar nada. Basta copiar, colar e rodar. Ah sim, o highlight da sintaxe python foi feito nesse site.

Ia escrever outro post sobre um resolvedor de simulação 3 corpos em python, mas já ta no meu site e eu cansei do blogspot, queria mesmo é o wordpress. Nesse exemplo tem até instruções pra criar uma animação.

PS.: caiu fora do post as linhas muito longas, não to com saco pra arrumar agora

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')

Monday, January 18, 2010

Easy ways of adding math/greek in your IDL plots

It's not straightforward to add greek letters, math etc in IDL plots. Fortunately, there are some libraries that make our life easier for this purpose:

TeXtoIDL

The purpose of the TeXtoIDL routines is to make it simple to use Greek letters, subscripts and superscripts in making labels for plots in IDL. This is accomplished by allowing the user to use TeX control sequences for Greek letters and special symbols and for sub/superscripts.

Example:
The command below uses textoidl to create a somewhat fancy X label.
IDL > plot, [0], [0], xtitle=textoidl("\rho^2 + 2\Gamma_{ij}")

Greek (Coyote Library)

Another way of inserting greek letters in your plots. The command greek('mu') for example returns a string with the greek letter mu.

Example:
IDL > Plot, [0], [0], XTitle='Wavelength (' + Greek('mu') + 'm)'

Wednesday, January 6, 2010

Gerencie seus artigos com MENDELEY

Olá pessoal,

Venho usando a algum tempo um programa chamado "MENDELEY" para organizar e gerenciar os artigos (em pdf) baixados do ADS, AstroPH, etc. É um programa extremamente útil, inteligente e fácil de usar (e, claro, gratuíto e roda no Linux e em outros OS's). Diria que é "A" ferramenta!

Este programa vem sendo usado cada vez em escala crescente no meio científico e veio preencher
uma lacuna que existia no universo dos aplicativos voltados para pesquisadores. Possivelmente,
nos próximos anos, será uma ferramenta que grande parte dos pesquisadores estará usando.

O intuito desta mensagem é divulgar (para quem não conhece ainda) e incentivar o uso do MENDELEY no DepAstro.

Funciona assim: vc cria um diretório e coloca lá todos os PDFs que baixou (ou gerou) nos últimos 200 anos. Colocará lá também todos os PDFs que baixar (ou gerar) nos próximos 200 anos.

Depois de baixar e instalar o MENDELEY, deve configurá-lo (isso é fácil!) para procurar seus
artigos pdfs neste diretório. Na primeira vez que ele rodar, vai ler cada artigo PDF e extrair automaticamente informações como título, autores, ano de publicação, nome do periódico, página, ref, etc. Tudo isso vai para um banco de dados que vc poderá consultar de modo fácil e prático a qualquer momento. Cada autor, por exemplo, vai para uma lista de autores; depois, basta clicar no nome de um autor para ele listar todos os artigos disponíveis com este autor.

Vc não precisa se preocupar mais com as atualizações de seu banco de dados. Cada novo artigo que baixar da internet, basta jogar nesse diretório e o MENDELEY, automaciamente, se encarregará em incluí-lo em seu banco de dados (ele espia o diretório periodicamente a procura de novidades). Apenas jogue seus pdfs no diretório e deixe o resto com o MENDELEY.

Os artigos podem ser agrupados em CATEGORIAS (através de Tags), definidas pelo usuário.

O programa permite BUSCAS por palavras chaves ou expressões nos textos e muito mais:
ele dispõe de uma CANETA VITURAL MARCADORA DE TEXTO, com a qual vc pode marcar em amarelo partes do texto (como faria com uma caneta marcadora real!).

Também pode inserir POST IT's (aqueles papeis amerelos), virtuais, com seus comentários em diferente partes do texto. Estes recursos são extremamente úteis para REFEREES ou para inserir comentários no artigo de um colaborador (ou em qualquer outro doc pdf, como teses, dissertações, ebooks, etc), ou em um artigo em preparação.

Os recursos do programa não param por aí: vc pode PARTILHAR ARTIGOS através da internet (enviar / receber / acessar) com seus colegas de grupo (e de outras instituições dentro e fora do país) que também usam o MENDELEY. Algo como o velho Napster, LimeWare ou Kaza, só que para artigos. Atualmente (jan/2010) já existe mais de 210 milhões de referências nos bancos de dados dos ~13 mil usuários espalhados pelo mundo. Essa é uma das boas razões para incentivar o uso deste programa em maior escala entre nós. Não vai mais precisar enviar artigos por email.

Outra coisa que ele faz é GERAR BIBLIOGRAFIAS em BiBTeX ou similares a partir de uma
lista de artigos pré-selecionados. Útil para quem está escrevendo um artigo, tese ou dissertação.

Isso é só para citar algumas das habilitades do bicho.

Claro que há deficiências: p.ex, o MENDELEY consegue extrair informações muito bem dos artigos mais recentes (de ~10 anos para cá) que foram gerados diretamente no formato pdf, MAS, se atrapalha todo com artigos mais antigos, que foram escaneados ou convertidos para PDF a partir de algum outro formato (jpg, gif, png, ps, etc). Para estes vc tem que editar as informações manualmente, mas os 1 ou 2 minutos que se gasta fazendo isso são plenamente compensados por todos os benefícios que o programa oferece.

O programa vem sendo continuamente aperfeiçoado e o usuário não precisa se preocupar com
as ATUALIZAÇÕES: elas são feitas automaticamente!

O site para download é: http://www.mendeley.com/

Enjoy it.

Edu
 
Locations of visitors to this page