Astropy
Visão Geral
Astropy é o pacote Python central para astronomia, fornecendo funcionalidades essenciais para pesquisa e análise de dados astronômicos. Use astropy para transformações de coordenadas, cálculos de unidades e grandezas, operações com arquivos FITS, cálculos cosmológicos, manuseio preciso de tempo, manipulação de dados tabulares e processamento de imagens astronômicas.
Quando Usar Esta Habilidade
Use astropy quando as tarefas envolverem:
- Conversão entre sistemas de coordenadas celestes (ICRS, Galáctico, FK5, AltAz, etc.)
- Trabalho com unidades e grandezas físicas (converter Jy para mJy, parsecs para km, etc.)
- Leitura, escrita ou manipulação de arquivos FITS (imagens ou tabelas)
- Cálculos cosmológicos (distância de luminosidade, tempo de retrocesso, parâmetro de Hubble)
- Manuseio preciso de tempo com diferentes escalas de tempo (UTC, TAI, TT, TDB) e formatos (JD, MJD, ISO)
- Operações com tabelas (leitura de catálogos, cruzamento de dados, filtragem, junção)
- Transformações WCS entre coordenadas de pixel e mundo
- Constantes e cálculos astronômicos
Início Rápido
import astropy.units as u
from astropy.coordinates import SkyCoord
from astropy.time import Time
from astropy.io import fits
from astropy.table import Table
from astropy.cosmology import Planck18
# Unidades e grandezas
distancia = 100 * u.pc
distancia_km = distancia.to(u.km)
# Coordenadas
coord = SkyCoord(ra=10.5*u.degree, dec=41.2*u.degree, frame='icrs')
coord_galatica = coord.galactic
# Tempo
t = Time('2023-01-15 12:30:00')
jd = t.jd # Data Juliana
# Arquivos FITS
dados = fits.getdata('imagem.fits')
cabecalho = fits.getheader('imagem.fits')
# Tabelas
tabela = Table.read('catalogo.fits')
# Cosmologia
d_L = Planck18.luminosity_distance(z=1.0)
Capacidades Principais
1. Unidades e Grandezas (astropy.units)
Manuseie grandezas físicas com unidades, realize conversões de unidades e garanta consistência dimensional nos cálculos.
Operações principais:
- Crie grandezas multiplicando valores por unidades
- Converta entre unidades usando o método
.to() - Realize aritmética com manuseio automático de unidades
- Use equivalências para conversões específicas de domínio (espectral, Doppler, paralaxe)
- Trabalhe com unidades logarítmicas (magnitudes, decibéis)
Veja: references/units.md para documentação abrangente, sistemas de unidades, equivalências, otimização de desempenho e aritmética de unidades.
2. Sistemas de Coordenadas (astropy.coordinates)
Represente posições celestes e transforme entre diferentes referenciais de coordenadas.
Operações principais:
- Crie coordenadas com
SkyCoordem qualquer referencial (ICRS, Galáctico, FK5, AltAz, etc.) - Transforme entre sistemas de coordenadas
- Calcule separações angulares e ângulos de posição
- Associe coordenadas a catálogos
- Inclua distância para operações de coordenadas 3D
- Manuseie movimentos próprios e velocidades radiais
- Consulte objetos nomeados em bancos de dados online
Veja: references/coordinates.md para descrições detalhadas de referenciais de coordenadas, transformações, referenciais dependentes do observador (AltAz), associação de catálogos e dicas de desempenho.
3. Cálculos Cosmológicos (astropy.cosmology)
Realize cálculos cosmológicos usando modelos cosmológicos padrão.
Operações principais:
- Use cosmologias integradas (Planck18, WMAP9, etc.)
- Crie modelos cosmológicos personalizados
- Calcule distâncias (luminosidade, comóvel, diâmetro angular)
- Compute idades e tempos de retrocesso
- Determine o parâmetro de Hubble em qualquer redshift
- Calcule parâmetros de densidade e volumes
- Realize cálculos inversos (encontre z para uma determinada distância)
Veja: references/cosmology.md para modelos disponíveis, cálculos de distância, cálculos de tempo, parâmetros de densidade e efeitos de neutrinos.
4. Manuseio de Arquivos FITS (astropy.io.fits)
Leia, escreva e manipule arquivos FITS (Flexible Image Transport System).
Operações principais:
- Abra arquivos FITS com gerenciadores de contexto
- Acesse HDUs (Unidades de Dados de Cabeçalho) por índice ou nome
- Leia e modifique cabeçalhos (palavras-chave, comentários, histórico)
- Trabalhe com dados de imagem (arrays NumPy)
- Manuseie dados de tabela (tabelas binárias e ASCII)
- Crie novos arquivos FITS (única ou múltiplas extensões)
- Use mapeamento de memória para arquivos grandes
- Acesse arquivos FITS remotos (S3, HTTP)
Veja: references/fits.md para operações abrangentes de arquivos, manipulação de cabeçalhos, manuseio de imagens e tabelas, arquivos com múltiplas extensões e considerações de desempenho.
5. Operações com Tabelas (astropy.table)
Trabalhe com dados tabulares com suporte para unidades, metadados e vários formatos de arquivo.
Operações principais:
- Crie tabelas a partir de arrays, listas ou dicionários
- Leia/escreva tabelas em vários formatos (FITS, CSV, HDF5, VOTable)
- Acesse e modifique colunas e linhas
- Classifique, filtre e indexe tabelas
- Realize operações no estilo banco de dados (junção, agrupamento, agregação)
- Empilhe e concatene tabelas
- Trabalhe com colunas cientes de unidades (QTable)
- Manuseie dados faltantes com mascaramento
Veja: references/tables.md para criação de tabelas, operações de E/S, manipulação de dados, classificação, filtragem, junções, agrupamento e dicas de desempenho.
6. Manuseio de Tempo (astropy.time)
Representação precisa de tempo e conversão entre escalas e formatos de tempo.
Operações principais:
- Crie objetos Time em vários formatos (ISO, JD, MJD, Unix, etc.)
- Converta entre escalas de tempo (UTC, TAI, TT, TDB, etc.)
- Realize aritmética de tempo com TimeDelta
- Calcule tempo sideral para observadores
- Compute correções de tempo de viagem da luz (baricêntrico, heliocêntrico)
- Trabalhe com arrays de tempo eficientemente
- Manuseie tempos mascarados (faltantes)
Veja: references/time.md para formatos de tempo, escalas de tempo, conversões, aritmética, recursos de observação e manuseio de precisão.
7. Sistema de Coordenadas Mundiais (astropy.wcs)
Transforme entre coordenadas de pixel em imagens e coordenadas mundiais.
Operações principais:
- Leia WCS de cabeçalhos FITS
- Converta coordenadas de pixel para coordenadas mundiais (e vice-versa)
- Calcule pegadas de imagem
- Acesse parâmetros WCS (pixel de referência, projeção, escala)
- Crie objetos WCS personalizados
Veja: references/wcs_and_other_modules.md para operações e transformações WCS.
Capacidades Adicionais
O arquivo references/wcs_and_other_modules.md também cobre:
NDData e CCDData
Contêineres para conjuntos de dados n-dimensionais com metadados, incerteza, mascaramento e informações WCS.
Modelagem
Estrutura para criar e ajustar modelos matemáticos a dados astronômicos.
Visualização
Ferramentas para exibição de imagens astronômicas com alongamento e dimensionamento apropriados.
Constantes
Constantes físicas e astronômicas com unidades adequadas (velocidade da luz, massa solar, constante de Planck, etc.).
Convolução
Kernels de processamento de imagem para suavização e filtragem.
Estatística
Funções estatísticas robustas, incluindo corte sigma e rejeição de outliers.
Instalação
# Instalar astropy
uv pip install astropy
# Com dependências opcionais para funcionalidade completa
uv pip install astropy[all]
Fluxos de Trabalho Comuns
Convertendo Coordenadas Entre Sistemas
from astropy.coordinates import SkyCoord
import astropy.units as u
# Criar coordenada
c = SkyCoord(ra='05h23m34.5s', dec='-69d45m22s', frame='icrs')
# Transformar para galáctico
c_gal = c.galactic
print(f"l={c_gal.l.deg}, b={c_gal.b.deg}")
# Transformar para alt-az (requer tempo e localização)
from astropy.time import Time
from astropy.coordinates import EarthLocation, AltAz
tempo_observacao = Time('2023-06-15 23:00:00')
local_observacao = EarthLocation(lat=40*u.deg, lon=-120*u.deg)
quadro_aa = AltAz(obstime=tempo_observacao, location=local_observacao)
c_altaz = c.transform_to(quadro_aa)
print(f"Alt={c_altaz.alt.deg}, Az={c_altaz.az.deg}")
Lendo e Analisando Arquivos FITS
from astropy.io import fits
import numpy as np
# Abrir arquivo FITS
with fits.open('observacao.fits') as hdul:
# Exibir estrutura
hdul.info()
# Obter dados de imagem e cabeçalho
dados = hdul[1].data
cabecalho = hdul[1].header
# Acessar valores do cabeçalho
exptime = cabecalho['EXPTIME']
nome_filtro = cabecalho['FILTER']
# Analisar dados
media = np.mean(dados)
mediana = np.median(dados)
print(f"Média: {media}, Mediana: {mediana}")
Cálculos de Distância Cosmológica
from astropy.cosmology import Planck18
import astropy.units as u
import numpy as np
# Calcular distâncias em z=1.5
z = 1.5
d_L = Planck18.luminosity_distance(z)
d_A = Planck18.angular_diameter_distance(z)
print(f"Distância de luminosidade: {d_L}")
print(f"Distância de diâmetro angular: {d_A}")
# Idade do universo naquele redshift
idade = Planck18.age(z)
print(f"Idade em z={z}: {idade.to(u.Gyr)}")
# Tempo de retrocesso
t_retrocesso = Planck18.lookback_time(z)
print(f"Tempo de retrocesso: {t_retrocesso.to(u.Gyr)}")
Cruzamento de Catálogos
from astropy.table import Table
from astropy.coordinates import SkyCoord, match_coordinates_sky
import astropy.units as u
# Ler catálogos
cat1 = Table.read('catalogo1.fits')
cat2 = Table.read('catalogo2.fits')
# Criar objetos de coordenadas
coords1 = SkyCoord(ra=cat1['RA']*u.degree, dec=cat1['DEC']*u.degree)
coords2 = SkyCoord(ra=cat2['RA']*u.degree, dec=cat2['DEC']*u.degree)
# Encontrar correspondências
idx, sep, _ = coords1.match_to_catalog_sky(coords2)
# Filtrar por limite de separação
max_sep = 1 * u.arcsec
correspondencias = sep < max_sep
# Criar catálogos correspondentes
cat1_corresp = cat1[correspondencias]
cat2_corresp = cat2[idx[correspondencias]]
print(f"Encontradas {len(cat1_corresp)} correspondências")
Melhores Práticas
- Sempre use unidades: Anexe unidades às grandezas para evitar erros e garantir consistência dimensional
- Use gerenciadores de contexto para arquivos FITS: Garante o fechamento adequado dos arquivos
- Prefira arrays a loops: Processe múltiplas coordenadas/tempos como arrays para melhor desempenho
- Verifique os referenciais de coordenadas: Confirme o referencial antes das transformações
- Use cosmologia apropriada: Escolha o modelo cosmológico correto para sua análise
- Manuseie dados faltantes: Use colunas mascaradas para tabelas com valores ausentes
- Especifique escalas de tempo: Seja explícito sobre as escalas de tempo (UTC, TT, TDB) para temporização precisa
- Use QTable para tabelas cientes de unidades: Quando as colunas da tabela tiverem unidades
- Verifique a validade do WCS: Confirme o WCS antes de usar transformações
- Armazene em cache valores frequentemente usados: Cálculos caros (por exemplo, distâncias cosmológicas) podem ser armazenados em cache
Documentação e Recursos
- Documentação Oficial do Astropy: https://docs.astropy.org/en/stable/
- Tutoriais: https://learn.astropy.org/
- GitHub: https://github.com/astropy/astropy
Arquivos de Referência
Para informações detalhadas sobre módulos específicos:
references/units.md- Unidades, grandezas, conversões e equivalênciasreferences/coordinates.md- Sistemas de coordenadas, transformações e associação de catálogosreferences/cosmology.md- Modelos cosmológicos e cálculosreferences/fits.md- Operações e manipulação de arquivos FITSreferences/tables.md- Criação de tabelas, E/S e operaçõesreferences/time.md- Formatos de tempo, escalas e cálculosreferences/wcs_and_other_modules.md- WCS, NDData, modelagem, visualização, constantes e utilitários